New test case: gen versus swap via gateway 82/72482/1
authorLuc Provoost <luc.provoost@intel.com>
Wed, 5 May 2021 16:09:07 +0000 (18:09 +0200)
committerLuc Provoost <luc.provoost@intel.com>
Wed, 5 May 2021 16:09:07 +0000 (18:09 +0200)
A new test was added: tests/basicrapid_gw.test. Traffic generated will
now go to the reflector (swap instance) via the Gateway. The swap
instance will also send the traffic back via the gateway. This use case
is created to support GCP testing where the interfaces are defined with
a /32 netmask, and hence all traffic is routed via the gateway.

Change-Id: I60142d650072ab345cd47a0f32cb6a8275da0542
Signed-off-by: Luc Provoost <luc.provoost@intel.com>
VNFs/DPPD-PROX/helper-scripts/rapid/configs/swap_gw.cfg [new file with mode: 0644]
VNFs/DPPD-PROX/helper-scripts/rapid/rapid_generator_machine.py
VNFs/DPPD-PROX/helper-scripts/rapid/rapid_machine.py
VNFs/DPPD-PROX/helper-scripts/rapid/tests/basicrapid_gw.test [new file with mode: 0644]

diff --git a/VNFs/DPPD-PROX/helper-scripts/rapid/configs/swap_gw.cfg b/VNFs/DPPD-PROX/helper-scripts/rapid/configs/swap_gw.cfg
new file mode 100644 (file)
index 0000000..abadfa6
--- /dev/null
@@ -0,0 +1,50 @@
+;;
+;; Copyright (c) 2010-2019 Intel Corporation
+;;
+;; Licensed under the Apache License, Version 2.0 (the "License");
+;; you may not use this file except in compliance with the License.
+;; You may obtain a copy of the License at
+;;
+;;     http://www.apache.org/licenses/LICENSE-2.0
+;;
+;; Unless required by applicable law or agreed to in writing, software
+;; distributed under the License is distributed on an "AS IS" BASIS,
+;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+;; See the License for the specific language governing permissions and
+;; limitations under the License.
+;;
+
+[lua]
+dofile("parameters.lua")
+
+[eal options]
+-n=4 ; force number of memory channels
+no-output=no ; disable DPDK debug output
+eal=--proc-type auto ${eal}
+
+[port 0]
+name=if0
+mac=hardware
+vlan=yes
+vdev=swap_tap
+local ipv4=${local_ip1}
+
+[defaults]
+mempool size=8K
+
+[global]
+name=${name}
+
+[core $mcore]
+mode=master
+
+[core $cores]
+name=swap
+task=0
+mode=swap
+sub mode=l3
+rx port=if0
+tx port=if0
+gateway ipv4=${gw_ip1}
+drop=no
+;arp update time=1
index 9f1af50..5d6916a 100644 (file)
@@ -108,12 +108,6 @@ class RapidGeneratorMachine(RapidMachine):
             self.machine_params['gencores']))
         appendix = appendix + 'latcores="%s"\n'% ','.join(map(str,
             self.machine_params['latcores']))
-        if 'gw_vm' in self.machine_params.keys():
-            for index, gw_ip in enumerate(self.machine_params['gw_ips'],
-                    start = 1):
-                appendix = appendix + 'gw_ip{}="{}"\n'.format(index, gw_ip)
-                appendix = (appendix + 'gw_hex_ip{}=convertIPToHex(gw_ip{})\n'.
-                        format(index, index))
         appendix = (appendix +
                 'bucket_size_exp="{}"\n'.format(self.bucket_size_exp))
         if 'heartbeat' in self.machine_params.keys():
index e97b255..d0ce8c1 100644 (file)
@@ -50,10 +50,11 @@ class RapidMachine(object):
         self.machine_params = machine_params
         self.vim = vim
         self.cpu_mapping = None
-        PROXConfigfile =  open (self.machine_params['config_file'], 'r')
-        PROXConfig = PROXConfigfile.read()
-        PROXConfigfile.close()
-        self.all_tasks_for_this_cfg = set(re.findall("task\s*=\s*(\d+)",PROXConfig))
+        if 'config_file' in self.machine_params.keys():
+            PROXConfigfile =  open (self.machine_params['config_file'], 'r')
+            PROXConfig = PROXConfigfile.read()
+            PROXConfigfile.close()
+            self.all_tasks_for_this_cfg = set(re.findall("task\s*=\s*(\d+)",PROXConfig))
 
     def __del__(self):
         if ((not self.configonly) and self.machine_params['prox_socket']):
@@ -154,6 +155,12 @@ class RapidMachine(object):
                     LuaFile.write('dest_ip{}="{}"\n'.format(index, dest_port['ip']))
                     LuaFile.write('dest_hex_ip{}=convertIPToHex(dest_ip{})\n'.format(index, index))
                     LuaFile.write('dest_hex_mac{}="{}"\n'.format(index , dest_port['mac'].replace(':',' ')))
+            if 'gw_vm' in self.machine_params.keys():
+                for index, gw_ip in enumerate(self.machine_params['gw_ips'],
+                        start = 1):
+                    LuaFile.write('gw_ip{}="{}"\n'.format(index, gw_ip))
+                    LuaFile.write('gw_hex_ip{}=convertIPToHex(gw_ip{})\n'.
+                            format(index, index))
             LuaFile.write(appendix)
         self._client.scp_put(self.LuaFileName, self.rundir + '/parameters.lua')
         self._client.scp_put('helper.lua', self.rundir + '/helper.lua')
diff --git a/VNFs/DPPD-PROX/helper-scripts/rapid/tests/basicrapid_gw.test b/VNFs/DPPD-PROX/helper-scripts/rapid/tests/basicrapid_gw.test
new file mode 100644 (file)
index 0000000..a876a04
--- /dev/null
@@ -0,0 +1,73 @@
+##
+## Copyright (c) 2021 Intel Corporation
+##
+## Licensed under the Apache License, Version 2.0 (the "License");
+## you may not use this file except in compliance with the License.
+## You may obtain a copy of the License at
+##
+##     http://www.apache.org/licenses/LICENSE-2.0
+##
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an "AS IS" BASIS,
+## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## See the License for the specific language governing permissions and
+## limitations under the License.
+##
+# CHECK README IN THIS DIRECTORY FOR MORE EXPLANATION
+# ON PARAMETERS IN THIS FILE
+
+[TestParameters]
+name = BasicSwapWithGatewayTesting
+number_of_tests = 1
+total_number_of_test_machines = 3
+lat_percentile = 99
+
+[TestM1]
+name = Generator
+config_file = configs/gen_gw.cfg
+gw_vm = 2
+dest_vm = 3
+mcore = [0]
+gencores = [1]
+latcores = [3]
+#bucket_size_exp = 12
+
+[TestM2]
+name = Gateway
+monitor = false
+prox_socket = false
+prox_launch_exit = false
+
+[TestM3]
+name = Swap
+config_file = configs/swap_gw.cfg
+gw_vm = 2
+mcore = [0]
+cores = [1]
+#prox_socket = true
+#prox_launch_exit = true
+
+[test1]
+test=flowsizetest
+warmupflowsize=512
+warmupimix=[64]
+warmupspeed=1
+warmuptime=2
+# Each element in the imix list will result in a separate test. Each element
+# is on its turn a list of packet sizes which will be used during one test
+# execution. If you only want to test 1 size, define a list with only one
+# element.
+imixs=[[64],[64,250,800,800]]
+# the number of flows in the list need to be powers of 2, max 2^30
+# If not a power of 2, we will use the lowest power of 2 that is larger than
+# the requested number of flows. e.g. 9 will result in 16 flows
+flows=[64,500000]
+# Setting one of the following thresholds to infinity (inf)
+# results in the criterion not being evaluated to rate the test as succesful
+drop_rate_threshold = 0.1
+lat_avg_threshold = 50
+lat_perc_threshold = 80
+lat_max_threshold = inf
+accuracy = 1
+startspeed = 50
+#ramp_step = 1