BUG 8280: CSIT reproduction 39/56339/4
authorJamo Luhrsen <jluhrsen@redhat.com>
Mon, 1 May 2017 23:54:21 +0000 (16:54 -0700)
committerLuis Gomez <ecelgp@gmail.com>
Thu, 4 May 2017 23:43:39 +0000 (23:43 +0000)
Change-Id: I2d10aab725ff43c487c4ecfd185c76ab70c6d821
Signed-off-by: Jamo Luhrsen <jluhrsen@redhat.com>
csit/libraries/OVSDB.robot
csit/suites/ovsdb/Southbound_Domain/Bug_Validation.robot

index 8dc367e36b89a6a841045cfdf62da226d2185546..a2e83ac5d0792dbfd227e2cfbcbb6e0c2f8c383e 100644 (file)
@@ -56,19 +56,35 @@ Delete Bridge From Ovsdb Node
 Add Vxlan To Bridge
     [Arguments]    ${mininet_ip}    ${bridge_num}    ${vxlan_port}    ${remote_ip}    ${custom_port}=create_port.json
     [Documentation]    This request will create vxlan port for vxlan tunnel and attach it to the specific bridge
-    ${sample}    OperatingSystem.Get File    ${OVSDB_CONFIG_DIR}/${custom_port}
-    ${body}    Replace String    ${sample}    192.168.0.21    ${remote_ip}
-    Log    URL is ${SOUTHBOUND_CONFIG_API}${mininet_ip}:${OVSDB_PORT}%2Fbridge%2F${bridge_num}/termination-point/${vxlan_port}/
-    Log    data: ${body}
-    ${resp}    RequestsLibrary.Put Request    session    ${SOUTHBOUND_CONFIG_API}${mininet_ip}:${OVSDB_PORT}%2Fbridge%2F${bridge_num}/termination-point/${vxlan_port}/    data=${body}
-    Log    ${resp.content}
+    Add Termination Point    ${mininet_ip}:${OVSDB_PORT}    ${bridge_num}    ${vxlan_port}    ${remote_ip}
+
+Add Termination Point
+    [Arguments]    ${node_id}    ${bridge_name}    ${tp_name}    ${remote_ip}=${TOOLS_SYSTEM_IP}
+    [Documentation]    Using the json data body file as a template, a REST config request is made to
+    ...    create a termination-point ${tp_name} on ${bridge_name} for the given ${node_id}. The ports
+    ...    remote-ip defaults to ${TOOLS_SYSTEM_IP}
+    ${body}    OperatingSystem.Get File    ${OVSDB_CONFIG_DIR}/create_port.json
+    ${body}    Replace String    ${body}    192.168.0.21    ${remote_ip}
+    ${body}    Replace String    ${body}    vxlanport    ${tp_name}
+    ${uri}=    Set Variable    ${CONFIG_TOPO_API}/topology/ovsdb:1/node/ovsdb:%2F%2F${node_id}%2Fbridge%2F${bridge_name}
+    ${resp}    RequestsLibrary.Put Request    session    ${uri}/termination-point/${tp_name}/    data=${body}
     Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
 
 Verify OVS Reports Connected
     [Arguments]    ${tools_system}=${TOOLS_SYSTEM_IP}
     [Documentation]    Uses "vsctl show" to check for string "is_connected"
-    ${output}=    Utils.Run Command On Mininet    ${tools_system}    sudo ovs-vsctl show
-    Should Contain    ${output}    is_connected
+    ${output}    Verify Ovs-vsctl Output    show    is_connected
+    [Return]    ${output}
+
+Verify Ovs-vsctl Output
+    [Arguments]    ${vsctl_args}    ${expected_output}    ${ovs_system}=${TOOLS_SYSTEM_IP}    ${should_match}=True
+    [Documentation]    A wrapper keyword to make it easier to validate ovs-vsctl output, and gives an easy
+    ...    way to check this output in a WUKS. The argument ${should_match} can control if the match should
+    ...    exist (True} or not (False) or don't care (anything but True or False). ${should_match} is True by default
+    ${output}=    Utils.Run Command On Mininet    ${ovs_system}    sudo ovs-vsctl ${vsctl_args}
+    Log    ${output}
+    Run Keyword If    "${should_match}"=="True"    Should Contain    ${output}    ${expected_output}
+    Run Keyword If    "${should_match}"=="False"    Should Not Contain    ${output}    ${expected_output}
     [Return]    ${output}
 
 Get OVSDB UUID
index bda8292d7abf759b53cc3c777894e330c30c9f28..4b73bc707e2f7b2be5abfc869107468b48a916f7 100644 (file)
@@ -155,6 +155,34 @@ Bug 4794
     [Teardown]    Run Keywords    Clean OVSDB Test Environment
     ...    AND    Report_Failure_Due_To_Bug    4794
 
+Bug 8280
+    [Documentation]    Any config created for a bridge (e.g. added ports) should be reconciled when a bridge is
+    ...    reconnected. This test case will create two ports via REST and validate that the bridge has those
+    ...    ports. At that point, the bridge will be disconnected from the controller and the 2nd created port
+    ...    will be manually removed. The bridge will be reconnected and the 2nd port should be re-added to the
+    ...    bridge. If not, then bug 8280 will be found and the test case will fail
+    [Tags]    8280
+    [Setup]    Run Keywords    SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
+    ...    AND    Clean OVSDB Test Environment
+    Run Command On Remote System    ${TOOLS_SYSTEM_IP}    sudo ovs-vsctl set-manager tcp:${ODL_SYSTEM_IP}:6640
+    Wait Until Keyword Succeeds    5s    1s    Verify OVS Reports Connected    ${TOOLS_SYSTEM_IP}
+    ${ovs_uuid}=    Get OVSDB UUID    ${TOOLS_SYSTEM_IP}
+    Create Bridge    uuid/${ovs_uuid}    ${BRIDGE}
+    Add Termination Point    uuid%2F${ovs_uuid}    ${BRIDGE}    port1
+    Add Termination Point    uuid%2F${ovs_uuid}    ${BRIDGE}    port2
+    ${config_store_elements}    Create List    ${BRIDGE}    port1    port2
+    Check For Elements At URI    ${CONFIG_TOPO_API}    ${config_store_elements}
+    ${ovs_output}=    Run Command On Remote System    ${TOOLS_SYSTEM_IP}    sudo ovs-vsctl show
+    Log    ${ovs_output}
+    ${ovs_output}=    Run Command On Remote System    ${TOOLS_SYSTEM_IP}    sudo ovs-vsctl del-manager
+    ${ovs_output}=    Run Command On Remote System    ${TOOLS_SYSTEM_IP}    sudo ovs-vsctl del-port ${BRIDGE} port2
+    Verify Ovs-vsctl Output    show    Port "port2"    ${TOOLS_SYSTEM_IP}    False
+    Run Command On Remote System    ${TOOLS_SYSTEM_IP}    sudo ovs-vsctl set-manager tcp:${ODL_SYSTEM_IP}:6640
+    Wait Until Keyword Succeeds    5s    1s    Verify OVS Reports Connected    ${TOOLS_SYSTEM_IP}
+    Check For Elements At URI    ${CONFIG_TOPO_API}    ${config_store_elements}
+    Wait Until Keyword Succeeds    5s    1s    Verify Ovs-vsctl Output    show    Port "port2"
+    [Teardown]    RequestsLibrary.Delete Request    session    ${CONFIG_TOPO_API}/topology/ovsdb:1/node/ovsdb:%2F%2Fuuid%2F${ovs_uuid}%2Fbridge%2F${BRIDGE}
+
 Bug 7160
     [Documentation]    If this bug is reproduced, it's possible that the operational store will be
     ...    stuck with leftover nodes and further system tests could fail. It's advised to run this