X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=csit%2Fsuites%2Fovsdb%2FSouthbound_Domain%2FBug_Validation.robot;h=bda8292d7abf759b53cc3c777894e330c30c9f28;hb=22baca42969206653b7c29225fb165097a5232db;hp=b7c47be75b4e466084cb1705caf4cc3213393362;hpb=bc85299f89d39575d6db3e4a3fc1c4fee902980a;p=integration%2Ftest.git diff --git a/csit/suites/ovsdb/Southbound_Domain/Bug_Validation.robot b/csit/suites/ovsdb/Southbound_Domain/Bug_Validation.robot index b7c47be75b..bda8292d7a 100644 --- a/csit/suites/ovsdb/Southbound_Domain/Bug_Validation.robot +++ b/csit/suites/ovsdb/Southbound_Domain/Bug_Validation.robot @@ -1,27 +1,99 @@ *** Settings *** Documentation Collection of test cases to validate OVSDB projects bugs. -... - https://bugs.opendaylight.org/show_bug.cgi?id=5221 -... - https://bugs.opendaylight.org/show_bug.cgi?id=5177 -... - https://bugs.opendaylight.org/show_bug.cgi?id=4794 +... +... TODO: there seems to be some thoughts around never having one-off bug reproduction +... test cases, but rather they should exist as another test case in some appropriate +... suite. Also it was suggested that using bug ids for test case names was not ideal +... this to-do is written in case it's decided to refactor all of these test cases out +... of this suite and/or to rename the test cases at a later time. Suite Setup OVSDB Connection Manager Suite Setup Suite Teardown OVSDB Connection Manager Suite Teardown -Test Setup Log Testcase Start To Controller Karaf +Test Setup SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing Force Tags Southbound Library OperatingSystem Library String Library RequestsLibrary Variables ../../../variables/Variables.py Resource ../../../libraries/Utils.robot +Resource ../../../libraries/SetupUtils.robot Resource ../../../libraries/WaitForFailure.robot Resource ../../../libraries/OVSDB.robot *** Variables *** ${OVSDB_PORT} 6634 -${BRIDGE} ovsdb-csit-test-5177 +${BRIDGE} ovsdb-csit-bug-validation ${SOUTHBOUND_CONFIG_API} ${CONFIG_TOPO_API}/topology/ovsdb:1/node/ovsdb:%2F%2F${TOOLS_SYSTEM_IP}:${OVSDB_PORT} ${OVSDB_CONFIG_DIR} ${CURDIR}/../../../variables/ovsdb *** Test Cases *** +Bug 7414 Same Endpoint Name + [Documentation] To help validate bug 7414, this test case will send a single rest request to create two + ... ports (one for each of two OVS instances connected). The port names will be the same. + ... If the bug happens, the request would be accepted, but internally the two creations are seen as the + ... same and there is a conflict such that neither ovs will receive the port create. + [Tags] 7414 + [Setup] Run Keywords Clean OVSDB Test Environment ${TOOLS_SYSTEM_IP} + ... AND Clean OVSDB Test Environment ${TOOLS_SYSTEM_2_IP} + # connect two ovs + Run Command On Remote System ${TOOLS_SYSTEM_IP} sudo ovs-vsctl set-manager tcp:${ODL_SYSTEM_IP}:6640 + Run Command On Remote System ${TOOLS_SYSTEM_2_IP} sudo ovs-vsctl set-manager tcp:${ODL_SYSTEM_IP}:6640 + Wait Until Keyword Succeeds 5s 1s Verify OVS Reports Connected ${TOOLS_SYSTEM_IP} + Wait Until Keyword Succeeds 5s 1s Verify OVS Reports Connected ${TOOLS_SYSTEM_2_IP} + # add brtest to both + Run Command On Remote System ${TOOLS_SYSTEM_IP} sudo ovs-vsctl add-br ${BRIDGE} + Run Command On Remote System ${TOOLS_SYSTEM_2_IP} sudo ovs-vsctl add-br ${BRIDGE} + # send one rest request to create a TP endpoint on each ovs (same name) + ${body}= Modify Multi Port Body vtep1 vtep1 + ${resp} RequestsLibrary.Put Request session ${CONFIG_TOPO_API} data=${body} + Log ${resp.content} + # check that each ovs has the correct endpoint + ${ovs_1_output}= Run Command On Remote System ${TOOLS_SYSTEM_IP} sudo ovs-vsctl show + Log ${ovs_1_output} + ${ovs_2_output}= Run Command On Remote System ${TOOLS_SYSTEM_2_IP} sudo ovs-vsctl show + Log ${ovs_2_output} + Should Contain ${ovs_1_output} local_ip="${TOOLS_SYSTEM_IP}", remote_ip="${TOOLS_SYSTEM_2_IP}" + Should Not Contain ${ovs_1_output} local_ip="${TOOLS_SYSTEM_2_IP}", remote_ip="${TOOLS_SYSTEM_IP}" + Should Contain ${ovs_2_output} local_ip="${TOOLS_SYSTEM_2_IP}", remote_ip="${TOOLS_SYSTEM_IP}" + Should Not Contain ${ovs_2_output} local_ip="${TOOLS_SYSTEM_IP}", remote_ip="${TOOLS_SYSTEM_2_IP}" + [Teardown] Run Keywords RequestsLibrary.Delete Request session ${CONFIG_TOPO_API} data=${body} + ... AND Clean OVSDB Test Environment ${TOOLS_SYSTEM_IP} + ... AND Clean OVSDB Test Environment ${TOOLS_SYSTEM_2_IP} + +Bug 7414 Different Endpoint Name + [Documentation] This test case is supplemental to the other test case for bug 7414. Even when the other + ... test case would fail and no ovs would receive a port create because the port names are the same, this + ... case should still be able to create ports on the ovs since the port names are different. However, + ... another symptom of this bug is that multiple creations in the same request would end up creating + ... all the ports on all of the ovs, which is incorrect. Both test cases check for this, but in the + ... case where the other test case were to fail this would also help understand if this symptom is still + ... happening + [Tags] 7414 + [Setup] Clean OVSDB Test Environment + # connect two ovs + Run Command On Remote System ${TOOLS_SYSTEM_IP} sudo ovs-vsctl set-manager tcp:${ODL_SYSTEM_IP}:6640 + Run Command On Remote System ${TOOLS_SYSTEM_2_IP} sudo ovs-vsctl set-manager tcp:${ODL_SYSTEM_IP}:6640 + Wait Until Keyword Succeeds 5s 1s Verify OVS Reports Connected ${TOOLS_SYSTEM_IP} + Wait Until Keyword Succeeds 5s 1s Verify OVS Reports Connected ${TOOLS_SYSTEM_2_IP} + # add brtest to both + Run Command On Remote System ${TOOLS_SYSTEM_IP} sudo ovs-vsctl add-br ${BRIDGE} + Run Command On Remote System ${TOOLS_SYSTEM_2_IP} sudo ovs-vsctl add-br ${BRIDGE} + # send one rest request to create a TP endpoint on each ovs (different name) + ${body}= Modify Multi Port Body vtep1 vtep2 + ${resp} RequestsLibrary.Put Request session ${CONFIG_TOPO_API} data=${body} + Log ${resp.content} + # check that each ovs has the correct endpoint + ${ovs_1_output}= Run Command On Remote System ${TOOLS_SYSTEM_IP} sudo ovs-vsctl show + Log ${ovs_1_output} + ${ovs_2_output}= Run Command On Remote System ${TOOLS_SYSTEM_2_IP} sudo ovs-vsctl show + Log ${ovs_2_output} + Should Contain ${ovs_1_output} local_ip="${TOOLS_SYSTEM_IP}", remote_ip="${TOOLS_SYSTEM_2_IP}" + Should Not Contain ${ovs_1_output} local_ip="${TOOLS_SYSTEM_2_IP}", remote_ip="${TOOLS_SYSTEM_IP}" + Should Contain ${ovs_2_output} local_ip="${TOOLS_SYSTEM_2_IP}", remote_ip="${TOOLS_SYSTEM_IP}" + Should Not Contain ${ovs_2_output} local_ip="${TOOLS_SYSTEM_IP}", remote_ip="${TOOLS_SYSTEM_2_IP}" + [Teardown] Run Keywords RequestsLibrary.Delete Request session ${CONFIG_TOPO_API} data=${body} + ... AND Clean OVSDB Test Environment ${TOOLS_SYSTEM_IP} + ... AND Clean OVSDB Test Environment ${TOOLS_SYSTEM_2_IP} + Bug 5221 [Documentation] In the case that an ovs node is rebooted, or the ovs service is ... otherwise restarted, a controller initiated connection should reconnect when @@ -31,14 +103,17 @@ Bug 5221 Connect Controller To OVSDB Node @{list} Create List ovsdb://${TOOLS_SYSTEM_IP}:${OVSDB_PORT} Wait Until Keyword Succeeds 8s 2s Check For Elements At URI ${OPERATIONAL_TOPO_API}/topology/ovsdb:1 ${list} - Create Bridge ovsdb:%2F%2F${TOOLS_SYSTEM_IP}:${OVSDB_PORT} ${BRIDGE} + Create Bridge ${TOOLS_SYSTEM_IP}:6634 ${BRIDGE} @{list} Create List ovsdb://${TOOLS_SYSTEM_IP}:${OVSDB_PORT}/bridge/${BRIDGE} Wait Until Keyword Succeeds 8s 2s Check For Elements At URI ${OPERATIONAL_TOPO_API}/topology/ovsdb:1 ${list} Run Command On Remote System ${TOOLS_SYSTEM_IP} sudo /usr/share/openvswitch/scripts/ovs-ctl stop Wait Until Keyword Succeeds 8s 2s Check For Elements Not At URI ${OPERATIONAL_TOPO_API}/topology/ovsdb:1 ${list} Run Command On Remote System ${TOOLS_SYSTEM_IP} sudo /usr/share/openvswitch/scripts/ovs-ctl start - Wait Until Keyword Succeeds 8s 2s Check For Elements At URI ${OPERATIONAL_TOPO_API}/topology/ovsdb:1 ${list} + # Depending on when the retry timers are firing, it may take some 10s of seconds to reconnect, so setting to 30 to cover that. + Wait Until Keyword Succeeds 30s 2s Check For Elements At URI ${OPERATIONAL_TOPO_API}/topology/ovsdb:1 ${list} [Teardown] Run Keywords Clean OVSDB Test Environment + ... AND RequestsLibrary.Delete Request session ${CONFIG_TOPO_API}/topology/ovsdb:1/node/ovsdb:%2F%2F${TOOLS_SYSTEM_IP}:6634%2Fbridge%2F${BRIDGE} + ... AND RequestsLibrary.Delete Request session ${CONFIG_TOPO_API}/topology/ovsdb:1/node/ovsdb:%2F%2F${TOOLS_SYSTEM_IP}:6634 ... AND Report_Failure_Due_To_Bug 5221 Bug 5177 @@ -47,7 +122,13 @@ Bug 5177 ... 1) create bridge in config using the UUID determined in Suite Setup ... 2) connect ovs (vsctl set-manager) ... 3) Fail if node is not discovered in Operational Store - ${node} Set Variable ovsdb:%2F%2Fuuid%2F${ovsdb_uuid} + 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 + ${ovsdb_uuid}= Get OVSDB UUID ${TOOLS_SYSTEM_IP} + Run Command On Remote System ${TOOLS_SYSTEM_IP} sudo ovs-vsctl del-manager + # Suite teardown wants this ${ovsdb_uuid} variable for it's best effort cleanup, so making it visible at suite level. + Set Suite Variable ${ovsdb_uuid} + ${node} Set Variable uuid/${ovsdb_uuid} Create Bridge ${node} ${BRIDGE} ${resp} RequestsLibrary.Get Request session ${CONFIG_TOPO_API} Log ${resp.content} @@ -64,7 +145,7 @@ Bug 4794 ... always be executed immediately after. ... 1) delete bridge in config ... 2) Poll and Fail if exception is seen in karaf.log - ${node} Set Variable ovsdb://uuid/${ovsdb_uuid} + ${node} Set Variable ovsdb:%2F%2Fuuid%2F${ovsdb_uuid} ${resp} RequestsLibrary.Delete Request session ${CONFIG_TOPO_API}/topology/ovsdb:1/node/${node}%2Fbridge%2F${BRIDGE} Should Be Equal As Strings ${resp.status_code} 200 Response status code error Run Command On Remote System ${TOOLS_SYSTEM_IP} sudo ovs-vsctl del-manager @@ -74,15 +155,55 @@ Bug 4794 [Teardown] Run Keywords Clean OVSDB Test Environment ... AND Report_Failure_Due_To_Bug 4794 +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 + ... test last if possible. See the bug description for high level steps to reproduce + ... https://bugs.opendaylight.org/show_bug.cgi?id=7160#c0 + [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 ptcp:${OVSDB_PORT} + Connect Controller To OVSDB Node + ${QOS}= Set Variable QOS-1 + ${QUEUE}= Set Variable QUEUE-1 + ${sample} OperatingSystem.Get File ${OVSDB_CONFIG_DIR}/create_node.json + ${sample1} Replace String ${sample} 127.0.0.1 ${TOOLS_SYSTEM_IP} + ${body} Replace String ${sample1} 61644 ${OVSDB_PORT} + ${resp} RequestsLibrary.Post Request session ${CONFIG_TOPO_API}/topology/ovsdb:1 data=${body} + Log Config And Operational Topology + ${body} OperatingSystem.Get File ${OVSDB_CONFIG_DIR}/create_qos.json + ${resp} RequestsLibrary.Put Request session ${CONFIG_TOPO_API}/topology/ovsdb:1/node/ovsdb:HOST1/ovsdb:qos-entries/${QOS}/ data=${body} + Log Config And Operational Topology + ${body} OperatingSystem.Get File ${OVSDB_CONFIG_DIR}/create_queue.json + ${resp} RequestsLibrary.Put Request session ${CONFIG_TOPO_API}/topology/ovsdb:1/node/ovsdb:HOST1/ovsdb:queues/${QUEUE}/ data=${body} + Log Config And Operational Topology + ${body} OperatingSystem.Get File ${OVSDB_CONFIG_DIR}/bug_7160/create_qoslinkedqueue.json + ${resp} RequestsLibrary.Put Request session ${CONFIG_TOPO_API}/topology/ovsdb:1/node/ovsdb:HOST1 data=${body} + Log Config And Operational Topology + ${resp} RequestsLibrary.Delete Request session ${CONFIG_TOPO_API}/topology/ovsdb:1/node/ovsdb:HOST1/ovsdb:qos-entries/${QOS}/queue-list/0/ + Log Config And Operational Topology + ${resp} RequestsLibrary.Delete Request session ${CONFIG_TOPO_API}/topology/ovsdb:1/node/ovsdb:HOST1/ovsdb:qos-entries/${QOS}/ + Log Config And Operational Topology + ${resp} RequestsLibrary.Delete Request session ${CONFIG_TOPO_API}/topology/ovsdb:1/node/ovsdb:HOST1/ovsdb:queues/${QUEUE}/ + Log Config And Operational Topology + ${resp} RequestsLibrary.Delete Request session ${CONFIG_TOPO_API}/topology/ovsdb:1/node/ovsdb:HOST1 + Log Config And Operational Topology + Run Command On Remote System ${TOOLS_SYSTEM_IP} sudo ovs-vsctl del-manager + ${node} Set Variable ovsdb:%2F%2F${TOOLS_SYSTEM_IP}:${OVSDB_PORT} + RequestsLibrary.Delete Request session ${CONFIG_TOPO_API}/topology/ovsdb:1/node/${node} + Log Config And Operational Topology + Wait Until Keyword Succeeds 5s 1s Config and Operational Topology Should Be Empty + [Teardown] Run Keywords Clean OVSDB Test Environment + ... AND Report_Failure_Due_To_Bug 7160 + *** Keywords *** OVSDB Connection Manager Suite Setup + SetupUtils.Setup_Utils_For_Setup_And_Teardown Open Controller Karaf Console On Background Create Session session http://${ODL_SYSTEM_IP}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS} Clean OVSDB Test Environment ${TOOLS_SYSTEM_IP} 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 - ${ovsdb_uuid}= Get OVSDB UUID ${TOOLS_SYSTEM_IP} - Set Suite Variable ${ovsdb_uuid} Run Command On Remote System ${TOOLS_SYSTEM_IP} sudo ovs-vsctl del-manager OVSDB Connection Manager Suite Teardown @@ -103,19 +224,20 @@ OVSDB Connection Manager Suite Teardown # doing all this work each time. Create Bridge - [Arguments] ${node} ${bridge} + [Arguments] ${node_string} ${bridge} [Documentation] This will create bridge on the specified OVSDB node. ${body} OperatingSystem.Get File ${OVSDB_CONFIG_DIR}/create_bridge.json - ${body} Replace String ${body} ovsdb://127.0.0.1:61644 ovsdb://209.132.179.50:6634 - ${body} Replace String ${body} tcp:127.0.0.1:6633 tcp:${ODL_SYSTEM_IP}:6640 + ${body} Replace String ${body} ovsdb://127.0.0.1:61644 ovsdb://${node_string} + ${body} Replace String ${body} tcp:127.0.0.1:6633 tcp:${ODL_SYSTEM_IP}:6633 ${body} Replace String ${body} 127.0.0.1 ${TOOLS_SYSTEM_IP} ${body} Replace String ${body} br01 ${bridge} ${body} Replace String ${body} 61644 ${OVSDB_PORT} - ${uri}= Set Variable ${CONFIG_TOPO_API}/topology/ovsdb:1/node/${node}%2Fbridge%2F${bridge} + ${node_string} Replace String ${node_string} / %2F + ${uri}= Set Variable ${CONFIG_TOPO_API}/topology/ovsdb:1/node/ovsdb:%2F%2F${node_string}%2Fbridge%2F${bridge} Log URL is ${uri} Log data: ${body} ${resp} RequestsLibrary.Put Request session ${uri} data=${body} - Should Be Equal As Strings ${resp.status_code} 200 + Should Contain ${ALLOWED_STATUS_CODES} ${resp.status_code} Connect Controller To OVSDB Node [Documentation] Initiate the connection to OVSDB node from controller @@ -125,6 +247,37 @@ Connect Controller To OVSDB Node Log data: ${body} ${resp} RequestsLibrary.Put Request session ${CONFIG_TOPO_API}/topology/ovsdb:1/node/ovsdb:%2F%2F${TOOLS_SYSTEM_IP}:${OVSDB_PORT} data=${body} Log ${resp.content} - Should Be Equal As Strings ${resp.status_code} 200 - Wait Until Keyword Succeeds 3s 1s Verify OVS Reports Connected + Should Contain ${ALLOWED_STATUS_CODES} ${resp.status_code} + Wait Until Keyword Succeeds 5s 1s Verify OVS Reports Connected + +Log Config And Operational Topology + [Documentation] For debugging purposes, this will log both config and operational topo data stores + ${resp} RequestsLibrary.Get Request session ${CONFIG_TOPO_API} + Log ${resp.content} + ${resp} RequestsLibrary.Get Request session ${OPERATIONAL_TOPO_API} + Log ${resp.content} + +Config and Operational Topology Should Be Empty + [Documentation] This will check that only the expected output is there for both operational and config + ... topology data stores. Empty probably means that only ovsdb:1 is there. + ${config_resp} RequestsLibrary.Get Request session ${CONFIG_TOPO_API} + ${operational_resp} RequestsLibrary.Get Request session ${OPERATIONAL_TOPO_API} + Should Contain ${config_resp.content} {"topology-id":"ovsdb:1"} + Should Contain ${operational_resp.content} {"topology-id":"ovsdb:1"} +Modify Multi Port Body + [Arguments] ${ovs_1_port_name} ${ovs_2_port_name} + [Documentation] these steps are needed multiple times in bug reproductions above. + ${body} OperatingSystem.Get File ${OVSDB_CONFIG_DIR}/bug_7414/create_multiple_ports.json + ${ovs_1_ovsdb_uuid}= Get OVSDB UUID ${TOOLS_SYSTEM_IP} + ${ovs_2_ovsdb_uuid}= Get OVSDB UUID ${TOOLS_SYSTEM_2_IP} + ${body} Replace String ${body} OVS_1_UUID ${ovs_1_ovsdb_uuid} + ${body} Replace String ${body} OVS_2_UUID ${ovs_2_ovsdb_uuid} + ${body} Replace String ${body} OVS_1_BRIDGE_NAME ${BRIDGE} + ${body} Replace String ${body} OVS_2_BRIDGE_NAME ${BRIDGE} + ${body} Replace String ${body} OVS_1_IP ${TOOLS_SYSTEM_IP} + ${body} Replace String ${body} OVS_2_IP ${TOOLS_SYSTEM_2_IP} + ${body} Replace String ${body} OVS_1_PORT_NAME ${ovs_1_port_name} + ${body} Replace String ${body} OVS_2_PORT_NAME ${ovs_2_port_name} + Log ${body} + [Return] ${body}