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 Setup Genius Test Setup
6 Test Teardown Genius Test Teardown ${data_models}
7 Library OperatingSystem
9 Library RequestsLibrary
10 Variables ../../variables/genius/Modules.py
11 Resource ../../libraries/DataModels.robot
13 Resource ../../libraries/Utils.robot
15 Resource ../../libraries/VpnOperations.robot
16 Resource ../../libraries/ClusterManagement.robot
17 Resource ../../libraries/KarafKeywords.robot
18 Resource ../../libraries/Utils.robot
19 Resource ../../libraries/Genius.robot
20 Resource ../../variables/Variables.robot
21 Resource ../../libraries/OVSDB.robot
26 Create and Verify VTEP
27 [Documentation] This testcase creates a Internal Transport Manager - ITM tunnel between 2 DPNs
28 ${Dpn_id_1} Genius.Get Dpn Ids ${conn_id_1}
29 ${Dpn_id_2} Genius.Get Dpn Ids ${conn_id_2}
30 ${vlan}= Set Variable 0
31 ${gateway-ip}= Set Variable 0.0.0.0
32 Genius.Create Vteps ${Dpn_id_1} ${Dpn_id_2} ${TOOLS_SYSTEM_IP} ${TOOLS_SYSTEM_2_IP} ${vlan} ${gateway-ip}
33 Wait Until Keyword Succeeds 40 10 Get ITM ${itm_created[0]} ${subnet} ${vlan}
34 ... ${Dpn_id_1} ${TOOLS_SYSTEM_IP} ${Dpn_id_2} ${TOOLS_SYSTEM_2_IP}
35 ${type} Set Variable odl-interface:tunnel-type-vxlan
36 ${tunnel-1} Wait Until Keyword Succeeds 40 20 Get_Tunnel ${Dpn_id_1} ${Dpn_id_2}
37 ${tunnel-2} Wait Until Keyword Succeeds 40 20 Get_Tunnel ${Dpn_id_2} ${Dpn_id_1}
38 ${tunnel-type}= Set Variable type: vxlan
39 Wait Until Keyword Succeeds 40 5 Get Data From URI session ${CONFIG_API}/itm-state:dpn-endpoints/DPN-TEPs-info/${Dpn_id_1}/
40 Wait Until Keyword Succeeds 40 5 Get Data From URI session ${CONFIG_API}/itm-state:dpn-endpoints/DPN-TEPs-info/${Dpn_id_2}/
41 Wait Until Keyword Succeeds 40 10 Ovs Verification For 2 Dpn ${conn_id_1} ${TOOLS_SYSTEM_IP} ${TOOLS_SYSTEM_2_IP}
42 ... ${tunnel-1} ${tunnel-type}
43 Wait Until Keyword Succeeds 40 10 Ovs Verification For 2 Dpn ${conn_id_2} ${TOOLS_SYSTEM_2_IP} ${TOOLS_SYSTEM_IP}
44 ... ${tunnel-2} ${tunnel-type}
45 ${resp} RequestsLibrary.Get Request session ${OPERATIONAL_API}/itm-state:tunnels_state/
46 ${respjson} RequestsLibrary.To Json ${resp.content} pretty_print=True
47 Should Be Equal As Strings ${resp.status_code} 200
48 Should Contain ${resp.content} ${Dpn_id_1} ${tunnel-1}
49 Should Contain ${resp.content} ${Dpn_id_2} ${tunnel-2}
50 ${Port_num1} Get Port Number ${conn_id_1} ${Bridge-1} ${tunnel-1}
51 ${Port_num2} Get Port Number ${conn_id_2} ${Bridge-2} ${tunnel-2}
52 ${check-3} Wait Until Keyword Succeeds 40 10 Genius.Check Table0 Entry For 2 Dpn ${conn_id_1} ${Bridge-1}
54 ${check-4} Wait Until Keyword Succeeds 40 10 Genius.Check Table0 Entry For 2 Dpn ${conn_id_2} ${Bridge-2}
57 Verify VTEP After Restarting OVS
58 [Documentation] Verify Testcase, Verifying tunnel state by restarting OVS
59 Wait Until Keyword Succeeds 20 2 Genius.Verify Tunnel Status as UP TZA
60 OVSDB.Restart OVSDB ${TOOLS_SYSTEM_IP}
61 Wait Until Keyword Succeeds 20 2 Genius.Verify Tunnel Status as UP TZA
63 Verify VTEP After Restarting Controller
64 [Documentation] Verify Testcase, Verifying tunnel state by restarting CONTROLLER
65 Genius.Verify Tunnel Status as UP TZA
66 ClusterManagement.Stop_Members_From_List_Or_All
67 ClusterManagement.Start_Members_From_List_Or_All
68 Wait Until Keyword Succeeds 60 3 ClusterManagement.Check Status Of Services Is OPERATIONAL
69 Wait Until Keyword Succeeds 30 3 Genius.Verify Tunnel Status as UP TZA
71 Verify Tunnels By Disabling BFD
72 [Documentation] This test case will verify tunnels after disabling BFD and verifies tunnel status as unknown after stopping OVS.
73 ${result} = Run Keyword And Return Status Verify Tunnel Monitoring is on
74 Run Keyword If '${result}' == 'True' Disable_Tunnel_Monitoring
75 ${tunnels_on_OVS} = Genius.Get Tunnels On OVS ${conn_id_1}
76 OVSDB.Stop OVS ${TOOLS_SYSTEM_IP}
77 Genius.Verify Tunnel Status ${tunnels_on_OVS} UNKNOWN
78 OVSDB.Start OVS ${TOOLS_SYSTEM_IP}
79 Wait Until Keyword Succeeds 20 2 Genius.Verify Tunnel Status as UP TZA
81 Verify Tunnels By Enabling BFD
82 [Documentation] This test case will check the tunnel exists by bringing up/down a switch and check tunnels exist by enabling BFD
83 ${result} Run Keyword And Return Status Verify Tunnel Monitoring is on
84 Run Keyword If '${result}' == 'False' Enable_Tunnel_monitoring
85 Verify Tunnel State After OVS Restart ${TOOLS_SYSTEM_IP}
86 Verify Tunnel State After OVS Restart ${TOOLS_SYSTEM_2_IP}
88 Delete and Verify VTEP
89 [Documentation] This Delete testcase , deletes the ITM tunnel created between 2 dpns.
90 ${Dpn_id_1} Genius.Get Dpn Ids ${conn_id_1}
91 ${Dpn_id_2} Genius.Get Dpn Ids ${conn_id_2}
92 ${tunnel-1} Get_Tunnel ${Dpn_id_1} ${Dpn_id_2}
93 ${tunnel-2} Get_Tunnel ${Dpn_id_2} ${Dpn_id_1}
94 Remove All Elements At URI And Verify ${CONFIG_API}/itm:transport-zones/transport-zone/${itm_created[0]}/
95 ${resp} RequestsLibrary.Get Request session ${OPERATIONAL_API}/itm-state:tunnels_state/
96 Should Not Contain ${resp} ${tunnel-1} ${tunnel-2}
97 ${Ovs-del-1} Wait Until Keyword Succeeds 40 10 Genius.Check Tunnel Delete On OVS ${conn_id_1} ${tunnel-1}
98 ${Ovs-del-2} Wait Until Keyword Succeeds 40 10 Genius.Check Tunnel Delete On OVS ${conn_id_2} ${tunnel-2}
102 [Arguments] ${src} ${dst}
103 [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.
104 ${resp} RequestsLibrary.Get Request session ${CONFIG_API}/itm-state:dpn-teps-state/dpns-teps/${src}/remote-dpns/${dst}/
106 ${respjson} RequestsLibrary.To Json ${resp.content} pretty_print=True
107 Should Be Equal As Strings ${resp.status_code} 200
108 Should Contain ${resp.content} ${dst}
109 ${json}= evaluate json.loads('''${resp.content}''') json
110 ${return} Run Keyword And Return Status Should contain ${resp.content} tunnel-name
112 ${ret} Run Keyword If '${return}'=='True' Check_Interface_Name ${json["remote-dpns"][0]} tunnel-name
116 [Arguments] ${json} ${expected_tunnel_interface_name}
117 [Documentation] This keyword Checks the Tunnel interface name is tunnel-interface-names in the output or not .
118 ${Tunnels} Collections.Get From Dictionary ${json} ${expected_tunnel_interface_name}
122 Enable_Tunnel_Monitoring
123 [Documentation] In this we will enable tunnel monitoring by tep:enable command running in karaf console
124 ${output} Issue_Command_On_Karaf_Console tep:enable-tunnel-monitor true
126 Verify Tunnel State After OVS Restart
127 [Arguments] ${TOOLS_SYSTEM_IP}
128 [Documentation] In this we will Verify Tunnel State by Stopping/Starting Switch
129 OVSDB.Stop OVS ${TOOLS_SYSTEM_IP}
130 Wait Until Keyword Succeeds 2min 20 sec Verify Tunnel Down
131 OVSDB.Start OVS ${TOOLS_SYSTEM_IP}
132 Wait Until Keyword Succeeds 2min 20 sec Genius.Verify Tunnel Status as UP TZA
135 [Documentation] In this we will check whether tunnel is in down or not
136 ${output}= Issue Command On Karaf Console ${TEP_SHOW_STATE}
137 Should Contain ${output} DOWN
140 [Arguments] ${connection_id} ${Bridgename} ${tunnel}
141 [Documentation] In this we get Port Number to check table0 entry for 2 Dpn
142 Switch Connection ${connection_id}
143 ${check-1} Execute Command sudo ovs-ofctl -O OpenFlow13 show ${Bridgename}
145 ${lines} Get Lines Containing String ${check-1} ${tunnel}
147 ${port} Get Regexp Matches ${lines} \\d+
148 ${port_num} Get From List ${port} 0
149 Should Contain ${check-1} ${port_num}
152 Disable_Tunnel_Monitoring
153 [Documentation] In this we will disable tunnel monitoring by tep:enable command running in karaf console
154 ${output} Issue_Command_On_Karaf_Console tep:enable-tunnel-monitor false