2 Documentation This test suite is to by-pass interface manager and create/delete the tunnels between the switches directly inorder for ITM to scale and build mesh among more number of switches.
3 Suite Setup ITM Direct Tunnels Start Suite
4 Suite Teardown ITM Direct Tunnels Stop Suite
5 Test Teardown Get Model Dump ${ODL_SYSTEM_IP} ${data_models}
6 Library OperatingSystem
8 Library RequestsLibrary
9 Variables ../../variables/genius/Modules.py
10 Resource ../../libraries/DataModels.robot
12 Resource ../../libraries/Utils.robot
14 Resource ../../libraries/VpnOperations.robot
15 Resource ../../libraries/ClusterManagement.robot
16 Resource ../../libraries/KarafKeywords.robot
17 Resource ../../libraries/Utils.robot
18 Resource ../../libraries/Genius.robot
19 Resource ../../variables/Variables.robot
20 Resource ../../libraries/OVSDB.robot
25 Create and Verify VTEP
26 [Documentation] This testcase creates a Internal Transport Manager - ITM tunnel between 2 DPNs
27 ${Dpn_id_1} Genius.Get Dpn Ids ${conn_id_1}
28 ${Dpn_id_2} Genius.Get Dpn Ids ${conn_id_2}
29 ${vlan}= Set Variable 0
30 ${gateway-ip}= Set Variable 0.0.0.0
31 Genius.Create Vteps ${Dpn_id_1} ${Dpn_id_2} ${TOOLS_SYSTEM_IP} ${TOOLS_SYSTEM_2_IP} ${vlan} ${gateway-ip}
32 Wait Until Keyword Succeeds 40 10 Get ITM ${itm_created[0]} ${subnet} ${vlan}
33 ... ${Dpn_id_1} ${TOOLS_SYSTEM_IP} ${Dpn_id_2} ${TOOLS_SYSTEM_2_IP}
34 ${type} Set Variable odl-interface:tunnel-type-vxlan
35 ${tunnel-1} Wait Until Keyword Succeeds 40 20 Get_Tunnel ${Dpn_id_1} ${Dpn_id_2}
36 ${tunnel-2} Wait Until Keyword Succeeds 40 20 Get_Tunnel ${Dpn_id_2} ${Dpn_id_1}
37 ${tunnel-type}= Set Variable type: vxlan
38 Wait Until Keyword Succeeds 40 5 Get Data From URI session ${CONFIG_API}/itm-state:dpn-endpoints/DPN-TEPs-info/${Dpn_id_1}/
39 Wait Until Keyword Succeeds 40 5 Get Data From URI session ${CONFIG_API}/itm-state:dpn-endpoints/DPN-TEPs-info/${Dpn_id_2}/
40 Wait Until Keyword Succeeds 40 10 Ovs Verification For 2 Dpn ${conn_id_1} ${TOOLS_SYSTEM_IP} ${TOOLS_SYSTEM_2_IP}
41 ... ${tunnel-1} ${tunnel-type}
42 Wait Until Keyword Succeeds 40 10 Ovs Verification For 2 Dpn ${conn_id_2} ${TOOLS_SYSTEM_2_IP} ${TOOLS_SYSTEM_IP}
43 ... ${tunnel-2} ${tunnel-type}
44 ${resp} RequestsLibrary.Get Request session ${OPERATIONAL_API}/itm-state:tunnels_state/
45 ${respjson} RequestsLibrary.To Json ${resp.content} pretty_print=True
46 Should Be Equal As Strings ${resp.status_code} 200
47 Should Contain ${resp.content} ${Dpn_id_1} ${tunnel-1}
48 Should Contain ${resp.content} ${Dpn_id_2} ${tunnel-2}
49 ${Port_num1} Get Port Number ${conn_id_1} ${Bridge-1} ${tunnel-1}
50 ${Port_num2} Get Port Number ${conn_id_2} ${Bridge-2} ${tunnel-2}
51 ${check-3} Wait Until Keyword Succeeds 40 10 Genius.Check Table0 Entry For 2 Dpn ${conn_id_1} ${Bridge-1}
53 ${check-4} Wait Until Keyword Succeeds 40 10 Genius.Check Table0 Entry For 2 Dpn ${conn_id_2} ${Bridge-2}
56 Verify Tunnels By Enabling BFD
57 [Documentation] This test case will check the tunnel exists by bringing up/down a switch and check tunnels exist by enabling BFD
58 ${result} Run Keyword And Return Status Verify Tunnel Monitoring is on
59 Run Keyword If '${result}' == 'False' Enable_Tunnel_monitoring
60 Verify Tunnel State ${TOOLS_SYSTEM_1_IP}
61 Verify Tunnel State ${TOOLS_SYSTEM_2_IP}
63 Verify VTEP After Restarting OVS
64 [Documentation] Verify Testcase, Verifying tunnel state by restarting OVS
65 Verify Tunnel Status as UP
66 OVSDB.Restart OVSDB ${TOOLS_SYSTEM_1_IP}
67 Wait Until Keyword Succeeds 30 3 Verify Tunnel Status as UP
69 Verify VTEP After Restarting Controller
70 [Documentation] Verify Testcase, Verifying tunnel state by restarting CONTROLLER
71 Verify Tunnel Status as UP
72 ClusterManagement.Stop_Members_From_List_Or_All
73 ClusterManagement.Start_Members_From_List_Or_All
74 Wait Until Keyword Succeeds 10 2 Check Service Status ACTIVE OPERATIONAL
75 Wait Until Keyword Succeeds 30 3 Verify Tunnel Status as UP
77 Delete and Verify VTEP
78 [Documentation] This Delete testcase , deletes the ITM tunnel created between 2 dpns.
79 ${Dpn_id_1} Genius.Get Dpn Ids ${conn_id_1}
80 ${Dpn_id_2} Genius.Get Dpn Ids ${conn_id_2}
81 ${tunnel-1} Get_Tunnel ${Dpn_id_1} ${Dpn_id_2}
82 ${tunnel-2} Get_Tunnel ${Dpn_id_2} ${Dpn_id_1}
83 Remove All Elements At URI And Verify ${CONFIG_API}/itm:transport-zones/transport-zone/${itm_created[0]}/
84 ${resp} RequestsLibrary.Get Request session ${OPERATIONAL_API}/itm-state:tunnels_state/
85 Should Not Contain ${resp} ${tunnel-1} ${tunnel-2}
86 ${Ovs-del-1} Wait Until Keyword Succeeds 40 10 Genius.Check Tunnel Delete On OVS ${conn_id_1} ${tunnel-1}
87 ${Ovs-del-2} Wait Until Keyword Succeeds 40 10 Genius.Check Tunnel Delete On OVS ${conn_id_2} ${tunnel-2}
91 [Arguments] ${src} ${dst}
92 [Documentation] This Keyword Gets the Tunnel Interface name which has been created between 2 DPNS by passing source , destination DPN Ids along with the type of tunnel which is configured.
93 ${resp} RequestsLibrary.Get Request session ${CONFIG_API}/itm-state:dpn-teps-state/dpns-teps/${src}/remote-dpns/${dst}/
95 ${respjson} RequestsLibrary.To Json ${resp.content} pretty_print=True
96 Should Be Equal As Strings ${resp.status_code} 200
97 Should Contain ${resp.content} ${dst}
98 ${json}= evaluate json.loads('''${resp.content}''') json
99 ${return} Run Keyword And Return Status Should contain ${resp.content} tunnel-name
101 ${ret} Run Keyword If '${return}'=='True' Check_Interface_Name ${json["remote-dpns"][0]} tunnel-name
105 [Arguments] ${json} ${expected_tunnel_interface_name}
106 [Documentation] This keyword Checks the Tunnel interface name is tunnel-interface-names in the output or not .
107 ${Tunnels} Collections.Get From Dictionary ${json} ${expected_tunnel_interface_name}
111 Enable_Tunnel_Monitoring
112 [Documentation] In this we will enable tunnel monitoring by tep:enable command running in karaf console
113 ${output} Issue_Command_On_Karaf_Console tep:enable-tunnel-monitor true
116 [Arguments] ${TOOLS_SYSTEM_IP}
117 [Documentation] In this we will Verify Tunnel State by Stopping/Starting Switch
118 OVSDB.Stop OVS ${TOOLS_SYSTEM_IP}
119 Wait Until Keyword Succeeds 2min 20 sec Verify Tunnel Down
120 OVSDB.Start OVS ${TOOLS_SYSTEM_IP}
121 Wait Until Keyword Succeeds 2min 20 sec Verify Tunnel Status as UP
124 [Documentation] In this we will check whether tunnel is in down or not
125 ${output}= Issue Command On Karaf Console ${TEP_SHOW_STATE}
126 Should Contain ${output} DOWN
129 [Arguments] ${connection_id} ${Bridgename} ${tunnel}
130 [Documentation] In this we get Port Number to check table0 entry for 2 Dpn
131 Switch Connection ${connection_id}
132 ${check-1} Execute Command sudo ovs-ofctl -O OpenFlow13 show ${Bridgename}
134 ${lines} Get Lines Containing String ${check-1} ${tunnel}
136 ${port} Get Regexp Matches ${lines} \\d+
137 ${port_num} Get From List ${port} 0
138 Should Contain ${check-1} ${port_num}