From df9fad136dab8cf1113c3cc1dc8c6728f711cb4a Mon Sep 17 00:00:00 2001 From: "Karthik.S" Date: Tue, 22 Dec 2015 02:08:40 +0530 Subject: [PATCH] Modify flowfilter and pathpolicy robot files for VTN Manager RESTCONF * Removed Force tags "exclude" in 010__vtn_manager_flowfilter.robot and 010__vtn_manager_pathpolicy.robot(OF10 and OF13)files and * Renamed pathpolicy robot file as 020_vtn_pathmap_pathpolicy.robot * Modify test case to work for RESTCONF feature, earlier test was written for RESTAPI spec. * Modify VtnMaKeyword.robot file for flowfilter and pathmap, pathpolicy functioanlities. Change-Id: I26ceea5e2bee7dafd5701c1e7c321a4cd8f5dddf Signed-off-by: Karthik.S --- csit/libraries/VtnMaKeywords.robot | 46 +++++-- .../010__vtn_manager_flowfilter.robot | 119 +++++++---------- .../010__vtn_manager_pathpolicy.robot | 123 ------------------ .../020__vtn_pathmap_pathpolicy.robot | 102 +++++++++++++++ .../010__vtn_manager_flowfilter.robot | 110 +++++++--------- .../010__vtn_manager_pathpolicy.robot | 123 ------------------ .../020__vtn_pathmap_pathpolicy.robot | 100 ++++++++++++++ 7 files changed, 333 insertions(+), 390 deletions(-) delete mode 100644 csit/suites/vtn/VTN_Mgr_OF10/010__vtn_manager_pathpolicy.robot create mode 100644 csit/suites/vtn/VTN_Mgr_OF10/020__vtn_pathmap_pathpolicy.robot delete mode 100644 csit/suites/vtn/VTN_Mgr_OF13/010__vtn_manager_pathpolicy.robot create mode 100644 csit/suites/vtn/VTN_Mgr_OF13/020__vtn_pathmap_pathpolicy.robot diff --git a/csit/libraries/VtnMaKeywords.robot b/csit/libraries/VtnMaKeywords.robot index e5fdc0c61e..b3d8b4922f 100644 --- a/csit/libraries/VtnMaKeywords.robot +++ b/csit/libraries/VtnMaKeywords.robot @@ -23,10 +23,15 @@ ${vlanmap_bridge1} 200 ${vlanmap_bridge2} 300 @{VLANMAP_BRIDGE1_DATAFLOW} "reason":"VLANMAPPED" "virtual-node-path":{"bridge-name":"vBridge1_vlan","tenant-name":"Tenant1","vlan-map-id":"ANY.200"} @{VLANMAP_BRIDGE2_DATAFLOW} "reason":"VLANMAPPED" "virtual-node-path":{"bridge-name":"vBridge2_vlan","tenant-name":"Tenant1","vlan-map-id":"ANY.300"} -${in_port} 1 ${out_before_pathpolicy} output:2 ${out_after_pathpolicy} output:3 -${flowcond_restconfigdata} {"input":{"operation":"SET","present":"false","name":"cond_1","vtn-flow-match":[{"vtn-ether-match":{"destination-address":"ba:bd:0f:e3:a8:c8","ether-type":"2048","source-address":"ca:9e:58:0c:1e:f0","vlan-id": "1"},"vtn-inet-match":{"source-network":"10.0.0.1/32","protocol":1,"destination-network":"10.0.0.2/32"},"index":"1"}]}} +${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 +@{PATHMAP_ATTR} "index":"1" "condition":"flowcond_path" "policy":"1" +${policy_id} 1 +${in_port} 1 +@{PATHPOLICY_ATTR} "id":1 "port-desc":"openflow:4,2,s4-eth2" +${custom} ${CURDIR}/${CREATE_PATHPOLICY_TOPOLOGY_FILE_PATH} *** Keywords *** Start SuiteVtnMa @@ -104,6 +109,21 @@ Verify Data Flows ... ELSE IF '${vBridge_name}' == 'vBridge1_vlan' DataFlowsForBridge ${resp} @{VLANMAP_BRIDGE1_DATAFLOW} ... ELSE DataFlowsForBridge ${resp} @{VLANMAP_BRIDGE2_DATAFLOW} +Start PathSuiteVtnMaTest + [Documentation] Start VTN Manager Test Suite and Mininet + Start SuiteVtnMaTest + Start Mininet ${MININET} ${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} + +Stop PathSuiteVtnMaTest + [Documentation] Cleanup/Shutdown work at the completion of all tests. + Delete All Sessions + Stop Mininet ${mininet_conn_id} + DataFlowsForBridge [Arguments] ${resp} @{BRIDGE_DATAFLOW} [Documentation] Verify whether the required attributes exists. @@ -135,10 +155,16 @@ Get a pathpolicy : FOR ${pathpolicyElement} IN @{PATHPOLICY_ATTR} \ should Contain ${resp.content} ${pathpolicyElement} +Delete a pathmap + [Arguments] ${tenant_path} + [Documentation] Remove a pathmap for a vtn + ${resp}= RequestsLibrary.Post Request session restconf/operations/vtn-path-map:remove-path-map data={"input":{"tenant-name":"${tenant_path}","map-index":["${policy_id}"]}} + Should Be Equal As Strings ${resp.status_code} 200 + Delete a pathpolicy - [Arguments] ${path_id} + [Arguments] ${policy_id} [Documentation] Delete a pathpolicy for a vtn - ${resp}= RequestsLibrary.Post Request session restconf/operations/vtn-path-policy:remove-path-policy data={"input": {"id": "${path_id}"}} + ${resp}= RequestsLibrary.Post Request session restconf/operations/vtn-path-policy:remove-path-policy data={"input":{"id":"${policy_id}"}} Should Be Equal As Strings ${resp.status_code} 200 Verify flowEntryPathPolicy @@ -249,19 +275,19 @@ Verify macaddress Add a vtn flowfilter [Arguments] ${vtn_name} ${vtnflowfilter_data} [Documentation] Create a flowfilter for a vtn - ${resp}= RequestsLibrary.Post Request session restconf/operations/vtn-flow-filter:set-flow-filter data=${vtnflowfilter_data} + ${resp}= RequestsLibrary.Post Request session restconf/operations/vtn-flow-filter:set-flow-filter data={"input": {"tenant-name": "${vtn_name}",${vtnflowfilter_data}}} Should Be Equal As Strings ${resp.status_code} 200 Add a vbr flowfilter [Arguments] ${vtn_name} ${vBridge_name} ${vbrflowfilter_data} [Documentation] Create a flowfilter for a vbr - ${resp}= RequestsLibrary.Post Request session restconf/operations/vtn-flow-filter:set-flow-filter data=${vbrflowfilter_data} + ${resp}= RequestsLibrary.Post Request session restconf/operations/vtn-flow-filter:set-flow-filter data={"input": {"tenant-name": "${vtn_name}", "bridge-name": "${vBridge_name}", ${vbrflowfilter_data}}} Should Be Equal As Strings ${resp.status_code} 200 Add a vbrif flowfilter [Arguments] ${vtn_name} ${vBridge_name} ${interface_name} ${vbrif_flowfilter_data} [Documentation] Create a flowfilter for a vbrif - ${resp}= RequestsLibrary.Post Request session restconf/operations/vtn-flow-filter:set-flow-filter data=${vbrif_flowfilter_data} + ${resp}= RequestsLibrary.Post Request session restconf/operations/vtn-flow-filter:set-flow-filter data={"input": {"tenant-name": ${vtn_name}, "bridge-name": "${vBridge_name}","interface-name":"${interface_name}",${vbrif_flowfilter_data}}} Should Be Equal As Strings ${resp.status_code} 200 Verify Flow Entry for Inet Flowfilter @@ -294,8 +320,8 @@ Get flowconditions Get flowcondition [Arguments] ${flowcond_name} ${retrieve} - [Documentation] Retrieve the flowcondition by name and to check the removed flowcondition added "retrieve" argument to differentiate the status code, since - ... after removing flowcondition name the status will be different compare to status code when the flowcondition name is present. + [Documentation] Retrieve the flowcondition by name and to check the removed flowcondition we added "retrieve" argument to differentiate the status code, + ... since after removing flowcondition name the status will be different compare to status code when the flowcondition name is present. ${resp}= RequestsLibrary.Get Request session restconf/operational/vtn-flow-condition:vtn-flow-conditions/vtn-flow-condition/${flowcond_name} Run Keyword If '${retrieve}' == 'retrieve' Should Be Equal As Strings ${resp.status_code} 200 ... ELSE Should Not Be Equal As Strings ${resp.status_code} 200 @@ -303,5 +329,5 @@ Get flowcondition Remove flowcondition [Arguments] ${flowcond_name} [Documentation] Remove the flowcondition by name - ${resp}= RequestsLibrary.Post Request session restconf/operations/vtn-flow-condition:remove-flow-condition {"input": {"name": "${flowcond_name}"}} + ${resp}= RequestsLibrary.Post Request session restconf/operations/vtn-flow-condition:remove-flow-condition data={"input":{"name":"${flowcond_name}"}} Should Be Equal As Strings ${resp.status_code} 200 diff --git a/csit/suites/vtn/VTN_Mgr_OF10/010__vtn_manager_flowfilter.robot b/csit/suites/vtn/VTN_Mgr_OF10/010__vtn_manager_flowfilter.robot index 65d33bfb71..86c0225ab7 100644 --- a/csit/suites/vtn/VTN_Mgr_OF10/010__vtn_manager_flowfilter.robot +++ b/csit/suites/vtn/VTN_Mgr_OF10/010__vtn_manager_flowfilter.robot @@ -2,19 +2,20 @@ Documentation Test suite for VTN Manager using OF10 Suite Setup Start SuiteVtnMaTest Suite Teardown Stop SuiteVtnMaTest -Force Tags exclude Resource ../../../libraries/VtnMaKeywords.robot *** Variables *** -${flowfilterInetdata} {"index":1,"condition":"cond1","filterType":{"pass":{}},"actions":[{"inet4src":{"address":"10.0.0.1"}},{"inet4dst":{"address":"10.0.0.3"}}]} -${flowfilterInetdropdata} {"index":1,"condition":"cond1","filterType":{"drop":{}},"actions":[{"inet4src":{"address":"10.0.0.1"}},{"inet4dst":{"address":"10.0.0.3"}}]} -${flowfilterIcmpCodedata} {"index":2,"condition":"cond1","filterType":{"pass":{}},"actions":[{"icmpcode":{"code":9}}]} -${flowfilterTpsrcTpdstdata} {"index":3,"condition":"cond1","filterType":{"pass":{}},"actions":[{"tpsrc":{"port":"5"}},{"tpdst":{"port":"10"}}]} -${flowfilterDscpdata} {"index":6,"condition":"cond1","filterType":{"pass":{}},"actions":[{"dscp": {"dscp": 10}}]} -${macmap_data} {"machost": [{"address": "0e:d5:e3:40:a3:f0", "vlan": "0"},{"address": "9a:dd:b0:8a:de:2f", "vlan": "0"}]} -${flowfiltervlanpcp} {"index":7,"condition":"cond1","filterType":{"pass":{}},"actions":[{"inet4src":{"address":"10.0.0.1"}},{"inet4dst":{"address":"10.0.0.3"}},{"icmpcode":{"code":1}},{"vlanpcp":{"priority":3}}]} -${vtn_flowfilterInetdata} {"index":8,"condition":"cond1","filterType":{"pass":{}},"actions":[{"inet4src":{"address":"10.0.0.1"}},{"inet4dst":{"address":"10.0.0.3"}}]} -${vbr_flowfilterInetdata} {"index":9,"condition":"cond1","filterType":{"pass":{}},"actions":[{"inet4src":{"address":"10.0.0.1"}},{"inet4dst":{"address":"10.0.0.3"}}]} +${flowfilterInetdata} "vtn-flow-filter":[{"condition":"cond_1","vtn-pass-filter":{},"vtn-flow-action":[{"order": "1","vtn-set-inet-src-action":{"ipv4-address":"10.0.0.1/32"}},{"order": "2","vtn-set-inet-dst-action":{"ipv4-address":"10.0.0.3/32"}}],"index": "1"}] + +${flowfilterInetdropdata} "vtn-flow-filter":[{"condition":"cond_1","vtn-drop-filter":{},"vtn-flow-action":[{"order": "1","vtn-set-inet-src-action":{"ipv4-address":"10.0.0.1/32"}},{"order": "2","vtn-set-inet-dst-action":{"ipv4-address":"10.0.0.3/32"}}],"index": "1"}] + +${flowfilterIcmpCodedata} "vtn-flow-filter":[{"condition": "cond_1","vtn-pass-filter": {},"vtn-flow-action":[{ "order":"1","vtn-set-icmp-code-action":{"code":"9"}}],"index":"2"}] + +${flowfilterTpsrcTpdstdata} "vtn-flow-filter": [{"condition": "cond_1","vtn-pass-filter": {},"vtn-flow-action": [{"order": "1","vtn-set-port-src-action": {"port": "5"}},{"order": "2","vtn-set-port-dst-action": {"port": "10"}}],"index": "3"}] + +${flowfilterDscpdata} "vtn-flow-filter":[{"condition": "cond_1","vtn-pass-filter": {},"vtn-flow-action": [{"order": "1","vtn-set-inet-dscp-action": {"dscp":"10"}}],"index":"6"}] + +${flowfiltervlanpcp} "vtn-flow-filter":[{"condition":"cond_1","vtn-pass-filter":{},"vtn-flow-action":[{"order":"1","vtn-set-inet-src-action":{"ipv4-address":"10.0.0.1/32"}},{"order":"2","vtn-set-inet-dst-action":{"ipv4-address":"10.0.0.3/32"}},{"order":"3","vtn-set-icmp-code-action":{"code":"1"}},{"order":"4","vtn-set-vlan-pcp-action":{"vlan-pcp":"3"}}],"index":"3"}] *** Test Cases *** Check if switch1 detected @@ -31,104 +32,79 @@ Check if switch3 detected Add a vtn Tenant1 [Documentation] Add a vtn Tenant1 - Add a vtn Tenant1 {"idleTimeout": "200","hardTimeout": "600","description": "Virtual Tenant1 for Hackfest network"} + Add a vtn Tenant1 Add a vBridge vBridge1 [Documentation] Add a vBridge vBridge1 in vtn Tenant1 - Add a vBridge Tenant1 vBridge1 {"ageInterval": "300","description": "vBridge1 for Tenant1"} + Add a vBridge Tenant1 vBridge1 Add a interface If1 [Documentation] Add a interface if1 into vBridge vBridge1 - Add a interface Tenant1 vBridge1 if1 {"enabled": "true","description": "Interface1 for vBridge1 for Tenant1"} + Add a interface Tenant1 vBridge1 if1 Add a interface if2 [Documentation] Add a interface if2 into vBridge vBridge1 - Add a interface Tenant1 vBridge1 if2 {"enabled": "true","description": "Interface2 for vBridge1 for Tenant1"} + Add a interface Tenant1 vBridge1 if2 Add a portmap for interface if1 [Documentation] Create a portmap on Interface if1 of vBridge1 - ${node} Create Dictionary type=OF id=00:00:00:00:00:00:00:02 - ${port} Create Dictionary name=s2-eth1 - ${portmap_data} Create Dictionary node=${node} port=${port} - Add a portmap Tenant1 vBridge1 if1 ${portmap_data} + Add a portmap Tenant1 vBridge1 if1 openflow:2 s2-eth1 Add a portmap for interface if2 [Documentation] Create a portmap on Interface if2 of vBridge1 - ${node} Create Dictionary type=OF id=00:00:00:00:00:00:00:03 - ${port} Create Dictionary name=s3-eth1 - ${portmap_data} Create Dictionary node=${node} port=${port} - Add a portmap Tenant1 vBridge1 if2 ${portmap_data} + Add a portmap Tenant1 vBridge1 if2 openflow:3 s3-eth1 Ping h1 to h3 [Documentation] Ping h1 to h3, verify no packet loss - Mininet Ping Should Succeed h1 h3 + Wait_Until_Keyword_Succeeds 20s 1s Mininet Ping Should Succeed h1 h3 Add a vBridge vBridge2 [Documentation] Add a vBridge vBridge2 in vtn Tenant1 - Add a vBridge Tenant1 vBridge2 {} + Add a vBridge Tenant1 vBridge2 Add a interface If3 [Documentation] Add a interface if3 into vBrdige vBridge1 - Add a interface Tenant1 vBridge1 if3 {} + Add a interface Tenant1 vBridge1 if3 Add a interface if4 [Documentation] Add a interface if4 into vBrdige vBridge1 - Add a interface Tenant1 vBridge1 if4 {} + Add a interface Tenant1 vBridge1 if4 Add a portmap for interface if3 [Documentation] Create a portmap on Interface if3 of vBridge1 - ${node} Create Dictionary type=OF id=00:00:00:00:00:00:00:02 - ${port} Create Dictionary name=s2-eth2 - ${portmap_data} Create Dictionary node=${node} port=${port} - Add a portmap Tenant1 vBridge1 if3 ${portmap_data} + Add a portmap Tenant1 vBridge1 if3 openflow:2 s2-eth2 Add a portmap for interface if4 [Documentation] Create a portmap on Interface if4 of vBridge1 - ${node} Create Dictionary type=OF id=00:00:00:00:00:00:00:03 - ${port} Create Dictionary name=s3-eth2 - ${portmap_data} Create Dictionary node=${node} port=${port} - Add a portmap Tenant1 vBridge1 if4 ${portmap_data} + Add a portmap Tenant1 vBridge1 if4 openflow:3 s3-eth2 Ping h2 to h4 [Documentation] Ping h2 to h4, verify no packet loss - Mininet Ping Should Succeed h2 h4 - -Add a macmap - [Documentation] Create a macmap on vBridge vBridge1 - Add a macmap Tenant1 vBridge1 ${macmap_data} + Wait_Until_Keyword_Succeeds 20s 1s Mininet Ping Should Succeed h2 h4 -Get flow - [Documentation] Get flow of a vtn Tenant1 - Get flow Tenant1 - -Add a flowcondition cond1 - [Documentation] Create a flowcondition cond1 - ${inet4}= Create Dictionary src=10.0.0.1 dst=10.0.0.3 - ${inetMatch}= Create Dictionary inet4=${inet4} - ${matchElement}= Create Dictionary index=1 inetMatch=${inetMatch} - @{matchlist} Create List ${matchElement} - ${flowcond_data}= Create Dictionary name=cond1 match=${matchlist} - Add a flowcondition cond1 ${flowcond_data} +Add a flowcondition + [Documentation] Create a flowcondition cond_1 using restconfig api + Add a flowcondition cond_1 Add a flowfilter with inet4src and inet4dst [Documentation] Create a flowfilter with inet4 and Verify ping - Add a flowfilter Tenant1 vBridge1 if1 ${flowfilterInetdata} ${index} - Mininet Ping Should Succeed h1 h3 + Add a vbrif flowfilter Tenant1 vBridge1 if1 ${flowfilterInetdata} + Wait_Until_Keyword_Succeeds 20s 1s Mininet Ping Should Succeed h1 h3 Add a flowfilter with Icmp code [Documentation] Create a flowfilter with icmp code and Verify ping - Update a flowfilter Tenant1 vBridge1 if1 ${flowfilterIcmpCodedata} ${index} - Mininet Ping Should Succeed h1 h3 + Add a vbrif flowfilter Tenant1 vBridge1 if1 ${flowfilterIcmpCodedata} + Wait_Until_Keyword_Succeeds 20s 1s Mininet Ping Should Succeed h1 h3 Add a flowfilter with tpsrc and tpdst [Documentation] Create a flowfilter with tpsrc and tpdst and Verify ping - Update a flowfilter Tenant1 vBridge1 if1 ${flowfilterTpsrcTpdstdata} ${index} - Mininet Ping Should Succeed h1 h3 + Add a vbrif flowfilter Tenant1 vBridge1 if1 ${flowfilterTpsrcTpdstdata} + Wait_Until_Keyword_Succeeds 20s 1s Mininet Ping Should Succeed h1 h3 Add a flowfilter with dscp [Documentation] Create a flowfilter with dscp and Verify ping - Update a flowfilter Tenant1 vBridge1 if1 ${flowfilterDscpdata} ${index} - Mininet Ping Should Succeed h1 h3 + Add a vbrif flowfilter Tenant1 vBridge1 if1 ${flowfilterDscpdata} + Wait_Until_Keyword_Succeeds 20s 1s Mininet Ping Should Succeed h1 h3 Verify Flow Entry for Inet Flowfilter [Documentation] Verify Flow Entry for Inet Flowfilter @@ -136,32 +112,29 @@ Verify Flow Entry for Inet Flowfilter Add a flowfilter with vlanpcp [Documentation] Create a flowfilter with vlanpcp and Verify ping - Update a flowfilter Tenant1 vBridge1 if1 ${flowfiltervlanpcp} ${index} - Mininet Ping Should Succeed h1 h3 + Add a vbrif flowfilter Tenant1 vBridge1 if1 ${flowfiltervlanpcp} + Wait_Until_Keyword_Succeeds 20s 1s Mininet Ping Should Succeed h1 h3 Add a flowfilter_vtn with inet4src and inet4dst [Documentation] Create a vtn_flowfilter with inet4 and Verify ping - Add a flowfilter_vtn Tenant1 ${vtn_flowfilterInetdata} ${index} - Mininet Ping Should Succeed h1 h3 + Add a vtn flowfilter Tenant1 ${flowfilterInetdata} + Wait_Until_Keyword_Succeeds 20s 1s Mininet Ping Should Succeed h1 h3 Add a flowfilter_vbr with inet4src and inet4dst [Documentation] Create a vbr_flowfilter with inet4 and Verify ping - Add a flowfilter_vbr Tenant1 vBridge1 ${vbr_flowfilterInetdata} ${index} - Mininet Ping Should Succeed h1 h3 + Add a vbr flowfilter Tenant1 vBridge1 ${flowfilterInetdata} + Wait_Until_Keyword_Succeeds 20s 1s Mininet Ping Should Succeed h1 h3 Add a flowfilter with inet4 for drop [Documentation] Create a flowfilter with inet4 for drop action and Verify no pinging - Add a flowfilter for drop Tenant1 vBridge1 if1 ${flowfilterInetdropdata} ${index} - Mininet Ping Should Not Succeed h1 h3 - -Verify Removed Flow Entry For Inet After Drop Action - [Documentation] Verify no flows between the hosts after drop - Verify Removed Flow Entry for Inet Drop Flowfilter + [Tags] exclude + Add a vbrif flowfilter Tenant1 vBridge1 if1 ${flowfilterInetdropdata} + Wait_Until_Keyword_Succeeds 20s 1s Mininet Ping Should Not Succeed h1 h3 Delete a flowcondition [Documentation] Delete a flowcondition - Delete a flowcondition cond1 + Remove flowcondition cond_1 Delete a vtn Tenant1 - [Documentation] Delete a vtn Tenant1 + [Documentation] Delete vtn Tenant1 Delete a vtn Tenant1 diff --git a/csit/suites/vtn/VTN_Mgr_OF10/010__vtn_manager_pathpolicy.robot b/csit/suites/vtn/VTN_Mgr_OF10/010__vtn_manager_pathpolicy.robot deleted file mode 100644 index b30a4e5e66..0000000000 --- a/csit/suites/vtn/VTN_Mgr_OF10/010__vtn_manager_pathpolicy.robot +++ /dev/null @@ -1,123 +0,0 @@ -*** Settings *** -Documentation Test suite for VTN Manager using OF10 -Suite Setup Start PathSuiteVtnMaTestOF10 -Suite Teardown Stop PathSuiteVtnMaTest -Force Tags exclude -Resource ../../../libraries/VtnMaKeywords.robot - -*** Variables *** -${pathmapdata} {"index": 1,"condition":"flowcond_path","policy":1,"idleTimeout": 300,"hardTimeout": 0} -${pathpolicydata} {"id": 1,"default": 100000,"cost": [{"location": {"node": {"type": "OF","id": "00:00:00:00:00:00:00:01"},"port": {"type": "OF","id": "3","name": "s1-eth3"}},"cost": 1000},{"location": {"node": {"type": "OF","id": "00:00:00:00:00:00:00:04"},"port": {"type": "OF","id": "2","name": "s4-eth2"}},"cost": 1000},{"location": {"node": {"type": "OF", "id": "00:00:00:00:00:00:00:03"},"port": {"type": "OF","id": "3","name": "s3-eth3"}},"cost": 100000}]} - -*** Test Cases *** -Check if switch1 detected - [Documentation] Check if openflow:1 is detected - BuiltIn.Wait_Until_Keyword_Succeeds 12 3 Fetch vtn switch inventory openflow:1 - -Check if switch2 detected - [Documentation] Check if openflow:2 is detected - BuiltIn.Wait_Until_Keyword_Succeeds 3 1 Fetch vtn switch inventory openflow:2 - -Check if switch3 detected - [Documentation] Check if openflow:3 is detected - BuiltIn.Wait_Until_Keyword_Succeeds 3 1 Fetch vtn switch inventory openflow:3 - -Check if switch4 detected - [Documentation] Check if openflow:4 is detected - BuiltIn.Wait_Until_Keyword_Succeeds 3 1 Fetch vtn switch inventory openflow:4 - -Add a vtn Tenant_path - [Documentation] Add a vtn Tenant_path - Add a vtn Tenant_path {"idleTimeout": "200","hardTimeout": "600","description": "Virtual Tenant_path for Hackfest network"} - -Add a vBridge vBridge1 - [Documentation] Add a vBridge vBridge1 in vtn Tenant_path - Add a vBridge Tenant_path vBridge1 {"ageInterval": "300","description": "vBridge1 for Tenant_path"} - -Add a interface If1_path - [Documentation] Add a interface if1_path into vBrdige vBridge1 - Add a interface Tenant_path vBridge1 if1_path {} - -Add a portmap for interface if1_path - [Documentation] Create a portmap on Interface if1 of vBridge1 - ${node} Create Dictionary type=OF id=00:00:00:00:00:00:00:01 - ${port} Create Dictionary name=s1-eth1 type=OF id=1 - ${portmap_data} Create Dictionary node=${node} port=${port} - Add a portmap Tenant_path vBridge1 if1_path ${portmap_data} - -Add a interface If2_path - [Documentation] Add a interface if2_path into vBrdige vBridge1 - Add a interface Tenant_path vBridge1 if2_path {} - -Add a portmap for interface if2_path - [Documentation] Create a portmap on Interface if2_path of vBridge1 - ${node} Create Dictionary type=OF id=00:00:00:00:00:00:00:03 - ${port} Create Dictionary name=s3-eth3 type=OF id=3 - ${portmap_data} Create Dictionary node=${node} port=${port} - Add a portmap Tenant_path vBridge1 if2_path ${portmap_data} - -Ping h1 to h2 before path policy - [Documentation] Ping h1 to h2, verify no packet loss - Mininet Ping Should Succeed h1 h2 - -Verify flowEntryBeforePathPolicy - [Documentation] Checking Flows on switch s1 and s3 - Verify flowEntryPathPolicy OF10 ${in_port} ${out_before_pathpolicy} - -Add a flowcondition flowcond_path - [Documentation] Create a flowcondition flowcond_path - ${inet4}= Create Dictionary src=10.0.0.1 dst=10.0.0.2 protocol=1 - ${inetMatch}= Create Dictionary inet4=${inet4} - ${ethernet}= Create Dictionary src=ca:9e:58:0c:1e:f0 dst=ba:bd:0f:e3:a8:c8 type=2048 - ${matchElement}= Create Dictionary index=1 ethernet=${ethernet} inetMatch=${inetMatch} - @{matchlist} Create List ${matchElement} - ${flowcond_data}= Create Dictionary name=flowcond_path match=${matchlist} - Add a flowcondition flowcond_path ${flowcond_data} - -Add a pathmap - [Documentation] Create a pathmap in the vtn - Add a pathmap ${pathmapdata} - -Get a pathmap - [Documentation] Retrieve a pathmap in the vtn - Get a pathmap - -Add a pathpolicy - [Documentation] Create a pathpolicy in the vtn - Add a pathpolicy ${pathpolicydata} - -Get a pathpolicy - [Documentation] Retrieve a pathpolicy in the vtn - Get a pathpolicy - -Ping h1 to h2 after path policy - [Documentation] Ping h1 to h2, verify no packet loss - Mininet Ping Should Succeed h1 h2 - -Verify flowEntryAfterPathPolicy - [Documentation] Checking Flows on switch s1 and s3 - Verify flowEntryPathPolicy OF10 ${in_port} ${out_after_pathpolicy} - -Delete a pathmap - [Documentation] Delete a pathmap - Delete a pathmap - -Get a pathmap after delete - [Documentation] Retrieve a pathmap in the vtn after delete to check whether it is deleted properly - Get a pathmap after delete - -Delete a pathpolicy - [Documentation] Delete a pathpolicy - Delete a pathpolicy - -Get a pathpolicy after delete - [Documentation] Retrieve a pathpolicy in the vtn after delete to check whether it is deleted properly - Get a pathpolicy after delete - -Delete a flowcondition - [Documentation] Delete a flowcondition - Delete a flowcondition flowcond_path - -Delete a vtn Tenant_path - [Documentation] Delete a vtn Tenant_path - Delete a vtn Tenant_path diff --git a/csit/suites/vtn/VTN_Mgr_OF10/020__vtn_pathmap_pathpolicy.robot b/csit/suites/vtn/VTN_Mgr_OF10/020__vtn_pathmap_pathpolicy.robot new file mode 100644 index 0000000000..08123f7de8 --- /dev/null +++ b/csit/suites/vtn/VTN_Mgr_OF10/020__vtn_pathmap_pathpolicy.robot @@ -0,0 +1,102 @@ +*** Settings *** +Documentation Test suite for VTN Manager PathPolicy using OF10 +Suite Setup Start PathSuiteVtnMaTestOF10 +Suite Teardown Stop PathSuiteVtnMaTest +Resource ../../../libraries/VtnMaKeywords.robot + +*** Variables *** +${pathmapdata} {"input":{"tenant-name":"Tenant_path","path-map-list":[{"condition":"flowcond_path","policy":"1","index": "1","idle-timeout":"300","hard-timeout":"0"}]}} + +${pathpolicydata} {"input":{"operation":"SET","id": "1","default-cost": "10000","vtn-path-cost": [{"port-desc":"openflow:1,3,s1-eth3","cost":"1000"},{"port-desc":"openflow:4,2,s4-eth2","cost":"1000"},{"port-desc":"openflow:3,3,s3-eth3","cost":"100000"}]}} + + +*** Test Cases *** +Check if switch1 detected + [Documentation] Check if openflow:1 is detected + BuiltIn.Wait_Until_Keyword_Succeeds 12 3 Fetch vtn switch inventory openflow:1 + +Check if switch2 detected + [Documentation] Check if openflow:2 is detected + BuiltIn.Wait_Until_Keyword_Succeeds 3 1 Fetch vtn switch inventory openflow:2 + +Check if switch3 detected + [Documentation] Check if openflow:3 is detected + BuiltIn.Wait_Until_Keyword_Succeeds 3 1 Fetch vtn switch inventory openflow:3 + +Check if switch4 detected + [Documentation] Check if openflow:4 is detected + BuiltIn.Wait_Until_Keyword_Succeeds 3 1 Fetch vtn switch inventory openflow:4 + +Add a vtn Tenant_path + [Documentation] Add a vtn Tenant_path + Add a vtn Tenant_path + +Add a vBridge vBridge1 + [Documentation] Add a vBridge vBridge1 in vtn Tenant_path + Add a vBridge Tenant_path vBridge1 + +Add a interface If1_path + [Documentation] Add a interface if1_path into vBrdige vBridge1 + Add a interface Tenant_path vBridge1 if1_path + +Add a portmap for interface if1_path + [Documentation] Create a portmap on Interface if1 of vBridge1 + Add a portmap Tenant_path vBridge1 if1_path openflow:1 s1-eth1 + +Add a interface If2_path + [Documentation] Add a interface if2_path into vBrdige vBridge1 + Add a interface Tenant_path vBridge1 if2_path + +Add a portmap for interface if2_path + [Documentation] Create a portmap on Interface if2_path of vBridge1 + Add a portmap Tenant_path vBridge1 if2_path openflow:3 s3-eth3 + +Ping h1 to h2 before path policy + [Documentation] Ping h1 to h2, verify no packet loss + Wait_Until_Keyword_Succeeds 20s 1s Mininet Ping Should Succeed h1 h2 + +Verify flowEntryBeforePathPolicy + [Documentation] Checking Flows on switch s1 and s3 + [Tags] exclude + Verify flowEntryPathPolicy OF10 ${in_port} ${out_before_pathpolicy} + +Add a flowcondition flowcond_path + [Documentation] Create a flowcondition flowcond_path + Add a flowcondition flowcond_path + +Add a pathmap + [Documentation] Create a pathmap in the vtn + Add a pathmap ${pathmapdata} + +Add a pathpolicy + [Documentation] Create a pathpolicy in the vtn + Add a pathpolicy ${pathpolicydata} + +Get a pathpolicy + [Documentation] Retrieve a pathpolicy in the vtn + Get a pathpolicy ${policy_id} + +Ping h1 to h2 after path policy + [Documentation] Ping h1 to h2, verify no packet loss + Wait_Until_Keyword_Succeeds 20s 1s Mininet Ping Should Succeed h1 h2 + +Verify flowEntryAfterPathPolicy + [Documentation] Checking Flows on switch s1 and s3 + [Tags] exclude + Verify flowEntryPathPolicy OF10 ${in_port} ${out_after_pathpolicy} + +Delete a pathmap + [Documentation] Delete a pathmap + Delete a pathmap Tenant_path + +Delete a pathpolicy + [Documentation] Delete a pathpolicy + Delete a pathpolicy ${policy_id} + +Delete a flowcondition + [Documentation] Delete a flowcondition + Remove flowcondition flowcond_path + +Delete a vtn Tenant_path + [Documentation] Delete a vtn Tenant_path + Delete a vtn Tenant_path diff --git a/csit/suites/vtn/VTN_Mgr_OF13/010__vtn_manager_flowfilter.robot b/csit/suites/vtn/VTN_Mgr_OF13/010__vtn_manager_flowfilter.robot index 33017248ea..77295c63f2 100644 --- a/csit/suites/vtn/VTN_Mgr_OF13/010__vtn_manager_flowfilter.robot +++ b/csit/suites/vtn/VTN_Mgr_OF13/010__vtn_manager_flowfilter.robot @@ -2,19 +2,20 @@ Documentation Test suite for VTN Manager using OF13 Suite Setup Start SuiteVtnMaTest Suite Teardown Stop SuiteVtnMaTest -Force Tags exclude Resource ../../../libraries/VtnMaKeywords.robot *** Variables *** -${flowfilterInetdata} {"index":1,"condition":"cond1","filterType":{"pass":{}},"actions":[{"inet4src":{"address":"10.0.0.1"}},{"inet4dst":{"address":"10.0.0.3"}}]} -${flowfilterInetdropdata} {"index":1,"condition":"cond1","filterType":{"drop":{}},"actions":[{"inet4src":{"address":"10.0.0.1"}},{"inet4dst":{"address":"10.0.0.3"}}]} -${flowfilterIcmpCodedata} {"index":2,"condition":"cond1","filterType":{"pass":{}},"actions":[{"icmpcode":{"code":9}}]} -${flowfilterTpsrcTpdstdata} {"index":3,"condition":"cond1","filterType":{"pass":{}},"actions":[{"tpsrc":{"port":"5"}},{"tpdst":{"port":"10"}}]} -${flowfilterDscpdata} {"index":6,"condition":"cond1","filterType":{"pass":{}},"actions":[{"dscp": {"dscp": 10}}]} -${macmap_data} {"machost": [{"address": "0e:d5:e3:40:a3:f0", "vlan": "0"},{"address": "9a:dd:b0:8a:de:2f", "vlan": "0"}]} -${flowfiltervlanpcp} {"index":7,"condition":"cond1","filterType":{"pass":{}},"actions":[{"inet4src":{"address":"10.0.0.1"}},{"inet4dst":{"address":"10.0.0.3"}},{"icmpcode":{"code":1}},{"vlanpcp":{"priority":3}}]} -${vtn_flowfilterInetdata} {"index":8,"condition":"cond1","filterType":{"pass":{}},"actions":[{"inet4src":{"address":"10.0.0.1"}},{"inet4dst":{"address":"10.0.0.3"}}]} -${vbr_flowfilterInetdata} {"index":9,"condition":"cond1","filterType":{"pass":{}},"actions":[{"inet4src":{"address":"10.0.0.1"}},{"inet4dst":{"address":"10.0.0.3"}}]} +${flowfilterInetdata} "vtn-flow-filter":[{"condition":"cond_1","vtn-pass-filter":{},"vtn-flow-action":[{"order": "1","vtn-set-inet-src-action":{"ipv4-address":"10.0.0.1/32"}},{"order": "2","vtn-set-inet-dst-action":{"ipv4-address":"10.0.0.3/32"}}],"index": "1"}] + +${flowfilterInetdropdata} "vtn-flow-filter":[{"condition":"cond_1","vtn-drop-filter":{},"vtn-flow-action":[{"order": "1","vtn-set-inet-src-action":{"ipv4-address":"10.0.0.1/32"}},{"order": "2","vtn-set-inet-dst-action":{"ipv4-address":"10.0.0.3/32"}}],"index": "1"}] + +${flowfilterIcmpCodedata} "vtn-flow-filter":[{"condition": "cond_1","vtn-pass-filter": {},"vtn-flow-action":[{ "order":"1","vtn-set-icmp-code-action":{"code":"9"}}],"index":"2"}] + +${flowfilterTpsrcTpdstdata} "vtn-flow-filter": [{"condition": "cond_1","vtn-pass-filter": {},"vtn-flow-action": [{"order": "1","vtn-set-port-src-action": {"port": "5"}},{"order": "2","vtn-set-port-dst-action": {"port": "10"}}],"index": "3"}] + +${flowfilterDscpdata} "vtn-flow-filter":[{"condition": "cond_1","vtn-pass-filter": {},"vtn-flow-action": [{"order": "1","vtn-set-inet-dscp-action": {"dscp":"10"}}],"index":"6"}] + +${flowfiltervlanpcp} "vtn-flow-filter":[{"condition":"cond_1","vtn-pass-filter":{},"vtn-flow-action":[{"order":"1","vtn-set-inet-src-action":{"ipv4-address":"10.0.0.1/32"}},{"order":"2","vtn-set-inet-dst-action":{"ipv4-address":"10.0.0.3/32"}},{"order":"3","vtn-set-icmp-code-action":{"code":"1"}},{"order":"4","vtn-set-vlan-pcp-action":{"vlan-pcp":"3"}}],"index":"3"}] *** Test Cases *** Check if switch1 detected @@ -31,104 +32,89 @@ Check if switch3 detected Add a vtn Tenant1 [Documentation] Add a vtn Tenant1 - Add a vtn Tenant1 {"idleTimeout": "200","hardTimeout": "600","description": "Virtual Tenant1 for Hackfest network"} + Add a vtn Tenant1 Add a vBridge vBridge1 [Documentation] Add a vBridge vBridge1 in vtn Tenant1 - Add a vBridge Tenant1 vBridge1 {"ageInterval": "300","description": "vBridge1 for Tenant1"} + Add a vBridge Tenant1 vBridge1 Add a interface If1 [Documentation] Add a interface if1 into vBridge vBridge1 - Add a interface Tenant1 vBridge1 if1 {"enabled": "true","description": "Interface1 for vBridge1 for Tenant1"} + Add a interface Tenant1 vBridge1 if1 Add a interface if2 [Documentation] Add a interface if2 into vBridge vBridge1 - Add a interface Tenant1 vBridge1 if2 {"enabled": "true","description": "Interface2 for vBridge1 for Tenant1"} + Add a interface Tenant1 vBridge1 if2 Add a portmap for interface if1 [Documentation] Create a portmap on Interface if1 of vBridge1 - ${node} Create Dictionary type=OF id=00:00:00:00:00:00:00:02 - ${port} Create Dictionary name=s2-eth1 - ${portmap_data} Create Dictionary node=${node} port=${port} - Add a portmap Tenant1 vBridge1 if1 ${portmap_data} + Add a portmap Tenant1 vBridge1 if1 openflow:2 s2-eth1 Add a portmap for interface if2 [Documentation] Create a portmap on Interface if2 of vBridge1 - ${node} Create Dictionary type=OF id=00:00:00:00:00:00:00:03 - ${port} Create Dictionary name=s3-eth1 - ${portmap_data} Create Dictionary node=${node} port=${port} - Add a portmap Tenant1 vBridge1 if2 ${portmap_data} + Add a portmap Tenant1 vBridge1 if2 openflow:3 s3-eth1 Ping h1 to h3 [Documentation] Ping h1 to h3, verify no packet loss - Mininet Ping Should Succeed h1 h3 + Wait_Until_Keyword_Succeeds 20s 1s Mininet Ping Should Succeed h1 h3 Add a vBridge vBridge2 [Documentation] Add a vBridge vBridge2 in vtn Tenant1 - Add a vBridge Tenant1 vBridge2 {} + Add a vBridge Tenant1 vBridge2 Add a interface If3 [Documentation] Add a interface if3 into vBrdige vBridge1 - Add a interface Tenant1 vBridge1 if3 {} + Add a interface Tenant1 vBridge1 if3 Add a interface if4 [Documentation] Add a interface if4 into vBrdige vBridge1 - Add a interface Tenant1 vBridge1 if4 {} + Add a interface Tenant1 vBridge1 if4 Add a portmap for interface if3 [Documentation] Create a portmap on Interface if3 of vBridge1 - ${node} Create Dictionary type=OF id=00:00:00:00:00:00:00:02 - ${port} Create Dictionary name=s2-eth2 - ${portmap_data} Create Dictionary node=${node} port=${port} - Add a portmap Tenant1 vBridge1 if3 ${portmap_data} + Add a portmap Tenant1 vBridge1 if3 openflow:2 s2-eth2 Add a portmap for interface if4 [Documentation] Create a portmap on Interface if4 of vBridge1 - ${node} Create Dictionary type=OF id=00:00:00:00:00:00:00:03 - ${port} Create Dictionary name=s3-eth2 - ${portmap_data} Create Dictionary node=${node} port=${port} - Add a portmap Tenant1 vBridge1 if4 ${portmap_data} + Add a portmap Tenant1 vBridge1 if4 openflow:3 s3-eth2 Ping h2 to h4 [Documentation] Ping h2 to h4, verify no packet loss - Mininet Ping Should Succeed h2 h4 + Wait_Until_Keyword_Succeeds 20s 1s Mininet Ping Should Succeed h2 h4 + +Add a flowcondition + [Documentation] Create a flowcondition cond_1 using restconfig api + Add a flowcondition cond_1 Add a macmap [Documentation] Create a macmap on vBridge vBridge1 + [Tags] exclude Add a macmap Tenant1 vBridge1 ${macmap_data} Get flow [Documentation] Get flow of a vtn Tenant1 + [Tags] exclude Get flow Tenant1 -Add a flowcondition cond1 - [Documentation] Create a flowcondition cond1 - ${inet4}= Create Dictionary src=10.0.0.1 dst=10.0.0.3 - ${inetMatch}= Create Dictionary inet4=${inet4} - ${matchElement}= Create Dictionary index=1 inetMatch=${inetMatch} - @{matchlist} Create List ${matchElement} - ${flowcond_data}= Create Dictionary name=cond1 match=${matchlist} - Add a flowcondition cond1 ${flowcond_data} - Add a flowfilter with inet4src and inet4dst [Documentation] Create a flowfilter with inet4 and Verify ping - Add a flowfilter Tenant1 vBridge1 if1 ${flowfilterInetdata} ${index} - Mininet Ping Should Succeed h1 h3 + Add a vbrif flowfilter Tenant1 vBridge1 if1 ${flowfilterInetdata} + Wait_Until_Keyword_Succeeds 20s 1s Mininet Ping Should Succeed h1 h3 Add a flowfilter with Icmp code [Documentation] Create a flowfilter with icmp code and Verify ping - Update a flowfilter Tenant1 vBridge1 if1 ${flowfilterIcmpCodedata} ${index} - Mininet Ping Should Succeed h1 h3 + Add a vbrif flowfilter Tenant1 vBridge1 if1 ${flowfilterIcmpCodedata} + Wait_Until_Keyword_Succeeds 20s 1s Mininet Ping Should Succeed h1 h3 Add a flowfilter with tpsrc and tpdst [Documentation] Create a flowfilter with tpsrc and tpdst and Verify ping - Update a flowfilter Tenant1 vBridge1 if1 ${flowfilterTpsrcTpdstdata} ${index} - Mininet Ping Should Succeed h1 h3 + Add a vbrif flowfilter Tenant1 vBridge1 if1 ${flowfilterTpsrcTpdstdata} + Wait_Until_Keyword_Succeeds 20s 1s Mininet Ping Should Succeed h1 h3 Add a flowfilter with dscp [Documentation] Create a flowfilter with dscp and Verify ping - Update a flowfilter Tenant1 vBridge1 if1 ${flowfilterDscpdata} ${index} - Mininet Ping Should Succeed h1 h3 + Add a vbrif flowfilter Tenant1 vBridge1 if1 ${flowfilterDscpdata} + Wait_Until_Keyword_Succeeds 20s 1s Mininet Ping Should Succeed h1 h3 Verify Flow Entry for Inet Flowfilter [Documentation] Verify Flow Entry for Inet Flowfilter @@ -136,31 +122,33 @@ Verify Flow Entry for Inet Flowfilter Add a flowfilter with vlanpcp [Documentation] Create a flowfilter with vlanpcp and Verify ping - Update a flowfilter Tenant1 vBridge1 if1 ${flowfiltervlanpcp} ${index} - Mininet Ping Should Succeed h1 h3 + Add a vbrif flowfilter Tenant1 vBridge1 if1 ${flowfiltervlanpcp} + Wait_Until_Keyword_Succeeds 20s 1s Mininet Ping Should Succeed h1 h3 Add a flowfilter_vtn with inet4src and inet4dst [Documentation] Create a vtn_flowfilter with inet4 and Verify ping - Add a flowfilter_vtn Tenant1 ${vtn_flowfilterInetdata} ${index} - Mininet Ping Should Succeed h1 h3 + Add a vtn flowfilter Tenant1 ${flowfilterInetdata} + Wait_Until_Keyword_Succeeds 20s 1s Mininet Ping Should Succeed h1 h3 Add a flowfilter_vbr with inet4src and inet4dst [Documentation] Create a vbr_flowfilter with inet4 and Verify ping - Add a flowfilter_vbr Tenant1 vBridge1 ${vbr_flowfilterInetdata} ${index} - Mininet Ping Should Succeed h1 h3 + Add a vbr flowfilter Tenant1 vBridge1 ${flowfilterInetdata} + Wait_Until_Keyword_Succeeds 20s 1s Mininet Ping Should Succeed h1 h3 Add a flowfilter with inet4 for drop [Documentation] Create a flowfilter with inet4 for drop action and Verify no pinging - Add a flowfilter for drop Tenant1 vBridge1 if1 ${flowfilterInetdropdata} ${index} - Mininet Ping Should Not Succeed h1 h3 + [Tags] exclude + Add a vbrif flowfilter Tenant1 vBridge1 if1 ${flowfilterInetdropdata} + Wait_Until_Keyword_Succeeds 20s 1s Mininet Ping Should Not Succeed h1 h3 Verify Removed Flow Entry For Inet After Drop Action [Documentation] Verify no flows between the hosts after drop + [Tags] exclude Verify Removed Flow Entry for Inet Drop Flowfilter Delete a flowcondition [Documentation] Delete a flowcondition - Delete a flowcondition cond1 + Remove flowcondition cond_1 Delete a vtn Tenant1 [Documentation] Delete a vtn Tenant1 diff --git a/csit/suites/vtn/VTN_Mgr_OF13/010__vtn_manager_pathpolicy.robot b/csit/suites/vtn/VTN_Mgr_OF13/010__vtn_manager_pathpolicy.robot deleted file mode 100644 index 83f0d787a9..0000000000 --- a/csit/suites/vtn/VTN_Mgr_OF13/010__vtn_manager_pathpolicy.robot +++ /dev/null @@ -1,123 +0,0 @@ -*** Settings *** -Documentation Test suite for VTN Manager PathPolicy using OF13 -Suite Setup Start PathSuiteVtnMaTest -Suite Teardown Stop PathSuiteVtnMaTest -Force Tags exclude -Resource ../../../libraries/VtnMaKeywords.robot - -*** Variables *** -${pathmapdata} {"index": 1,"condition":"flowcond_path","policy":1,"idleTimeout": 300,"hardTimeout": 0} -${pathpolicydata} {"id": 1,"default": 100000,"cost": [{"location": {"node": {"type": "OF","id": "00:00:00:00:00:00:00:01"},"port": {"type": "OF","id": "3","name": "s1-eth3"}},"cost": 1000},{"location": {"node": {"type": "OF","id": "00:00:00:00:00:00:00:04"},"port": {"type": "OF","id": "2","name": "s4-eth2"}},"cost": 1000},{"location": {"node": {"type": "OF", "id": "00:00:00:00:00:00:00:03"},"port": {"type": "OF","id": "3","name": "s3-eth3"}},"cost": 100000}]} - -*** Test Cases *** -Check if switch1 detected - [Documentation] Check if openflow:1 is detected - BuiltIn.Wait_Until_Keyword_Succeeds 12 3 Fetch vtn switch inventory openflow:1 - -Check if switch2 detected - [Documentation] Check if openflow:2 is detected - BuiltIn.Wait_Until_Keyword_Succeeds 3 1 Fetch vtn switch inventory openflow:2 - -Check if switch3 detected - [Documentation] Check if openflow:3 is detected - BuiltIn.Wait_Until_Keyword_Succeeds 3 1 Fetch vtn switch inventory openflow:3 - -Check if switch4 detected - [Documentation] Check if openflow:4 is detected - BuiltIn.Wait_Until_Keyword_Succeeds 3 1 Fetch vtn switch inventory openflow:4 - -Add a vtn Tenant_path - [Documentation] Add a vtn Tenant_path - Add a vtn Tenant_path {"idleTimeout": "200","hardTimeout": "600","description": "Virtual Tenant_path for Hackfest network"} - -Add a vBridge vBridge1 - [Documentation] Add a vBridge vBridge1 in vtn Tenant_path - Add a vBridge Tenant_path vBridge1 {"ageInterval": "300","description": "vBridge1 for Tenant_path"} - -Add a interface If1_path - [Documentation] Add a interface if1_path into vBrdige vBridge1 - Add a interface Tenant_path vBridge1 if1_path {} - -Add a portmap for interface if1_path - [Documentation] Create a portmap on Interface if1 of vBridge1 - ${node} Create Dictionary type=OF id=00:00:00:00:00:00:00:01 - ${port} Create Dictionary name=s1-eth1 type=OF id=1 - ${portmap_data} Create Dictionary node=${node} port=${port} - Add a portmap Tenant_path vBridge1 if1_path ${portmap_data} - -Add a interface If2_path - [Documentation] Add a interface if2_path into vBrdige vBridge1 - Add a interface Tenant_path vBridge1 if2_path {} - -Add a portmap for interface if2_path - [Documentation] Create a portmap on Interface if2_path of vBridge1 - ${node} Create Dictionary type=OF id=00:00:00:00:00:00:00:03 - ${port} Create Dictionary name=s3-eth3 type=OF id=3 - ${portmap_data} Create Dictionary node=${node} port=${port} - Add a portmap Tenant_path vBridge1 if2_path ${portmap_data} - -Ping h1 to h2 before path policy - [Documentation] Ping h1 to h2, verify no packet loss - Mininet Ping Should Succeed h1 h2 - -Verify flowEntryBeforePathPolicy - [Documentation] Checking Flows on switch s1 and s3 - Verify flowEntryPathPolicy OF13 ${in_port} ${out_before_pathpolicy} - -Add a flowcondition flowcond_path - [Documentation] Create a flowcondition flowcond_path - ${inet4}= Create Dictionary src=10.0.0.1 dst=10.0.0.2 protocol=1 - ${inetMatch}= Create Dictionary inet4=${inet4} - ${ethernet}= Create Dictionary src=ca:9e:58:0c:1e:f0 dst=ba:bd:0f:e3:a8:c8 type=2048 - ${matchElement}= Create Dictionary index=1 ethernet=${ethernet} inetMatch=${inetMatch} - @{matchlist} Create List ${matchElement} - ${flowcond_data}= Create Dictionary name=flowcond_path match=${matchlist} - Add a flowcondition flowcond_path ${flowcond_data} - -Add a pathmap - [Documentation] Create a pathmap in the vtn - Add a pathmap ${pathmapdata} - -Get a pathmap - [Documentation] Retrieve a pathmap in the vtn - Get a pathmap - -Add a pathpolicy - [Documentation] Create a pathpolicy in the vtn - Add a pathpolicy ${pathpolicydata} - -Get a pathpolicy - [Documentation] Retrieve a pathpolicy in the vtn - Get a pathpolicy - -Ping h1 to h2 after path policy - [Documentation] Ping h1 to h2, verify no packet loss - Mininet Ping Should Succeed h1 h2 - -Verify flowEntryAfterPathPolicy - [Documentation] Checking Flows on switch s1 and s3 - Verify flowEntryPathPolicy OF13 ${in_port} ${out_after_pathpolicy} - -Delete a pathmap - [Documentation] Delete a pathmap - Delete a pathmap - -Get a pathmap after delete - [Documentation] Retrieve a pathmap in the vtn after delete to check whether it is deleted properly - Get a pathmap after delete - -Delete a pathpolicy - [Documentation] Delete a pathpolicy - Delete a pathpolicy - -Get a pathpolicy after delete - [Documentation] Retrieve a pathpolicy in the vtn after delete to check whether it is deleted properly - Get a pathpolicy after delete - -Delete a flowcondition - [Documentation] Delete a flowcondition - Delete a flowcondition flowcond_path - -Delete a vtn Tenant_path - [Documentation] Delete a vtn Tenant_path - Delete a vtn Tenant_path diff --git a/csit/suites/vtn/VTN_Mgr_OF13/020__vtn_pathmap_pathpolicy.robot b/csit/suites/vtn/VTN_Mgr_OF13/020__vtn_pathmap_pathpolicy.robot new file mode 100644 index 0000000000..1598137453 --- /dev/null +++ b/csit/suites/vtn/VTN_Mgr_OF13/020__vtn_pathmap_pathpolicy.robot @@ -0,0 +1,100 @@ +*** Settings *** +Documentation Test suite for VTN Manager PathPolicy using OF13 +Suite Setup Start PathSuiteVtnMaTest +Suite Teardown Stop PathSuiteVtnMaTest +Resource ../../../libraries/VtnMaKeywords.robot + +*** Variables *** +${pathmapdata} {"input":{"tenant-name":"Tenant_path","path-map-list":[{"condition":"flowcond_path","policy":"1","index": "1","idle-timeout":"300","hard-timeout":"0"}]}} + +${pathpolicydata} {"input":{"operation":"SET","id": "1","default-cost": "10000","vtn-path-cost": [{"port-desc":"openflow:1,3,s1-eth3","cost":"1000"},{"port-desc":"openflow:4,2,s4-eth2","cost":"1000"},{"port-desc":"openflow:3,3,s3-eth3","cost":"100000"}]}} + + +*** Test Cases *** +Check if switch1 detected + [Documentation] Check if openflow:1 is detected + BuiltIn.Wait_Until_Keyword_Succeeds 12 3 Fetch vtn switch inventory openflow:1 + +Check if switch2 detected + [Documentation] Check if openflow:2 is detected + BuiltIn.Wait_Until_Keyword_Succeeds 3 1 Fetch vtn switch inventory openflow:2 + +Check if switch3 detected + [Documentation] Check if openflow:3 is detected + BuiltIn.Wait_Until_Keyword_Succeeds 3 1 Fetch vtn switch inventory openflow:3 + +Check if switch4 detected + [Documentation] Check if openflow:4 is detected + BuiltIn.Wait_Until_Keyword_Succeeds 3 1 Fetch vtn switch inventory openflow:4 + +Add a vtn Tenant_path + [Documentation] Add a vtn Tenant_path + Add a vtn Tenant_path + +Add a vBridge vBridge1 + [Documentation] Add a vBridge vBridge1 in vtn Tenant_path + Add a vBridge Tenant_path vBridge1 + +Add a interface If1_path + [Documentation] Add a interface if1_path into vBrdige vBridge1 + Add a interface Tenant_path vBridge1 if1_path + +Add a portmap for interface if1_path + [Documentation] Create a portmap on Interface if1 of vBridge1 + Add a portmap Tenant_path vBridge1 if1_path openflow:1 s1-eth1 + +Add a interface If2_path + [Documentation] Add a interface if2_path into vBrdige vBridge1 + Add a interface Tenant_path vBridge1 if2_path + +Add a portmap for interface if2_path + [Documentation] Create a portmap on Interface if2_path of vBridge1 + Add a portmap Tenant_path vBridge1 if2_path openflow:3 s3-eth3 + +Ping h1 to h2 before path policy + [Documentation] Ping h1 to h2, verify no packet loss + Wait_Until_Keyword_Succeeds 20s 1s Mininet Ping Should Succeed h1 h2 + +Verify flowEntryBeforePathPolicy + [Documentation] Checking Flows on switch s1 and s3 + Verify flowEntryPathPolicy OF13 ${in_port} ${out_before_pathpolicy} + +Add a flowcondition flowcond_path + [Documentation] Create a flowcondition flowcond_path + Add a flowcondition flowcond_path + +Add a pathmap + [Documentation] Create a pathmap in the vtn + Add a pathmap ${pathmapdata} + +Add a pathpolicy + [Documentation] Create a pathpolicy in the vtn + Add a pathpolicy ${pathpolicydata} + +Get a pathpolicy + [Documentation] Retrieve a pathpolicy in the vtn + Get a pathpolicy ${policy_id} + +Ping h1 to h2 after path policy + [Documentation] Ping h1 to h2, verify no packet loss + Wait_Until_Keyword_Succeeds 20s 1s Mininet Ping Should Succeed h1 h2 + +Verify flowEntryAfterPathPolicy + [Documentation] Checking Flows on switch s1 and s3 + Verify flowEntryPathPolicy OF13 ${in_port} ${out_after_pathpolicy} + +Delete a pathmap + [Documentation] Delete a pathmap + Delete a pathmap Tenant_path + +Delete a pathpolicy + [Documentation] Delete a pathpolicy + Delete a pathpolicy ${policy_id} + +Delete a flowcondition + [Documentation] Delete a flowcondition + Remove flowcondition flowcond_path + +Delete a vtn Tenant_path + [Documentation] Delete vtn Tenant_path + Delete a vtn Tenant_path -- 2.36.6