Update Honeycomb directory location
[csit.git] / resources / libraries / robot / honeycomb / interfaces.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 | Library | resources.libraries.python.InterfaceUtil
16 | ...     | WITH NAME | interfaceCLI
17 | Library | resources.libraries.python.honeycomb.HcAPIKwInterfaces.InterfaceKeywords
18 | ...     | WITH NAME | InterfaceAPI
19
20 *** Keywords ***
21 | Interface state is
22 | | [Documentation] | Uses VPP binary API to ensure that the interface under\
23 | | ... | test is in the specified admin state.
24 | | ...
25 | | ... | *Arguments:*
26 | | ... | - node - information about a DUT node. Type: dictionary
27 | | ... | - interface - name of an interface on the specified node. Type: string
28 | | ... | - state - state to set on interface. Type:string
29 | | ...
30 | | ... | *Example:*
31 | | ...
32 | | ... | \| Interface state is \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \
33 | | ... | \| up \|
34 | | [Arguments] | ${node} | ${interface} | ${state}
35 | | interfaceCLI.Set interface state | ${node} | ${interface} | ${state}
36 | | ... | if_type=name
37
38 | Honeycomb sets interface state
39 | | [Documentation] | Uses Honeycomb API to change the admin state\
40 | | ... | of the specified interface.
41 | | ...
42 | | ... | *Arguments:*
43 | | ... | - node - information about a DUT node. Type: dictionary
44 | | ... | - interface - name of an interface on the specified node. Type: string
45 | | ... | - state - state to set on interface. Type:string
46 | | ...
47 | | ... | *Example:*
48 | | ...
49 | | ... | \| Honeycomb sets interface state \| ${nodes['DUT1']} \
50 | | ... | \| GigabitEthernet0/8/0 \| up \|
51 | | [Arguments] | ${node} | ${interface} | ${state}
52 | | interfaceAPI.Set interface state | ${node} | ${interface} | ${state}
53
54 | Interface state from Honeycomb should be
55 | | [Documentation] | Retrieves interface admin state through Honeycomb and\
56 | | ... | compares with state supplied in argument.
57 | | ...
58 | | ... | *Arguments:*
59 | | ... | - node - information about a DUT node. Type: dictionary
60 | | ... | - interface - name of an interface on the specified node. Type: string
61 | | ... | - state - expected interface state. Type: string
62 | | ...
63 | | ... | *Example:*
64 | | ...
65 | | ... | \| Interface state from Honeycomb should be \| ${nodes['DUT1']} \
66 | | ... | \| GigabitEthernet0/8/0 \| up \|
67 | | [Arguments] | ${node} | ${interface} | ${state}
68 | | ${api_data}= | interfaceAPI.Get interface oper data | ${node} | ${interface}
69 | | ${api_state}= | Set Variable | ${api_data['admin-status']}
70 | | Should be equal | ${api_state} | ${state}
71
72 | Interface state from VAT should be
73 | | [Documentation] | Retrieves interface admin state through VAT and compares\
74 | | ... | with state supplied in argument.
75 | | ...
76 | | ... | *Arguments:*
77 | | ... | - node - information about a DUT node. Type: dictionary
78 | | ... | - interface - name of an interface on the specified node. Type: string
79 | | ... | - state - expected interface state. Type: string
80 | | ...
81 | | ... | _NOTE:_ Vat returns state as int (1/0) instead of string (up/down).
82 | | ... | This keyword also handles translation.
83 | | ...
84 | | ... | *Example:*
85 | | ...
86 | | ... | \| Interface state from VAT should be \| ${nodes['DUT1']} \
87 | | ... | \| GigabitEthernet0/8/0 \| up \|
88 | | [Arguments] | ${node} | ${interface} | ${state}
89 | | ${vat_data}= | InterfaceCLI.VPP get interface data | ${node} | ${interface}
90 | | ${vat_state}= | Set Variable if
91 | | ... | ${vat_data['admin_up_down']} == 1 | up | down
92 | | Should be equal | ${vat_state} | ${state}
93
94 | Honeycomb sets interface ipv4 address
95 | | [Documentation] | Uses Honeycomb API to change ipv4 configuration\
96 | | ... | of the specified interface.
97 | | ...
98 | | ... | *Arguments:*
99 | | ... | - node - information about a DUT node. Type: dictionary
100 | | ... | - interface - name of an interface on the specified node. Type: string
101 | | ... | - address - IP address to set. Type: string
102 | | ... | - netmask - subnet mask to set. Type: string
103 | | ... | - settings - ipv4 interface settings. Type: dictionary
104 | | ...
105 | | ... | *Example:*
106 | | ...
107 | | ... | \| Honeycomb sets interface ipv4 configuration \| ${nodes['DUT1']} \
108 | | ... | \| GigabitEthernet0/8/0 \| 192.168.0.2 \| 255.255.255.0 \
109 | | ... | \| ${{'enabled': True, 'mtu': 1500}} \|
110 | | [Arguments] | ${node} | ${interface} | ${address} | ${netmask}
111 | | ... | ${settings}
112 | | interfaceAPI.Add first ipv4 address
113 | | ... | ${node} | ${interface} | ${address} | ${netmask}
114 | | :FOR | ${key} | IN | @{settings.keys()}
115 | | | interfaceAPI.Configure interface ipv4
116 | | | ... | ${node} | ${interface} | ${key} | ${settings['${key}']}
117 | | | ${api_data}= | interfaceAPI.Get interface oper data | ${node} | ${interface}
118
119 | Honeycomb sets interface ipv4 address with prefix
120 | | [Documentation] | Uses Honeycomb API to assign an ipv4 address to the\
121 | | ... | specified interface. Any existing addresses will be removed.
122 | | ...
123 | | ... | *Arguments:*
124 | | ... | - node - information about a DUT node. Type: dictionary
125 | | ... | - interface - name of an interface on the specified node. Type: string
126 | | ... | - address - IP address to set. Type: string
127 | | ... | - prefix - length of address network prefix. Type: int
128 | | ... | - settings - ipv4 interface settings. Type: dictionary
129 | | ...
130 | | ... | *Example:*
131 | | ...
132 | | ... | \| Honeycomb sets interface ipv4 address with prefix \
133 | | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| 192.168.0.2 \| 24 \|
134 | | [Arguments] | ${node} | ${interface} | ${address} | ${prefix}
135 | | ... | ${settings}
136 | | interfaceAPI.Add first ipv4 address
137 | | ... | ${node} | ${interface} | ${address} | ${prefix}
138 | | :FOR | ${key} | IN | @{settings.keys()}
139 | | | interfaceAPI.Configure interface ipv4
140 | | | ... | ${node} | ${interface} | ${key} | ${settings['${key}']}
141
142 | Honeycomb adds interface ipv4 neighbor
143 | | [Documentation] | Uses Honeycomb API to assign an ipv4 neighbor to the\
144 | | ... | specified interface.
145 | | ...
146 | | ... | *Arguments:*
147 | | ... | - node - information about a DUT node. Type: dictionary
148 | | ... | - interface - name of an interface on the specified node. Type: string
149 | | ... | - fib_address - IP address to add to fib table. Type: string
150 | | ... | - fib_mac - MAC address to add to fib table. Type: string
151 | | ...
152 | | ... | *Example:*
153 | | ...
154 | | ... | \| Honeycomb adds interface ipv4 neighbor \| ${nodes['DUT1']} \
155 | | ... | \| GigabitEthernet0/8/0 \| 192.168.0.3 \| 08:00:27:c0:5d:37 \
156 | | ... | \| ${{'enabled': True, 'mtu': 1500}} \|
157 | | [Arguments] | ${node} | ${interface} | ${fib_address} | ${fib_mac}
158 | | interfaceAPI.Add ipv4 neighbor
159 | | ... | ${node} | ${interface} | ${fib_address} | ${fib_mac}
160
161 | IPv4 config from Honeycomb should be
162 | | [Documentation] | Retrieves interface ipv4 configuration through Honeycomb\
163 | | ... | and compares with state supplied in argument.
164 | | ...
165 | | ... | *Arguments:*
166 | | ... | - node - information about a DUT node. Type: dictionary
167 | | ... | - interface - name of an interface on the specified node. Type: string
168 | | ... | - address - IP address to expect. Type: string
169 | | ... | - prefix - prefix length to expect. Type: string
170 | | ... | - fib_address - IP address to expect in fib table. Type: string
171 | | ... | - fib_mac - MAC address to expect in fib table. Type: string
172 | | ... | - settings - ipv4 interface settings to expect. Type: dictionary
173 | | ...
174 | | ... | *Example:*
175 | | ...
176 | | ... | \| IPv4 config from Honeycomb should be \| ${nodes['DUT1']} \
177 | | ... | \| GigabitEthernet0/8/0 \| 192.168.0.2 \| 255.255.255.0 \
178 | | ... | \| 192.168.0.3 \| 08:00:27:c0:5d:37 \
179 | | ... | \| ${{'enabled': True, 'mtu': 1500}} \|
180 | | [Arguments] | ${node} | ${interface} | ${address} | ${prefix}
181 | | ... | ${fib_address} | ${fib_mac} | ${settings}
182 | | ${api_data}= | interfaceAPI.Get interface oper data | ${node} | ${interface}
183 | | Should be equal | ${address}
184 | | ... | ${api_data['ietf-ip:ipv4']['address'][0]['ip']}
185 | | Should be equal | ${prefix}
186 | | ... | ${api_data['ietf-ip:ipv4']['address'][0]['prefix-length']}
187 | | Should be equal | ${fib_address}
188 | | ... | ${api_data['ietf-ip:ipv4']['neighbor'][0]['ip']}
189 | | Should be equal | ${fib_mac}
190 | | ... | ${api_data['ietf-ip:ipv4']['neighbor'][0]['link-layer-address']}
191 | | :FOR | ${key} | IN | @{settings.keys()}
192 | | | Should be equal
193 | | | ... | ${settings['{key']} | ${api_data['ietf-ip:ipv4']['{$key}']}
194
195 | IPv4 config from VAT should be
196 | | [Documentation] | Retrieves interface ipv4 configuration through VAT and\
197 | | ... | compares with state supplied in argument.
198 | | ...
199 | | ... | *Arguments:*
200 | | ... | - node - information about a DUT node. Type: dictionary
201 | | ... | - interface - name of an interface on the specified node. Type: string
202 | | ... | - address - IP address to expect. Type: string
203 | | ... | - netmask - subnet mask to expect. Type: string
204 | | ...
205 | | ... | *Example:*
206 | | ...
207 | | ... | \| IPv4 config from VAT should be \| ${nodes['DUT1']} \
208 | | ... | \| GigabitEthernet0/8/0 \| 192.168.0.2 \| 255.255.255.0 \|
209 | | [Arguments] | ${node} | ${interface} | ${address} | ${netmask}
210 | | ${vpp_data}= | interfaceCLI.VPP get interface ip addresses
211 | | ... | ${node} | ${interface} | ipv4
212 #TODO: update based on resolution of bug https://jira.fd.io/browse/VPP-132
213 | | Should be equal | ${vpp_data[0]['ip']} | ${address}
214 | | Should be equal | ${vpp_data[0]['netmask']} | ${netmask}
215
216 | Honeycomb removes interface ipv4 addresses
217 | | [Documentation] | Removes all configured ipv4 addresses from the specified\
218 | | ... | interface.
219 | | ...
220 | | ... | *Arguments:*
221 | | ... | - node - information about a DUT node. Type: dictionary
222 | | ... | - interface - name of an interface on the specified node. Type: string
223 | | ...
224 | | ... | *Example:*
225 | | ...
226 | | ... | \| Honeycomb removes interface ipv4 addresses \| ${nodes['DUT1']} \
227 | | ... | \| GigabitEthernet0/8/0 \|
228 | | [Arguments] | ${node} | ${interface}
229 | | Remove all ipv4 addresses | ${node} | ${interface}
230
231 | IPv4 address from Honeycomb should be empty
232 | | [Documentation] | Retrieves interface ipv4 configuration through Honeycomb\
233 | | ... | and expects to find no IPv4 addresses.
234 | | ...
235 | | ... | *Arguments:*
236 | | ... | - node - information about a DUT node. Type: dictionary
237 | | ... | - interface - name of an interface on the specified node. Type: string
238 | | ...
239 | | ... | *Example:*
240 | | ...
241 | | ... | \| IPv4 address from Honeycomb should be empty\| ${nodes['DUT1']} \
242 | | ... | \| GigabitEthernet0/8/0 \|
243 | | [Arguments] | ${node} | ${interface}
244 | | ${api_data}= | interfaceAPI.Get interface oper data | ${node} | ${interface}
245 | | Should be empty | ${api_data['ietf-ip:ipv4']['address']
246
247 | IPv4 address from VAT should be empty
248 | | [Documentation] | Retrieves interface ipv4 configuration through VAT and\
249 | | ... | and expects to find no ipv4 addresses.
250 | | ...
251 | | ... | *Arguments:*
252 | | ... | - node - information about a DUT node. Type: dictionary
253 | | ... | - interface - name of an interface on the specified node. Type: string
254 | | ...
255 | | ... | *Example:*
256 | | ...
257 | | ... | \| IPv4 config from VAT should be empty \| ${nodes['DUT1']} \
258 | | ... | \| GigabitEthernet0/8/0 \|
259 | | [Arguments] | ${node} | ${interface}
260 | | Run keyword and expect error | *No JSON object could be decoded.*
261 | | ... | InterfaceCLI.VPP get interface ip addresses
262 | | ... | ${node} | ${interface} | ipv4
263
264 | Honeycomb sets interface ipv6 configuration
265 | | [Documentation] | Uses Honeycomb API to change ipv6 configuration\
266 | | ... | of the specified interface.
267 | | ...
268 | | ... | *Arguments:*
269 | | ... | - node - information about a DUT node. Type: dictionary
270 | | ... | - interface - name of an interface on the specified node. Type: string
271 | | ... | - address - IP address to set. Type: string
272 | | ... | - prefix - length of subnet prefix to set. Type: string
273 | | ... | - fib_address - IP address to add to fib table. Type: string
274 | | ... | - fib_mac - MAC address to add to fib table. Type: string
275 | | ... | - settings - ipv6 interface settings. Type: dictionary
276 | | ...
277 | | ... | *Example:*
278 | | ...
279 | | ... | \| Honeycomb sets interface ipv6 configuration \| ${nodes['DUT1']} \
280 | | ... | \| GigabitEthernet0/8/0 \| 10::10 \| 64 \
281 | | ... | \| 10::11 \| 08:00:27:c0:5d:37 \| ${{'enabled': True, 'mtu': 1500}} \|
282 | | [Arguments] | ${node} | ${interface} | ${address} | ${prefix}
283 | | ... | ${fib_address} | ${fib_mac} | ${settings}
284 | | interfaceAPI.Add first ipv6 address
285 | | ... | ${node} | ${interface} | ${address} | ${prefix}
286 | | interfaceAPI.Add first ipv6 neighbor
287 | | ... | ${node} | ${interface} | ${fib_address} | ${fib_mac}
288 | | :FOR | ${key} | IN | @{settings.keys()}
289 | | | interfaceAPI.Configure interface ipv6
290 | | | ... | ${node} | ${interface} | ${key} | ${settings['${key}']}
291
292 | IPv6 config from Honeycomb should be
293 | | [Documentation] | Retrieves interface ipv6 configuration through Honeycomb\
294 | | ... | and compares with state supplied in argument.
295 | | ...
296 | | ... | *Arguments:*
297 | | ... | - node - information about a DUT node. Type: dictionary
298 | | ... | - interface - name of an interface on the specified node. Type: string
299 | | ... | - address - IP address to expect. Type: string
300 | | ... | - prefix - length of subnet prefix to expect. Type: string
301 | | ... | - fib_address - IP address to expect in fib table. Type: string
302 | | ... | - fib_mac - MAC address to expect in fib table. Type: string
303 | | ... | - settings - ipv6 interface settings to expect. Type: dictionary
304 | | ...
305 | | ... | *Example:*
306 | | ...
307 | | ... | \| IPv6 config from Honeycomb should be \| ${nodes['DUT1']} \
308 | | ... | \| GigabitEthernet0/8/0 \| 10::10 \| 64 \
309 | | ... | \| 10::11 \| 08:00:27:c0:5d:37 \| ${{'enabled': True, 'mtu': 1500}} \|
310 | | [Arguments] | ${node} | ${interface} | ${address} | ${prefix}
311 | | ... | ${fib_address} | ${fib_mac} | ${settings}
312 | | ${api_data}= | interfaceAPI.Get interface oper data | ${node} | ${interface}
313 | | Should be equal | ${address}
314 | | ... | ${api_data['ietf-ip:ipv6']['address'][0]['ip']}
315 | | Should be equal | ${prefix}
316 | | ... | ${api_data['ietf-ip:ipv6']['address'][0]['prefix-length']}
317 | | Should be equal | ${fib_address}
318 | | ... | ${api_data['ietf-ip:ipv6']['neighbor'][0]['ip']
319 | | Should be equal | ${fib_mac}
320 | | ... | ${api_data['ietf-ip:ipv6']['neighbor'][0]['link-layer-address']
321 | | :FOR | ${key} | IN | @{settings.keys()}
322 | | | Should be equal
323 | | ... | ${settings['{key']} | ${api_data['ietf-ip:ipv6']['{$key}']}
324
325 | IPv6 config from VAT should be
326 | | [Documentation] | Retrieves interface ipv6 configuration through VAT and\
327 | | ... | compares with state supplied in argument.
328 | | ...
329 | | ... | *Arguments:*
330 | | ... | - node - information about a DUT node. Type: dictionary
331 | | ... | - interface - name of an interface on the specified node. Type: string
332 | | ... | - address - IP address to expect. Type: string
333 | | ... | - prefix - length of subnet prefix to expect. Type: string
334 | | ...
335 | | ... | *Example:*
336 | | ...
337 | | ... | \| IPv6 config from VAT should be \| ${nodes['DUT1']} \
338 | | ... | \| GigabitEthernet0/8/0 \| 10::10 \| 64 \|
339 | | [Arguments] | ${node} | ${interface} | ${address} | ${prefix}
340 | | ${vpp_data}= | interfaceCLI.VPP get interface ip addresses
341 | | ... | ${node} | ${interface} | ipv6
342 | | Should be equal | ${vpp_data[0]['ip']} | ${address}
343 | | Should be equal | ${vpp_data[0]['prefix-length']} | ${prefix}
344
345 | Honeycomb sets interface ethernet and routing configuration
346 | | [Documentation] | Uses Honeycomb API to change interface configuration.
347 | | ...
348 | | ... | *Arguments:*
349 | | ... | - node - information about a DUT node. Type: dictionary
350 | | ... | - interface - name of an interface on the specified node. Type: string
351 | | ... | - ethernet - interface ethernet settings. Type: dictionary
352 | | ... | - routing - interface routing settings. Type: dictionary
353 | | ...
354 | | ... | *Example:*
355 | | ...
356 | | ... | \| Honeycomb sets interface ethernet and routing configuration \
357 | | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| ${{'mtu': 1500}} \
358 | | ... | \| ${{'vrf-if': 2}} \|
359 | | [Arguments] | ${node} | ${interface} | ${ethernet} | ${routing}
360 | | :FOR | ${key} | IN | @{ethernet.keys()}
361 | | | interfaceAPI.Configure interface ethernet
362 | | | ... | ${node} | ${interface} | ${key} | ${ethernet['${key}']}
363 | | :FOR | ${key} | IN | @{routing.keys()}
364 | | | interfaceAPI.Configure interface routing
365 | | | ... | ${node} | ${interface} | ${key} | ${routing['${key}']}
366
367 | Interface ethernet and routing configuration from Honeycomb should be
368 | | [Documentation] | Retrieves interface routing and ethernet configuration\
369 | | ... | through Honeycomb and compares with settings supplied in arguments.
370 | | ...
371 | | ... | *Arguments:*
372 | | ... | - node - information about a DUT node. Type: dictionary
373 | | ... | - interface - name of an interface on the specified node. Type: string
374 | | ... | - ethernet - interface ethernet settings. Type: dictionary
375 | | ... | - routing - interface routing settings. Type: dictionary
376 | | ...
377 | | ... | *Example:*
378 | | ...
379 | | ... | \| Interface ethernet and routing configuration from Honeycomb \
380 | | ... | should be \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \
381 | | ... | \| ${{'mtu': 1500}} \| ${{'vrf-id': 2}} \|
382 | | [Arguments] | ${node} | ${interface} | ${ethernet} | ${routing}
383 | | ${api_data}= | interfaceAPI.Get interface oper data | ${node} | ${interface}
384 | | :FOR | ${key} | IN | @{ethernet.keys()}
385 | | | Should be equal
386 | | | ... | ${api_data['v3po:ethernet']['${key}']} | ${ethernet['${key}']}
387 | | :FOR | ${key} | IN | @{routing.keys()}
388 | | | Should be equal | ${api_data['${key}']} | ${routing['${key}']}
389
390 | Interface ethernet and routing configuration from VAT should be
391 | | [Documentation] | Retrieves interface routing and ethernet configuration\
392 | | ... | through VAT and compares with settings supplied in arguments.
393 | | ...
394 | | ... | *Arguments:*
395 | | ... | - node - information about a DUT node. Type: dictionary
396 | | ... | - interface - name of an interface on the specified node. Type: string
397 | | ... | - mtu - value of maximum transmission unit expected. Type: integer
398 | | ... | - vrf-id - ID number of a VPN expected on interface. Type: integer
399 | | ...
400 | | ... | *Example:*
401 | | ...
402 | | ... | \| Interface ethernet and routing configuration from VAT \
403 | | ... | should be \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| ${1500} \
404 | | ... | \| ${2} \|
405 | | [Arguments] | ${node} | ${interface} | ${mtu} | ${vrf-id}
406 | | ${vat_data}= | InterfaceCLI.VPP get interface data | ${node} | ${interface}
407 | | Should be equal | ${vat_data['mtu']} | ${mtu}
408
409 | Interface configuration from Honeycomb should be empty
410 | | [Documentation] | Attempts to retrieve interface configuration through\
411 | | ... | Honeycomb and expects to get empty dictionary.
412 | | ...
413 | | ... | *Arguments:*
414 | | ... | - node - information about a DUT node. Type: dictionary
415 | | ... | - interface - name of a interface on the specified node. Type:\
416 | | ... | string
417 | | ...
418 | | ... | *Example:*
419 | | ... | \| Interface configuration from Honeycomb should be empty\
420 | | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \|
421 | | ...
422 | | [Arguments] | ${node} | ${interface}
423 | | ${api_data}= | interfaceAPI.Get interface oper data | ${node} | ${interface}
424 | | Should be empty | ${api_data}
425
426 | Interface configuration from VAT should be empty
427 | | [Documentation] | Attempts to retrieve Interface configuration through\
428 | | ... | VAT and expects to get empty dictionary.
429 | | ...
430 | | ... | *Arguments:*
431 | | ... | - node - information about a DUT node. Type: dictionary
432 | | ... | - interface - name of a Interface on the specified node. Type:\
433 | | ... | string
434 | | ...
435 | | ... | *Example:*
436 | | ... | \| Interface configuration from VAT should be empty\
437 | | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \|
438 | | ...
439 | | [Arguments] | ${node} | ${interface} |
440 | | ${vat_data}= | InterfaceCLI.VPP get interface data | ${node} | ${interface}
441 | | Should be empty | ${vat_data}
442
443 | Interface indices from Honeycomb and VAT should correspond
444 | | [Documentation] | Uses VAT and Honeycomb to get operational data about the\
445 | | ... | given interface and compares the interface indexes. The interface
446 | | ... | index from Honeycomb should be greater than index from VAT by one.
447 | | ...
448 | | ... | *Arguments:*
449 | | ... | - node - information about a DUT node. Type: dictionary
450 | | ... | - interface - name of the interface to be checked. Type: string
451 | | ...
452 | | ... | *Example:*
453 | | ...
454 | | ... | \| Interface indices from Honeycomb and VAT should correspond \
455 | | ... | \| ${nodes['DUT1']} \| vxlan_gpe_tunnel0 \|
456 | | ...
457 | | [Arguments] | ${node} | ${interface}
458 | | ...
459 | | ${api_data}= | interfaceAPI.Get interface oper data | ${node} | ${interface}
460 | | ${vat_data}= | InterfaceCLI.VPP get interface data | ${node} | ${interface}
461 | | ${sw_if_index}= | EVALUATE | ${vat_data['sw_if_index']} + 1
462 | | Should be equal as strings
463 | | ... | ${api_data['if-index']} | ${sw_if_index}