From 204a30e7f8d2c7b51208767c715916729b6017b2 Mon Sep 17 00:00:00 2001 From: Billy O'Mahony Date: Tue, 7 Jul 2015 14:26:14 +0100 Subject: testcase: Add frame modification config * Added a new standard set of flow table that defaults to routing phy1 to phy2 and vice-versa and allows frame modification and tuple matches to be added independently of routing. * Add a FrameMod testcase attribute - implement this for value 'vlan' * With FrameMod == 'vlan' the reported tx_fps and rx_fps figures do not match even for RFC2544 throughtput 0% packet loss - this is a pre-existing bug and a fix will be done as a separate patch. The rx_fps figure is the reliable figure. JIRA: VSPERF-27 Change-Id: Idd137b7a101305e7aebb6fabdfb6a7a4dcf8661b Signed-off-by: Billy O'Mahony Reviewed-by: Al Morton Reviewed-by: Eugene Snider Reviewed-by: Maryam Tahhan Reviewed-by: Gurpreet Singh Reviewed-by: Tv Rao --- testcases/testcase.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'testcases/testcase.py') diff --git a/testcases/testcase.py b/testcases/testcase.py index 5ad91f2a..83e038db 100644 --- a/testcases/testcase.py +++ b/testcases/testcase.py @@ -31,7 +31,10 @@ class TestCase(object): def __init__(self, cfg, results_dir): """Pull out fields from test config - No external actions yet. + :param cfg: A dictionary of string-value pairs describing the test + configuration. Both the key and values strings use well-known + values. + :param results_dir: Where the csv formatted results are written. """ self._logger = logging.getLogger(__name__) self.name = cfg['Name'] @@ -40,6 +43,9 @@ class TestCase(object): self._deployment = cfg['Deployment'] self._collector = cfg['Collector'] self._bidir = cfg['biDirectional'] + self._frame_mod = cfg.get('Frame Modification', None) + if self._frame_mod: + self._frame_mod = self._frame_mod.lower() self._results_dir = results_dir def run(self): @@ -64,12 +70,20 @@ class TestCase(object): self._collector, loader.get_collector_class()) + self._logger.debug("Setup:") collector_ctl.log_cpu_stats() with vswitch_ctl: if vnf_ctl: vnf_ctl.start() traffic = {'traffic_type': self._traffic_type, 'bidir': self._bidir} + vswitch = vswitch_ctl.get_vswitch() + if self._frame_mod == "vlan": + flow = {'table':'2', 'priority':'1000', 'metadata':'2', 'actions': ['push_vlan:0x8100','goto_table:3']} + vswitch.add_flow('br0', flow) + flow = {'table':'2', 'priority':'1000', 'metadata':'1', 'actions': ['push_vlan:0x8100','goto_table:3']} + vswitch.add_flow('br0', flow) + with traffic_ctl: traffic_ctl.send_traffic(traffic) -- cgit 1.2.3-korg