*** Settings ***
-Documentation Collection of test cases to validate OVSDB projects bugs.
+Documentation Collection of test cases to validate OVSDB projects bugs.
...
-... 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 Suite Setup
-Suite Teardown Suite Teardown
-Test Setup Test Setup
-Test Teardown Test Teardown
-Force Tags Southbound
-Library OperatingSystem
-Library RequestsLibrary
-Library String
-Resource ../../../libraries/KarafKeywords.robot
-Resource ../../../libraries/OVSDB.robot
-Resource ../../../libraries/SetupUtils.robot
-Resource ../../../libraries/Utils.robot
-Resource ../../../libraries/WaitForFailure.robot
-Resource ../../../variables/Variables.robot
+... 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.
+
+Library OperatingSystem
+Library RequestsLibrary
+Library String
+Resource ../../../libraries/KarafKeywords.robot
+Resource ../../../libraries/OVSDB.robot
+Resource ../../../libraries/SetupUtils.robot
+Resource ../../../libraries/Utils.robot
+Resource ../../../libraries/WaitForFailure.robot
+Resource ../../../variables/Variables.robot
+Resource ../../../variables/ovsdb/Variables.robot
+
+Suite Setup Suite Setup
+Suite Teardown Suite Teardown
+Test Setup Test Setup
+Test Teardown Test Teardown
+
+Force Tags southbound
+
*** Variables ***
-${BRIDGE} ovsbug_br
-${OVSDB_UUID} ${EMPTY}
-${OVSDB_UUID2} ${EMPTY}
+${BRIDGE} ovsbug_br
+${OVSDB_UUID} ${EMPTY}
+${OVSDB_UUID2} ${EMPTY}
+
*** Test Cases ***
Bug 7414 Same Endpoint Name
${bridge} = BuiltIn.Set Variable ovsbug_br_7414
# connect two ovs
Utils.Run Command On Mininet ${TOOLS_SYSTEM_IP} sudo ovs-vsctl set-manager tcp:${ODL_SYSTEM_IP}:${OVSDBPORT}
- Utils.Run Command On Mininet ${TOOLS_SYSTEM_2_IP} sudo ovs-vsctl set-manager tcp:${ODL_SYSTEM_IP}:${OVSDBPORT}
+ Utils.Run Command On Mininet
+ ... ${TOOLS_SYSTEM_2_IP}
+ ... sudo ovs-vsctl set-manager tcp:${ODL_SYSTEM_IP}:${OVSDBPORT}
BuiltIn.Wait Until Keyword Succeeds 5s 1s OVSDB.Verify OVS Reports Connected ${TOOLS_SYSTEM_IP}
BuiltIn.Wait Until Keyword Succeeds 5s 1s OVSDB.Verify OVS Reports Connected ${TOOLS_SYSTEM_2_IP}
# add brtest to both
# send one rest request to create a TP endpoint on each ovs (same name)
${body} = OVSDB.Modify Multi Port Body vtep1 vtep1 ${bridge}
# check that each ovs has the correct endpoint
- BuiltIn.Wait Until Keyword Succeeds 60s 10s Verify TEP Creation on OVS ${TOOLS_SYSTEM_IP} ${TOOLS_SYSTEM_2_IP}
- BuiltIn.Wait Until Keyword Succeeds 60s 10s Verify TEP Creation on OVS ${TOOLS_SYSTEM_2_IP} ${TOOLS_SYSTEM_IP}
+ BuiltIn.Wait Until Keyword Succeeds
+ ... 60s
+ ... 10s
+ ... Verify TEP Creation on OVS
+ ... ${TOOLS_SYSTEM_IP}
+ ... ${TOOLS_SYSTEM_2_IP}
+ BuiltIn.Wait Until Keyword Succeeds
+ ... 60s
+ ... 10s
+ ... Verify TEP Creation on OVS
+ ... ${TOOLS_SYSTEM_2_IP}
+ ... ${TOOLS_SYSTEM_IP}
[Teardown] BuiltIn.Run Keywords Test Teardown
- ... AND RequestsLibrary.Delete Request session ${CONFIG_TOPO_API} data=${body}
+ ... AND RequestsLibrary.DELETE On Session session url=${RFC8040_TOPO_API} data=${body} expected_status=anything
Bug 7414 Different Endpoint Name
[Documentation] This test case is supplemental to the other test case for bug 7414. Even when the other
${bridge} = BuiltIn.Set Variable ovsbug_br_7414
# connect two ovs
Utils.Run Command On Mininet ${TOOLS_SYSTEM_IP} sudo ovs-vsctl set-manager tcp:${ODL_SYSTEM_IP}:${OVSDBPORT}
- Utils.Run Command On Mininet ${TOOLS_SYSTEM_2_IP} sudo ovs-vsctl set-manager tcp:${ODL_SYSTEM_IP}:${OVSDBPORT}
+ Utils.Run Command On Mininet
+ ... ${TOOLS_SYSTEM_2_IP}
+ ... sudo ovs-vsctl set-manager tcp:${ODL_SYSTEM_IP}:${OVSDBPORT}
BuiltIn.Wait Until Keyword Succeeds 5s 1s OVSDB.Verify OVS Reports Connected ${TOOLS_SYSTEM_IP}
BuiltIn.Wait Until Keyword Succeeds 5s 1s OVSDB.Verify OVS Reports Connected ${TOOLS_SYSTEM_2_IP}
# add brtest to both
# send one rest request to create a TP endpoint on each ovs (different name)
${body} = OVSDB.Modify Multi Port Body vtep1 vtep2 ${bridge}
# check that each ovs has the correct endpoint
- BuiltIn.Wait Until Keyword Succeeds 60s 10s Verify TEP Creation on OVS ${TOOLS_SYSTEM_IP} ${TOOLS_SYSTEM_2_IP}
- BuiltIn.Wait Until Keyword Succeeds 60s 10s Verify TEP Creation on OVS ${TOOLS_SYSTEM_2_IP} ${TOOLS_SYSTEM_IP}
+ BuiltIn.Wait Until Keyword Succeeds
+ ... 60s
+ ... 10s
+ ... Verify TEP Creation on OVS
+ ... ${TOOLS_SYSTEM_IP}
+ ... ${TOOLS_SYSTEM_2_IP}
+ BuiltIn.Wait Until Keyword Succeeds
+ ... 60s
+ ... 10s
+ ... Verify TEP Creation on OVS
+ ... ${TOOLS_SYSTEM_2_IP}
+ ... ${TOOLS_SYSTEM_IP}
[Teardown] BuiltIn.Run Keywords Test Teardown
- ... AND RequestsLibrary.Delete Request session ${CONFIG_TOPO_API} data=${body}
+ ... AND RequestsLibrary.DELETE On Session session url=${RFC8040_TOPO_API} data=${body} expected_status=anything
Bug 5221
[Documentation] In the case that an ovs node is rebooted, or the ovs service is
OVSDB.Connect To OVSDB Node ${TOOLS_SYSTEM_IP}
BuiltIn.Wait Until Keyword Succeeds 5s 1s OVSDB.Verify OVS Reports Connected
@{list} = BuiltIn.Create List ovsdb://${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT}
- BuiltIn.Wait Until Keyword Succeeds 8s 2s Utils.Check For Elements At URI ${OPERATIONAL_TOPO_API}/topology/ovsdb:1 ${list} pretty_print_json=True
- OVSDB.Add Bridge To Ovsdb Node ${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT} ${TOOLS_SYSTEM_IP} ${bridge} 0000000000005221
+ BuiltIn.Wait Until Keyword Succeeds
+ ... 8s
+ ... 2s
+ ... Utils.Check For Elements At URI
+ ... ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}
+ ... ${list}
+ ... pretty_print_json=True
+ OVSDB.Add Bridge To Ovsdb Node
+ ... ${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT}
+ ... ${TOOLS_SYSTEM_IP}
+ ... ${bridge}
+ ... 0000000000005221
@{list} = BuiltIn.Create List ovsdb://${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT}/bridge/${bridge}
- BuiltIn.Wait Until Keyword Succeeds 8s 2s Utils.Check For Elements At URI ${OPERATIONAL_TOPO_API}/topology/ovsdb:1 ${list} pretty_print_json=True
+ BuiltIn.Wait Until Keyword Succeeds
+ ... 8s
+ ... 2s
+ ... Utils.Check For Elements At URI
+ ... ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}
+ ... ${list}
+ ... pretty_print_json=True
Utils.Run Command On Mininet ${TOOLS_SYSTEM_IP} sudo /usr/share/openvswitch/scripts/ovs-ctl stop
- BuiltIn.Wait Until Keyword Succeeds 8s 2s Utils.Check For Elements Not At URI ${OPERATIONAL_TOPO_API}/topology/ovsdb:1 ${list} pretty_print_json=True
+ BuiltIn.Wait Until Keyword Succeeds
+ ... 8s
+ ... 2s
+ ... Utils.Check For Elements Not At URI
+ ... ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}
+ ... ${list}
+ ... pretty_print_json=True
Utils.Run Command On Mininet ${TOOLS_SYSTEM_IP} sudo /usr/share/openvswitch/scripts/ovs-ctl start
# Depending on when the retry timers are firing, it may take some 10s of seconds to reconnect, so setting to 30 to cover that.
- BuiltIn.Wait Until Keyword Succeeds 30s 2s Utils.Check For Elements At URI ${OPERATIONAL_TOPO_API}/topology/ovsdb:1 ${list} pretty_print_json=True
+ BuiltIn.Wait Until Keyword Succeeds
+ ... 30s
+ ... 2s
+ ... Utils.Check For Elements At URI
+ ... ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}
+ ... ${list}
+ ... pretty_print_json=True
[Teardown] BuiltIn.Run Keywords Test Teardown
- ... 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 RequestsLibrary.DELETE On Session session url=${RFC8040_SOUTHBOUND_NODE_TOOLS_API}%2Fbridge%2F${bridge} expected_status=anything
+ ... AND RequestsLibrary.DELETE On Session session url=${RFC8040_SOUTHBOUND_NODE_TOOLS_API} expected_status=anything
Bug 5177
[Documentation] This test case will recreate the bug using the same basic steps as
BuiltIn.Set Suite Variable ${OVSDB_UUID}
${node} = BuiltIn.Set Variable uuid/${OVSDB_UUID}
OVSDB.Add Bridge To Ovsdb Node ${node} ${TOOLS_SYSTEM_IP} ${BRIDGE} 0000000000005177
- ${resp} = RequestsLibrary.Get Request session ${CONFIG_TOPO_API}
- OVSDB.Log Request ${resp.text}
- BuiltIn.Should Be Equal As Strings ${resp.status_code} 200
+ ${resp} = RequestsLibrary.GET On Session session url=${RFC8040_CONFIG_TOPO_API} expected_status=200
+ Utils.Log Content ${resp.text}
BuiltIn.Should Contain ${resp.text} ${node}/bridge/${BRIDGE}
Utils.Run Command On Mininet ${TOOLS_SYSTEM_IP} sudo ovs-vsctl set-manager tcp:${ODL_SYSTEM_IP}:${OVSDBPORT}
@{list} = BuiltIn.Create List ${BRIDGE}
- BuiltIn.Wait Until Keyword Succeeds 8s 2s Utils.Check For Elements At URI ${OPERATIONAL_TOPO_API}/topology/ovsdb:1 ${list} pretty_print_json=True
+ BuiltIn.Wait Until Keyword Succeeds
+ ... 8s
+ ... 2s
+ ... Utils.Check For Elements At URI
+ ... ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}
+ ... ${list}
+ ... pretty_print_json=True
# Do not cleanup as the next test requires the steps done in this test
[Teardown] BuiltIn.Run Keywords Utils.Report_Failure_Due_To_Bug 5177
... AND OVSDB.Log Config And Operational Topology
Delete Bridge From Ovsdb Node ${node_id} ${BRIDGE}
Utils.Run Command On Mininet ${TOOLS_SYSTEM_IP} sudo ovs-vsctl del-manager
# If the exception is seen in karaf.log within 10s, the following line will FAIL, which is the point.
- Verify_Keyword_Does_Not_Fail_Within_Timeout 10s 1s Utils.Check Karaf Log File Does Not Have Messages ${ODL_SYSTEM_IP} Shard.*shard-topology-operational An exception occurred while preCommitting transaction
+ Verify_Keyword_Does_Not_Fail_Within_Timeout
+ ... 10s
+ ... 1s
+ ... Utils.Check Karaf Log File Does Not Have Messages
+ ... ${ODL_SYSTEM_IP}
+ ... Shard.*shard-topology-operational An exception occurred while preCommitting transaction
# TODO: Bug 5178
[Teardown] BuiltIn.Run Keywords Test Teardown
- ... AND RequestsLibrary.Delete Request session ${SOUTHBOUND_CONFIG_API}${node_id}%2Fbridge%2F${BRIDGE}
- ... AND RequestsLibrary.Delete Request session ${SOUTHBOUND_CONFIG_API}${node_id}
+ ... AND RequestsLibrary.DELETE On Session session url=${RFC8040_SOUTHBOUND_NODE_API}${node_id}%2Fbridge%2F${BRIDGE} expected_status=anything
+ ... AND RequestsLibrary.DELETE On Session session url=${RFC8040_SOUTHBOUND_NODE_API}${node_id} expected_status=anything
Bug 8280
[Documentation] Any config created for a bridge (e.g. added ports) should be reconciled when a bridge is
OVSDB.Add Termination Point uuid/${OVSDB_UUID2} ${BRIDGE} port1
OVSDB.Add Termination Point uuid/${OVSDB_UUID2} ${BRIDGE} port2
${config_store_elements} = BuiltIn.Create List ${BRIDGE} port1 port2
- Utils.Check For Elements At URI ${CONFIG_TOPO_API} ${config_store_elements} pretty_print_json=True
+ Utils.Check For Elements At URI ${RFC8040_CONFIG_TOPO_API} ${config_store_elements} pretty_print_json=True
${ovs_output} = Utils.Run Command On Mininet ${TOOLS_SYSTEM_IP} sudo ovs-vsctl show
BuiltIn.Log ${ovs_output}
${ovs_output} = Utils.Run Command On Mininet ${TOOLS_SYSTEM_IP} sudo ovs-vsctl del-manager
OVSDB.Verify Ovs-vsctl Output show Port "port2" ${TOOLS_SYSTEM_IP} False
Utils.Run Command On Mininet ${TOOLS_SYSTEM_IP} sudo ovs-vsctl set-manager tcp:${ODL_SYSTEM_IP}:${OVSDBPORT}
BuiltIn.Wait Until Keyword Succeeds 5s 1s OVSDB.Verify OVS Reports Connected ${TOOLS_SYSTEM_IP}
- Utils.Check For Elements At URI ${CONFIG_TOPO_API} ${config_store_elements} pretty_print_json=True
+ Utils.Check For Elements At URI ${RFC8040_CONFIG_TOPO_API} ${config_store_elements} pretty_print_json=True
BuiltIn.Wait Until Keyword Succeeds 5s 1s Verify Ovs-vsctl Output show Port "port2"
[Teardown] BuiltIn.Run Keywords Test Teardown
- ... AND RequestsLibrary.Delete Request session ${SOUTHBOUND_CONFIG_API}uuid%2F${OVSDB_UUID2}%2Fbridge%2F${BRIDGE}
- ... AND RequestsLibrary.Delete Request session ${SOUTHBOUND_CONFIG_API}uuid%2F${OVSDB_UUID2}
+ ... AND RequestsLibrary.DELETE On Session session url=${RFC8040_SOUTHBOUND_NODE_API}uuid%2F${OVSDB_UUID2}%2Fbridge%2F${BRIDGE} expected_status=anything
+ ... AND RequestsLibrary.DELETE On Session session url=${RFC8040_SOUTHBOUND_NODE_API}uuid%2F${OVSDB_UUID2} expected_status=anything
Bug 7160
[Documentation] If this bug is reproduced, it's possible that the operational store will be
OVSDB.Log Config And Operational Topology
OVSDB.Create Qos Linked Queue
OVSDB.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/
+ RequestsLibrary.DELETE On Session
+ ... session
+ ... url=${RFC8040_SOUTHBOUND_NODE_HOST1_API}/ovsdb:qos-entries=${qos}/queue-list=0
OVSDB.Log Config And Operational Topology
- ${resp} RequestsLibrary.Delete Request session ${CONFIG_TOPO_API}/topology/ovsdb:1/node/ovsdb:HOST1/ovsdb:qos-entries/${qos}/
+ RequestsLibrary.DELETE On Session
+ ... session
+ ... url=${RFC8040_SOUTHBOUND_NODE_HOST1_API}/ovsdb:qos-entries=${qos}
OVSDB.Log Config And Operational Topology
- ${resp} RequestsLibrary.Delete Request session ${CONFIG_TOPO_API}/topology/ovsdb:1/node/ovsdb:HOST1/ovsdb:queues/${queue}/
+ RequestsLibrary.DELETE On Session
+ ... session
+ ... url=${RFC8040_SOUTHBOUND_NODE_HOST1_API}/ovsdb:queues=${queue}
OVSDB.Log Config And Operational Topology
- ${resp} RequestsLibrary.Delete Request session ${CONFIG_TOPO_API}/topology/ovsdb:1/node/ovsdb:HOST1
+ RequestsLibrary.DELETE On Session
+ ... session
+ ... url=${RFC8040_SOUTHBOUND_NODE_HOST1_API}
OVSDB.Log Config And Operational Topology
Utils.Run Command On Mininet ${TOOLS_SYSTEM_IP} sudo ovs-vsctl del-manager
- ${node} BuiltIn.Set Variable ovsdb:%2F%2F${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT}
- RequestsLibrary.Delete Request session ${CONFIG_TOPO_API}/topology/ovsdb:1/node/${node}
+ RequestsLibrary.DELETE On Session
+ ... session
+ ... url=${RFC8040_SOUTHBOUND_NODE_TOOLS_API}
OVSDB.Log Config And Operational Topology
BuiltIn.Wait Until Keyword Succeeds 5s 1s OVSDB.Config and Operational Topology Should Be Empty
+
*** Keywords ***
Suite Setup
SetupUtils.Setup_Utils_For_Setup_And_Teardown
KarafKeywords.Open Controller Karaf Console On Background
- RequestsLibrary.Create Session session http://${ODL_SYSTEM_IP}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS}
+ RequestsLibrary.Create Session
+ ... session
+ ... http://${ODL_SYSTEM_IP}:${RESTCONFPORT}
+ ... auth=${AUTH}
+ ... headers=${HEADERS}
Clean All Ovs Nodes
Utils.Run Command On Mininet ${TOOLS_SYSTEM_IP} sudo ovs-vsctl set-manager tcp:${ODL_SYSTEM_IP}:${OVSDBPORT}
BuiltIn.Wait Until Keyword Succeeds 5s 1s OVSDB.Verify OVS Reports Connected
[Documentation] Cleans up test environment, close existing sessions.
Clean All Ovs Nodes
# Best effort to clean config store, by deleting all the types of nodes that are used in this suite
- ${node} = BuiltIn.Set Variable ovsdb:%2F%2Fuuid%2F${OVSDB_UUID}
- RequestsLibrary.Delete Request session ${CONFIG_TOPO_API}/topology/ovsdb:1/node/${node}%2Fbridge%2F${BRIDGE}
- RequestsLibrary.Delete Request session ${CONFIG_TOPO_API}/topology/ovsdb:1/node/${node}
- ${node} = BuiltIn.Set Variable ovsdb:%2F%2Fuuid%2F${OVSDB_UUID2}
- RequestsLibrary.Delete Request session ${CONFIG_TOPO_API}/topology/ovsdb:1/node/${node}%2Fbridge%2F${BRIDGE}
- RequestsLibrary.Delete Request session ${CONFIG_TOPO_API}/topology/ovsdb:1/node/${node}
- ${node} = BuiltIn.Set Variable ovsdb:%2F%2F${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT}
- RequestsLibrary.Delete Request session ${CONFIG_TOPO_API}/topology/ovsdb:1/node/${node}%2Fbridge%2F${BRIDGE}
- RequestsLibrary.Delete Request session ${CONFIG_TOPO_API}/topology/ovsdb:1/node/${node}
+ RequestsLibrary.DELETE On Session
+ ... session
+ ... url=${RFC8040_SOUTHBOUND_NODE_API}uuid%2F${OVSDB_UUID}%2Fbridge%2F${BRIDGE}
+ ... expected_status=anything
+ RequestsLibrary.DELETE On Session
+ ... session
+ ... url=${RFC8040_SOUTHBOUND_NODE_API}uuid%2F${OVSDB_UUID}
+ ... expected_status=anything
+ RequestsLibrary.DELETE On Session
+ ... session
+ ... url=${RFC8040_SOUTHBOUND_NODE_API}uuid%2F${OVSDB_UUID2}%2Fbridge%2F${BRIDGE}
+ ... expected_status=anything
+ RequestsLibrary.DELETE On Session
+ ... session
+ ... url=${RFC8040_SOUTHBOUND_NODE_API}uuid%2F${OVSDB_UUID2}
+ ... expected_status=anything
+ RequestsLibrary.DELETE On Session
+ ... session
+ ... url=${RFC8040_SOUTHBOUND_NODE_TOOLS_API}%2Fbridge%2F${BRIDGE}
+ ... expected_status=anything
+ RequestsLibrary.DELETE On Session
+ ... session
+ ... url=${RFC8040_SOUTHBOUND_NODE_TOOLS_API}
+ ... expected_status=anything
OVSDB.Log Config And Operational Topology
Delete All Sessions