Remove openstack integration
[integration/test.git] / csit / suites / genius / BFD_monitoring.robot
index dcf50120e01fab217c7d0e60896a18e05efa4cb3..2802feb84ca1d2b4b8b1a224b4c4d5e993fd123a 100644 (file)
 *** Settings ***
-Documentation     Test Suite for BFD tunnel monitoring
-Suite Setup       Genius Suite Setup
-Suite Teardown    BFD Suite Teardown
-Test Setup        Genius Test Setup
-Test Teardown     Genius Test Teardown    ${data_models}
-Library           OperatingSystem
-Library           String
-Library           RequestsLibrary
-Library           Collections
-Library           re
-Library           SSHLibrary
-Variables         ../../variables/genius/Modules.py
-Resource          ../../libraries/DataModels.robot
-Resource          ../../libraries/Genius.robot
-Resource          ../../libraries/KarafKeywords.robot
-Resource          ../../libraries/OVSDB.robot
-Resource          ../../libraries/Utils.robot
-Resource          ../../libraries/VpnOperations.robot
-Resource          ../../variables/Variables.robot
+Documentation       Test Suite for BFD tunnel monitoring
+
+Library             OperatingSystem
+Library             String
+Library             RequestsLibrary
+Library             Collections
+Library             SSHLibrary
+Resource            ../../libraries/DataModels.robot
+Resource            ../../libraries/Genius.robot
+Resource            ../../libraries/KarafKeywords.robot
+Resource            ../../libraries/OVSDB.robot
+Resource            ../../libraries/ToolsSystem.robot
+Resource            ../../libraries/Utils.robot
+Resource            ../../libraries/VpnOperations.robot
+Resource            ../../variables/netvirt/Variables.robot
+Resource            ../../variables/Variables.robot
+Resource            ../../libraries/CompareStream.robot
+Variables           ../../variables/genius/Modules.py
+
+Suite Setup         Genius Suite Setup
+Suite Teardown      BFD Suite Teardown
+Test Setup          Genius Test Setup
+Test Teardown       Genius Test Teardown    ${data_models}
+
 
 *** Variables ***
-@{itm_created}    TZA
-${genius_config_dir}    ${CURDIR}/../../variables/genius
-${TEP_SHOW}       tep:show
-${TEP_SHOW_STATE}    tep:show-state
-${TUNNEL_MONITOR_ON}    Tunnel Monitoring (for VXLAN tunnels): On
-${DEFAULT_MONITORING_INTERVAL}    Tunnel Monitoring Interval (for VXLAN tunnels): 1000
-${TUNNEL_MONITOR_OFF}    Tunnel Monitoring (for VXLAN tunnels): Off
-${INTERVAL_5000}    {"tunnel-monitor-interval":{"interval":5000}}
-${OK_201}         201
-${ENABLE_MONITORING}    {"tunnel-monitor-params":{"enabled":true,"monitor-protocol":"odl-interface:tunnel-monitoring-type-bfd"}}
-${DISABLE_MONITORING}    {"tunnel-monitor-params":{"enabled":"false","monitor-protocol":"odl-interface:tunnel-monitoring-type-bfd"}}
-${TUNNEL_MONI_PARAMS_TRUE}    true
-${TUNNEL_MONI_PARAMS_FALSE}    false
-${INTERFACE_DS_MONI_FALSE}    "odl-interface:monitor-enabled": false
-${INTERFACE_DS_MONI_TRUE}    "odl-interface:monitor-enabled": true
-${INTERFACE_DS_MONI_INT_1000}    "odl-interface:monitor-interval": 1000
-${INTERFACE_DS_MONI_INT_5000}    "odl-interface:monitor-interval": 5000
-${TUNNEL_MONI_PROTO}    tunnel-monitoring-type-bfd
+${TUNNEL_MONITOR_ON}                Tunnel Monitoring (for VXLAN tunnels): On
+${DEFAULT_MONITORING_INTERVAL}      Tunnel Monitoring Interval (for VXLAN tunnels): 1000
+${TUNNEL_MONITOR_OFF}               Tunnel Monitoring (for VXLAN tunnels): Off
+${INTERVAL_5000}                    {"tunnel-monitor-interval":{"interval":5000}}
+${ENABLE_MONITORING}
+...                                 {"tunnel-monitor-params":{"enabled":true,"monitor-protocol":"odl-interface:tunnel-monitoring-type-bfd"}}
+${DISABLE_MONITORING}
+...                                 {"tunnel-monitor-params":{"enabled":"false","monitor-protocol":"odl-interface:tunnel-monitoring-type-bfd"}}
+${TUNNEL_MONI_PARAMS_TRUE}          true
+${TUNNEL_MONI_PARAMS_FALSE}         false
+${INTERFACE_DS_MONI_FALSE}          "odl-interface:monitor-enabled": false
+${INTERFACE_DS_MONI_TRUE}           "odl-interface:monitor-enabled": true
+${INTERFACE_DS_MONI_INT_1000}       "odl-interface:monitor-interval": 1000
+${INTERFACE_DS_MONI_INT_5000}       "odl-interface:monitor-interval": 5000
+${TUNNEL_MONI_PROTO}                tunnel-monitoring-type-bfd
+
 
 *** Test Cases ***
-BFD_TC00 Create ITM between DPNs Verify_BFD_Enablement
-    [Documentation]    Create ITM between DPNs Verify_BFD_Enablement
-    ${Dpn_id_1}    Genius.Get Dpn Ids    ${conn_id_1}
-    ${Dpn_id_2}    Genius.Get Dpn Ids    ${conn_id_2}
-    ${vlan}=    Set Variable    0
-    ${gateway-ip}=    Set Variable    0.0.0.0
-    Genius.Create Vteps    ${Dpn_id_1}    ${Dpn_id_2}    ${TOOLS_SYSTEM_IP}    ${TOOLS_SYSTEM_2_IP}    ${vlan}    ${gateway-ip}
-    Wait Until Keyword Succeeds    30s    5s    Genius.Verify Tunnel Status as UP    TZA
-
-BFD_TC01 Verify by default BFD monitoring is enabled on Controller
-    [Documentation]    Verify by default BFD monitoring is enabled on Controller
-    Wait Until Keyword Succeeds    10s    2s    Verify Tunnel Monitoring Is On
-    Wait Until Keyword Succeeds    10s    2s    Verify Config Ietf Interface Output    ${INTERFACE_DS_MONI_TRUE}    ${INTERFACE_DS_MONI_INT_1000}    ${TUNNEL_MONI_PROTO}
-
-BFD_TC02 Verify that BFD tunnel monitoring interval is set with appropriate default value i.e.,1000
+BFD_TC00 Create ITM between DPNs
+    [Documentation]    Create ITM between DPNs
+    Genius.Create Vteps    ${NO_VLAN}    ${gateway_ip}
+    BuiltIn.Wait Until Keyword Succeeds    30s    5s    Genius.Verify Tunnel Status As Up
+
+BFD_TC01 Verify default BFD monitoring status on Controller
+    [Documentation]    Verify the default value of BFD monitoring \ on the Controller
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    10s
+    ...    2s
+    ...    Genius.Verify Tunnel Monitoring Status
+    ...    ${TUNNEL_MONITOR_OFF}
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    10s
+    ...    2s
+    ...    Verify Config Ietf Interface Output
+    ...    ${INTERFACE_DS_MONI_FALSE}
+    ...    ${INTERFACE_DS_MONI_INT_1000}
+    ...    ${TUNNEL_MONI_PROTO}
+
+BFD_TC02 Enable BFD Monitoring And Verify On Controller
+    [Documentation]    Enable BFD monitoring in branches greater than neon and verify that BFD is enabled in the controller.
+    Enable BFD And Verify    ${INTERFACE_DS_MONI_INT_1000}
+
+BFD_TC03 Verify that BFD tunnel monitoring interval is set with appropriate default value i.e.,1000
     [Documentation]    This will verify BFD tunnel monitoring default interval
-    ${output} =    Issue Command On Karaf Console    ${TEP_SHOW}
-    ${tunnel_monitoring} =    Get Lines Containing String    ${output}    Tunnel Monitoring Interval
-    Should Be Equal    ${tunnel_monitoring}    ${DEFAULT_MONITORING_INTERVAL}
-    Wait Until Keyword Succeeds    10s    2s    Verify Config Ietf Interface Output    ${INTERFACE_DS_MONI_TRUE}    ${INTERFACE_DS_MONI_INT_1000}    ${TUNNEL_MONI_PROTO}
+    ${output} =    KarafKeywords.Issue Command On Karaf Console    ${TEP_SHOW}
+    ${tunnel_monitoring} =    String.Get Lines Containing String    ${output}    Tunnel Monitoring Interval
+    BuiltIn.Should Be Equal    ${tunnel_monitoring}    ${DEFAULT_MONITORING_INTERVAL}
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    10s
+    ...    2s
+    ...    Verify Config Ietf Interface Output
+    ...    ${INTERFACE_DS_MONI_TRUE}
+    ...    ${INTERFACE_DS_MONI_INT_1000}
+    ...    ${TUNNEL_MONI_PROTO}
 
 BFD_TC04 Verify that in controller tunnel status is up when ITM tunnel interface is brought up.
     [Documentation]    Verify that in controller tunnel status is up when ITM tunnel interface is brought up.
-    Wait Until Keyword Succeeds    10s    2s    Verify Tunnel Monitoring Is On
-    Wait Until Keyword Succeeds    10s    1s    Genius.Verify Tunnel Status as UP    TZA
-    Wait Until Keyword Succeeds    10s    2s    Verify Config Ietf Interface Output    ${INTERFACE_DS_MONI_TRUE}    ${INTERFACE_DS_MONI_INT_1000}    ${TUNNEL_MONI_PROTO}
+    BuiltIn.Wait Until Keyword Succeeds    10s    2s    Genius.Verify Tunnel Monitoring Status    ${TUNNEL_MONITOR_ON}
+    BuiltIn.Wait Until Keyword Succeeds    10s    1s    Genius.Verify Tunnel Status As Up
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    10s
+    ...    2s
+    ...    Verify Config Ietf Interface Output
+    ...    ${INTERFACE_DS_MONI_TRUE}
+    ...    ${INTERFACE_DS_MONI_INT_1000}
+    ...    ${TUNNEL_MONI_PROTO}
 
 BFD_TC05 Verify BFD tunnel monitoring interval can be changed.
     [Documentation]    Verify BFD tunnel monitoring interval can be changed.
-    ${oper_int}    RequestsLibrary.Put Request    session    ${CONFIG_API}/itm-config:tunnel-monitor-interval/    data=${INTERVAL_5000}
-    ${Bfd_updated_value}=    Create List    5000
-    Wait Until Keyword Succeeds    30s    10s    Check For Elements At Uri    ${OPERATIONAL_API}/itm-config:tunnel-monitor-interval/    ${Bfd_updated_value}
-    Wait Until Keyword Succeeds    30s    10s    Check For Elements At Uri    ${CONFIG_API}/itm-config:tunnel-monitor-interval/    ${Bfd_updated_value}
-    Wait Until Keyword Succeeds    10s    2s    Verify Config Ietf Interface Output    ${INTERFACE_DS_MONI_TRUE}    ${INTERFACE_DS_MONI_INT_5000}    ${TUNNEL_MONI_PROTO}
-    ${tun_name}    Wait Until Keyword Succeeds    20    5    Ovs Tunnel Get    ${TOOLS_SYSTEM_1_IP}
-    Wait Until Keyword Succeeds    20s    5    OVSDB.Verify Ovs-vsctl Output    list interface ${tun_name}    5000    ovs_system=${TOOLS_SYSTEM_1_IP}
-    ${tun_name}    Wait Until Keyword Succeeds    20    5    Ovs Tunnel Get    ${TOOLS_SYSTEM_2_IP}
-    Wait Until Keyword Succeeds    20s    5    OVSDB.Verify Ovs-vsctl Output    list interface ${tun_name}    5000    ovs_system=${TOOLS_SYSTEM_2_IP}
+    ${oper_int} =    RequestsLibrary.Put Request
+    ...    session
+    ...    ${CONFIG_API}/itm-config:tunnel-monitor-interval/
+    ...    data=${INTERVAL_5000}
+    ${Bfd_updated_value} =    BuiltIn.Create List    5000
+    Wait Until Keyword Succeeds
+    ...    30s
+    ...    10s
+    ...    Utils.Check For Elements At URI
+    ...    ${OPERATIONAL_API}/itm-config:tunnel-monitor-interval/
+    ...    ${Bfd_updated_value}
+    Wait Until Keyword Succeeds
+    ...    30s
+    ...    10s
+    ...    Utils.Check For Elements At URI
+    ...    ${CONFIG_API}/itm-config:tunnel-monitor-interval/
+    ...    ${Bfd_updated_value}
+    Wait Until Keyword Succeeds
+    ...    10s
+    ...    2s
+    ...    Verify Config Ietf Interface Output
+    ...    ${INTERFACE_DS_MONI_TRUE}
+    ...    ${INTERFACE_DS_MONI_INT_5000}
+    ...    ${TUNNEL_MONI_PROTO}
+    FOR    ${tool_system_index}    IN RANGE    ${NUM_TOOLS_SYSTEM}
+        ${tun_names} =    Genius.Get Tunnels On OVS    ${TOOLS_SYSTEM_ALL_CONN_IDS[${tool_system_index}]}
+        Verify ovs-vsctl Output For Each Tunnel    ${tun_names}    ${tool_system_index}
+    END
 
 BFD_TC06 Verify that the tunnel state goes to UNKNOWN when DPN is disconnected
     [Documentation]    Verify that the tunnel state goes to UNKNOWN when DPN is disconnected
-    Issue Command On Karaf Console    ${TEP_SHOW}
-    Issue Command On Karaf Console    ${TEP_SHOW_STATE}
-    SSHLibrary.Switch Connection    ${conn_id_1}
-    Execute Command    sudo ovs-vsctl del-controller ${Bridge}
-    SSHLibrary.Switch Connection    ${conn_id_2}
-    Execute Command    sudo ovs-vsctl del-controller ${Bridge}
-    Issue Command On Karaf Console    ${TEP_SHOW}
-    Issue Command On Karaf Console    ${TEP_SHOW_STATE}
-    Wait Until Keyword Succeeds    10s    1s    Verify Tunnel Status as UNKNOWN
-    Wait Until Keyword Succeeds    10s    2s    Verify Config Ietf Interface Output    ${INTERFACE_DS_MONI_TRUE}    ${INTERFACE_DS_MONI_INT_5000}    ${TUNNEL_MONI_PROTO}
-    SSHLibrary.Switch Connection    ${conn_id_1}
-    Execute Command    sudo ovs-vsctl set-controller ${Bridge} tcp:${ODL_SYSTEM_IP}:${ODL_OF_PORT}
-    SSHLibrary.Switch Connection    ${conn_id_2}
-    Execute Command    sudo ovs-vsctl set-controller ${Bridge} tcp:${ODL_SYSTEM_IP}:${ODL_OF_PORT}
-    Log    "After connecting CSS with controller"
-    Issue Command On Karaf Console    ${TEP_SHOW}
-    Issue Command On Karaf Console    ${TEP_SHOW_STATE}
-    Wait Until Keyword Succeeds    10s    1s    Genius.Verify Tunnel Status as UP    TZA
-    Wait Until Keyword Succeeds    10s    2s    Verify Config Ietf Interface Output    ${INTERFACE_DS_MONI_TRUE}    ${INTERFACE_DS_MONI_INT_5000}    ${TUNNEL_MONI_PROTO}
-
-BFD_TC07 Verify that BFD monitoring is disabled on Controller
-    [Documentation]    Verify that BFD monitoring is disabled on Controller
-    ${resp}    RequestsLibrary.Put Request    session    ${CONFIG_API}/itm-config:tunnel-monitor-params/    data=${DISABLE_MONITORING}
-    Should Be Equal As Strings    ${resp.status_code}    201
-    Wait Until Keyword Succeeds    10s    2s    Verify Tunnel Monitoring Params    ${TUNNEL_MONI_PARAMS_FALSE}
-    ${output}=    Issue Command On Karaf Console    ${TEP_SHOW}
-    Should Contain    ${output}    ${TUNNEL_MONITOR_OFF}
-    Wait Until Keyword Succeeds    10s    2s    Verify Config Ietf Interface Output    ${INTERFACE_DS_MONI_FALSE}    ${INTERFACE_DS_MONI_INT_5000}    ${TUNNEL_MONI_PROTO}
-    Wait Until Keyword Succeeds    10s    1s    Genius.Verify Tunnel Status as UP    TZA
-    ${resp}    RequestsLibrary.Put Request    session    ${CONFIG_API}/itm-config:tunnel-monitor-params/    data=${ENABLE_MONITORING}
-    Should Be Equal As Strings    ${resp.status_code}    200
-    Wait Until Keyword Succeeds    10s    2s    Verify Tunnel Monitoring Params    ${TUNNEL_MONI_PARAMS_TRUE}
-    Wait Until Keyword Succeeds    10s    2s    Verify Tunnel Monitoring Is On
-    Wait Until Keyword Succeeds    10s    2s    Verify Config Ietf Interface Output    ${INTERFACE_DS_MONI_TRUE}    ${INTERFACE_DS_MONI_INT_5000}    ${TUNNEL_MONI_PROTO}
+    ToolsSystem.Run Command On All Tools Systems    sudo ovs-vsctl del-controller ${Bridge}
+    BuiltIn.Wait Until Keyword Succeeds    10s    1s    VpnOperations.Verify Tunnel Status as UNKNOWN
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    10s
+    ...    2s
+    ...    Verify Config Ietf Interface Output
+    ...    ${INTERFACE_DS_MONI_TRUE}
+    ...    ${INTERFACE_DS_MONI_INT_5000}
+    ...    ${TUNNEL_MONI_PROTO}
+    ToolsSystem.Run Command On All Tools Systems
+    ...    sudo ovs-vsctl set-controller ${Bridge} tcp:${ODL_SYSTEM_IP}:${ODL_OF_PORT}
+    BuiltIn.Wait Until Keyword Succeeds    10s    1s    Genius.Verify Tunnel Status As Up
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    10s
+    ...    2s
+    ...    Verify Config Ietf Interface Output
+    ...    ${INTERFACE_DS_MONI_TRUE}
+    ...    ${INTERFACE_DS_MONI_INT_5000}
+    ...    ${TUNNEL_MONI_PROTO}
+
+BFD_TC07 Set BFD monitoring To Default Value
+    [Documentation]    Disable BFD monitoring(setting it to default value) and verify that BFD is disabled on the controller.
+    Disable BFD And Verify
+
 
 *** Keywords ***
 Verify Config Ietf Interface Output
+    [Documentation]    This keyword will get request from config ietf interface and verifies state, interval and proto are present
     [Arguments]    ${state}    ${interval}    ${proto}
-    ${int_resp}    RequestsLibrary.Get Request    session    ${CONFIG_API}/ietf-interfaces:interfaces/
-    ${respjson}    RequestsLibrary.To Json    ${int_resp.content}    pretty_print=True
-    Log    ${respjson}
-    Should Contain    ${respjson}    ${state}
-    Should Contain    ${respjson}    ${interval}
-    Should Contain    ${respjson}    ${proto}
+    ${int_resp} =    RequestsLibrary.Get Request    session    ${CONFIG_API}/ietf-interfaces:interfaces/
+    ${respjson} =    RequestsLibrary.To Json    ${int_resp.content}    pretty_print=True
+    BuiltIn.Should Contain    ${respjson}    ${state}
+    BuiltIn.Should Contain    ${respjson}    ${interval}
+    BuiltIn.Should Contain    ${respjson}    ${proto}
 
 Ovs Tunnel Get
-    [Arguments]    ${tools_ip}
     [Documentation]    This keyword will return the tunnel name on OVS
-    ${list_interface}    Utils.Run Command On Remote System    ${tools_ip}    sudo ovs-vsctl list interface
-    ${tun_line}    ${tun_name}    Should Match Regexp    ${list_interface}    name\\s+: "(tun.*)"
-    log    ${tun_name}
-    Should Not Be Empty    ${tun_name}
-    [Return]    ${tun_name}
+    [Arguments]    ${tools_ip}
+    ${list_interface} =    Utils.Run Command On Remote System    ${tools_ip}    sudo ovs-vsctl list interface
+    ${tun_line} =    ${tun_name} =    BuiltIn.Should Match Regexp    ${list_interface}    name\\s+: "(tun.*)"
+    BuiltIn.Log    ${tun_name}
+    BuiltIn.Should Not Be Empty    ${tun_name}
+    RETURN    ${tun_name}
 
 Verify Tunnel Monitoring Params
+    [Documentation]    This keyword will verify the tunnel monitoring is true or false
     [Arguments]    ${flag}
-    @{checklist}    create list    ${flag}
-    Check For Elements At URI    ${OPERATIONAL_API}/itm-config:tunnel-monitor-params/    ${checklist}
+    @{checklist} =    BuiltIn.Create List    ${flag}
+    Utils.Check For Elements At URI    ${OPERATIONAL_API}/itm-config:tunnel-monitor-params/    ${checklist}
+
+Enable BFD And Verify
+    [Documentation]    Enable BFD Monitoring And Verify On Controller.
+    [Arguments]    ${interface_ds_moni_int}
+    ${resp} =    RequestsLibrary.Put Request
+    ...    session
+    ...    ${CONFIG_API}/itm-config:tunnel-monitor-params/
+    ...    data=${ENABLE_MONITORING}
+    BuiltIn.Should Be Equal As Strings    ${resp.status_code}    201
+    BuiltIn.Wait Until Keyword Succeeds    10s    2s    Verify Tunnel Monitoring Params    ${TUNNEL_MONI_PARAMS_TRUE}
+    BuiltIn.Wait Until Keyword Succeeds    10s    2s    Genius.Verify Tunnel Monitoring Status    ${TUNNEL_MONITOR_ON}
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    10s
+    ...    2s
+    ...    Verify Config Ietf Interface Output
+    ...    ${INTERFACE_DS_MONI_TRUE}
+    ...    ${interface_ds_moni_int}
+    ...    ${TUNNEL_MONI_PROTO}
+    BuiltIn.Wait Until Keyword Succeeds    10s    1s    Genius.Verify Tunnel Status As Up
+
+Disable BFD And Verify
+    [Documentation]    Disable BFD Monitoring And Verify On Controller.
+    ${resp} =    RequestsLibrary.Put Request
+    ...    session
+    ...    ${CONFIG_API}/itm-config:tunnel-monitor-params/
+    ...    data=${DISABLE_MONITORING}
+    BuiltIn.Should Be Equal As Strings    ${resp.status_code}    200
+    BuiltIn.Wait Until Keyword Succeeds    10s    2s    Verify Tunnel Monitoring Params    ${TUNNEL_MONI_PARAMS_FALSE}
+    BuiltIn.Wait Until Keyword Succeeds    10s    2s    Genius.Verify Tunnel Monitoring Status    ${TUNNEL_MONITOR_OFF}
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    10s
+    ...    2s
+    ...    Verify Config Ietf Interface Output
+    ...    ${INTERFACE_DS_MONI_FALSE}
+    ...    ${INTERFACE_DS_MONI_INT_5000}
+    ...    ${TUNNEL_MONI_PROTO}
+    BuiltIn.Wait Until Keyword Succeeds    10s    1s    Genius.Verify Tunnel Status As Up
+
+Verify ovs-vsctl Output For Each Tunnel
+    [Arguments]    ${tun_names}    ${tool_system_index}
+    ${no of tunnels} =    BuiltIn.Get Length    ${tun_names}
+    FOR    ${each_tun}    IN RANGE    ${no of tunnels}
+        ${tun} =    Collections.Get From List    ${tun_names}    ${each_tun}
+        BuiltIn.Wait Until Keyword Succeeds
+        ...    20
+        ...    5
+        ...    OVSDB.Verify Ovs-vsctl Output
+        ...    list interface ${tun}
+        ...    5000
+        ...    ovs_system=${TOOLS_SYSTEM_ALL_IPS}[${tool_system_index}]
+    END