+++ /dev/null
-*** 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
-
-
-
-The installed flow remains in the bridge after the controller failure
- Given C1 a controller in cluster of two controllers
- And C2 a controller in cluster of two controllers
- And both controllers get provisioned on all OVS bridges
- And a flow is installed in a bridge
- And C1 see the flow
- And C2 see the flow
- And C1 goes down
- When C1 recovers
- Then C1 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
-
-
-both controllers get provisioned on all OVS bridges
- Open Connection ${HOST}
- Login ${VM USERNAME} ${VM PASSWORD}
-# ${stdout1}= Execute Command sudo ovs-vsctl set-controller s1 tcp:${CONTROLLER1} tcp:${CONTROLLER2}
-# ${stdout2}= Execute Command sudo ovs-vsctl set-controller s2 tcp:${CONTROLLER1} tcp:${CONTROLLER2}
-# ${stdout2}= Execute Command sudo ovs-vsctl set-controller s3 tcp:${CONTROLLER1} tcp:${CONTROLLER2}
- ${stdout}= Execute Command sudo ovs-vsctl show
- Should Contain X Times ${stdout} Controller "tcp:${CONTROLLER1}" 3
- Should Contain X Times ${stdout} Controller "tcp:${CONTROLLER2}" 3
- Should Contain ${stdout} Bridge "s1"
- Should Contain ${stdout} Bridge "s2"
- Should Contain ${stdout} Bridge "s3"
- Should Contain X Times ${stdout} is_connected: true 6
- ${stdout}= Execute Command sudo ovs-vsctl get-controller "s1"
- Should Contain ${stdout} ${CONTROLLER1}
- Should Contain ${stdout} ${CONTROLLER2}
- ${stdout}= Execute Command sudo ovs-vsctl get-controller "s2"
- Should Contain ${stdout} ${CONTROLLER1}
- Should Contain ${stdout} ${CONTROLLER2}
- ${stdout}= Execute Command sudo ovs-vsctl get-controller "s3"
- Should Contain ${stdout} ${CONTROLLER1}
- Should Contain ${stdout} ${CONTROLLER2}
-
-
-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 999 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 goes down
- Open Connection ${Controller1_IP} prompt=>
- Login ${VM USERNAME} ${VM PASSWORD}
- Write cd controller-base/opendaylight
- Write sudo ./run.sh -stop
- Set Selenium Speed ${DELAY2}
- Open Browser ${LOGIN URL1} ${BROWSER}
- Maximize Browser Window
- Set Selenium Speed ${DELAY}
- Location Should Be ${ERROR URL1}
- Title Should Be Problem loading page
- [Teardown] Close Browser
-
-
-C1 recovers
- 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
-
-
-
-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
-
-