Resource ./Utils.robot
*** Variables ***
-${vlan_topo_10} sudo mn --controller=remote,ip=${CONTROLLER} --custom vlan_vtn_test.py --topo vlantopo
-${vlan_topo_13} sudo mn --controller=remote,ip=${CONTROLLER} --custom vlan_vtn_test.py --topo vlantopo --switch ovsk,protocols=OpenFlow13
+${vlan_topo_10} sudo mn --controller=remote,ip=${ODL_SYSTEM_IP} --custom vlan_vtn_test.py --topo vlantopo
+${vlan_topo_13} sudo mn --controller=remote,ip=${ODL_SYSTEM_IP} --custom vlan_vtn_test.py --topo vlantopo --switch ovsk,protocols=OpenFlow13
${REST_CONTEXT_VTNS} controller/nb/v2/vtn/default/vtns
${REST_CONTEXT} controller/nb/v2/vtn/default
${VERSION_VTN} controller/nb/v2/vtn/version
${vlanmap_bridge2} {"vlan": "300"}
@{VLANMAP_BRIDGE1_DATAFLOW} "reason":"VLANMAPPED" "path":{"tenant":"Tenant1","bridge":"vBridge1_vlan"}
@{VLANMAP_BRIDGE2_DATAFLOW} "reason":"VLANMAPPED" "path":{"tenant":"Tenant1","bridge":"vBridge2_vlan"}
-${pathpolicy_topo_13} sudo mn --controller=remote,ip=${CONTROLLER} --custom topo-3sw-2host_multipath.py --topo pathpolicytopo --switch ovsk,protocols=OpenFlow13
-${pathpolicy_topo_10} sudo mn --controller=remote,ip=${CONTROLLER} --custom topo-3sw-2host_multipath.py --topo pathpolicytopo --switch ovsk,protocols=OpenFlow10
+${pathpolicy_topo_13} sudo mn --controller=remote,ip=${ODL_SYSTEM_IP} --custom topo-3sw-2host_multipath.py --topo pathpolicytopo --switch ovsk,protocols=OpenFlow13
+${pathpolicy_topo_10} sudo mn --controller=remote,ip=${ODL_SYSTEM_IP} --custom topo-3sw-2host_multipath.py --topo pathpolicytopo --switch ovsk,protocols=OpenFlow10
@{PATHMAP_ATTR} "index":"1" "condition":"flowcond_path" "policy":"1"
${policy_id} 1
@{PATHPOLICY_ATTR} "id":"1" "type":"OF" "name":"s4-eth2"
*** Keywords ***
Start SuiteVtnMa
+ [Arguments] ${version_flag}=none
[Documentation] Start VTN Manager Init Test Suite
- Create Session session http://${CONTROLLER}:${RESTPORT} auth=${AUTH} headers=${HEADERS}
+ Create Session session http://${ODL_SYSTEM_IP}:${RESTPORT} auth=${AUTH} headers=${HEADERS}
BuiltIn.Wait_Until_Keyword_Succeeds 30 3 Fetch vtn list
Start Suite
+ Run Keyword If '${version_flag}' == 'OF13' Set Global Variable ${OPENFLOW_VERSION} OF13
+ ... ELSE Set Global Variable ${OPENFLOW_VERSION} OF10
Stop SuiteVtnMa
[Documentation] Stop VTN Manager Test Suite
Delete All Sessions
- Stop Suite
Start SuiteVtnMaTest
[Documentation] Start VTN Manager Test Suite
- Create Session session http://${CONTROLLER}:${RESTPORT} auth=${AUTH} headers=${HEADERS}
+ Create Session session http://${ODL_SYSTEM_IP}:${RESTPORT} auth=${AUTH} headers=${HEADERS}
Stop SuiteVtnMaTest
[Documentation] Stop VTN Manager Test Suite
Delete All Sessions
+Add Table Miss Flows
+ [Documentation] Add Flow entried to handle table miss situation
+ Write dpctl add-flow priority=0,actions=output:CONTROLLER -OOpenFlow13
+ Read Until mininet>
+
Fetch vtn list
[Documentation] Check if VTN Manager is up.
- ${resp}= RequestsLibrary.Get session ${REST_CONTEXT_VTNS}
+ ${resp}= RequestsLibrary.Get Request session ${REST_CONTEXT_VTNS}
Should Be Equal As Strings ${resp.status_code} 200
Fetch vtn switch inventory
[Arguments] ${sw_name}
[Documentation] Check if Switch is detected.
- ${resp}= RequestsLibrary.Get session ${VTN_INVENTORY}/vtn-inventory:vtn-node/${sw_name}
+ ${resp}= RequestsLibrary.Get Request session ${VTN_INVENTORY}/vtn-inventory:vtn-node/${sw_name}
Should Be Equal As Strings ${resp.status_code} 200
Add a vtn
[Arguments] ${vtn_name} ${vtn_data}
[Documentation] Create a vtn with specified parameters.
- ${resp}= RequestsLibrary.Post session ${REST_CONTEXT_VTNS}/${vtn_name} data=${vtn_data}
+ ${resp}= RequestsLibrary.Post Request session ${REST_CONTEXT_VTNS}/${vtn_name} data=${vtn_data}
Should Be Equal As Strings ${resp.status_code} 201
Delete a vtn
[Arguments] ${vtn_name}
[Documentation] Create a vtn with specified parameters.
- ${resp}= RequestsLibrary.Delete session ${REST_CONTEXT_VTNS}/${vtn_name}
+ ${resp}= RequestsLibrary.Delete Request session ${REST_CONTEXT_VTNS}/${vtn_name}
Should Be Equal As Strings ${resp.status_code} 200
Add a vBridge
[Arguments] ${vtn_name} ${vBridge_name} ${vBridge_data}
[Documentation] Create a vBridge in a VTN
- ${resp}= RequestsLibrary.Post session ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name} data=${vBridge_data}
+ ${resp}= RequestsLibrary.Post Request session ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name} data=${vBridge_data}
Should Be Equal As Strings ${resp.status_code} 201
Add a interface
[Arguments] ${vtn_name} ${vBridge_name} ${interface_name} ${interface_data}
[Documentation] Create a interface into a vBridge of a VTN
- ${resp}= RequestsLibrary.Post session ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/interfaces/${interface_name} data=${interface_data}
+ ${resp}= RequestsLibrary.Post Request session ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/interfaces/${interface_name} data=${interface_data}
Should Be Equal As Strings ${resp.status_code} 201
Add a portmap
[Arguments] ${vtn_name} ${vBridge_name} ${interface_name} ${portmap_data}
[Documentation] Create a portmap for a interface of a vbridge
${json_data}= json.dumps ${portmap_data}
- ${resp}= RequestsLibrary.Put session ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/interfaces/${interface_name}/portmap data=${json_data} headers=${HEADERS}
+ ${resp}= RequestsLibrary.Put Request session ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/interfaces/${interface_name}/portmap data=${json_data} headers=${HEADERS}
Should Be Equal As Strings ${resp.status_code} 200
Verify Data Flows
[Arguments] ${vtn_name} ${vBridge_name}
[Documentation] Verify the reason and physical data flows for the specified vtn and vbridge
- ${resp}= RequestsLibrary.Get session ${REST_CONTEXT_VTNS}/${vtn_name}/flows/detail
+ ${resp}= RequestsLibrary.Get Request session ${REST_CONTEXT_VTNS}/${vtn_name}/flows/detail
Run Keyword If '${vBridge_name}' == 'vBridge1' DataFlowsForBridge ${resp} @{BRIDGE1_DATAFLOW}
... ELSE IF '${vBridge_name}' == 'vBridge2' DataFlowsForBridge ${resp} @{BRIDGE2_DATAFLOW}
... ELSE IF '${vBridge_name}' == 'vBridge1_vlan' DataFlowsForBridge ${resp} @{VLANMAP_BRIDGE1_DATAFLOW}
[Arguments] ${pathmap_data}
[Documentation] Create a pathmap for a vtn
${json_data}= json.dumps ${pathmap_data}
- ${resp}= RequestsLibrary.Put session ${REST_CONTEXT}/pathmaps/${policy_id} data=${pathmap_data} headers=${HEADERS}
+ ${resp}= RequestsLibrary.Put Request session ${REST_CONTEXT}/pathmaps/${policy_id} data=${pathmap_data} headers=${HEADERS}
Should Be Equal As Strings ${resp.status_code} 201
Get a pathmap
[Documentation] Get a pathmap for a vtn.
- ${resp}= RequestsLibrary.Get session ${REST_CONTEXT}/pathmaps
+ ${resp}= RequestsLibrary.Get Request session ${REST_CONTEXT}/pathmaps
: FOR ${pathElement} IN @{PATHMAP_ATTR}
\ should Contain ${resp.content} ${pathElement}
[Arguments] ${pathpolicy_data}
[Documentation] Create a pathpolicy for a vtn
${json_data}= json.dumps ${pathpolicy_data}
- ${resp}= RequestsLibrary.Put session ${REST_CONTEXT}/pathpolicies/${policy_id} data=${pathpolicy_data} headers=${HEADERS}
+ ${resp}= RequestsLibrary.Put Request session ${REST_CONTEXT}/pathpolicies/${policy_id} data=${pathpolicy_data} headers=${HEADERS}
Should Be Equal As Strings ${resp.status_code} 201
Get a pathpolicy
[Documentation] Get a pathpolicy for a vtn.
- ${resp}= RequestsLibrary.Get session ${REST_CONTEXT}/pathpolicies/${policy_id}
+ ${resp}= RequestsLibrary.Get Request session ${REST_CONTEXT}/pathpolicies/${policy_id}
: FOR ${pathpolicyElement} IN @{PATHPOLICY_ATTR}
\ should Contain ${resp.content} ${pathpolicyElement}
Start PathSuiteVtnMaTest
[Documentation] Start VTN Manager Test Suite and Mininet
Start SuiteVtnMaTest
- Start Mininet ${MININET} ${pathpolicy_topo_13} ${custom}
+ Start Mininet ${TOOLS_SYSTEM_IP} ${pathpolicy_topo_13} ${custom}
Start PathSuiteVtnMaTestOF10
[Documentation] Start VTN Manager Test Suite and Mininet in Open Flow 10 Specification
Start SuiteVtnMaTest
- Start Mininet ${MININET} ${pathpolicy_topo_10} ${custom}
+ Start Mininet ${TOOLS_SYSTEM_IP} ${pathpolicy_topo_10} ${custom}
Stop PathSuiteVtnMaTest
[Documentation] Cleanup/Shutdown work at the completion of all tests.
Delete a pathmap
[Documentation] Delete a pathmap for a vtn
- ${resp}= RequestsLibrary.Delete session ${REST_CONTEXT}/pathmaps/1
+ ${resp}= RequestsLibrary.Delete Request session ${REST_CONTEXT}/pathmaps/1
Should Be Equal As Strings ${resp.status_code} 200
Get a pathmap after delete
[Documentation] Get a pathmap for a vtn.
- ${resp}= RequestsLibrary.Get session ${REST_CONTEXT}/pathmaps
+ ${resp}= RequestsLibrary.Get Request session ${REST_CONTEXT}/pathmaps
: FOR ${pathElement} IN @{PATHMAP_ATTR}
\ should Not Contain ${resp.content} ${pathElement}
Delete a pathpolicy
[Documentation] Delete a pathpolicy for a vtn
- ${resp}= RequestsLibrary.Delete session ${REST_CONTEXT}/pathpolicies/1
+ ${resp}= RequestsLibrary.Delete Request session ${REST_CONTEXT}/pathpolicies/1
Should Be Equal As Strings ${resp.status_code} 200
Get a pathpolicy after delete
[Documentation] Get a pathpolicy for a vtn after delete.
- ${resp}= RequestsLibrary.Get session ${REST_CONTEXT}/pathpolicies/${policy_id}
+ ${resp}= RequestsLibrary.Get Request session ${REST_CONTEXT}/pathpolicies/${policy_id}
: FOR ${pathpolicyElement} IN @{PATHPOLICY_ATTR}
\ should Not Contain ${resp.content} ${pathpolicyElement}
[Arguments] ${vtn_name} ${vBridge_name} ${macmap_data}
[Documentation] Create a macmap for a vbridge
${json_data}= json.dumps ${macmap_data}
- ${resp}= RequestsLibrary.Post session ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/macmap/allow data=${macmap_data} headers=${HEADERS}
+ ${resp}= RequestsLibrary.Post Request session ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/macmap/allow data=${macmap_data} headers=${HEADERS}
Should Be Equal As Strings ${resp.status_code} 201
Get DynamicMacAddress
[Arguments] ${tenant_name} ${Bridge_name} ${bridge_macmap_data}
[Documentation] Create a vbridge macmap for a bridge
${json_data}= json.dumps ${bridge_macmap_data}
- ${resp}= RequestsLibrary.Post session ${REST_CONTEXT_VTNS}/${tenant_name}/vbridges/${Bridge_name}/macmap/allow data=${json_data} headers=${HEADERS}
+ ${resp}= RequestsLibrary.Post Request session ${REST_CONTEXT_VTNS}/${tenant_name}/vbridges/${Bridge_name}/macmap/allow data=${json_data} headers=${HEADERS}
Should Be Equal As Strings ${resp.status_code} 201
Mininet Ping Should Succeed
Delete a interface
[Arguments] ${vtn_name} ${vBridge_name} ${interface_name}
[Documentation] Delete a interface with specified parameters.
- ${resp}= RequestsLibrary.Delete session ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/interfaces/${interface_name}
+ ${resp}= RequestsLibrary.Delete Request session ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/interfaces/${interface_name}
Should Be Equal As Strings ${resp.status_code} 200
Start vlan_topo
[Arguments] ${OF}
Clean Mininet System
- ${mininet_conn_id1}= Open Connection ${MININET} prompt=${DEFAULT_LINUX_PROMPT} timeout=30s
+ ${mininet_conn_id1}= Open Connection ${TOOLS_SYSTEM_IP} prompt=${DEFAULT_LINUX_PROMPT} timeout=30s
Set Suite Variable ${mininet_conn_id1}
- Login With Public Key ${MININET_USER} ${USER_HOME}/.ssh/${SSH_KEY} any
+ Login With Public Key ${TOOLS_SYSTEM_USER} ${USER_HOME}/.ssh/${SSH_KEY} any
Execute Command sudo ovs-vsctl set-manager ptcp:6644
Put File ${CURDIR}/${CREATE_VLAN_TOPOLOGY_FILE_PATH}
Run Keyword If '${OF}' == 'OF13' Write ${vlan_topo_13}
Add a vlanmap
[Arguments] ${vtn_name} ${vBridge_name} ${vlanmap_data}
[Documentation] Create a vlanmap
- ${resp}= RequestsLibrary.Post session ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/vlanmaps/ data=${vlanmap_data} headers=${HEADERS}
+ ${resp}= RequestsLibrary.Post Request session ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/vlanmaps/ data=${vlanmap_data} headers=${HEADERS}
Should Be Equal As Strings ${resp.status_code} 201
Get flow
[Arguments] ${vtn_name}
[Documentation] Get data flow.
- ${resp}= RequestsLibrary.Get session ${REST_CONTEXT_VTNS}/${vtn_name}/flows/detail
+ ${resp}= RequestsLibrary.Get Request session ${REST_CONTEXT_VTNS}/${vtn_name}/flows/detail
Should Be Equal As Strings ${resp.status_code} 200
Remove a portmap
[Arguments] ${vtn_name} ${vBridge_name} ${interface_name} ${portmap_data}
[Documentation] Remove a portmap for a interface of a vbridge
${json_data}= json.dumps ${portmap_data}
- ${resp}= RequestsLibrary.Delete session ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/interfaces/${interface_name}/portmap data=${json_data} headers=${HEADERS}
+ ${resp}= RequestsLibrary.Delete Request session ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/interfaces/${interface_name}/portmap data=${json_data} headers=${HEADERS}
Should Be Equal As Strings ${resp.status_code} 200
Verify FlowMacAddress
[Arguments] ${cond_name} ${flowcond_data}
[Documentation] Create a flowcondition for a interface of a vbridge
${json_data}= json.dumps ${flowcond_data}
- ${resp}= RequestsLibrary.Put session ${REST_CONTEXT}/flowconditions/${cond_name} data=${json_data} headers=${HEADERS}
+ ${resp}= RequestsLibrary.Put Request session ${REST_CONTEXT}/flowconditions/${cond_name} data=${json_data} headers=${HEADERS}
Should Be Equal As Strings ${resp.status_code} 201
Delete a flowcondition
[Arguments] ${cond_name}
[Documentation] Delete a flowcondition for a interface of a vbridge
- ${resp}= RequestsLibrary.Delete session ${REST_CONTEXT}/flowconditions/${cond_name}
+ ${resp}= RequestsLibrary.Delete Request session ${REST_CONTEXT}/flowconditions/${cond_name}
Should Be Equal As Strings ${resp.status_code} 200
Add a flowfilter
[Arguments] ${vtn_name} ${vBridge_name} ${interface_name} ${flowfilter_data} ${ff_index}
[Documentation] Create a flowfilter for a vtn
- ${resp}= RequestsLibrary.Put session ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/interfaces/${interface_name}/flowfilters/IN/${ff_index} data=${flowfilter_data} headers=${HEADERS}
+ ${resp}= RequestsLibrary.Put Request session ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/interfaces/${interface_name}/flowfilters/IN/${ff_index} data=${flowfilter_data} headers=${HEADERS}
Should Be Equal As Strings ${resp.status_code} 201
Add a flowfilter_vtn
[Arguments] ${vtn_name} ${flowfilter_data} ${ff_index}
[Documentation] Create a flowfilter for a vtn
- ${resp}= RequestsLibrary.Put session ${REST_CONTEXT_VTNS}/${vtn_name}/flowfilters/${ff_index} data=${flowfilter_data} headers=${HEADERS}
+ ${resp}= RequestsLibrary.Put Request session ${REST_CONTEXT_VTNS}/${vtn_name}/flowfilters/${ff_index} data=${flowfilter_data} headers=${HEADERS}
Should Be Equal As Strings ${resp.status_code} 201
Add a flowfilter_vbr
[Arguments] ${vtn_name} ${vBridge_name} ${flowfilter_data} ${ff_index}
[Documentation] Create a flowfilter for a vbr
- ${resp}= RequestsLibrary.Put session ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/flowfilters/IN/${ff_index} data=${flowfilter_data} headers=${HEADERS}
+ ${resp}= RequestsLibrary.Put Request session ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/flowfilters/IN/${ff_index} data=${flowfilter_data} headers=${HEADERS}
Should Be Equal As Strings ${resp.status_code} 201
Update a flowfilter
[Arguments] ${vtn_name} ${vBridge_name} ${interface_name} ${flowfilter_data} ${ff_index}
[Documentation] Create a flowfilter for a vtn
- ${resp}= RequestsLibrary.Put session ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/interfaces/${interface_name}/flowfilters/IN/${ff_index} data=${flowfilter_data} headers=${HEADERS}
+ ${resp}= RequestsLibrary.Put Request session ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/interfaces/${interface_name}/flowfilters/IN/${ff_index} data=${flowfilter_data} headers=${HEADERS}
Should Be Equal As Strings ${resp.status_code} 200
Add a flowfilter for drop
[Arguments] ${vtn_name} ${vBridge_name} ${interface_name} ${flowfilter_data} ${ff_index}
[Documentation] Create a flowfilter for a vtn
- ${resp}= RequestsLibrary.Put session ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/interfaces/${interface_name}/flowfilters/IN/${ff_index} data=${flowfilter_data} headers=${HEADERS}
+ ${resp}= RequestsLibrary.Put Request session ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/interfaces/${interface_name}/flowfilters/IN/${ff_index} data=${flowfilter_data} headers=${HEADERS}
Should Be Equal As Strings ${resp.status_code} 200
Verify Flow Entry for Inet Flowfilter