aboutsummaryrefslogtreecommitdiffstats
path: root/tools/pkt_gen/xena/json/xena_json_pairs.py
diff options
context:
space:
mode:
authorChristian Trautman <ctrautma@redhat.com>2017-04-27 16:08:49 -0400
committerChristian Trautman <ctrautma@redhat.com>2017-05-15 10:23:32 -0400
commit7eaeffff1c2976e1022f7716c7eb0c746482824e (patch)
treed5e1dea51a1f2c859241803aea1d017625d0b291 /tools/pkt_gen/xena/json/xena_json_pairs.py
parent59aae8c0539ca9632d9ffdcb2788ab715fbff9ec (diff)
xena_pairs: Add pairs topology for 2544 testing
Add xena pairs topology and port removal options for JSON files with RFC2544 testing. Refactored JSON code for better expansion later. Resolved pathing issues related to previous patch allowing for execution of VSPerf from any directory. JIRA: VSPERF-502 Change-Id: Ida60c1223ae0f45f8879351770ab7fdce859b59b Signed-off-by: Christian Trautman <ctrautma@redhat.com>
Diffstat (limited to 'tools/pkt_gen/xena/json/xena_json_pairs.py')
-rw-r--r--tools/pkt_gen/xena/json/xena_json_pairs.py60
1 files changed, 60 insertions, 0 deletions
diff --git a/tools/pkt_gen/xena/json/xena_json_pairs.py b/tools/pkt_gen/xena/json/xena_json_pairs.py
new file mode 100644
index 00000000..4f97f0ba
--- /dev/null
+++ b/tools/pkt_gen/xena/json/xena_json_pairs.py
@@ -0,0 +1,60 @@
+# Copyright 2017 Red Hat Inc & Xena Networks.
+#
+# 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.
+
+# Contributors:
+# Dan Amzulescu, Xena Networks
+# Christian Trautman, Red Hat Inc.
+#
+# Usage can be seen below in unit test. This implementation is designed for one
+# module two port Xena chassis runs only.
+
+"""
+Xena JSON module for pairs topology
+"""
+
+from tools.pkt_gen.xena.json.xena_json import XenaJSON
+
+
+class XenaJSONPairs(XenaJSON):
+ """
+ Class to modify and read Xena JSON configuration files. Topology will be set
+ as Blocks
+ """
+ def __init__(self):
+ super(XenaJSONPairs, self).__init__()
+ self.set_topology_pairs()
+
+ def set_topology_pairs(self):
+ """
+ Set the test topology to loopback pairs for packets that need to return
+ to the same port they are sent from
+ :return: None
+ """
+ self.json_data['TestOptions']['TopologyConfig']['Topology'] = 'PAIRS'
+ self.json_data['TestOptions']['TopologyConfig'][
+ 'Direction'] = 'WEST_EAST'
+ self.json_data['PortHandler']['EntityList'][0][
+ 'PortGroup'] = "WEST"
+ self.json_data['PortHandler']['EntityList'][1][
+ 'PortGroup'] = "WEST"
+
+ def remove_port(self, port_number):
+ """
+ Remove a port from the config.
+ :param port_number: port to remove from json config as int
+ :return: None
+ """
+ del self.json_data['PortHandler']['EntityList'][port_number]
+ del self.json_data['StreamHandler']['StreamConnectionList'][0][
+ 'Port{}Id'.format(port_number + 1)]