diff options
Diffstat (limited to 'tools/pkt_gen')
-rw-r--r-- | tools/pkt_gen/testcenter/testcenter.py | 412 |
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 = { |