Tolerate failures when setting MTU
[csit.git] / resources / test_data / honeycomb / routing.py
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:
5 #
6 #     http://www.apache.org/licenses/LICENSE-2.0
7 #
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.
13
14 """Test data for Honeycomb routing test."""
15
16 from resources.libraries.python.topology import Topology
17
18
19 def get_variables(node, ip_version, out_interface):
20
21     out_interface = Topology.convert_interface_reference(
22         node, out_interface, "name")
23
24     ip_version = ip_version.lower()
25     variables = {}
26
27     # base network settings
28     ipv4_base = {
29         "dut_to_tg_if1_ip": "16.0.0.1",
30         "dut_to_tg_if2_ip": "16.0.1.1",
31         "src_ip": "16.0.0.2",
32         "dst_ip": "16.0.2.1",
33         "dst_net": "16.0.2.0",
34         "prefix_len": 24,
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"
40     }
41
42     ipv6_base = {
43         "dut_to_tg_if1_ip": "10::1",
44         "dut_to_tg_if2_ip": "11::1",
45         "src_ip": "10::2",
46         "dst_ip": "12::1",
47         "dst_net": "12::",
48         "prefix_len": 64,
49         "next_hop": "11::2",
50         "next_hop1": "11::3",
51         "next_hop2": "11::4",
52         "next_hop_mac1": "00:11:22:33:44:55",
53         "next_hop_mac2": "11:22:33:44:55:66"
54     }
55
56     if ip_version == "ipv4":
57         variables.update(ipv4_base)
58     elif ip_version == "ipv6":
59         variables.update(ipv6_base)
60     else:
61         raise ValueError("IP version must be either IPv4 or IPv6.")
62
63     # route configuration used in tests
64     tables_cfg = {
65         "table1": {
66             "description": "single hop ipv4",
67             "destination-prefix":
68                 "{0}/{1}".format(ipv4_base["dst_net"], ipv4_base["prefix_len"]),
69             "next-hop": {
70                 "next-hop-address": ipv4_base["next_hop"],
71                 "outgoing-interface": out_interface
72             },
73             "vpp-ipv4-unicast-routing:vpp-ipv4-route": {}
74         },
75         "table2": {
76             "description": "multi hop ipv4",
77             "destination-prefix":
78                 "{0}/{1}".format(ipv4_base["dst_net"], ipv4_base["prefix_len"]),
79             "next-hop":{
80                 "next-hop-list": {
81                     "next-hop": [
82                         {
83                             "index": "1",
84                             "next-hop-address": ipv4_base["next_hop1"],
85                             "outgoing-interface": out_interface,
86                             "weight": "1"
87                         },
88                         {
89                             "index": "2",
90                             "next-hop-address": ipv4_base["next_hop2"],
91                             "outgoing-interface": out_interface,
92                             "weight": "1"
93                         }
94                     ]
95                 }
96             }
97         },
98         "table3": {
99             "description": "blackhole ipv4",
100             "destination-prefix":
101                 "{0}/{1}".format(ipv4_base["dst_net"], ipv4_base["prefix_len"]),
102             "next-hop": {
103                 "special-next-hop-enum": "blackhole"
104             }
105         },
106         "table4": {
107             "description": "single hop ipv6",
108             "destination-prefix":
109                 "{0}/{1}".format(ipv6_base["dst_net"], ipv6_base["prefix_len"]),
110             "next-hop": {
111                 "next-hop-address": ipv6_base["next_hop"],
112                 "outgoing-interface": out_interface
113             },
114             "vpp-ipv6-unicast-routing:vpp-ipv6-route": {}
115         },
116         "table5": {
117             "description": "multi hop ipv6",
118             "destination-prefix":
119                 "{0}/{1}".format(ipv6_base["dst_net"], ipv6_base["prefix_len"]),
120             "next-hop":{
121                 "next-hop-list": {
122                     "next-hop": [
123                         {
124                             "index": "1",
125                             "next-hop-address": ipv6_base["next_hop1"],
126                             "outgoing-interface": out_interface,
127                             "weight": "1"
128                         },
129                         {
130                             "index": "2",
131                             "next-hop-address": ipv6_base["next_hop2"],
132                             "outgoing-interface": out_interface,
133                             "weight": "1"
134                         }
135                     ]
136                 }
137             }
138         },
139         "table6": {
140             "description": "blackhole ipv6",
141             "destination-prefix":
142                 "{0}/{1}".format(ipv6_base["dst_net"], ipv6_base["prefix_len"]),
143             "next-hop":{
144                 "special-next-hop-enum": "blackhole"
145             }
146         }
147     }
148
149     # expected route operational data
150     tables_oper = {
151         "table1_oper": {
152             "destination-prefix":
153                 "{0}/{1}".format(ipv4_base["dst_net"], ipv4_base["prefix_len"]),
154             "next-hop": {
155                 "next-hop-address": ipv4_base["next_hop"],
156                 "outgoing-interface": out_interface
157             }
158         },
159         "table2_oper": {
160             "destination-prefix":
161                 "{0}/{1}".format(ipv4_base["dst_net"], ipv4_base["prefix_len"]),
162             "next-hop": {
163                 "next-hop-list": {
164                     "next-hop": [
165                         {
166                             "index": "2",
167                             "next-hop-address": ipv4_base["next_hop2"],
168                             "outgoing-interface": out_interface,
169                             "vpp-ipv4-unicast-routing:weight": 1
170                         },
171                         {
172                             "index": "1",
173                             "next-hop-address": ipv4_base["next_hop1"],
174                             "outgoing-interface": out_interface,
175                             "vpp-ipv4-unicast-routing:weight": 1
176                         }
177                     ]
178                 }
179             }
180         },
181         "table3_oper": {
182             "destination-prefix":
183                 "{0}/{1}".format(ipv4_base["dst_net"], ipv4_base["prefix_len"]),
184             "next-hop": {
185                 "special-next-hop-enum": "blackhole"
186             }
187         },
188         "table4_oper": {
189             "destination-prefix":
190                 "{0}/{1}".format(ipv6_base["dst_net"],
191                                  ipv6_base["prefix_len"]),
192             "next-hop": {
193                 "next-hop-address": ipv6_base["next_hop"],
194                 "outgoing-interface": out_interface
195             }
196         },
197         "table5_oper": {
198             "destination-prefix":
199                 "{0}/{1}".format(ipv6_base["dst_net"],
200                                  ipv6_base["prefix_len"]),
201             "next-hop": {
202                 "next-hop-list": {
203                     "next-hop": [
204                         {
205                             "index": "2",
206                             "next-hop-address": ipv6_base["next_hop2"],
207                             "outgoing-interface": out_interface,
208                             "vpp-ipv6-unicast-routing:weight": 1
209                         },
210                         {
211                             "index": "1",
212                             "next-hop-address": ipv6_base["next_hop1"],
213                             "outgoing-interface": out_interface,
214                             "vpp-ipv6-unicast-routing:weight": 1
215                         }
216                     ]
217                 }
218             }
219         },
220         "table6_oper": {
221             "destination-prefix":
222                 "{0}/{1}".format(ipv6_base["dst_net"],
223                                  ipv6_base["prefix_len"]),
224             "next-hop": {
225                 "special-next-hop-enum": "blackhole"
226             }
227         }
228     }
229
230     for item in tables_oper.values():
231         if "next-hop-list" in item.keys():
232             item["next-hop-list"]["next-hop"].sort()
233
234     variables.update(tables_cfg)
235     variables.update(tables_oper)
236     return variables