Reporting test details for all tests 77/71677/1 stable/jerma opnfv-10.0.0
authorLuc Provoost <luc.provoost@intel.com>
Tue, 8 Dec 2020 20:53:41 +0000 (21:53 +0100)
committerLuc Provoost <luc.provoost@intel.com>
Tue, 8 Dec 2020 20:53:41 +0000 (21:53 +0100)
Test details were only implemented in rapid_flowsizetest.py. When
executing other tests, an error occured. That is now fixed, although in
some cases, None is returned.
The format.yaml files defines now alsowhat will be reported in the
Xtesting details.

Change-Id: I5feae62dcf228664b24451d3fc5dfaaadf7edb5e
Signed-off-by: Luc Provoost <luc.provoost@intel.com>
VNFs/DPPD-PROX/helper-scripts/rapid/format.yaml
VNFs/DPPD-PROX/helper-scripts/rapid/rapid_corestatstest.py
VNFs/DPPD-PROX/helper-scripts/rapid/rapid_flowsizetest.py
VNFs/DPPD-PROX/helper-scripts/rapid/rapid_impairtest.py
VNFs/DPPD-PROX/helper-scripts/rapid/rapid_irqtest.py
VNFs/DPPD-PROX/helper-scripts/rapid/rapid_portstatstest.py
VNFs/DPPD-PROX/helper-scripts/rapid/rapid_test.py
VNFs/DPPD-PROX/helper-scripts/rapid/rapid_warmuptest.py

index f422077..6b1eb45 100644 (file)
   PacketsReceived: PacketsReceived
   PacketsLost: PacketsLost
 rapid_flowsizetest:
-  project_name: "cirv"
-  scenario: "rapid"
-  start_date: start_date
-  stop_date: stop_date
-  case_name: test
-  pod_name: "intel-pod10"
-  installer: "Fuel"
-  version: "1.0"
-  build_tag: "none"
-  criteria: "PASS"
-  details:
-    Flows: Flows 
-    Size: Size
-    Speed (Mpps):
-      RequestedSpeed: RequestedSpeed
-      CoreGenerated: CoreGenerated
-      SentByNIC: SentByNIC
-      FwdBySUT: FwdBySUT
-      RevByCore: RevByCore
-    Latency (usec):
-      AvgLatency: AvgLatency
-      PCTLatency: PCTLatency
-      MaxLatency: MaxLatency
-      Distribution:
-        bucket_size: bucket_size
-        buckets: buckets
-    Absolute Packet Count:
-      PacketsSent: PacketsSent
-      PacketsReceived: PacketsReceived
-      PacketsLost: PacketsLost
+  Flows: Flows 
+  Size: Size
+  Speed (Mpps):
+    RequestedSpeed: RequestedSpeed
+    CoreGenerated: CoreGenerated
+    SentByNIC: SentByNIC
+    FwdBySUT: FwdBySUT
+    RevByCore: RevByCore
+  Latency (usec):
+    AvgLatency: AvgLatency
+    PCTLatency: PCTLatency
+    MaxLatency: MaxLatency
+    Distribution:
+      bucket_size: bucket_size
+      buckets: buckets
+  Absolute Packet Count:
+    PacketsSent: PacketsSent
+    PacketsReceived: PacketsReceived
+    PacketsLost: PacketsLost
 rapid_irqtest:
   Core: Core 
   LessThan1us   : B1
index 6b9fdcf..a6a31c3 100644 (file)
@@ -33,6 +33,7 @@ class CoreStatsTest(RapidTest):
         self.machines = machines 
 
     def run(self):
+        result_details = {'Details': 'Nothing'}
         RapidLog.info("+------------------------------------------------------------------------------------------------------------------+")
         RapidLog.info("| Measuring core statistics on 1 or more PROX instances                                                            |")
         RapidLog.info("+-----------+-----------+------------+------------+------------+------------+------------+------------+------------+")
@@ -71,7 +72,7 @@ class CoreStatsTest(RapidTest):
                 old_tsc[i] = new_tsc[i]
                 tot_drop[i] = tot_drop[i] + tx - rx
                 RapidLog.info('|{:>10.0f}'.format(i)+ ' |{:>10.0f}'.format(duration)+' | ' + '{:>10.0f}'.format(rx) + ' | ' +'{:>10.0f}'.format(tx) + ' | '+'{:>10.0f}'.format(non_dp_rx)+' | '+'{:>10.0f}'.format(non_dp_tx)+' | ' + '{:>10.0f}'.format(tx-rx) + ' | '+ '{:>10.0f}'.format(non_dp_tx-non_dp_rx) + ' | '+'{:>10.0f}'.format(tot_drop[i]) +' |')
-                variables = {'test': self.test['test'],
+                result_details = {'test': self.test['test'],
                         'environment_file': self.test['environment_file'],
                         'PROXID': i,
                         'StepSize': duration,
@@ -80,10 +81,10 @@ class CoreStatsTest(RapidTest):
                         'NonDPReceived': non_dp_rx,
                         'NonDPSent': non_dp_tx,
                         'Dropped': tot_drop[i]}
-                self.post_data('rapid_corestatstest', variables)
+                result_details = self.post_data('rapid_corestatstest', result_details)
                 if machines_to_go == 0:
                     duration = duration - 1
                     machines_to_go = len (self.machines)
         RapidLog.info("+-----------+-----------+------------+------------+------------+------------+------------+------------+------------+")
-        return (True)
+        return (True, result_details)
                 
index 0123a86..c4308b1 100644 (file)
@@ -267,8 +267,8 @@ class FlowSizeTest(RapidTest):
                                 'PacketsLost': endabs_dropped,
                                 'bucket_size': bucket_size,
                                 'buckets': endbuckets}
-                        self.post_data('rapid_flowsizetest', result_details)
+                        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,result_details)
+        return (TestPassed, result_details)
index 8b7f876..2e55aea 100644 (file)
@@ -36,6 +36,7 @@ class ImpairTest(RapidTest):
         self.test['lat_percentile'] = lat_percentile
 
     def run(self):
+        result_details = {'Details': 'Nothing'}
         imix = self.test['imix']
         size = mean (imix)
         flow_number = self.test['flowsize']
@@ -65,7 +66,7 @@ class ImpairTest(RapidTest):
             else:
                 lat_warning = ''
             RapidLog.info(self.report_result(attempts,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,actual_duration))
-            variables = {'test': self.test['test'],
+            result_details = {'test': self.test['test'],
                     'environment_file': self.test['environment_file'],
                     'Flows': flow_number,
                     'Size': size,
@@ -81,6 +82,6 @@ class ImpairTest(RapidTest):
                     'DropRate': drop_rate,
                     'bucket_size': bucket_size,
                     'buckets': buckets}
-            self.post_data('rapid_impairtest', variables)
+            result_details = self.post_data('rapid_impairtest', result_details)
         self.gen_machine.stop_latency_cores()
-        return (True)
+        return (True, result_details)
index 3b3ef94..1afa0f1 100644 (file)
@@ -94,4 +94,4 @@ class IrqTest(RapidTest):
                 for j,bucket in enumerate(buckets):
                     variables['B{}'.format(column_names[j].replace(">","M").replace("<","").replace(" ",""))] = irq[i][j]
                 self.post_data('rapid_irqtest', variables)
-        return (True)
+        return (True, None)
index 90bf5b2..135770f 100644 (file)
@@ -33,6 +33,7 @@ class PortStatsTest(RapidTest):
         self.machines = machines 
 
     def run(self):
+        result_details = {'Details': 'Nothing'}
         RapidLog.info("+---------------------------------------------------------------------------+")
         RapidLog.info("| Measuring port statistics on 1 or more PROX instances                     |")
         RapidLog.info("+-----------+-----------+------------+------------+------------+------------+")
@@ -66,7 +67,7 @@ class PortStatsTest(RapidTest):
                 old_errors[i] = new_errors[i]
                 old_tsc[i] = new_tsc[i]
                 RapidLog.info('|{:>10.0f}'.format(i)+ ' |{:>10.0f}'.format(duration)+' | ' + '{:>10.0f}'.format(rx) + ' | ' +'{:>10.0f}'.format(tx) + ' | '+'{:>10.0f}'.format(no_mbufs)+' | '+'{:>10.0f}'.format(errors)+' |')
-                variables = {'test': self.test['test'],
+                result_details = {'test': self.test['test'],
                         'environment_file': self.test['environment_file'],
                         'PROXID': i,
                         'StepSize': duration,
@@ -74,9 +75,9 @@ class PortStatsTest(RapidTest):
                         'Sent': tx,
                         'NoMbufs': no_mbufs,
                         'iErrMiss': errors}
-                self.post_data('rapid_corestatstest', variables)
+                result_details = self.post_data('rapid_corestatstest', result_details)
                 if machines_to_go == 0:
                     duration = duration - 1
                     machines_to_go = len (self.machines)
         RapidLog.info("+-----------+-----------+------------+------------+------------+------------+")
-        return (True)
+        return (True, result_details)
index 73b41a6..b89eb7b 100644 (file)
@@ -114,29 +114,21 @@ class RapidTest(object):
     def post_data(self, test, variables):
         var = copy.deepcopy(self.data_format)
         self.parse_data_format_dict(var, variables)
-        if 'URL' not in var.keys():
-            return
-        if test not in var.keys():
-            return
-        URL=''
-        for value in var['URL'].values():
-            URL = URL + value
-        HEADERS = {'X-Requested-With': 'Python requests', 'Content-type': 'application/rapid'}
-        if 'Format' in var.keys():
+        if var.keys() >= {'URL', test, 'Format'}:
+            URL=''
+            for value in var['URL'].values():
+                URL = URL + value
+            HEADERS = {'X-Requested-With': 'Python requests', 'Content-type': 'application/rapid'}
             if var['Format'] == 'PushGateway':
                 data = "\n".join("{} {}".format(k, v) for k, v in var[test].items()) + "\n"
                 response = requests.post(url=URL, data=data,headers=HEADERS)
             elif var['Format'] == 'Xtesting':
                 data = var[test]
                 response = requests.post(url=URL, json=data)
-            else:
-                return
-        else:
-            return
-        if (response.status_code != 202) and (response.status_code != 200):
-            RapidLog.info('Cannot send metrics to {}'.format(URL))
-            RapidLog.info(data)
-
+            if (response.status_code >= 300):
+                RapidLog.info('Cannot send metrics to {}'.format(URL))
+                RapidLog.info(data)
+        return (var[test])
 
     @staticmethod
     def report_result(flow_number, size, speed, pps_req_tx, pps_tx, pps_sut_tx,
index 55f07be..32579f8 100644 (file)
@@ -48,4 +48,4 @@ class WarmupTest(RapidTest):
         self.gen_machine.stop()
     #    gen_machine['socket'].set_value(gencores,0,56,50,1)
         time.sleep(WARMUPTIME)
-        return (True)
+        return (True, None)