*** Settings *** Documentation ODL controller clustering test case using the gherkin syntax. ... ... This test has a workflow similar to the keyword-driven ... examples. The difference is that the keywords use higher ... abstraction level and their arguments are embedded into ... the keyword names. ... ... This kind of _gherkin_ syntax has been made popular by ... [http://cukes.info|Cucumber]. It works well especially when ... tests act as examples that need to be easily understood also ... by the business people. Resource resource.txt Library Selenium2Library Library SSHLibrary Library Collections Library RequestsLibrary Library ../../libraries/Common.py Variables ../../variables/Variables.py Suite Teardown Delete All Sessions *** Test Cases *** The installed flow can be seen in a cluster of two controllers Given C1 a controller in cluster of two controllers And C2 a controller in cluster of two controllers When a flow is installed in a bridge Then C1 see the flow And C2 see the flow *** Keywords *** C1 a controller in cluster of two controllers # Open Connection ${Controller1_IP} prompt=> # Login ${VM USERNAME} ${VM PASSWORD} # Write cd controller-base/opendaylight # Write sudo ./run.sh -Dsupernodes=${Controller1_IP}:${Controller2_IP} -start Open Connection ${HOST} Login ${VM USERNAME} ${VM PASSWORD} ${stdout}= Execute Command sudo ovs-vsctl show Should Contain X Times ${stdout} Controller "tcp:${CONTROLLER1}" 3 C2 a controller in cluster of two controllers # Open Connection ${Controller2_IP} prompt=> # Login ${VM USERNAME} ${VM PASSWORD} # Write cd controller-base/opendaylight # Write sudo ./run.sh -Dsupernodes=${Controller1_IP}:${Controller2_IP} -start Open Connection ${HOST} Login ${VM USERNAME} ${VM PASSWORD} ${stdout}= Execute Command sudo ovs-vsctl show Should Contain X Times ${stdout} Controller "tcp:${CONTROLLER2}" 3 a flow is installed in a bridge ${node} Create Dictionary type OF id ${node_id} ${actions} Create List OUTPUT=1 ${body} Create Dictionary name ${name} installInHw true node ... ${node} priority 995 etherType 0x800 nwDst ... 10.0.0.1/32 actions ${actions} ${headers} Create Dictionary Content-Type application/json Create Session session http://${Controller1_IP}:8080 headers=${headers} auth=${auth} ${resp} Put session ${REST_CONTEXT}/${CONTAINER}/node/OF/${node_id}/staticFlow/${name} data=${body} Should Be Equal As Strings ${resp.status_code} 201 Response status code error ${resp} Get session ${REST_CONTEXT}/${CONTAINER} Should Be Equal As Strings ${resp.status_code} 200 Response status code error ${result} To JSON ${resp.content} ${content} Get From Dictionary ${result} ${key} List Should Contain Value ${content} ${body} C1 see the flow ${headers} Create Dictionary Content-Type application/json Create Session session http://${Controller1_IP}:8080 headers=${headers} auth=${auth} ${resp} Get session ${REST_CONTEXT_2} Should Be Equal As Strings ${resp.status_code} 200 Response status code error ${result} To JSON ${resp.content} ${content} Get From Dictionary ${result} actions List Should Contain Value ${content} OUTPUT=1 C2 see the flow ${headers} Create Dictionary Content-Type application/json Create Session session http://${Controller2_IP}:8080 headers=${headers} auth=${auth} ${resp} Get session ${REST_CONTEXT_2} Should Be Equal As Strings ${resp.status_code} 200 Response status code error ${result} To JSON ${resp.content} ${content} Get From Dictionary ${result} actions List Should Contain Value ${content} OUTPUT=1