CSIT-662: KWI - KW renaming
[csit.git] / tests / func / honeycomb / mgmt-cfg-int-subint-apihc-apivat-func.robot
1 # Copyright (c) 2016 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 *** Settings ***
15 | Resource | resources/libraries/robot/default.robot
16 | Resource | resources/libraries/robot/honeycomb/honeycomb.robot
17 | Resource | resources/libraries/robot/honeycomb/sub_interface.robot
18 | Resource | resources/libraries/robot/honeycomb/bridge_domain.robot
19 | Resource | resources/libraries/robot/honeycomb/interfaces.robot
20 | Variables | resources/test_data/honeycomb/sub_interfaces.py
21 | Suite Setup | Add Interface local0 To Topology | ${node}
22 | Suite Teardown
23 | ... | Restart Honeycomb and VPP | ${node}
24 | Force Tags | HC_FUNC
25 | Documentation | *Honeycomb sub-interface management test suite.*
26
27 *** Variables ***
28 # Test interfaces and their sub-interface parameters:
29 | ${super_if}= | ${node['interfaces']['port1']['name']}
30 | ${super_if2}= | ${node['interfaces']['port3']['name']}
31 | ${sub_if_id}= | ${sub_if_1_settings['identifier']}
32 | ${sub_if_name}= | ${super_if}.${sub_if_id}
33 | ${sub_if2_name}= | ${super_if2}.${sub_if_id}
34
35 *** Test Cases ***
36 | TC01: Honeycomb creates sub-interface
37 | | [Documentation] | Check if Honeycomb creates a sub-interface.
38 | | ...
39 | | Given Honeycomb configures interface state | ${node} | ${super_if} | down
40 | | And sub-interface Operational Data From Honeycomb Should Be empty
41 | | ... | ${node} | ${super_if} | ${sub_if_id}
42 | | And interface Operational Data From VAT Should Be empty
43 | | ... | ${node} | ${sub_if_name}
44 | | When Honeycomb creates sub-interface | ${node} | ${super_if}
45 | | ... | ${sub_if_1_match} | ${sub_if_1_tags} | ${sub_if_1_settings}
46 | | Then Sub-interface Operational Data From Honeycomb Should Be
47 | | ... | ${node} | ${super_if} | ${sub_if_id} | ${sub_if_1_oper}
48 | | And Sub-interface Operational Data From VAT Should Be
49 | | ... | ${node} | ${sub_if_name} | ${sub_if_1_oper}
50 | | And sub-interface indices from Honeycomb and VAT should correspond
51 | | ... | ${node} | ${super_if} | ${sub_if_id}
52
53 | TC02: Honeycomb sets interface and sub-interface up
54 | | [Documentation] | Honeycomb changes the state of interface\
55 | | ... | and of its sub-interface to up.
56 | | ...
57 | | Given interface state from Honeycomb should be
58 | | ... | ${node} | ${super_if} | down
59 | | And interface state from VAT should be
60 | | ... | ${node} | ${super_if} | down
61 | | Sub-interface state from Honeycomb should be
62 | | ... | ${node} | ${super_if} | ${sub_if_id} | down | down
63 | | Sub-interface state from VAT should be
64 | | ... | ${node} | ${sub_if_name} | down | down
65 | | When Honeycomb configures interface state
66 | | ... | ${node} | ${super_if} | up
67 | | Then interface state from Honeycomb should be
68 | | ... | ${node} | ${super_if} | up
69 | | And interface state from VAT should be
70 | | ... | ${node} | ${super_if} | up
71 | | When Honeycomb sets the sub-interface up
72 | | ... | ${node} | ${super_if} | ${sub_if_id}
73 | | Then Sub-interface state from Honeycomb should be
74 | | ... | ${node} | ${super_if} | ${sub_if_id} | up | up
75 | | And sub-interface state from VAT should be
76 | | ... | ${node} | ${sub_if_name} | up | up
77
78 | TC03: Honeycomb sets sub-interface down while its super-interface is up
79 | | [Documentation] | Honeycomb sets the sub-interface down while its \
80 | | ... | super-interface is up. It must be possible.
81 | | ...
82 | | [Teardown] | Set super and sub interfaces up
83 | | ... | ${node} | ${super_if} | ${sub_if_id}
84 | | ...
85 | | Given sub-interface state from Honeycomb should be
86 | | ... | ${node} | ${super_if} | ${sub_if_id} | up | up
87 | | And sub-interface state from VAT should be
88 | | ... | ${node} | ${sub_if_name} | up | up
89 | | And interface state from Honeycomb should be
90 | | ... | ${node} | ${super_if} | up
91 | | And interface state from VAT should be
92 | | ... | ${node} | ${super_if} | up
93 | | When Honeycomb sets the sub-interface down
94 | | ... | ${node} | ${super_if} | ${sub_if_id}
95 | | Then interface state from Honeycomb should be
96 | | ... | ${node} | ${super_if} | up
97 | | And interface state from VAT should be
98 | | ... | ${node} | ${super_if} | up
99 | | And sub-interface state from Honeycomb should be
100 | | ... | ${node} | ${super_if} | ${sub_if_id} | down | up
101 | | And sub-interface state from VAT should be
102 | | ... | ${node} | ${sub_if_name} | down | up
103
104 | TC04: Honeycomb sets interface and sub-interface down
105 | | [Documentation] | Honeycomb changes the state of interface down and then \
106 | | ... | changes the state of its sub-interface down, in this order.
107 | | ...
108 | | [Teardown] | Set super and sub interfaces down
109 | | ... | ${node} | ${super_if} | ${sub_if_id}
110 | | ...
111 | | Given interface state from Honeycomb should be
112 | | ... | ${node} | ${super_if} | up
113 | | And interface state from VAT should be
114 | | ... | ${node} | ${super_if} | up
115 | | When Honeycomb configures interface state
116 | | ... | ${node} | ${super_if} | down
117 | | Then interface state from Honeycomb should be
118 | | ... | ${node} | ${super_if} | down
119 | | And interface state from VAT should be
120 | | ... | ${node} | ${super_if} | down
121 | | Given sub-interface state from Honeycomb should be
122 | | ... | ${node} | ${super_if} | ${sub_if_id} | up | down
123 | | And sub-interface state from VAT should be
124 | | ... | ${node} | ${sub_if_name} | up | down
125 | | When Honeycomb sets the sub-interface down
126 | | ... | ${node} | ${super_if} | ${sub_if_id}
127 | | Then sub-interface state from Honeycomb should be
128 | | ... | ${node} | ${super_if} | ${sub_if_id} | down | down
129 | | And sub-interface state from VAT should be
130 | | ... | ${node} | ${sub_if_name} | down | down
131
132 | TC05: Honeycomb fails to set sub-interface up while its super-interface is down
133 | | [Documentation] | Honeycomb tries to set the sub-interface up while its \
134 | | ... | super-interface is down. It must not be possible.
135 | | ...
136 | | Given interface state from Honeycomb should be
137 | | ... | ${node} | ${super_if} | down
138 | | And interface state from VAT should be
139 | | ... | ${node} | ${super_if} | down
140 | | And sub-interface state from Honeycomb should be
141 | | ... | ${node} | ${super_if} | ${sub_if_id} | down | down
142 | | And sub-interface state from VAT should be
143 | | ... | ${node} | ${sub_if_name} | down | down
144 | | When Honeycomb fails to set sub-interface up
145 | | ... | ${node} | ${super_if} | ${sub_if_id}
146 | | Then interface state from Honeycomb should be
147 | | ... | ${node} | ${super_if} | down
148 | | And interface state from VAT should be
149 | | ... | ${node} | ${super_if} | down
150 | | And sub-interface state from Honeycomb should be
151 | | ... | ${node} | ${super_if} | ${sub_if_id} | down | down
152 | | And sub-interface state from VAT should be
153 | | ... | ${node} | ${sub_if_name} | down | down
154
155 | TC06: Honeycomb fails to delete sub-interface
156 | | [Documentation] | Check if Honeycomb can delete an existing sub-interface.
157 | | ...
158 | | [Setup] | Set super and sub interfaces down
159 | | ... | ${node} | ${super_if} | ${sub_if_id}
160 | | ...
161 | | Given sub-interface Operational Data From Honeycomb Should Be
162 | | ... | ${node} | ${super_if} | ${sub_if_id} | ${sub_if_1_oper}
163 | | And sub-interface Operational Data From VAT Should Be
164 | | ... | ${node} | ${sub_if_name} | ${sub_if_1_oper}
165 | | When Honeycomb fails to remove all sub-interfaces
166 | | ... | ${node} | ${super_if}
167 | | Then sub-interface Operational Data From Honeycomb Should Be
168 | | ... | ${node} | ${super_if} | ${sub_if_id} | ${sub_if_1_oper}
169 | | And sub-interface Operational Data From VAT Should Be
170 | | ... | ${node} | ${sub_if_name} | ${sub_if_1_oper}
171
172 | TC07: Honeycomb adds sub-interface to new bridge domain
173 | | [Documentation] | Check if Honeycomb adds a sub-interface to bridge domain.
174 | | ...
175 | | [Setup] | Set super and sub interfaces down
176 | | ... | ${node} | ${super_if} | ${sub_if_id}
177 | | ...
178 | | Given sub-interface Operational Data From Honeycomb Should Be
179 | | ... | ${node} | ${super_if} | ${sub_if_id} | ${sub_if_1_oper}
180 | | And sub-interface Operational Data From VAT Should Be
181 | | ... | ${node} | ${sub_if_name} | ${sub_if_1_oper}
182 | | When Honeycomb creates first L2 bridge domain
183 | | ... | ${node} | ${bd_name} | ${bd_settings}
184 | | Then bridge domain Operational Data From Honeycomb Should Be
185 | | ... | ${node} | ${bd_name} | ${bd_settings}
186 | | When Honeycomb adds sub-interface to bridge domain
187 | | ... | ${node} | ${super_if} | ${sub_if_id} | ${sub_bd_settings}
188 | | Then sub-interface bridge domain Operational Data From Honeycomb Should Be
189 | | ... | ${node} | ${super_if} | ${sub_if_id} | ${sub_bd_settings}
190 | | And sub-interface bridge domain Operational Data From VAT Should Be
191 | | ... | ${node} | ${sub_if_name} | ${sub_bd_settings}
192 | | And sub-interface Operational Data From VAT Should Be
193 | | ... | ${node} | ${sub_if_name} | ${sub_if_1_oper}
194
195 | TC08: Honeycomb enables tag-rewrite pop 1
196 | | [Documentation] | Check if Honeycomb enables tag-rewrite and sets its \
197 | | ... | parameters correctly. Case: pop 1.
198 | | ...
199 | | [Teardown] | Honeycomb disables tag rewrite
200 | | ... | ${node} | ${super_if} | ${sub_if_id}
201 | | ...
202 | | Given rewrite tag from Honeycomb should be empty
203 | | ... | ${node} | ${super_if} | ${sub_if_id}
204 | | When Honeycomb configures tag rewrite
205 | | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_pop_1}
206 | | Then rewrite tag from Honeycomb should be
207 | | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_pop_1_oper}
208 | | And rewrite tag from VAT should be
209 | | ... | ${node} | ${sub_if_name} | ${tag_rewrite_pop_1_VAT}
210
211 | TC09: Honeycomb enables tag-rewrite push
212 | | [Documentation] | Check if Honeycomb enables tag-rewrite and sets its \
213 | | ... | parameters correctly. Case: push.
214 | | ...
215 | | [Teardown] | Honeycomb disables tag rewrite
216 | | ... | ${node} | ${super_if} | ${sub_if_id}
217 | | ...
218 | | Given rewrite tag from Honeycomb should be empty
219 | | ... | ${node} | ${super_if} | ${sub_if_id}
220 | | When Honeycomb configures tag rewrite
221 | | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_push}
222 | | Then rewrite tag from Honeycomb should be
223 | | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_push_oper}
224 | | And rewrite tag from VAT should be
225 | | ... | ${node} | ${sub_if_name} | ${tag_rewrite_push_VAT}
226
227 | TC10: Honeycomb enables tag-rewrite translate 1-2
228 | | [Documentation] | Check if Honeycomb enables tag-rewrite and sets its \
229 | | ... | parameters correctly. Case: translate 1-2.
230 | | ...
231 | | [Teardown] | Honeycomb disables tag rewrite
232 | | ... | ${node} | ${super_if} | ${sub_if_id}
233 | | ...
234 | | Given rewrite tag from Honeycomb should be empty
235 | | ... | ${node} | ${super_if} | ${sub_if_id}
236 | | When Honeycomb configures tag rewrite
237 | | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_translate_1_2}
238 | | Then rewrite tag from Honeycomb should be
239 | | ... | ${node} | ${super_if} | ${sub_if_id}
240 | | ... | ${tag_rewrite_translate_1_2_oper}
241 | | And rewrite tag from VAT should be
242 | | ... | ${node} | ${sub_if_name} | ${tag_rewrite_translate_1_2_VAT}
243
244 | TC11: Honeycomb disables tag-rewrite
245 | | [Documentation] | Check if Honeycomb disables the tag-rewrite.
246 | | ...
247 | | [Teardown] | Honeycomb disables tag rewrite
248 | | ... | ${node} | ${super_if} | ${sub_if_id}
249 | | ...
250 | | When Honeycomb configures tag rewrite
251 | | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_pop_1}
252 | | Then rewrite tag from Honeycomb should be
253 | | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_pop_1_oper}
254 | | When Honeycomb configures tag rewrite
255 | | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_disabled}
256 | | Then rewrite tag from Honeycomb should be empty
257 | | ... | ${node} | ${super_if} | ${sub_if_id}
258 | | And rewrite tag from VAT should be
259 | | ... | ${node} | ${sub_if_name} | ${tag_rewrite_disabled_VAT}
260
261 | TC12: Honeycomb enables tag-rewrite pop 1 again
262 | | [Documentation] | Check if Honeycomb can enable tag-rewrite again, once it \
263 | | ... | was disabled by Honeycomb.
264 | | ...
265 | | [Teardown] | Honeycomb disables tag rewrite
266 | | ... | ${node} | ${super_if} | ${sub_if_id}
267 | | ...
268 | | Given rewrite tag from Honeycomb should be empty
269 | | ... | ${node} | ${super_if} | ${sub_if_id}
270 | | When Honeycomb configures tag rewrite
271 | | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_pop_1}
272 | | Then rewrite tag from Honeycomb should be
273 | | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_pop_1_oper}
274 | | And rewrite tag from VAT should be
275 | | ... | ${node} | ${sub_if_name} | ${tag_rewrite_pop_1_VAT}
276
277 | TC13: Honeycomb modifies the tag-rewrite
278 | | [Documentation] | Honeycomb sets the tag-rewrite:
279 | | ... | 1. pop 1, then
280 | | ... | 2. push, then
281 | | ... | 3. translate 1 - 2
282 | | ... | Then Honeycomb disables the tag-rewrite.
283 | | ...
284 | | [Teardown] | Honeycomb disables tag rewrite
285 | | ... | ${node} | ${super_if} | ${sub_if_id}
286 | | ...
287 | | Given rewrite tag from Honeycomb should be empty
288 | | ... | ${node} | ${super_if} | ${sub_if_id}
289 | | When Honeycomb configures tag rewrite
290 | | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_pop_1}
291 | | Then rewrite tag from Honeycomb should be
292 | | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_pop_1_oper}
293 | | And rewrite tag from VAT should be
294 | | ... | ${node} | ${sub_if_name} | ${tag_rewrite_pop_1_VAT}
295 | | When Honeycomb configures tag rewrite
296 | | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_push}
297 | | Then rewrite tag from Honeycomb should be
298 | | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_push_oper}
299 | | And rewrite tag from VAT should be
300 | | ... | ${node} | ${sub_if_name} | ${tag_rewrite_push_VAT}
301 | | When Honeycomb configures tag rewrite
302 | | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_translate_1_2}
303 | | Then rewrite tag from Honeycomb should be
304 | | ... | ${node} | ${super_if} | ${sub_if_id}
305 | | ... | ${tag_rewrite_translate_1_2_oper}
306 | | And rewrite tag from VAT should be
307 | | ... | ${node} | ${sub_if_name} | ${tag_rewrite_translate_1_2_VAT}
308 | | When Honeycomb configures tag rewrite
309 | | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_disabled}
310 | | Then rewrite tag from Honeycomb should be empty
311 | | ... | ${node} | ${super_if} | ${sub_if_id}
312 | | And rewrite tag from VAT should be
313 | | ... | ${node} | ${sub_if_name} | ${tag_rewrite_disabled_VAT}
314
315 | TC14: Honeycomb fails to set wrong vlan-type in tag-rewrite
316 | | [Documentation] | Check that Honeycomb does not accept wrong values of \
317 | | ... | vlan-type in tag-rewrite.
318 | | ...
319 | | Given rewrite tag from Honeycomb should be empty
320 | | ... | ${node} | ${super_if} | ${sub_if_id}
321 | | When Honeycomb fails to set wrong rewrite tag
322 | | ... | ${node} | ${super_if} | ${sub_if_id}
323 | | ... | ${tag_rewrite_translate_1_2_wrong}
324 | | Then rewrite tag from Honeycomb should be empty
325 | | ... | ${node} | ${super_if} | ${sub_if_id}
326 | | And rewrite tag from VAT should be
327 | | ... | ${node} | ${sub_if_name} | ${tag_rewrite_disabled_VAT}
328
329 | TC15: Honeycomb configures sub-interface ipv4 address
330 | | [Documentation] | Check if Honeycomb can configure an ipv4 address on the\
331 | | ... | sub-interface.
332 | | ...
333 | | Given sub-interface ipv4 address from Honeycomb should be empty
334 | | ... | ${node} | ${super_if} | ${sub_if_id}
335 | | And sub-interface ipv4 address from VAT should be empty
336 | | ... | ${node} | ${sub_if_name}
337 | | When Honeycomb sets sub-interface ipv4 address
338 | | ... | ${node} | ${super_if} | ${sub_if_id}
339 | | ... | ${ipv4['address']} | ${ipv4['prefix-length']}
340 | | Then sub-interface ipv4 address from Honeycomb should be
341 | | ... | ${node} | ${super_if} | ${sub_if_id}
342 | | ... | ${ipv4['address']} | ${ipv4['prefix-length']}
343 | | And sub-interface ipv4 address from VAT should be
344 | | ... | ${node} | ${sub_if_name}
345 | | ... | ${ipv4['address']} | ${ipv4['prefix-length']}
346
347 | TC16: Honeycomb removes sub-interface ipv4 address
348 | | [Documentation] | Check if Honeycomb can remove configured ipv4 addresses\
349 | | ... | from the sub-interface.
350 | | ...
351 | | Given sub-interface ipv4 address from Honeycomb should be
352 | | ... | ${node} | ${super_if} | ${sub_if_id}
353 | | ... | ${ipv4['address']} | ${ipv4['prefix-length']}
354 | | Run Keyword And Continue On Failure
355 | | ... | And sub-interface ipv4 address from VAT should be
356 | | ... | ${node} | ${sub_if_name}
357 | | ... | ${ipv4['address']} | ${ipv4['prefix-length']}
358 | | When Honeycomb removes all sub-interface ipv4 addresses
359 | | ... | ${node} | ${super_if} | ${sub_if_id}
360 | | Then sub-interface ipv4 address from Honeycomb should be empty
361 | | ... | ${node} | ${super_if} | ${sub_if_id}
362 | | And sub-interface ipv4 address from VAT should be empty
363 | | ... | ${node} | ${sub_if_name}
364
365 | TC17: Honeycomb modifies existing sub-interface ipv4 address
366 | | [Documentation] | Check if Honeycomb can modify an ipv4 address already\
367 | | ... | configured on the sub-interface.
368 | | [Teardown] | Honeycomb removes all sub-interface ipv4 addresses
369 | | ... | ${node} | ${super_if} | ${sub_if_id}
370 | | Given sub-interface ipv4 address from Honeycomb should be empty
371 | | ... | ${node} | ${super_if} | ${sub_if_id}
372 | | And sub-interface ipv4 address from VAT should be empty
373 | | ... | ${node} | ${sub_if_name}
374 | | When Honeycomb sets sub-interface ipv4 address
375 | | ... | ${node} | ${super_if} | ${sub_if_id}
376 | | ... | ${ipv4['address']} | ${ipv4['prefix-length']}
377 | | And Honeycomb sets sub-interface ipv4 address
378 | | ... | ${node} | ${super_if} | ${sub_if_id}
379 | | ... | ${ipv4_2['address']} | ${ipv4_2['prefix-length']}
380 | | Then sub-interface ipv4 address from Honeycomb should be
381 | | ... | ${node} | ${super_if} | ${sub_if_id}
382 | | ... | ${ipv4_2['address']} | ${ipv4_2['prefix-length']}
383 | | And sub-interface ipv4 address from VAT should be
384 | | ... | ${node} | ${sub_if_name}
385 | | ... | ${ipv4_2['address']} | ${ipv4_2['prefix-length']}
386
387 | TC18: Honeycomb modifies sub-interface exact tag match
388 | | [Documentation] | Check if Honeycomb can modify a sub-interface with exact\
389 | | ... | tag match.
390 | | Given Honeycomb configures interface state | ${node} | ${super_if2} | down
391 | | And sub-interface Operational Data From Honeycomb Should Be empty
392 | | ... | ${node} | ${super_if2} | ${sub_if_id}
393 | | And interface Operational Data From VAT Should Be empty
394 | | ... | ${node} | ${sub_if2_name}
395 | | When Honeycomb creates sub-interface | ${node} | ${super_if2}
396 | | ... | ${sub_if_2_match} | ${sub_if_2_tags} | ${sub_if_2_settings}
397 | | Then Sub-interface Operational Data From Honeycomb Should Be
398 | | ... | ${node} | ${super_if2} | ${sub_if_id} | ${sub_if_2_oper}
399 | | And Sub-interface Operational Data From VAT Should Be
400 | | ... | ${node} | ${sub_if2_name} | ${sub_if_2_oper}
401 | | And sub-interface indices from Honeycomb and VAT should correspond
402 | | ... | ${node} | ${super_if2} | ${sub_if_id}
403
404 | TC19: Honeycomb configures sub-interface ipv6 address
405 | | [Documentation] | Check if Honeycomb can configure an ipv6 address on the\
406 | | ... | sub-interface.
407 | | ...
408 | | Given sub-interface ipv6 address from Honeycomb should be empty
409 | | ... | ${node} | ${super_if} | ${sub_if_id}
410 | | And sub-interface ipv6 address from VAT should be empty
411 | | ... | ${node} | ${sub_if_name}
412 | | When Honeycomb sets sub-interface ipv6 address
413 | | ... | ${node} | ${super_if} | ${sub_if_id}
414 | | ... | ${ipv6['address']} | ${ipv6['prefix-length']}
415 | | Then sub-interface IPv6 address from Honeycomb should contain
416 | | ... | ${node} | ${super_if} | ${sub_if_id}
417 | | ... | ${ipv6['address']} | ${ipv6['prefix-length']}
418 | | And sub-interface IPv6 address from VAT should contain
419 | | ... | ${node} | ${sub_if_name}
420 | | ... | ${ipv6['address']} | ${ipv6['prefix-length']}
421
422 | TC20: Honeycomb removes sub-interface ipv6 address
423 | | [Documentation] | Check if Honeycomb can remove configured ipv6 addresses\
424 | | ... | from the sub-interface.
425 | | ...
426 | | Given sub-interface IPv6 address from Honeycomb should contain
427 | | ... | ${node} | ${super_if} | ${sub_if_id}
428 | | ... | ${ipv6['address']} | ${ipv6['prefix-length']}
429 | | Run Keyword And Continue On Failure
430 | | ... | And sub-interface IPv6 address from VAT should contain
431 | | ... | ${node} | ${sub_if_name}
432 | | ... | ${ipv6['address']} | ${ipv6['prefix-length']}
433 | | When Honeycomb removes all sub-interface ipv6 addresses
434 | | ... | ${node} | ${super_if} | ${sub_if_id}
435 | | Then sub-interface ipv6 address from Honeycomb should be empty
436 | | ... | ${node} | ${super_if} | ${sub_if_id}
437 | | And sub-interface ipv6 address from VAT should be empty
438 | | ... | ${node} | ${sub_if_name}
439
440 | TC21: Honeycomb modifies existing sub-interface ipv6 address
441 | | [Documentation] | Check if Honeycomb can modify an ipv6 address already\
442 | | ... | configured on the sub-interface.
443 | | [Teardown] | Honeycomb removes all sub-interface ipv6 addresses
444 | | ... | ${node} | ${super_if} | ${sub_if_id}
445 | | Given sub-interface ipv6 address from Honeycomb should be empty
446 | | ... | ${node} | ${super_if} | ${sub_if_id}
447 | | And sub-interface ipv6 address from VAT should be empty
448 | | ... | ${node} | ${sub_if_name}
449 | | When Honeycomb sets sub-interface ipv6 address
450 | | ... | ${node} | ${super_if} | ${sub_if_id}
451 | | ... | ${ipv6['address']} | ${ipv6['prefix-length']}
452 | | And Honeycomb sets sub-interface ipv6 address
453 | | ... | ${node} | ${super_if} | ${sub_if_id}
454 | | ... | ${ipv6_2['address']} | ${ipv6_2['prefix-length']}
455 | | Then sub-interface IPv6 address from Honeycomb should contain
456 | | ... | ${node} | ${super_if} | ${sub_if_id}
457 | | ... | ${ipv6_2['address']} | ${ipv6_2['prefix-length']}
458 | | And sub-interface IPv6 address from VAT should contain
459 | | ... | ${node} | ${sub_if_name}
460 | | ... | ${ipv6_2['address']} | ${ipv6_2['prefix-length']}
461
462 | TC22: Honeycomb can configure unnumbered sub-interface
463 | | [Documentation] | Check if Honeycomb can configure an unnumbered interface\
464 | | ... | on a sub-interface, borrowing the IP address of 'local0'.
465 | | Given sub-interface ipv4 address from Honeycomb should be empty
466 | | ... | ${node} | ${super_if} | ${sub_if_id}
467 | | And sub-interface ipv4 address from VAT should be empty
468 | | ... | ${node} | ${sub_if_name}
469 | | And Honeycomb sets interface IPv4 address | ${node}
470 | | ... | local0 | ${ipv4['address']} | ${ipv4['prefix-length']}
471 | | When Honeycomb adds unnumbered configuration to interface
472 | | ... | ${node} | ${super_if}.${sub_if_id} | local0
473 | | Then IPv4 address from Honeycomb should be
474 | | ... | ${node} | local0 | ${ipv4['address']} | ${ipv4['prefix-length']}
475 | | And IPv4 address from VAT should be
476 | | ... | ${node} | local0
477 | | ... | ${ipv4['address']} | ${ipv4['prefix-length']} | ${ipv4['netmask']}
478 | | And sub-interface ipv4 address from Honeycomb should be
479 | | ... | ${node} | ${super_if} | ${sub_if_id}
480 | | ... | ${ipv4['address']} | ${ipv4['prefix-length']}
481 | | And sub-interface ipv4 address from VAT should be
482 | | ... | ${node} | ${sub_if_name}
483 | | ... | ${ipv4['address']} | ${ipv4['prefix-length']}
484
485 | TC23: Honeycomb removes sub-interface unnumbered configuration
486 | | [Documentation] | Check if Honeycomb can remove unnumbered configuration\
487 | | ... | from a sub-interface.
488 | | [Teardown] | Honeycomb removes interface IPv4 addresses | ${node}
489 | | ... | local0
490 | | Given IPv4 address from Honeycomb should be
491 | | ... | ${node} | local0 | ${ipv4['address']} | ${ipv4['prefix-length']}
492 | | And IPv4 address from VAT should be
493 | | ... | ${node} | local0
494 | | ... | ${ipv4['address']} | ${ipv4['prefix-length']} | ${ipv4['netmask']}
495 | | And sub-interface ipv4 address from Honeycomb should be
496 | | ... | ${node} | ${super_if} | ${sub_if_id}
497 | | ... | ${ipv4['address']} | ${ipv4['prefix-length']}
498 | | And sub-interface ipv4 address from VAT should be
499 | | ... | ${node} | ${sub_if_name}
500 | | ... | ${ipv4['address']} | ${ipv4['prefix-length']}
501 | | When Honeycomb removes unnumbered configuration from interface
502 | | ... | ${node} | ${super_if}.${sub_if_id}
503 | | Then IPv4 address from Honeycomb should be
504 | | ... | ${node} | local0 | ${ipv4['address']} | ${ipv4['prefix-length']}
505 | | And IPv4 address from VAT should be
506 | | ... | ${node} | local0
507 | | ... | ${ipv4['address']} | ${ipv4['prefix-length']} | ${ipv4['netmask']}
508 | | And sub-interface ipv4 address from Honeycomb should be empty
509 | | ... | ${node} | ${super_if} | ${sub_if_id}
510 | | And sub-interface ipv4 address from VAT should be empty
511 | | ... | ${node} | ${sub_if_name}
512
513 | TC24: Honeycomb can configure unnumbered interface using a sub-interface
514 | | [Documentation] | Check if Honeycomb can configure an unnumbered interface\
515 | | ... | on an interface, borrowing the IP address of a sub-interface.
516 | | Given IPv4 address from Honeycomb should be empty | ${node} | local0
517 | | And ipv4 address from VAT should be empty | ${node} | local0
518 | | And sub-interface ipv4 address from Honeycomb should be empty
519 | | ... | ${node} | ${super_if} | ${sub_if_id}
520 | | And sub-interface ipv4 address from VAT should be empty
521 | | ... | ${node} | ${sub_if_name}
522 | | And Honeycomb sets sub-interface ipv4 address
523 | | ... | ${node} | ${super_if} | ${sub_if_id}
524 | | ... | ${ipv4['address']} | ${ipv4['prefix-length']}
525 | | When Honeycomb adds unnumbered configuration to interface
526 | | ... | ${node} | local0 | ${super_if}.${sub_if_id}
527 | | Then IPv4 address from Honeycomb should be
528 | | ... | ${node} | local0 | ${ipv4['address']} | ${ipv4['prefix-length']}
529 | | And IPv4 address from VAT should be
530 | | ... | ${node} | local0
531 | | ... | ${ipv4['address']} | ${ipv4['prefix-length']} | ${ipv4['netmask']}
532 | | And sub-interface ipv4 address from Honeycomb should be
533 | | ... | ${node} | ${super_if} | ${sub_if_id}
534 | | ... | ${ipv4['address']} | ${ipv4['prefix-length']}
535 | | And sub-interface ipv4 address from VAT should be
536 | | ... | ${node} | ${sub_if_name}
537 | | ... | ${ipv4['address']} | ${ipv4['prefix-length']}
538
539 *** Keywords ***
540 | Set super and sub interfaces up
541 | | [Documentation] | Honeycomb sets super-interface and sub-interface up, in \
542 | | ... | this order.
543 | | ...
544 | | ... | *Arguments:*
545 | | ... | - node - Information about a DUT node. Type: dictionary
546 | | ... | - super_interface - Super interface. Type: string
547 | | ... | - identifier - Sub-interface identifier. Type: integer or string
548 | | ...
549 | | ... | *Example:*
550 | | ... | \| Set super and sub interfaces up\
551 | | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| 1 \|
552 | | ...
553 | | [Arguments] | ${node} | ${super_interface} | ${identifier}
554 | | ...
555 | | Honeycomb configures interface state
556 | | ... | ${node} | ${super_interface} | up
557 | | Honeycomb sets the sub-interface up
558 | | ... | ${node} | ${super_interface} | ${identifier}
559
560 | Set super and sub interfaces down
561 | | [Documentation] | Honeycomb sets super-interface and sub-interface down, in\
562 | | ... | this order.
563 | | ...
564 | | ... | *Arguments:*
565 | | ... | - node - Information about a DUT node. Type: dictionary
566 | | ... | - super_interface - Super interface. Type: string
567 | | ... | - identifier - Sub-interface identifier. Type: integer or string
568 | | ...
569 | | ... | *Example:*
570 | | ... | \| Set super and sub interfaces down\
571 | | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| 1 \|
572 | | ...
573 | | [Arguments] | ${node} | ${super_interface} | ${identifier}
574 | | ...
575 | | Honeycomb configures interface state
576 | | ... | ${node} | ${super_interface} | down
577 | | Honeycomb sets the sub-interface down
578 | | ... | ${node} | ${super_interface} | ${identifier}
579
580 | Honeycomb disables tag rewrite
581 | | [Documentation] |
582 | | ...
583 | | ... | *Arguments:*
584 | | ... | - node - Information about a DUT node. Type: dictionary
585 | | ... | - super_if - Super-interface. Type: string
586 | | ... | - identifier - Sub-interface ID. Type: integer or string
587 | | ...
588 | | ... | *Example:*
589 | | ... | \| Honeycomb disables tag rewrite \
590 | | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| 1 \|
591 | | ...
592 | | [Arguments] | ${node} | ${super_if} | ${sub_if_id}
593 | | ...
594 | | Honeycomb configures tag rewrite
595 | | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_disabled}