*** Settings *** Documentation Test suite for OpenFlow group Library SSHLibrary Library Collections Library OperatingSystem Library RequestsLibrary Library ../../../libraries/Common.py Variables ../../../variables/Variables.py Resource ../../../variables/openflowplugin/Variables.robot Resource ../../../libraries/Utils.robot Suite Setup Create Session session http://${ODL_SYSTEM_IP}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML} Suite Teardown Delete All Sessions *** Variables *** ${REST_CONTEXT} ${RFC8040_NODES_API}/node=openflow%3A1 ${GROUP} ${CURDIR}/../../../variables/xmls/g4.xml ${FLOW} ${CURDIR}/../../../variables/xmls/f50.xml ${GROUP_NAME} Foo ${FLOW_NAME} forward *** Test Cases *** Get list of nodes [Documentation] Get the inventory to make sure openflow:1 comes up ${node_list} Create List openflow:1 Wait Until Keyword Succeeds ... 90s ... 1s ... Check For Elements At URI ... ${REST_CONTEXT}?${RFC8040_OPERATIONAL_CONTENT} ... ${node_list} Add a group [Documentation] Add a group using RESTCONF [Tags] push ${body} OperatingSystem.Get File ${GROUP} Set Suite Variable ${body} ${resp} RequestsLibrary.PUT On Session ... session ... url=${REST_CONTEXT}/flow-node-inventory:group=1 ... headers=${HEADERS_XML} ... data=${body} Log ${resp.content} Verify after adding group config [Documentation] Get the group stat in config ${resp} RequestsLibrary.GET On Session ... session ... ${REST_CONTEXT}/flow-node-inventory:group=1?${RFC8040_CONFIG_CONTENT} ... expected_status=200 Log ${resp.content} Should Contain ${resp.content} ${GROUP_NAME} Verify after adding group operational [Documentation] Get the group stat in operational ${elements} Create List group-statistics ref-count packet-count byte-count buckets ... weight group-select Wait Until Keyword Succeeds ... 6s ... 2s ... Check For Elements At URI ... ${REST_CONTEXT}/flow-node-inventory:group=1?${RFC8040_OPERATIONAL_CONTENT} ... ${elements} Add a flow that includes a group [Documentation] Push a flow through RESTCONF [Tags] push ${body} OperatingSystem.Get File ${FLOW} Set Suite Variable ${body} ${resp} RequestsLibrary.PUT On Session ... session ... url=${REST_CONTEXT}/flow-node-inventory:table=0/flow=1 ... headers=${HEADERS_XML} ... data=${body} Log ${resp.content} Verify after adding flow config [Documentation] Verify the flow [Tags] get ${resp} RequestsLibrary.GET On Session ... session ... url=${REST_CONTEXT}/flow-node-inventory:table=0/flow=1?${RFC8040_CONFIG_CONTENT} ... expected_status=200 Log ${resp.content} Should Contain ${resp.content} ${FLOW_NAME} Verify after adding flow operational [Documentation] Verify the flow ${elements} Create List group-action group-id Wait Until Keyword Succeeds ... 6s ... 2s ... Check For Elements At URI ... ${REST_CONTEXT}/flow-node-inventory:table=0/flow=1?${RFC8040_OPERATIONAL_CONTENT} ... ${elements} Remove the flow [Documentation] Remove the flow ${resp} RequestsLibrary.DELETE On Session ... session ... url=${REST_CONTEXT}/flow-node-inventory:table=0/flow=1 ... expected_status=200 Verify after deleting flow [Documentation] Verify the flow removal [Tags] get ${resp} RequestsLibrary.GET On Session ... session ... url=${REST_CONTEXT}/flow-node-inventory:table=0/flow=1?${RFC8040_CONFIG_CONTENT} Should Not Contain ${resp.content} ${FLOW_NAME} Delete the group [Documentation] Remove the group [Tags] delete ${resp} RequestsLibrary.DELETE On Session ... session ... url=${REST_CONTEXT}/flow-node-inventory:group=1 ... expected_status=200 Log ${resp.content} Verify after deleting group [Documentation] Verify the flow removal [Tags] get ${resp} RequestsLibrary.GET On Session ... session ... url=${REST_CONTEXT}/flow-node-inventory:group=1?${RFC8040_CONFIG_CONTENT} Should Not Contain ${resp.content} ${GROUP_NAME}