diff options
Diffstat (limited to 'VNFs/DPPD-PROX/helper-scripts/rapid/rapid_impairtest.py')
-rw-r--r-- | VNFs/DPPD-PROX/helper-scripts/rapid/rapid_impairtest.py | 71 |
1 files changed, 42 insertions, 29 deletions
diff --git a/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_impairtest.py b/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_impairtest.py index ee9ed792..3945cd8e 100644 --- a/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_impairtest.py +++ b/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_impairtest.py @@ -21,6 +21,7 @@ import sys import time import requests from rapid_log import RapidLog +from rapid_log import bcolors from rapid_test import RapidTest from statistics import mean @@ -29,10 +30,11 @@ class ImpairTest(RapidTest): Class to manage the impair testing """ def __init__(self, test_param, lat_percentile, runtime, testname, - environment_file, gen_machine, sut_machine): + environment_file, gen_machine, sut_machine, background_machines): super().__init__(test_param, runtime, testname, environment_file) self.gen_machine = gen_machine self.sut_machine = sut_machine + self.background_machines = background_machines self.test['lat_percentile'] = lat_percentile def run(self): @@ -40,20 +42,32 @@ class ImpairTest(RapidTest): imix = self.test['imix'] size = mean (imix) flow_number = self.test['flowsize'] - attempts = 0 + attempts = self.test['steps'] self.gen_machine.set_udp_packet_size(imix) flow_number = self.gen_machine.set_flows(flow_number) self.gen_machine.start_latency_cores() - RapidLog.info("+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+") - RapidLog.info("| Generator is sending UDP ({:>5} flow) packets ({:>5} bytes) to SUT via GW dropping and delaying packets. SUT sends packets back. Use ctrl-c to stop the test |".format(flow_number,round(size))) - RapidLog.info("+--------+------------------+-------------+-------------+-------------+------------------------+----------+----------+----------+-----------+-----------+-----------+-----------+-------+----+") - RapidLog.info('| Test | Speed requested | Gen by core | Sent by NIC | Fwrd by SUT | Rec. by core | Avg. Lat.|{:.0f} Pcentil| Max. Lat.| Sent | Received | Lost | Total Lost|L.Ratio|Time|'.format(self.test['lat_percentile']*100)) - RapidLog.info("+--------+------------------+-------------+-------------+-------------+------------------------+----------+----------+----------+-----------+-----------+-----------+-----------+-------+----+") - + RapidLog.info('+' + '-' * 188 + '+') + RapidLog.info(("| Generator is sending UDP ({:>5} flow) packets ({:>5}" + " bytes) to SUT via GW dropping and delaying packets. SUT sends " + "packets back.{:>60}").format(flow_number,round(size),'|')) + RapidLog.info('+' + '-' * 8 + '+' + '-' * 18 + '+' + '-' * 13 + + '+' + '-' * 13 + '+' + '-' * 13 + '+' + '-' * 24 + '+' + + '-' * 10 + '+' + '-' * 10 + '+' + '-' * 10 + '+' + '-' * 11 + + '+' + '-' * 11 + '+' + '-' * 11 + '+' + '-' * 11 + '+' + + '-' * 7 + '+' + '-' * 4 + '+') + RapidLog.info(('| Test | Speed requested | Gen by core | Sent by NIC' + ' | Fwrd by SUT | Rec. by core | Avg. Lat.|{:.0f} Pcentil' + '| Max. Lat.| Sent | Received | Lost | Total Lost|' + 'L.Ratio|Time|').format(self.test['lat_percentile']*100)) + RapidLog.info('+' + '-' * 8 + '+' + '-' * 18 + '+' + '-' * 13 + + '+' + '-' * 13 + '+' + '-' * 13 + '+' + '-' * 24 + '+' + + '-' * 10 + '+' + '-' * 10 + '+' + '-' * 10 + '+' + '-' * 11 + + '+' + '-' * 11 + '+' + '-' * 11 + '+' + '-' * 11 + '+' + + '-' * 7 + '+' + '-' * 4 + '+') speed = self.test['startspeed'] self.gen_machine.set_generator_speed(speed) - while True: - attempts += 1 + while attempts: + attempts -= 1 print('Measurement ongoing at speed: ' + str(round(speed,2)) + '% ',end='\r') sys.stdout.flush() time.sleep(1) @@ -62,8 +76,11 @@ class ImpairTest(RapidTest): iteration_data['speed'] = speed # Drop rate is expressed in percentage. lat_used is a ratio (0 to 1). The sum of these 2 should be 100%. # If the sum is lower than 95, it means that more than 5% of the latency measurements where dropped for accuracy reasons. - if (iteration_data['drop_rate'] + iteration_data['lat_used'] * 100) < 95: - lat_warning = bcolors.WARNING + ' Latency accuracy issue?: {:>3.0f}%'.format(iteration_data['lat_used']*100) + bcolors.ENDC + if (iteration_data['drop_rate'] + + iteration_data['lat_used'] * 100) < 95: + lat_warning = ('{} Latency accuracy issue?: {:>3.0f}%' + '{}').format(bcolors.WARNING, + iteration_data['lat_used']*100, bcolors.ENDC) else: lat_warning = '' iteration_prefix = {'speed' : '', @@ -74,22 +91,18 @@ class ImpairTest(RapidTest): 'drop_rate' : ''} RapidLog.info(self.report_result(attempts, size, iteration_data, iteration_prefix)) - result_details = {'test': self.test['test'], - 'environment_file': self.test['environment_file'], - 'Flows': flow_number, - 'Size': size, - 'RequestedSpeed': RapidTest.get_pps(speed,size), - 'CoreGenerated': iteration_data['pps_req_tx'], - 'SentByNIC': iteration_data['pps_tx'], - 'FwdBySUT': iteration_data['pps_sut_tx'], - 'RevByCore': iteration_data['pps_rx'], - 'AvgLatency': iteration_data['lat_avg'], - 'PCTLatency': iteration_data['lat_perc'], - 'MaxLatency': iteration_data['lat_max'], - 'PacketsLost': iteration_data['abs_dropped'], - 'DropRate': iteration_data['drop_rate'], - 'bucket_size': iteration_data['bucket_size'], - 'buckets': iteration_data['buckets']} - result_details = self.post_data('rapid_impairtest', result_details) + iteration_data['test'] = self.test['testname'] + iteration_data['environment_file'] = self.test['environment_file'] + iteration_data['Flows'] = flow_number + iteration_data['Size'] = size + iteration_data['RequestedSpeed'] = RapidTest.get_pps( + iteration_data['speed'] ,size) + result_details = self.post_data(iteration_data) + RapidLog.debug(result_details) + RapidLog.info('+' + '-' * 8 + '+' + '-' * 18 + '+' + '-' * 13 + + '+' + '-' * 13 + '+' + '-' * 13 + '+' + '-' * 24 + '+' + + '-' * 10 + '+' + '-' * 10 + '+' + '-' * 10 + '+' + '-' * 11 + + '+' + '-' * 11 + '+' + '-' * 11 + '+' + '-' * 11 + '+' + + '-' * 7 + '+' + '-' * 4 + '+') self.gen_machine.stop_latency_cores() return (True, result_details) |