summaryrefslogtreecommitdiffstats
path: root/tools/pkt_gen
diff options
context:
space:
mode:
Diffstat (limited to 'tools/pkt_gen')
-rw-r--r--tools/pkt_gen/testcenter/testcenter.py412
1 files changed, 136 insertions, 276 deletions
diff --git a/tools/pkt_gen/testcenter/testcenter.py b/tools/pkt_gen/testcenter/testcenter.py
index f05ce337..a1f38d8b 100644
--- a/tools/pkt_gen/testcenter/testcenter.py
+++ b/tools/pkt_gen/testcenter/testcenter.py
@@ -29,6 +29,92 @@ from core.results.results_constants import ResultsConstants
from tools.pkt_gen import trafficgen
+def get_stc_common_settings():
+ """
+ Return the common Settings
+ These settings would apply to almost all the tests.
+ """
+ args = ["--lab_server_addr",
+ settings.getValue("TRAFFICGEN_STC_LAB_SERVER_ADDR"),
+ "--license_server_addr",
+ settings.getValue("TRAFFICGEN_STC_LICENSE_SERVER_ADDR"),
+ "--east_chassis_addr",
+ settings.getValue("TRAFFICGEN_STC_EAST_CHASSIS_ADDR"),
+ "--east_slot_num",
+ settings.getValue("TRAFFICGEN_STC_EAST_SLOT_NUM"),
+ "--east_port_num",
+ settings.getValue("TRAFFICGEN_STC_EAST_PORT_NUM"),
+ "--west_chassis_addr",
+ settings.getValue("TRAFFICGEN_STC_WEST_CHASSIS_ADDR"),
+ "--west_slot_num",
+ settings.getValue("TRAFFICGEN_STC_WEST_SLOT_NUM"),
+ "--west_port_num",
+ settings.getValue("TRAFFICGEN_STC_WEST_PORT_NUM"),
+ "--test_session_name",
+ settings.getValue("TRAFFICGEN_STC_TEST_SESSION_NAME"),
+ "--results_dir",
+ settings.getValue("TRAFFICGEN_STC_RESULTS_DIR"),
+ "--csv_results_file_prefix",
+ settings.getValue("TRAFFICGEN_STC_CSV_RESULTS_FILE_PREFIX")]
+ return args
+
+
+def get_rfc2544_common_settings():
+ """
+ Retrun Generic RFC 2544 settings.
+ These settings apply to all the 2544 tests
+ """
+ args = [settings.getValue("TRAFFICGEN_STC_PYTHON2_PATH"),
+ os.path.join(
+ settings.getValue("TRAFFICGEN_STC_TESTCENTER_PATH"),
+ settings.getValue(
+ "TRAFFICGEN_STC_RFC2544_TPUT_TEST_FILE_NAME")),
+ "--metric",
+ settings.getValue("TRAFFICGEN_STC_RFC2544_METRIC"),
+ "--search_mode",
+ settings.getValue("TRAFFICGEN_STC_SEARCH_MODE"),
+ "--learning_mode",
+ settings.getValue("TRAFFICGEN_STC_LEARNING_MODE"),
+ "--rate_lower_limit_pct",
+ settings.getValue("TRAFFICGEN_STC_RATE_LOWER_LIMIT_PCT"),
+ "--rate_upper_limit_pct",
+ settings.getValue("TRAFFICGEN_STC_RATE_UPPER_LIMIT_PCT"),
+ "--rate_initial_pct",
+ settings.getValue("TRAFFICGEN_STC_RATE_INITIAL_PCT"),
+ "--rate_step_pct",
+ settings.getValue("TRAFFICGEN_STC_RATE_STEP_PCT"),
+ "--resolution_pct",
+ settings.getValue("TRAFFICGEN_STC_RESOLUTION_PCT"),
+ "--acceptable_frame_loss_pct",
+ settings.getValue("TRAFFICGEN_STC_ACCEPTABLE_FRAME_LOSS_PCT"),
+ "--east_intf_addr",
+ settings.getValue("TRAFFICGEN_STC_EAST_INTF_ADDR"),
+ "--east_intf_gateway_addr",
+ settings.getValue("TRAFFICGEN_STC_EAST_INTF_GATEWAY_ADDR"),
+ "--west_intf_addr",
+ settings.getValue("TRAFFICGEN_STC_WEST_INTF_ADDR"),
+ "--west_intf_gateway_addr",
+ settings.getValue("TRAFFICGEN_STC_WEST_INTF_GATEWAY_ADDR"),
+ "--num_trials",
+ settings.getValue("TRAFFICGEN_STC_NUMBER_OF_TRIALS"),
+ "--trial_duration_sec",
+ settings.getValue("TRAFFICGEN_STC_TRIAL_DURATION_SEC"),
+ "--traffic_pattern",
+ settings.getValue("TRAFFICGEN_STC_TRAFFIC_PATTERN")]
+ return args
+
+
+def get_rfc2544_custom_settings(framesize, custom_tr):
+ """
+ Return RFC2544 Custom Settings
+ """
+ args = ["--frame_size_list",
+ str(framesize),
+ "--traffic_custom",
+ str(custom_tr)]
+ return args
+
+
class TestCenter(trafficgen.ITrafficGenerator):
"""
Spirent TestCenter
@@ -53,97 +139,12 @@ class TestCenter(trafficgen.ITrafficGenerator):
"""
return None
- def send_cont_traffic(self, traffic=None, duration=30):
+ def get_rfc2544_results(self, filename):
"""
- Send Custom - Continuous Test traffic
- Reuse RFC2544 throughput test specifications along with
- 'custom' configuration
+ Reads the CSV file and return the results
"""
- verbose = False
- custom = "cont"
- framesize = settings.getValue("TRAFFICGEN_STC_FRAME_SIZE")
- if traffic and 'l2' in traffic:
- if 'framesize' in traffic['l2']:
- framesize = traffic['l2']['framesize']
- args = [settings.getValue("TRAFFICGEN_STC_PYTHON2_PATH"),
- os.path.join(
- settings.getValue("TRAFFICGEN_STC_TESTCENTER_PATH"),
- settings.getValue(
- "TRAFFICGEN_STC_RFC2544_TPUT_TEST_FILE_NAME")),
- "--lab_server_addr",
- settings.getValue("TRAFFICGEN_STC_LAB_SERVER_ADDR"),
- "--license_server_addr",
- settings.getValue("TRAFFICGEN_STC_LICENSE_SERVER_ADDR"),
- "--east_chassis_addr",
- settings.getValue("TRAFFICGEN_STC_EAST_CHASSIS_ADDR"),
- "--east_slot_num",
- settings.getValue("TRAFFICGEN_STC_EAST_SLOT_NUM"),
- "--east_port_num",
- settings.getValue("TRAFFICGEN_STC_EAST_PORT_NUM"),
- "--west_chassis_addr",
- settings.getValue("TRAFFICGEN_STC_WEST_CHASSIS_ADDR"),
- "--west_slot_num",
- settings.getValue("TRAFFICGEN_STC_WEST_SLOT_NUM"),
- "--west_port_num",
- settings.getValue("TRAFFICGEN_STC_WEST_PORT_NUM"),
- "--test_session_name",
- settings.getValue("TRAFFICGEN_STC_TEST_SESSION_NAME"),
- "--results_dir",
- settings.getValue("TRAFFICGEN_STC_RESULTS_DIR"),
- "--csv_results_file_prefix",
- settings.getValue("TRAFFICGEN_STC_CSV_RESULTS_FILE_PREFIX"),
- "--num_trials",
- settings.getValue("TRAFFICGEN_STC_NUMBER_OF_TRIALS"),
- "--trial_duration_sec",
- settings.getValue("TRAFFICGEN_STC_TRIAL_DURATION_SEC"),
- "--traffic_pattern",
- settings.getValue("TRAFFICGEN_STC_TRAFFIC_PATTERN"),
- "--traffic_custom",
- str(custom),
- "--search_mode",
- settings.getValue("TRAFFICGEN_STC_SEARCH_MODE"),
- "--learning_mode",
- settings.getValue("TRAFFICGEN_STC_LEARNING_MODE"),
- "--rate_lower_limit_pct",
- settings.getValue("TRAFFICGEN_STC_RATE_LOWER_LIMIT_PCT"),
- "--rate_upper_limit_pct",
- settings.getValue("TRAFFICGEN_STC_RATE_UPPER_LIMIT_PCT"),
- "--rate_initial_pct",
- settings.getValue("TRAFFICGEN_STC_RATE_INITIAL_PCT"),
- "--rate_step_pct",
- settings.getValue("TRAFFICGEN_STC_RATE_STEP_PCT"),
- "--resolution_pct",
- settings.getValue("TRAFFICGEN_STC_RESOLUTION_PCT"),
- "--frame_size_list",
- str(framesize),
- "--acceptable_frame_loss_pct",
- settings.getValue("TRAFFICGEN_STC_ACCEPTABLE_FRAME_LOSS_PCT"),
- "--east_intf_addr",
- settings.getValue("TRAFFICGEN_STC_EAST_INTF_ADDR"),
- "--east_intf_gateway_addr",
- settings.getValue("TRAFFICGEN_STC_EAST_INTF_GATEWAY_ADDR"),
- "--west_intf_addr",
- settings.getValue("TRAFFICGEN_STC_WEST_INTF_ADDR"),
- "--west_intf_gateway_addr",
- settings.getValue("TRAFFICGEN_STC_WEST_INTF_GATEWAY_ADDR")]
-
- if settings.getValue("TRAFFICGEN_STC_VERBOSE") is "True":
- args.append("--verbose")
- verbose = True
- self._logger.debug("Arguments used to call test: %s", args)
- subprocess.check_call(args)
-
- filec = os.path.join(settings.getValue("TRAFFICGEN_STC_RESULTS_DIR"),
- settings.getValue(
- "TRAFFICGEN_STC_CSV_RESULTS_FILE_PREFIX") +
- ".csv")
-
- if verbose:
- self._logger.info("file: %s", filec)
-
result = {}
-
- with open(filec, "r") as csvfile:
+ with open(filename, "r") as csvfile:
csvreader = csv.DictReader(csvfile)
for row in csvreader:
self._logger.info("Row: %s", row)
@@ -175,6 +176,41 @@ class TestCenter(trafficgen.ITrafficGenerator):
row["PercentLoss"])
return result
+ def send_cont_traffic(self, traffic=None, duration=30):
+ """
+ Send Custom - Continuous Test traffic
+ Reuse RFC2544 throughput test specifications along with
+ 'custom' configuration
+ """
+ verbose = False
+ custom = "cont"
+ framesize = settings.getValue("TRAFFICGEN_STC_FRAME_SIZE")
+ if traffic and 'l2' in traffic:
+ if 'framesize' in traffic['l2']:
+ framesize = traffic['l2']['framesize']
+
+ stc_common_args = get_stc_common_settings()
+ rfc2544_common_args = get_rfc2544_common_settings()
+ rfc2544_custom_args = get_rfc2544_custom_settings(framesize,
+ custom)
+ args = stc_common_args + rfc2544_common_args + rfc2544_custom_args
+
+ if settings.getValue("TRAFFICGEN_STC_VERBOSE") is "True":
+ args.append("--verbose")
+ verbose = True
+ self._logger.debug("Arguments used to call test: %s", args)
+ subprocess.check_call(args)
+
+ filec = os.path.join(settings.getValue("TRAFFICGEN_STC_RESULTS_DIR"),
+ settings.getValue(
+ "TRAFFICGEN_STC_CSV_RESULTS_FILE_PREFIX") +
+ ".csv")
+
+ if verbose:
+ self._logger.info("file: %s", filec)
+
+ return self.get_rfc2544_results(filec)
+
def send_rfc2544_throughput(self, traffic=None, trials=3, duration=20,
lossrate=0.0):
"""
@@ -185,65 +221,11 @@ class TestCenter(trafficgen.ITrafficGenerator):
if traffic and 'l2' in traffic:
if 'framesize' in traffic['l2']:
framesize = traffic['l2']['framesize']
- args = [settings.getValue("TRAFFICGEN_STC_PYTHON2_PATH"),
- os.path.join(
- settings.getValue("TRAFFICGEN_STC_TESTCENTER_PATH"),
- settings.getValue(
- "TRAFFICGEN_STC_RFC2544_TPUT_TEST_FILE_NAME")),
- "--lab_server_addr",
- settings.getValue("TRAFFICGEN_STC_LAB_SERVER_ADDR"),
- "--license_server_addr",
- settings.getValue("TRAFFICGEN_STC_LICENSE_SERVER_ADDR"),
- "--east_chassis_addr",
- settings.getValue("TRAFFICGEN_STC_EAST_CHASSIS_ADDR"),
- "--east_slot_num",
- settings.getValue("TRAFFICGEN_STC_EAST_SLOT_NUM"),
- "--east_port_num",
- settings.getValue("TRAFFICGEN_STC_EAST_PORT_NUM"),
- "--west_chassis_addr",
- settings.getValue("TRAFFICGEN_STC_WEST_CHASSIS_ADDR"),
- "--west_slot_num",
- settings.getValue("TRAFFICGEN_STC_WEST_SLOT_NUM"),
- "--west_port_num",
- settings.getValue("TRAFFICGEN_STC_WEST_PORT_NUM"),
- "--test_session_name",
- settings.getValue("TRAFFICGEN_STC_TEST_SESSION_NAME"),
- "--results_dir",
- settings.getValue("TRAFFICGEN_STC_RESULTS_DIR"),
- "--csv_results_file_prefix",
- settings.getValue("TRAFFICGEN_STC_CSV_RESULTS_FILE_PREFIX"),
- "--num_trials",
- settings.getValue("TRAFFICGEN_STC_NUMBER_OF_TRIALS"),
- "--trial_duration_sec",
- settings.getValue("TRAFFICGEN_STC_TRIAL_DURATION_SEC"),
- "--traffic_pattern",
- settings.getValue("TRAFFICGEN_STC_TRAFFIC_PATTERN"),
- "--search_mode",
- settings.getValue("TRAFFICGEN_STC_SEARCH_MODE"),
- "--learning_mode",
- settings.getValue("TRAFFICGEN_STC_LEARNING_MODE"),
- "--rate_lower_limit_pct",
- settings.getValue("TRAFFICGEN_STC_RATE_LOWER_LIMIT_PCT"),
- "--rate_upper_limit_pct",
- settings.getValue("TRAFFICGEN_STC_RATE_UPPER_LIMIT_PCT"),
- "--rate_initial_pct",
- settings.getValue("TRAFFICGEN_STC_RATE_INITIAL_PCT"),
- "--rate_step_pct",
- settings.getValue("TRAFFICGEN_STC_RATE_STEP_PCT"),
- "--resolution_pct",
- settings.getValue("TRAFFICGEN_STC_RESOLUTION_PCT"),
- "--frame_size_list",
- str(framesize),
- "--acceptable_frame_loss_pct",
- settings.getValue("TRAFFICGEN_STC_ACCEPTABLE_FRAME_LOSS_PCT"),
- "--east_intf_addr",
- settings.getValue("TRAFFICGEN_STC_EAST_INTF_ADDR"),
- "--east_intf_gateway_addr",
- settings.getValue("TRAFFICGEN_STC_EAST_INTF_GATEWAY_ADDR"),
- "--west_intf_addr",
- settings.getValue("TRAFFICGEN_STC_WEST_INTF_ADDR"),
- "--west_intf_gateway_addr",
- settings.getValue("TRAFFICGEN_STC_WEST_INTF_GATEWAY_ADDR")]
+
+ stc_common_args = get_stc_common_settings()
+ rfc2544_common_args = get_rfc2544_common_settings()
+ rfc2544_custom_args = get_rfc2544_custom_settings(framesize, '')
+ args = stc_common_args + rfc2544_common_args + rfc2544_custom_args
if settings.getValue("TRAFFICGEN_STC_VERBOSE") is "True":
args.append("--verbose")
@@ -259,39 +241,7 @@ class TestCenter(trafficgen.ITrafficGenerator):
if verbose:
self._logger.info("file: %s", filec)
- result = {}
-
- with open(filec, "r") as csvfile:
- csvreader = csv.DictReader(csvfile)
- for row in csvreader:
- self._logger.info("Row: %s", row)
- tx_fps = ((float(row["TxFrameCount"])) /
- (float(row["Duration(sec)"])))
- rx_fps = ((float(row["RxFrameCount"])) /
- (float(row["Duration(sec)"])))
- tx_mbps = ((float(row["TxFrameCount"]) *
- float(row["ConfiguredFrameSize"])) /
- (float(row["Duration(sec)"]) * 1000000.0))
- rx_mbps = ((float(row["RxFrameCount"]) *
- float(row["ConfiguredFrameSize"])) /
- (float(row["Duration(sec)"]) * 1000000.0))
- result[ResultsConstants.TX_RATE_FPS] = tx_fps
- result[ResultsConstants.THROUGHPUT_RX_FPS] = rx_fps
- result[ResultsConstants.TX_RATE_MBPS] = tx_mbps
- result[ResultsConstants.THROUGHPUT_RX_MBPS] = rx_mbps
- result[ResultsConstants.TX_RATE_PERCENT] = float(
- row["OfferedLoad(%)"])
- result[ResultsConstants.THROUGHPUT_RX_PERCENT] = float(
- row["Throughput(%)"])
- result[ResultsConstants.MIN_LATENCY_NS] = float(
- row["MinimumLatency(us)"]) * 1000
- result[ResultsConstants.MAX_LATENCY_NS] = float(
- row["MaximumLatency(us)"]) * 1000
- result[ResultsConstants.AVG_LATENCY_NS] = float(
- row["AverageLatency(us)"]) * 1000
- result[ResultsConstants.FRAME_LOSS_PERCENT] = float(
- row["PercentLoss"])
- return result
+ return self.get_rfc2544_results(filec)
def send_rfc2544_back2back(self, traffic=None, trials=1, duration=20,
lossrate=0.0):
@@ -303,69 +253,11 @@ class TestCenter(trafficgen.ITrafficGenerator):
if traffic and 'l2' in traffic:
if 'framesize' in traffic['l2']:
framesize = traffic['l2']['framesize']
- args = [settings.getValue("TRAFFICGEN_STC_PYTHON2_PATH"),
- os.path.join(
- settings.getValue("TRAFFICGEN_STC_TESTCENTER_PATH"),
- settings.getValue(
- "TRAFFICGEN_STC_RFC2544_B2B_TEST_FILE_NAME")),
- "--metric",
- settings.getValue("TRAFFICGEN_STC_RFC2544_METRIC"),
- "--lab_server_addr",
- settings.getValue("TRAFFICGEN_STC_LAB_SERVER_ADDR"),
- "--license_server_addr",
- settings.getValue("TRAFFICGEN_STC_LICENSE_SERVER_ADDR"),
- "--east_chassis_addr",
- settings.getValue("TRAFFICGEN_STC_EAST_CHASSIS_ADDR"),
- "--east_slot_num",
- settings.getValue("TRAFFICGEN_STC_EAST_SLOT_NUM"),
- "--east_port_num",
- settings.getValue("TRAFFICGEN_STC_EAST_PORT_NUM"),
- "--west_chassis_addr",
- settings.getValue("TRAFFICGEN_STC_WEST_CHASSIS_ADDR"),
- "--west_slot_num",
- settings.getValue("TRAFFICGEN_STC_WEST_SLOT_NUM"),
- "--west_port_num",
- settings.getValue("TRAFFICGEN_STC_WEST_PORT_NUM"),
- "--test_session_name",
- settings.getValue("TRAFFICGEN_STC_TEST_SESSION_NAME"),
- "--results_dir",
- settings.getValue("TRAFFICGEN_STC_RESULTS_DIR"),
- "--csv_results_file_prefix",
- settings.getValue("TRAFFICGEN_STC_CSV_RESULTS_FILE_PREFIX"),
- "--num_trials",
- settings.getValue("TRAFFICGEN_STC_NUMBER_OF_TRIALS"),
- "--trial_duration_sec",
- settings.getValue("TRAFFICGEN_STC_TRIAL_DURATION_SEC"),
- "--traffic_pattern",
- settings.getValue("TRAFFICGEN_STC_TRAFFIC_PATTERN"),
- "--search_mode",
- settings.getValue("TRAFFICGEN_STC_SEARCH_MODE"),
- "--learning_mode",
- settings.getValue("TRAFFICGEN_STC_LEARNING_MODE"),
- "--latency_type",
- settings.getValue("TRAFFICGEN_STC_LATENCY_TYPE"),
- "--rate_lower_limit_pct",
- settings.getValue("TRAFFICGEN_STC_RATE_LOWER_LIMIT_PCT"),
- "--rate_upper_limit_pct",
- settings.getValue("TRAFFICGEN_STC_RATE_UPPER_LIMIT_PCT"),
- "--rate_initial_pct",
- settings.getValue("TRAFFICGEN_STC_RATE_INITIAL_PCT"),
- "--rate_step_pct",
- settings.getValue("TRAFFICGEN_STC_RATE_STEP_PCT"),
- "--resolution_pct",
- settings.getValue("TRAFFICGEN_STC_RESOLUTION_PCT"),
- "--frame_size_list",
- str(framesize),
- "--acceptable_frame_loss_pct",
- settings.getValue("TRAFFICGEN_STC_ACCEPTABLE_FRAME_LOSS_PCT"),
- "--east_intf_addr",
- settings.getValue("TRAFFICGEN_STC_EAST_INTF_ADDR"),
- "--east_intf_gateway_addr",
- settings.getValue("TRAFFICGEN_STC_EAST_INTF_GATEWAY_ADDR"),
- "--west_intf_addr",
- settings.getValue("TRAFFICGEN_STC_WEST_INTF_ADDR"),
- "--west_intf_gateway_addr",
- settings.getValue("TRAFFICGEN_STC_WEST_INTF_GATEWAY_ADDR")]
+
+ stc_common_args = get_stc_common_settings()
+ rfc2544_common_args = get_rfc2544_common_settings()
+ rfc2544_custom_args = get_rfc2544_custom_settings(framesize, '')
+ args = stc_common_args + rfc2544_common_args + rfc2544_custom_args
if settings.getValue("TRAFFICGEN_STC_VERBOSE") is "True":
args.append("--verbose")
@@ -380,39 +272,7 @@ class TestCenter(trafficgen.ITrafficGenerator):
if verbose:
self._logger.debug("file: %s", filecs)
- result = {}
-
- with open(filecs, "r") as csvfile:
- csvreader = csv.DictReader(csvfile)
- for row in csvreader:
- self._logger.info("Row: %s", row)
- tx_fps = ((float(row["TxFrameCount"])) /
- (float(row["Duration(sec)"])))
- rx_fps = ((float(row["RxFrameCount"])) /
- (float(row["Duration(sec)"])))
- tx_mbps = ((float(row["TxFrameCount"]) *
- float(row["ConfiguredFrameSize"])) /
- (float(row["Duration(sec)"]) * 1000000.0))
- rx_mbps = ((float(row["RxFrameCount"]) *
- float(row["ConfiguredFrameSize"])) /
- (float(row["Duration(sec)"]) * 1000000.0))
- result[ResultsConstants.TX_RATE_FPS] = tx_fps
- result[ResultsConstants.THROUGHPUT_RX_FPS] = rx_fps
- result[ResultsConstants.TX_RATE_MBPS] = tx_mbps
- result[ResultsConstants.THROUGHPUT_RX_MBPS] = rx_mbps
- result[ResultsConstants.TX_RATE_PERCENT] = float(
- row["OfferedLoad(%)"])
- result[ResultsConstants.THROUGHPUT_RX_PERCENT] = float(
- row["Throughput(%)"])
- result[ResultsConstants.MIN_LATENCY_NS] = float(
- row["MinimumLatency(us)"]) * 1000
- result[ResultsConstants.MAX_LATENCY_NS] = float(
- row["MaximumLatency(us)"]) * 1000
- result[ResultsConstants.AVG_LATENCY_NS] = float(
- row["AverageLatency(us)"]) * 1000
- result[ResultsConstants.FRAME_LOSS_PERCENT] = float(
- row["PercentLoss"])
- return result
+ return self.get_rfc2544_results(filecs)
if __name__ == '__main__':
TRAFFIC = {