summaryrefslogtreecommitdiffstats
path: root/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_flowsizetest.py
diff options
context:
space:
mode:
Diffstat (limited to 'VNFs/DPPD-PROX/helper-scripts/rapid/rapid_flowsizetest.py')
-rw-r--r--VNFs/DPPD-PROX/helper-scripts/rapid/rapid_flowsizetest.py71
1 files changed, 49 insertions, 22 deletions
diff --git a/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_flowsizetest.py b/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_flowsizetest.py
index 0ca7c71f..ea42fc9a 100644
--- a/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_flowsizetest.py
+++ b/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_flowsizetest.py
@@ -32,12 +32,13 @@ class FlowSizeTest(RapidTest):
Class to manage the flowsizetesting
"""
def __init__(self, test_param, lat_percentile, runtime, testname,
- environment_file, gen_machine, sut_machine, background_machines):
+ environment_file, gen_machine, sut_machine, background_machines, sleep_time):
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
+ self.test['sleep_time'] = sleep_time
if self.test['test'] == 'TST009test':
# This test implements some of the testing as defined in
# https://docbox.etsi.org/ISG/NFV/open/Publications_pdf/Specs-Reports/NFV-TST%20009v3.2.1%20-%20GS%20-%20NFVI_Benchmarks.pdf
@@ -52,7 +53,7 @@ class FlowSizeTest(RapidTest):
self.test['TST009_S'].append((m+1) * self.test['stepsize'])
elif self.test['test'] == 'fixed_rate':
for key in['drop_rate_threshold','lat_avg_threshold',
- 'lat_perc_threshold','lat_max_threshold']:
+ 'lat_perc_threshold','lat_max_threshold','mis_ordered_threshold']:
self.test[key] = inf
def new_speed(self, speed,size,success):
@@ -109,6 +110,11 @@ class FlowSizeTest(RapidTest):
FLOWSIZE = self.test['warmupflowsize']
WARMUPSPEED = self.test['warmupspeed']
WARMUPTIME = self.test['warmuptime']
+
+ if WARMUPTIME == 0:
+ RapidLog.info(("Not Warming up"))
+ return
+
RapidLog.info(("Warming up during {} seconds..., packet size = {},"
" flows = {}, speed = {}").format(WARMUPTIME, imix, FLOWSIZE,
WARMUPSPEED))
@@ -116,8 +122,9 @@ class FlowSizeTest(RapidTest):
self.set_background_speed(self.background_machines, WARMUPSPEED)
self.gen_machine.set_udp_packet_size(imix)
self.set_background_size(self.background_machines, imix)
- _ = self.gen_machine.set_flows(FLOWSIZE)
- self.set_background_flows(self.background_machines, FLOWSIZE)
+ if FLOWSIZE:
+ _ = self.gen_machine.set_flows(FLOWSIZE)
+ self.set_background_flows(self.background_machines, FLOWSIZE)
self.gen_machine.start()
self.start_background_traffic(self.background_machines)
time.sleep(WARMUPTIME)
@@ -140,31 +147,32 @@ class FlowSizeTest(RapidTest):
else:
backgroundinfo = '{}{}'.format(bcolors.FLASH,bcolors.ENDC)
self.set_background_size(self.background_machines, imix)
- RapidLog.info('+' + '-' * 188 + '+')
+ RapidLog.info('+' + '-' * 200 + '+')
RapidLog.info(("| UDP, {:>5} bytes, different number of flows by "
- "randomizing SRC & DST UDP port. {:116.116}|").
+ "randomizing SRC & DST UDP port. {:128.128}|").
format(round(size), backgroundinfo))
RapidLog.info('+' + '-' * 8 + '+' + '-' * 18 + '+' + '-' * 13 +
'+' + '-' * 13 + '+' + '-' * 13 + '+' + '-' * 24 + '+' +
'-' * 10 + '+' + '-' * 10 + '+' + '-' * 10 + '+' + '-' * 11
+ '+' + '-' * 11 + '+' + '-' * 11 + '+' + '-' * 11 + '+'
- + '-' * 7 + '+' + '-' * 4 + '+')
+ + '-' * 7 + '+' + '-' * 11 + '+' + '-' * 4 + '+')
RapidLog.info(('| Flows | 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))
+ ' Lost|L.Ratio|Mis-ordered|Time').format(self.test['lat_percentile']*100))
RapidLog.info('+' + '-' * 8 + '+' + '-' * 18 + '+' + '-' * 13 +
'+' + '-' * 13 + '+' + '-' * 13 + '+' + '-' * 24 + '+' +
'-' * 10 + '+' + '-' * 10 + '+' + '-' * 10 + '+' + '-' * 11
+ '+' + '-' * 11 + '+' + '-' * 11 + '+' + '-' * 11 + '+'
- + '-' * 7 + '+' + '-' * 4 + '+')
+ + '-' * 7 + '+' + '-' * 11 + '+' + '-' * 4 + '+')
for flow_number in self.test['flows']:
attempts = 0
self.gen_machine.reset_stats()
if self.sut_machine:
self.sut_machine.reset_stats()
- flow_number = self.gen_machine.set_flows(flow_number)
- self.set_background_flows(self.background_machines, flow_number)
+ if flow_number != 0:
+ flow_number = self.gen_machine.set_flows(flow_number)
+ self.set_background_flows(self.background_machines, flow_number)
end_data['speed'] = None
speed = self.get_start_speed_and_init(size)
while True:
@@ -199,6 +207,7 @@ class FlowSizeTest(RapidTest):
'lat_perc' : bcolors.ENDC,
'lat_max' : bcolors.ENDC,
'abs_drop_rate' : bcolors.ENDC,
+ 'mis_ordered' : bcolors.ENDC,
'drop_rate' : bcolors.ENDC}
if self.test['test'] == 'fixed_rate':
end_data = copy.deepcopy(iteration_data)
@@ -217,30 +226,42 @@ class FlowSizeTest(RapidTest):
# the drop rate is below a treshold, either we want that no
# packet has been lost during the test.
# This can be specified by putting 0 in the .test file
- elif ((iteration_data['drop_rate'] < self.test['drop_rate_threshold']) or (iteration_data['abs_dropped']==self.test['drop_rate_threshold']==0)) and (iteration_data['lat_avg']< self.test['lat_avg_threshold']) and (iteration_data['lat_perc']< self.test['lat_perc_threshold']) and (iteration_data['lat_max'] < self.test['lat_max_threshold']):
+ elif ((self.get_pps(speed,size) - iteration_data['pps_tx']) / self.get_pps(speed,size)) \
+ < self.test['generator_threshold'] and \
+ ((iteration_data['drop_rate'] < self.test['drop_rate_threshold']) or \
+ (iteration_data['abs_dropped']==self.test['drop_rate_threshold']==0)) and \
+ (iteration_data['lat_avg']< self.test['lat_avg_threshold']) and \
+ (iteration_data['lat_perc']< self.test['lat_perc_threshold']) and \
+ (iteration_data['lat_max'] < self.test['lat_max_threshold'] and \
+ iteration_data['mis_ordered'] <= self.test['mis_ordered_threshold']):
+ end_data = copy.deepcopy(iteration_data)
+ end_prefix = copy.deepcopy(iteration_prefix)
+ success = True
+ success_message=' SUCCESS'
if (old_div((self.get_pps(speed,size) - iteration_data['pps_tx']),self.get_pps(speed,size)))>0.01:
iteration_prefix['speed'] = bcolors.WARNING
if iteration_data['abs_tx_fail'] > 0:
gen_warning = bcolors.WARNING + ' Network limit?: requesting {:<.3f} Mpps and getting {:<.3f} Mpps - {} failed to be transmitted'.format(self.get_pps(speed,size), iteration_data['pps_tx'], iteration_data['abs_tx_fail']) + bcolors.ENDC
else:
gen_warning = bcolors.WARNING + ' Generator limit?: requesting {:<.3f} Mpps and getting {:<.3f} Mpps'.format(self.get_pps(speed,size), iteration_data['pps_tx']) + bcolors.ENDC
+ endwarning = '| | {:186.186} |'.format(retry_warning + lat_warning + gen_warning)
+ RapidLog.debug(self.report_result(-attempts, size,
+ iteration_data, iteration_prefix) + success_message +
+ retry_warning + lat_warning + gen_warning)
+ break
else:
iteration_prefix['speed'] = bcolors.ENDC
gen_warning = ''
- end_data = copy.deepcopy(iteration_data)
- end_prefix = copy.deepcopy(iteration_prefix)
- if lat_warning or gen_warning or retry_warning:
- endwarning = '| | {:186.186} |'.format(retry_warning + lat_warning + gen_warning)
- success = True
- success_message=' SUCCESS'
- RapidLog.debug(self.report_result(-attempts, size,
- iteration_data, iteration_prefix) + success_message +
- retry_warning + lat_warning + gen_warning)
+ if lat_warning or retry_warning:
+ endwarning = '| | {:186.186} |'.format(retry_warning + lat_warning)
+ RapidLog.debug(self.report_result(-attempts, size,
+ iteration_data, iteration_prefix) + success_message +
+ retry_warning + lat_warning + gen_warning)
else:
success_message=' FAILED'
if ((iteration_data['abs_dropped']>0) and (self.test['drop_rate_threshold'] ==0)):
iteration_prefix['abs_drop_rate'] = bcolors.FAIL
- if (iteration_data['drop_rate'] < self.test['drop_rate_threshold']):
+ if (iteration_data['drop_rate'] <= self.test['drop_rate_threshold']):
iteration_prefix['drop_rate'] = bcolors.ENDC
else:
iteration_prefix['drop_rate'] = bcolors.FAIL
@@ -260,6 +281,11 @@ class FlowSizeTest(RapidTest):
iteration_prefix['speed'] = bcolors.ENDC
else:
iteration_prefix['speed'] = bcolors.FAIL
+ if (iteration_data['mis_ordered']< self.test['mis_ordered_threshold']):
+ iteration_prefix['mis_ordered'] = bcolors.ENDC
+ else:
+ iteration_prefix['mis_ordered'] = bcolors.FAIL
+
success = False
RapidLog.debug(self.report_result(-attempts, size,
iteration_data, iteration_prefix) +
@@ -295,5 +321,6 @@ class FlowSizeTest(RapidTest):
'+' + '-' * 13 + '+' + '-' * 13 + '+' + '-' * 24 + '+' +
'-' * 10 + '+' + '-' * 10 + '+' + '-' * 10 + '+' + '-' * 11
+ '+' + '-' * 11 + '+' + '-' * 11 + '+' + '-' * 11 + '+'
+ + '+' + '-' * 11 + '+'
+ '-' * 7 + '+' + '-' * 4 + '+')
return (TestResult, result_details)