removing validations for netvirt related testing
[integration/test.git] / csit / suites / ovsdb / Southbound_Domain / 040__Vxlan_Extension_Test.robot
index 832a02134475fa82648965bcac2381bf5eecee1b..0e047916cf5c9ce6030c6520d4535cf40b113418 100644 (file)
@@ -1,7 +1,9 @@
 *** Settings ***
 Documentation     Test suite for Connection Manager
-Suite Setup       Create Session    session    http://${CONTROLLER}:${RESTCONFPORT}    auth=${AUTH}    headers=${HEADERS}
-Suite Teardown    Delete All Sessions
+Suite Setup       Vxlan Extension Test Suite Setup
+Suite Teardown    Vxlan Extension Test Suite Teardown
+Test Setup        Log Testcase Start To Controller Karaf
+Force Tags        Southbound
 Library           OperatingSystem
 Library           String
 Library           Collections
@@ -15,168 +17,102 @@ Resource          ../../../libraries/OVSDB.robot
 *** Variables ***
 ${OVSDB_PORT}     6634
 ${OVSDB_CONFIG_DIR}    ${CURDIR}/../../../variables/ovsdb
-@{node_list1}     ovsdb://${MININET1}:${OVSDB_PORT}    ${MININET1}    ${OVSDB_PORT}    ovsdb://${MININET}:${OVSDB_PORT}    ${MININET}    ${OVSDB_PORT}    br-int
-${start1}         sudo mn --controller=remote,ip=${CONTROLLER} --switch=ovsk,protocols=OpenFlow13 --custom ovsdb.py --topo host,1
-${start2}         sudo mn --controller=remote,ip=${CONTROLLER} --switch=ovsk,protocols=OpenFlow13 --custom ovsdb.py --topo host,2
+@{node_list1}     ovsdb://${TOOLS_SYSTEM_2_IP}:${OVSDB_PORT}    ${TOOLS_SYSTEM_2_IP}    ${OVSDB_PORT}    ovsdb://${TOOLS_SYSTEM_IP}:${OVSDB_PORT}    ${TOOLS_SYSTEM_IP}    ${OVSDB_PORT}
+${start1}         sudo mn --controller=remote,ip=${ODL_SYSTEM_IP} --switch=ovsk,protocols=OpenFlow13 --custom ovsdb.py --topo host,1
+${start2}         sudo mn --controller=remote,ip=${ODL_SYSTEM_IP} --switch=ovsk,protocols=OpenFlow13 --custom ovsdb.py --topo host,2
 
 *** Test Cases ***
 Make the OVS instance to listen for connection
-    [Tags]    Southbound
-    Run Command On Remote System    ${MININET1}    sudo ovs-vsctl del-manager
-    Run Command On Remote System    ${MININET1}    sudo ovs-vsctl set-manager ptcp:6634
-    Run Command On Remote System    ${MININET}    sudo ovs-vsctl del-manager
-    Run Command On Remote System    ${MININET}    sudo ovs-vsctl set-manager ptcp:6634
+    Run Command On Remote System    ${TOOLS_SYSTEM_2_IP}    sudo ovs-vsctl del-manager
+    Run Command On Remote System    ${TOOLS_SYSTEM_2_IP}    sudo ovs-vsctl set-manager ptcp:${OVSDB_PORT}
+    Run Command On Remote System    ${TOOLS_SYSTEM_IP}    sudo ovs-vsctl del-manager
+    Run Command On Remote System    ${TOOLS_SYSTEM_IP}    sudo ovs-vsctl set-manager ptcp:${OVSDB_PORT}
 
 Connect controller to OVSDB Node1
     [Documentation]    Initiate the connection to OVSDB node from controller
-    [Tags]    Southbound
-    Connect To Ovsdb Node    ${MININET1}
+    Connect To Ovsdb Node    ${TOOLS_SYSTEM_2_IP}
 
 Connect controller to OVSDB Node2
     [Documentation]    Initiate the connection to OVSDB node from controller
-    [Tags]    Southbound
-    Connect To Ovsdb Node    ${MININET}
+    Connect To Ovsdb Node    ${TOOLS_SYSTEM_IP}
 
 Get Operational Topology from OVSDB Node1 and OVSDB Node2
     [Documentation]    This request will fetch the operational topology from the connected OVSDB nodes
-    [Tags]    Southbound
     Wait Until Keyword Succeeds    8s    2s    Check For Elements At URI    ${OPERATIONAL_TOPO_API}    ${node_list1}
 
-Delete the integration Bridge from OVSDB node 1 and 2 and Verify it
-    [Documentation]    This request will delete the integation bridge node from the OVSDB as we don't need it and verify the operation.
-    [Tags]    Southbound
-    Delete Bridge From Ovsdb Node    ${MININET}    br-int
-    Delete Bridge From Ovsdb Node    ${MININET1}    br-int
-    @{list}    Create List    br-int
-    Wait Until Keyword Succeeds    8s    2s    Check For Elements Not At URI    ${OPERATIONAL_TOPO_API}    ${list}
-
 Start the Mininet and create custom topology
     [Documentation]    This will start mininet with custom topology on both the Virtual Machines
-    [Tags]    Southbound
-    ${conn_id1}    Start Mininet    ${MININET1}    ${start1}    ${OVSDB_CONFIG_DIR}/ovsdb.py
+    ${conn_id1}    Start Mininet    ${TOOLS_SYSTEM_2_IP}    ${start1}    ${OVSDB_CONFIG_DIR}/ovsdb.py
     Set Global Variable    ${conn_id1}
-    ${conn_id2}    Start Mininet    ${MININET}    ${start2}    ${OVSDB_CONFIG_DIR}/ovsdb.py
+    ${conn_id2}    Start Mininet    ${TOOLS_SYSTEM_IP}    ${start2}    ${OVSDB_CONFIG_DIR}/ovsdb.py
     Set Global Variable    ${conn_id2}
 
 Get Operational Topology with custom topology
     [Documentation]    This request will fetch the operational topology from the connected OVSDB nodes to make sure the mininet created custom topology
-    [Tags]    Southbound
     @{list}    Create List    s1    s2
     Wait Until Keyword Succeeds    8s    2s    Check For Elements At URI    ${OPERATIONAL_TOPO_API}    ${list}
 
 Add the bridge s1 in the config datastore of OVSDB Node1
     [Documentation]    This request will add already operational bridge to the config data store of the OVSDB node.
-    [Tags]    Southbound
-    Add Bridge To Ovsdb Node    ${MININET1}    s1    0000000000000001
+    Add Bridge To Ovsdb Node    ${TOOLS_SYSTEM_2_IP}    s1    0000000000000001
 
 Add the bridge s2 in the config datastore of OVSDB Node2
     [Documentation]    This request will add already operational bridge to the config data store of the OVSDB node.
-    [Tags]    Southbound
-    Add Bridge To Ovsdb Node    ${MININET}    s2    0000000000000002
+    Add Bridge To Ovsdb Node    ${TOOLS_SYSTEM_IP}    s2    0000000000000002
 
 Get Config Topology with s1 and s2 Bridges
     [Documentation]    This will fetch the configuration topology from configuration data store to verify the bridge is added to the config data store
-    [Tags]    Southbound
     @{list}    Create List    s1    s2
     Wait Until Keyword Succeeds    8s    2s    Check For Elements At URI    ${CONFIG_TOPO_API}    ${list}
 
 Create Vxlan Port and attach to s1 Bridge
     [Documentation]    This request will create vxlan port/interface for vxlan tunnel and attach it to the specific bridge s1 of OVSDB node 1
-    [Tags]    Southbound
-    Add Vxlan To Bridge    ${MININET}    s2    vxlanport    ${MININET1}
+    Add Vxlan To Bridge    ${TOOLS_SYSTEM_IP}    s2    vxlanport    ${TOOLS_SYSTEM_2_IP}
 
 Create Vxlan Port and attach to s2 Bridge
     [Documentation]    This request will create vxlan port/interface for vxlan tunnel and attach it to the specific bridge s2 of OVSDB node 2
-    [Tags]    Southbound
-    Add Vxlan To Bridge    ${MININET1}    s1    vxlanport    ${MININET}
+    Add Vxlan To Bridge    ${TOOLS_SYSTEM_2_IP}    s1    vxlanport    ${TOOLS_SYSTEM_IP}
 
 Get Operational Topology with vxlan tunnel
     [Documentation]    This request will fetch the operational topology from the connected OVSDB nodes to verify that the vxlan tunnel is created
-    [Tags]    Southbound
-    @{list}    Create List    vxlanport    ${MININET1}    ${MININET}
+    @{list}    Create List    vxlanport    ${TOOLS_SYSTEM_2_IP}    ${TOOLS_SYSTEM_IP}
     Wait Until Keyword Succeeds    8s    2s    Check For Elements At URI    ${OPERATIONAL_TOPO_API}    ${list}
 
-Add Flow1 Rule for s1 and verify
-    [Documentation]    This request will add flow to the switch and after that verify through the config datastore flow
-    [Tags]    Southbound
-    ${body}    OperatingSystem.Get File    ${OVSDB_CONFIG_DIR}/add_flow_rule1.xml
-    Set Suite Variable    ${body}
-    Log    URL is ${CONFIG_NODES_API}/node/openflow:1/table/0/flow/1
-    ${resp}    RequestsLibrary.Put    session    ${CONFIG_NODES_API}/node/openflow:1/table/0/flow/1    headers=${HEADERS_XML}    data=${body}
-    Log    ${resp.content}
-    Should Be Equal As Strings    ${resp.status_code}    200
-    ${resp}    RequestsLibrary.Get    session    ${CONFIG_NODES_API}/node/openflow:1/table/0/flow/1    headers=${ACCEPT_XML}
-    Should Be Equal As Strings    ${resp.status_code}    200
-    compare xml    ${body}    ${resp.content}
-
-Add Flow2 Rule for s1 and verify
-    [Documentation]    This request will add flow to the switch and after that verify through the config datastore flow
-    [Tags]    Southbound
-    ${body}    OperatingSystem.Get File    ${OVSDB_CONFIG_DIR}/add_flow_rule2.xml
-    Log    URL is ${CONFIG_NODES_API}/node/openflow:1/table/0/flow/2
-    ${resp}    RequestsLibrary.Put    session    ${CONFIG_NODES_API}/node/openflow:1/table/0/flow/2    headers=${HEADERS_XML}    data=${body}
-    Log    ${resp.content}
-    Should Be Equal As Strings    ${resp.status_code}    200
-    ${resp}    RequestsLibrary.Get    session    ${CONFIG_NODES_API}/node/openflow:1/table/0/flow/2    headers=${ACCEPT_XML}
-    Should Be Equal As Strings    ${resp.status_code}    200
-    compare xml    ${body}    ${resp.content}
-
-Get Operational Topology to verify the flows successfully installed in the bridge s1
-    [Documentation]    This request will fetch the operational topology and verify that the flows has been installed in the switch
-    [Tags]    Southbound
-    @{list}    Create List    openflow:1
-    Wait Until Keyword Succeeds    8s    2s    Check For Elements At URI    ${OPERATIONAL_TOPO_API}    ${list}
-
-Add Flow1 Rule for s2 and verify
-    [Documentation]    This request will add flow to the switch and after that verify through the config datastore flow
-    [Tags]    Southbound
-    ${body}    OperatingSystem.Get File    ${OVSDB_CONFIG_DIR}/add_flow_rule1.xml
-    Log    URL is ${CONFIG_NODES_API}/node/openflow:2/table/0/flow/1
-    ${resp}    RequestsLibrary.Put    session    ${CONFIG_NODES_API}/node/openflow:2/table/0/flow/1    headers=${HEADERS_XML}    data=${body}
-    Log    ${resp.content}
-    Should Be Equal As Strings    ${resp.status_code}    200
-    ${resp}    RequestsLibrary.Get    session    ${CONFIG_NODES_API}/node/openflow:2/table/0/flow/1    headers=${ACCEPT_XML}
-    Should Be Equal As Strings    ${resp.status_code}    200
-    compare xml    ${body}    ${resp.content}
-
-Add Flow2 Rule for s2 and verify
-    [Documentation]    This request will add flow to the switch and after that verify through the config datastore flow
-    [Tags]    Southbound
-    ${body}    OperatingSystem.Get File    ${OVSDB_CONFIG_DIR}/add_flow_rule2.xml
-    Log    URL is ${CONFIG_NODES_API}/node/openflow:2/table/0/flow/2
-    ${resp}    RequestsLibrary.Put    session    ${CONFIG_NODES_API}/node/openflow:2/table/0/flow/2    headers=${HEADERS_XML}    data=${body}
-    Log    ${resp.content}
-    Should Be Equal As Strings    ${resp.status_code}    200
-    ${resp}    RequestsLibrary.Get    session    ${CONFIG_NODES_API}/node/openflow:2/table/0/flow/2    headers=${ACCEPT_XML}
-    Should Be Equal As Strings    ${resp.status_code}    200
-    compare xml    ${body}    ${resp.content}
-
-Get Operational Topology to verify the flows successfully installed in the bridge s2
-    [Documentation]    This request will fetch the operational topology and verify that the flows has been installed in the switch
-    [Tags]    Southbound
-    @{list}    Create List    openflow:2
-    Wait Until Keyword Succeeds    8s    2s    Check For Elements At URI    ${OPERATIONAL_TOPO_API}    ${list}
-
-Ping host2 to IP of host1
-    [Documentation]    This step will verify the functionality of the vxlan tunnel between two OVSDB nodes. Ping h2(10.0.0.2)---> 10.0.0.1 , verify no packet loss
-    Switch Connection    ${conn_id2}
-    SSHLibrary.Write    h2 ping -w 1 10.0.0.1
-    ${result}    Read Until    mininet>
-    Should Contain    ${result}    1 received, 0% packet loss
-
-Cleanup work after test completed
-    [Documentation]    Cleanup/Shutdown work that should be done at the completion of all tests
-    Stop Mininet    ${conn_id2}
-    Stop Mininet    ${conn_id1}
-
 Disconnect controller connection from the connected OVSDBs nodes
     [Documentation]    This request will disconnect the controller from the connected OVSDB node for clean startup for next suite.
     [Tags]    Southbound
-    Disconnect From Ovsdb Node    ${MININET}
-    Disconnect From Ovsdb Node    ${MININET1}
+    Disconnect From Ovsdb Node    ${TOOLS_SYSTEM_IP}
+    Disconnect From Ovsdb Node    ${TOOLS_SYSTEM_2_IP}
 
 Verify that the operational topology is clean
     [Documentation]    This request will verify the operational toplogy after the mininet is cleaned.
     [Tags]    Southbound
-    @{list}    Create List    ${MININET}    ${MININET1}    s1    s2
+    @{list}    Create List    ${TOOLS_SYSTEM_IP}    ${TOOLS_SYSTEM_2_IP}    s1    s2
     Wait Until Keyword Succeeds    8s    2s    Check For Elements Not At URI    ${OPERATIONAL_TOPO_API}    ${list}
+
+Check For Bug 4756
+    [Documentation]  bug 4756 has been seen in the OVSDB Southbound suites.  This test case should be one of the last test
+    ...    case executed.
+    Check Karaf Log File Does Not Have Messages    ${ODL_SYSTEM_IP}    SimpleShardDataTreeCohort.*Unexpected failure in validation phase
+    [Teardown]    Report_Failure_Due_To_Bug    4756
+
+Check For Bug 4794
+    [Documentation]  bug 4794 has been seen in the OVSDB Southbound suites.  This test case should be one of the last test
+    ...    case executed.
+    Check Karaf Log File Does Not Have Messages    ${ODL_SYSTEM_IP}    Shard.*shard-topology-operational An exception occurred while preCommitting transaction
+    [Teardown]    Report_Failure_Due_To_Bug    4794
+
+*** Keywords ***
+Vxlan Extension Test Suite Setup
+    Open Controller Karaf Console On Background
+    Create Session    session    http://${ODL_SYSTEM_IP}:${RESTCONFPORT}    auth=${AUTH}    headers=${HEADERS}
+
+Vxlan Extension Test Suite Teardown
+    [Documentation]  Cleans up test environment, close existing sessions.
+    Clean OVSDB Test Environment    ${TOOLS_SYSTEM_IP}
+    Clean OVSDB Test Environment    ${TOOLS_SYSTEM_2_IP}
+    RequestsLibrary.Delete Request    session    ${CONFIG_TOPO_API}/topology/ovsdb:1/node/ovsdb:%2F%2F${TOOLS_SYSTEM_IP}:${OVSDB_PORT}
+    RequestsLibrary.Delete Request    session    ${CONFIG_TOPO_API}/topology/ovsdb:1/node/ovsdb:%2F%2F${TOOLS_SYSTEM_2_IP}:${OVSDB_PORT}
+    ${resp}    RequestsLibrary.Get Request    session    ${CONFIG_TOPO_API}
+    Log    ${resp.content}
+    Delete All Sessions