1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
import pytest
import copy
from efa.efa_common import efa_retrieve_hw_counter_value
# this test must be run in serial mode because it check hw counter
@pytest.mark.serial
@pytest.mark.parametrize("iteration_type",
[pytest.param("short", marks=pytest.mark.short),
pytest.param("standard", marks=pytest.mark.standard)])
def test_dgram_pingpong(cmdline_args, iteration_type):
from common import ClientServerTest
# dgram is unreliable, therefore it is expected that receiver does not always get all the messages
# when that happened, the test will return -FI_ENODATA
# Disable the strict mode to mark such return code as pass
cmdline_args_copy = copy.copy(cmdline_args)
cmdline_args_copy.strict_fabtests_mode = False
server_tx_bytes_before_test = efa_retrieve_hw_counter_value(cmdline_args.client_id, "tx_bytes")
client_tx_bytes_before_test = efa_retrieve_hw_counter_value(cmdline_args.client_id, "tx_bytes")
server_rx_bytes_before_test = efa_retrieve_hw_counter_value(cmdline_args.client_id, "rx_bytes")
client_rx_bytes_before_test = efa_retrieve_hw_counter_value(cmdline_args.client_id, "rx_bytes")
# efa's dgram endpoint requires prefix therefore must always test with prefix mode on
test = ClientServerTest(cmdline_args_copy, "fi_dgram_pingpong", iteration_type,
prefix_type="with_prefix")
test.run()
server_tx_bytes_after_test = efa_retrieve_hw_counter_value(cmdline_args.client_id, "tx_bytes")
client_tx_bytes_after_test = efa_retrieve_hw_counter_value(cmdline_args.client_id, "tx_bytes")
server_rx_bytes_after_test = efa_retrieve_hw_counter_value(cmdline_args.client_id, "rx_bytes")
client_rx_bytes_after_test = efa_retrieve_hw_counter_value(cmdline_args.client_id, "rx_bytes")
# verify there is EFA traffic
assert server_tx_bytes_before_test < server_tx_bytes_after_test
assert client_tx_bytes_before_test < client_tx_bytes_after_test
assert server_rx_bytes_before_test < server_rx_bytes_after_test
assert client_rx_bytes_before_test < client_rx_bytes_after_test
|