1 # Copyright (c) 2017 Cisco and/or its affiliates.
2 # Licensed under the Apache License, Version 2.0 (the "License");
3 # you may not use this file except in compliance with the License.
4 # You may obtain a copy of the License at:
6 # http://www.apache.org/licenses/LICENSE-2.0
8 # Unless required by applicable law or agreed to in writing, software
9 # distributed under the License is distributed on an "AS IS" BASIS,
10 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 # See the License for the specific language governing permissions and
12 # limitations under the License.
14 """Test data for Honeycomb routing test."""
16 from resources.libraries.python.topology import Topology
19 def get_variables(node, ip_version, out_interface):
21 out_interface = Topology.convert_interface_reference(
22 node, out_interface, "name")
24 ip_version = ip_version.lower()
27 # base network settings
29 "dut_to_tg_if1_ip": "16.0.0.1",
30 "dut_to_tg_if2_ip": "16.0.1.1",
33 "dst_net": "16.0.2.0",
35 "next_hop": "16.0.1.2",
36 "next_hop1": "16.0.1.3",
37 "next_hop2": "16.0.1.4",
38 "next_hop_mac1": "00:11:22:33:44:55",
39 "next_hop_mac2": "11:22:33:44:55:66"
43 "dut_to_tg_if1_ip": "10::1",
44 "dut_to_tg_if2_ip": "11::1",
48 "dst_net_full": "12:0:0:0:0:0:0:0",
53 "next_hop_mac1": "00:11:22:33:44:55",
54 "next_hop_mac2": "11:22:33:44:55:66"
57 if ip_version == "ipv4":
58 variables.update(ipv4_base)
59 elif ip_version == "ipv6":
60 variables.update(ipv6_base)
62 raise ValueError("IP version must be either IPv4 or IPv6.")
64 # route configuration used in tests
68 "description": "single hop ipv4",
70 "{0}/{1}".format(ipv4_base["dst_net"], ipv4_base["prefix_len"]),
71 "next-hop": ipv4_base["next_hop"],
72 "outgoing-interface": out_interface,
77 "description": "multi hop ipv4",
79 "{0}/{1}".format(ipv4_base["dst_net"], ipv4_base["prefix_len"]),
84 "address": ipv4_base["next_hop1"],
85 "outgoing-interface": out_interface,
90 "address": ipv4_base["next_hop2"],
91 "outgoing-interface": out_interface,
99 "description": "blackhole ipv4",
100 "destination-prefix":
101 "{0}/{1}".format(ipv4_base["dst_net"], ipv4_base["prefix_len"]),
102 "special-next-hop": "receive"
106 "description": "single hop ipv6",
107 "destination-prefix":
108 "{0}/{1}".format(ipv6_base["dst_net"], ipv6_base["prefix_len"]),
109 "next-hop": ipv6_base["next_hop"],
110 "outgoing-interface": out_interface,
115 "description": "multi hop ipv6",
116 "destination-prefix":
117 "{0}/{1}".format(ipv6_base["dst_net"], ipv6_base["prefix_len"]),
122 "address": ipv6_base["next_hop1"],
123 "outgoing-interface": out_interface,
128 "address": ipv6_base["next_hop2"],
129 "outgoing-interface": out_interface,
137 "description": "blackhole ipv6",
138 "destination-prefix":
139 "{0}/{1}".format(ipv6_base["dst_net"], ipv6_base["prefix_len"]),
140 "special-next-hop": "blackhole"
144 # expected route operational data
147 "destination-prefix":
148 "{0}/{1}".format(ipv4_base["dst_net"], ipv4_base["prefix_len"]),
149 "next-hop": ipv4_base["next_hop"],
150 "outgoing-interface": out_interface,
151 "vpp-ipv4-route-state": {}
154 "destination-prefix":
155 "{0}/{1}".format(ipv4_base["dst_net"], ipv4_base["prefix_len"]),
159 "address": ipv4_base["next_hop1"],
160 "outgoing-interface": out_interface,
164 "address": ipv4_base["next_hop2"],
165 "outgoing-interface": out_interface,
170 'vpp-ipv4-route-state': {}
173 "destination-prefix":
174 "{0}/{1}".format(ipv4_base["dst_net"], ipv4_base["prefix_len"]),
175 "special-next-hop": "receive",
176 "vpp-ipv4-route-state": {}
179 "destination-prefix":
180 "{0}/{1}".format(ipv6_base["dst_net_full"],
181 ipv6_base["prefix_len"]),
182 "next-hop": ipv6_base["next_hop"],
183 "outgoing-interface": out_interface,
184 "vpp-ipv6-route-state": {}
187 "destination-prefix":
188 "{0}/{1}".format(ipv6_base["dst_net_full"],
189 ipv6_base["prefix_len"]),
193 "address": ipv6_base["next_hop1"],
194 "outgoing-interface": out_interface,
198 "address": ipv6_base["next_hop2"],
199 "outgoing-interface": out_interface,
204 "vpp-ipv6-route-state": {}
207 "destination-prefix":
208 "{0}/{1}".format(ipv6_base["dst_net_full"],
209 ipv6_base["prefix_len"]),
210 "special-next-hop": "blackhole",
211 'vpp-ipv6-route-state': {}
215 for item in tables_oper.values():
216 if "next-hop-list" in item.keys():
217 item["next-hop-list"]["next-hop"].sort()
219 variables.update(tables_cfg)
220 variables.update(tables_oper)