Support for xtesting
[samplevnf.git] / VNFs / DPPD-PROX / helper-scripts / rapid / rapid_flowsizetest.py
index c90630e..0123a86 100644 (file)
@@ -49,9 +49,6 @@ class FlowSizeTest(RapidTest):
             self.test['TST009_S']= []
             for m in range(0, self.test['TST009_n']):
                 self.test['TST009_S'].append((m+1) * self.test['stepsize'])
-            self.test['lat_avg_threshold'] = inf
-            self.test['lat_perc_threshold'] = inf
-            self.test['lat_max_threshold'] = inf
         elif self.test['test'] == 'fixed_rate':
             for key in['drop_rate_threshold','lat_avg_threshold',
                     'lat_perc_threshold','lat_max_threshold']:
@@ -100,12 +97,7 @@ class FlowSizeTest(RapidTest):
             return ((self.test['maxspeed'] - self.test['minspeed']) <= self.test['accuracy'])
 
     def run(self):
-    #    global fieldnames
-    #    global writer
-    #    #fieldnames = ['Flows','PacketSize','Gbps','Mpps','AvgLatency','MaxLatency','PacketsDropped','PacketDropRate']
-    #    fieldnames = ['Flows','PacketSize','RequestedPPS','GeneratedPPS','SentPPS','ForwardedPPS','ReceivedPPS','AvgLatencyUSEC','MaxLatencyUSEC','Sent','Received','Lost','LostTotal']
-    #    writer = csv.DictWriter(data_csv_file, fieldnames=fieldnames)
-    #    writer.writeheader()
+        result_details = {'Details': 'Nothing'}
         self.gen_machine.start_latency_cores()
         TestPassed = True
         for imix in self.test['imixs']:
@@ -141,7 +133,7 @@ class FlowSizeTest(RapidTest):
                     self.set_background_speed(self.background_machines, speed)
                     self.start_background_traffic(self.background_machines)
                     # Get statistics now that the generation is stable and initial ARP messages are dealt with
-                    pps_req_tx,pps_tx,pps_sut_tx,pps_rx,lat_avg,lat_perc , lat_perc_max, lat_max, abs_tx,abs_rx,abs_dropped, abs_tx_fail, drop_rate, lat_min, lat_used, r, actual_duration = self.run_iteration(float(self.test['runtime']),flow_number,size,speed)
+                    pps_req_tx,pps_tx,pps_sut_tx,pps_rx,lat_avg,lat_perc , lat_perc_max, lat_max, abs_tx,abs_rx,abs_dropped, abs_tx_fail, drop_rate, lat_min, lat_used, r, actual_duration, avg_bg_rate, bucket_size, buckets = self.run_iteration(float(self.test['runtime']),flow_number,size,speed)
                     self.stop_background_traffic(self.background_machines)
                     if r > 1:
                         retry_warning = bcolors.WARNING + ' {:1} retries needed'.format(r) +  bcolors.ENDC
@@ -163,10 +155,12 @@ class FlowSizeTest(RapidTest):
                         endlat_perc = lat_perc
                         endlat_perc_max = lat_perc_max
                         endlat_max = lat_max
+                        endbuckets = buckets
                         endabs_dropped = abs_dropped
                         enddrop_rate = drop_rate
                         endabs_tx = abs_tx
                         endabs_rx = abs_rx
+                        endavg_bg_rate = avg_bg_rate
                         if lat_warning or retry_warning:
                             endwarning = '|        | {:177.177} |'.format(retry_warning + lat_warning)
                         success = True
@@ -195,10 +189,12 @@ class FlowSizeTest(RapidTest):
                         endlat_perc = lat_perc
                         endlat_perc_max = lat_perc_max
                         endlat_max = lat_max
+                        endbuckets = buckets
                         endabs_dropped = None
                         enddrop_rate = drop_rate
                         endabs_tx = abs_tx
                         endabs_rx = abs_rx
+                        endavg_bg_rate = avg_bg_rate
                         if lat_warning or gen_warning or retry_warning:
                             endwarning = '|        | {:186.186} |'.format(retry_warning + lat_warning + gen_warning)
                         success = True
@@ -244,17 +240,21 @@ class FlowSizeTest(RapidTest):
                         TestPassed = False
                     speed_prefix = lat_avg_prefix = lat_perc_prefix = lat_max_prefix = abs_drop_rate_prefix = drop_rate_prefix = bcolors.ENDC
                     RapidLog.info(self.report_result(flow_number,size,endspeed,endpps_req_tx,endpps_tx,endpps_sut_tx,endpps_rx,endlat_avg,endlat_perc,endlat_perc_max,endlat_max,endabs_tx,endabs_rx,endabs_dropped,actual_duration,speed_prefix,lat_avg_prefix,lat_perc_prefix,lat_max_prefix,abs_drop_rate_prefix,drop_rate_prefix))
+                    if endavg_bg_rate:
+                        tot_avg_rx_rate = endpps_rx + (endavg_bg_rate * len(self.background_machines))
+                        endtotaltrafficrate = '|        | Total amount of traffic received by all generators during this test: {:>4.3f} Gb/s {:7.3f} Mpps {} |'.format(RapidTest.get_speed(tot_avg_rx_rate,size) , tot_avg_rx_rate, ' '*84)
+                        RapidLog.info (endtotaltrafficrate)
                     if endwarning:
                         RapidLog.info (endwarning)
                     RapidLog.info("+--------+------------------+-------------+-------------+-------------+------------------------+----------+----------+----------+-----------+-----------+-----------+-----------+-------+----+")
                     if self.test['test'] != 'fixed_rate':
-                        variables = {'test': self.test['testname'],
+                        result_details = {'test': self.test['testname'],
                                 'environment_file': self.test['environment_file'],
                                 'start_date': self.start,
                                 'stop_date': self.stop,
                                 'Flows': flow_number,
                                 'Size': size,
-                                'RequestedSpeed': RapidTest.get_pps(speed,size),
+                                'RequestedSpeed': RapidTest.get_pps(endspeed,size),
                                 'CoreGenerated': endpps_req_tx,
                                 'SentByNIC': endpps_tx,
                                 'FwdBySUT': endpps_sut_tx,
@@ -264,10 +264,11 @@ class FlowSizeTest(RapidTest):
                                 'MaxLatency': endlat_max,
                                 'PacketsSent': endabs_tx,
                                 'PacketsReceived': endabs_rx,
-                                'PacketsLost': abs_dropped}
-                        self.post_data('rapid_flowsizetest', variables)
+                                'PacketsLost': endabs_dropped,
+                                'bucket_size': bucket_size,
+                                'buckets': endbuckets}
+                        self.post_data('rapid_flowsizetest', result_details)
                 else:
                     RapidLog.info('|{:>7}'.format(str(flow_number))+" | Speed 0 or close to 0")
         self.gen_machine.stop_latency_cores()
-        return (TestPassed)
-
+        return (TestPassed,result_details)