2 Documentation Test Suite for BFD tunnel monitoring
3 Suite Setup Genius Suite Setup
4 Suite Teardown BFD Suite Stop
5 Test Teardown Genius Test Teardown ${data_models}
6 Library OperatingSystem
8 Library RequestsLibrary
12 Variables ../../variables/genius/Modules.py
13 Resource ../../libraries/DataModels.robot
14 Resource ../../libraries/Genius.robot
15 Resource ../../libraries/KarafKeywords.robot
16 Resource ../../libraries/OVSDB.robot
17 Resource ../../libraries/Utils.robot
18 Resource ../../libraries/VpnOperations.robot
19 Resource ../../variables/Variables.robot
23 ${genius_config_dir} ${CURDIR}/../../variables/genius
27 ${TEP_SHOW_STATE} tep:show-state
28 ${TUNNEL_MONITOR_ON} Tunnel Monitoring (for VXLAN tunnels): On
29 ${DEFAULT_MONITORING_INTERVAL} Tunnel Monitoring Interval (for VXLAN tunnels): 1000
30 ${TUNNEL_MONITOR_OFF} Tunnel Monitoring (for VXLAN tunnels): Off
31 ${INTERVAL_5000} {"tunnel-monitor-interval":{"interval":5000}}
33 ${ENABLE_MONITORING} {"tunnel-monitor-params":{"enabled":true,"monitor-protocol":"odl-interface:tunnel-monitoring-type-bfd"}}
34 ${DISABLE_MONITORING} {"tunnel-monitor-params":{"enabled":"false","monitor-protocol":"odl-interface:tunnel-monitoring-type-bfd"}}
35 ${TUNNEL_MONI_PARAMS_TRUE} true
36 ${TUNNEL_MONI_PARAMS_FALSE} false
37 ${INTERFACE_DS_MONI_FALSE} "odl-interface:monitor-enabled": false
38 ${INTERFACE_DS_MONI_TRUE} "odl-interface:monitor-enabled": true
39 ${INTERFACE_DS_MONI_INT_1000} "odl-interface:monitor-interval": 1000
40 ${INTERFACE_DS_MONI_INT_5000} "odl-interface:monitor-interval": 5000
41 ${TUNNEL_MONI_PROTO} tunnel-monitoring-type-bfd
44 BFD_TC00 Create ITM between DPNs Verify_BFD_Enablement
45 [Documentation] Create ITM between DPNs Verify_BFD_Enablement
46 ${Dpn_id_1} Genius.Get Dpn Ids ${conn_id_1}
47 ${Dpn_id_2} Genius.Get Dpn Ids ${conn_id_2}
48 ${vlan}= Set Variable 0
49 ${gateway-ip}= Set Variable 0.0.0.0
50 Genius.Create Vteps ${Dpn_id_1} ${Dpn_id_2} ${TOOLS_SYSTEM_IP} ${TOOLS_SYSTEM_2_IP} ${vlan} ${gateway-ip}
51 Wait Until Keyword Succeeds 30s 5s Verify Tunnel Status as UP
53 BFD_TC01 Verify by default BFD monitoring is enabled on Controller
54 [Documentation] Verify by default BFD monitoring is enabled on Controller
55 Wait Until Keyword Succeeds 10s 2s Verify Tunnel Monitoring Is On
56 Wait Until Keyword Succeeds 10s 2s Verify Config Ietf Interface Output ${INTERFACE_DS_MONI_TRUE} ${INTERFACE_DS_MONI_INT_1000} ${TUNNEL_MONI_PROTO}
58 BFD_TC02 Verify that BFD tunnel monitoring interval is set with appropriate default value i.e.,1000
59 [Documentation] This will verify BFD tunnel monitoring default interval
60 ${output}= Issue Command On Karaf Console ${TEP_SHOW}
62 Should Contain ${output} ${DEFAULT_MONITORING_INTERVAL}
63 Wait Until Keyword Succeeds 10s 2s Verify Config Ietf Interface Output ${INTERFACE_DS_MONI_TRUE} ${INTERFACE_DS_MONI_INT_1000} ${TUNNEL_MONI_PROTO}
65 BFD_TC04 Verify that in controller tunnel status is up when ITM tunnel interface is brought up.
66 [Documentation] Verify that in controller tunnel status is up when ITM tunnel interface is brought up.
67 Wait Until Keyword Succeeds 10s 2s Verify Tunnel Monitoring Is On
68 Wait Until Keyword Succeeds 10s 1s Verify Tunnel Status as UP
69 Wait Until Keyword Succeeds 10s 2s Verify Config Ietf Interface Output ${INTERFACE_DS_MONI_TRUE} ${INTERFACE_DS_MONI_INT_1000} ${TUNNEL_MONI_PROTO}
71 BFD_TC05 Verify BFD tunnel monitoring interval can be changed.
72 [Documentation] Verify BFD tunnel monitoring interval can be changed.
73 Log "Value of BFD monitoring interval before updating with new value"
74 ${oper_int} RequestsLibrary.Get Request session ${OPERATIONAL_API}/itm-config:tunnel-monitor-interval/
75 ${respjson} RequestsLibrary.To Json ${oper_int.content} pretty_print=True
77 Log "Value of BFD monitoring interval is getting updated"
78 ${oper_int} RequestsLibrary.Put Request session ${CONFIG_API}/itm-config:tunnel-monitor-interval/ data=${INTERVAL_5000}
79 ${Bfd_updated_value}= Create List 5000
80 Wait Until Keyword Succeeds 30s 10s Check For Elements At Uri ${OPERATIONAL_API}/itm-config:tunnel-monitor-interval/ ${Bfd_updated_value}
81 Wait Until Keyword Succeeds 30s 10s Check For Elements At Uri ${CONFIG_API}/itm-config:tunnel-monitor-interval/ ${Bfd_updated_value}
82 Wait Until Keyword Succeeds 10s 2s Verify Config Ietf Interface Output ${INTERFACE_DS_MONI_TRUE} ${INTERFACE_DS_MONI_INT_5000} ${TUNNEL_MONI_PROTO}
83 SSHLibrary.Switch Connection ${conn_id_1}
84 Execute Command sudo ovs-vsctl del-port ${Bridge-1} tap8ed70586-6c
85 ${ovs_1} Execute Command sudo ovs-vsctl show
87 ${tun_name} Wait Until Keyword Succeeds 20 5 Ovs Tunnel Get ${Bridge-1}
88 Wait Until Keyword Succeeds 20s 5 OVSDB.Verify Ovs-vsctl Output list interface ${tun_name} 5000 ovs_system=${TOOLS_SYSTEM_IP}
89 SSHLibrary.Switch Connection ${conn_id_2}
90 ${ovs_2} Execute Command sudo ovs-vsctl show
91 ${tun_name} Wait Until Keyword Succeeds 20 5 Ovs Tunnel Get ${Bridge-2}
92 Wait Until Keyword Succeeds 20s 5 OVSDB.Verify Ovs-vsctl Output list interface ${tun_name} 5000 ovs_system=${TOOLS_SYSTEM_2_IP}
94 BFD_TC06 Verify that the tunnel state goes to UNKNOWN when DPN is disconnected
95 [Documentation] Verify that the tunnel state goes to UNKNOWN when DPN is disconnected
96 ${output}= Issue Command On Karaf Console ${TEP_SHOW}
98 ${output}= Issue Command On Karaf Console ${TEP_SHOW_STATE}
100 SSHLibrary.Switch Connection ${conn_id_1}
101 Execute Command sudo ovs-vsctl del-controller BR1
102 SSHLibrary.Switch Connection ${conn_id_2}
103 Execute Command sudo ovs-vsctl del-controller BR2
104 ${output}= Issue Command On Karaf Console ${TEP_SHOW}
106 ${output}= Issue Command On Karaf Console ${TEP_SHOW_STATE}
108 Wait Until Keyword Succeeds 10s 1s Verify Tunnel Status as UNKNOWN
109 Wait Until Keyword Succeeds 10s 2s Verify Config Ietf Interface Output ${INTERFACE_DS_MONI_TRUE} ${INTERFACE_DS_MONI_INT_5000} ${TUNNEL_MONI_PROTO}
110 SSHLibrary.Switch Connection ${conn_id_1}
111 Execute Command sudo ovs-vsctl set-controller BR1 tcp:${ODL_SYSTEM_IP}:${ODL_OF_PORT}
112 SSHLibrary.Switch Connection ${conn_id_2}
113 Execute Command sudo ovs-vsctl set-controller BR2 tcp:${ODL_SYSTEM_IP}:${ODL_OF_PORT}
114 Log "After connecting CSS with controller"
115 ${output}= Issue Command On Karaf Console ${TEP_SHOW}
117 ${output}= Issue Command On Karaf Console ${TEP_SHOW_STATE}
119 Wait Until Keyword Succeeds 10s 1s Verify Tunnel Status as UP
120 Wait Until Keyword Succeeds 10s 2s Verify Config Ietf Interface Output ${INTERFACE_DS_MONI_TRUE} ${INTERFACE_DS_MONI_INT_5000} ${TUNNEL_MONI_PROTO}
122 BFD_TC07 Verify that BFD monitoring is disabled on Controller
123 [Documentation] Verify that BFD monitoring is disabled on Controller
124 ${resp} RequestsLibrary.Put Request session ${CONFIG_API}/itm-config:tunnel-monitor-params/ data=${DISABLE_MONITORING}
125 Should Be Equal As Strings ${resp.status_code} 201
126 Wait Until Keyword Succeeds 10s 2s Verify Tunnel Monitoring Params ${TUNNEL_MONI_PARAMS_FALSE}
127 ${output}= Issue Command On Karaf Console ${TEP_SHOW}
129 Should Contain ${output} ${TUNNEL_MONITOR_OFF}
130 Wait Until Keyword Succeeds 10s 2s Verify Config Ietf Interface Output ${INTERFACE_DS_MONI_FALSE} ${INTERFACE_DS_MONI_INT_5000} ${TUNNEL_MONI_PROTO}
131 Log "Verifying tunnel is UP after BFD is disabled"
132 Wait Until Keyword Succeeds 10s 1s Verify Tunnel Status as UP
133 Log "Enabling tunnel monitoring once again"
134 ${resp} RequestsLibrary.Put Request session ${CONFIG_API}/itm-config:tunnel-monitor-params/ data=${ENABLE_MONITORING}
135 Should Be Equal As Strings ${resp.status_code} 200
136 Wait Until Keyword Succeeds 10s 2s Verify Tunnel Monitoring Params ${TUNNEL_MONI_PARAMS_TRUE}
137 Wait Until Keyword Succeeds 10s 2s Verify Tunnel Monitoring Is On
138 Wait Until Keyword Succeeds 10s 2s Verify Config Ietf Interface Output ${INTERFACE_DS_MONI_TRUE} ${INTERFACE_DS_MONI_INT_5000} ${TUNNEL_MONI_PROTO}
141 Verify Config Ietf Interface Output
142 [Arguments] ${state} ${interval} ${proto}
143 ${int_resp} RequestsLibrary.Get Request session ${CONFIG_API}/ietf-interfaces:interfaces/
144 ${respjson} RequestsLibrary.To Json ${int_resp.content} pretty_print=True
146 Should Contain ${respjson} ${state}
147 Should Contain ${respjson} ${interval}
148 Should Contain ${respjson} ${proto}
151 [Arguments] ${bridge}
152 log sudo ovs-vsctl list-ports ${bridge}
153 ${tun_name} Execute Command sudo ovs-vsctl list-ports ${bridge}
155 Should Not Be Empty ${tun_name}
158 Verify Tunnel Monitoring Params
160 @{checklist} create list ${flag}
161 Check For Elements At URI ${OPERATIONAL_API}/itm-config:tunnel-monitor-params/ ${checklist}