Preparation for packet mis-ordering stats
[samplevnf.git] / VNFs / DPPD-PROX / helper-scripts / rapid / rapid_flowsizetest.py
index f547b3c..042fc8d 100644 (file)
@@ -97,14 +97,8 @@ 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()
-        self.gen_machine.start_latency_cores()
-        TestPassed = True
+        result_details = {'Details': 'Nothing'}
+        TestResult = 0
         for imix in self.test['imixs']:
             size = mean(imix)
             self.gen_machine.set_udp_packet_size(imix)
@@ -114,7 +108,7 @@ class FlowSizeTest(RapidTest):
                 backgroundinfo = '{}{}'.format(bcolors.FLASH,bcolors.ENDC)
             self.set_background_size(self.background_machines, imix)
             RapidLog.info("+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+")
-            RapidLog.info('| UDP, {:>5} bytes, different number of flows by randomizing SRC & DST UDP port. {:116.116}|'.format(size, backgroundinfo))
+            RapidLog.info('| UDP, {:>5} bytes, different number of flows by randomizing SRC & DST UDP port. {:116.116}|'.format(round(size), backgroundinfo))
             RapidLog.info("+--------+------------------+-------------+-------------+-------------+------------------------+----------+----------+----------+-----------+-----------+-----------+-----------+-------+----+")
             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))
             RapidLog.info("+--------+------------------+-------------+-------------+-------------+------------------------+----------+----------+----------+-----------+-----------+-----------+-----------+-------+----+")
@@ -127,7 +121,6 @@ class FlowSizeTest(RapidTest):
                 self.set_background_flows(self.background_machines, flow_number)
                 endspeed = None
                 speed = self.get_start_speed_and_init(size)
-                self.record_start_time()
                 while True:
                     attempts += 1
                     endwarning = False
@@ -169,7 +162,7 @@ class FlowSizeTest(RapidTest):
                         if lat_warning or retry_warning:
                             endwarning = '|        | {:177.177} |'.format(retry_warning + lat_warning)
                         success = True
-                        TestPassed = False # fixed rate testing cannot be True, it is just reporting numbers every second
+                        TestResult = TestResult + pps_rx # fixed rate testing result is strange: we just report the pps received
                         speed_prefix = lat_avg_prefix = lat_perc_prefix = lat_max_prefix = abs_drop_rate_prefix = drop_rate_prefix = bcolors.ENDC
                     # The following if statement is testing if we pass the success criteria of a certain drop rate, average latency and maximum latency below the threshold
                     # The drop rate success can be achieved in 2 ways: either the drop rate is below a treshold, either we want that no packet has been lost during the test
@@ -239,10 +232,7 @@ class FlowSizeTest(RapidTest):
                             break
                     elif self.resolution_achieved():
                         break
-                self.record_stop_time()
                 if endspeed is not None:
-                    if TestPassed and (endpps_rx < self.test['pass_threshold']):
-                        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:
@@ -253,13 +243,12 @@ class FlowSizeTest(RapidTest):
                         RapidLog.info (endwarning)
                     RapidLog.info("+--------+------------------+-------------+-------------+-------------+------------------------+----------+----------+----------+-----------+-----------+-----------+-----------+-------+----+")
                     if self.test['test'] != 'fixed_rate':
-                        variables = {'test': self.test['testname'],
+                        TestResult = TestResult + endpps_rx
+                        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,
@@ -269,12 +258,11 @@ class FlowSizeTest(RapidTest):
                                 'MaxLatency': endlat_max,
                                 'PacketsSent': endabs_tx,
                                 'PacketsReceived': endabs_rx,
-                                'PacketsLost': abs_dropped,
+                                'PacketsLost': endabs_dropped,
                                 'bucket_size': bucket_size,
                                 'buckets': endbuckets}
-                        self.post_data('rapid_flowsizetest', variables)
+                        result_details = 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 (TestResult, result_details)