VTN Manager OpenFlow 10 Specification Testing in CSIT 22/28322/11
authorpriya.ramasubbu <priya.ramasubbu@hcl.com>
Tue, 13 Oct 2015 15:41:58 +0000 (21:11 +0530)
committerGerrit Code Review <gerrit@opendaylight.org>
Tue, 20 Oct 2015 22:49:09 +0000 (22:49 +0000)
    * Modify 010__vtn_manager.robot file in both VTN_Mgr_OF10 and VTN_Mgr_OF13
    * Add new functions in VtnMaKeywords to verify the flows on switch
    * Add new robot files for flowfilter and flowcondition in OF10
    * Pathmap and Pathpolicy functionality Tested in Open Flow 10 Specification
    * Add Tags exclude in 010__vtn_manager_pathpolicy.robot file due to missing of in_port in dumpflows.
    * Add new robot files for data flow in OF10

Change-Id: Ieb090a894d778e8e6b986351889ae7f7e68f0146
Signed-off-by: priya.ramasubbu <priya.ramasubbu@hcl.com>
csit/libraries/VtnMaKeywords.robot
csit/suites/vtn/VTN_Mgr_OF10/010__vtn_manager.robot
csit/suites/vtn/VTN_Mgr_OF10/010__vtn_manager_dataflow.robot [new file with mode: 0644]
csit/suites/vtn/VTN_Mgr_OF10/010__vtn_manager_flowfilter.robot [new file with mode: 0644]
csit/suites/vtn/VTN_Mgr_OF10/010__vtn_manager_pathpolicy.robot [new file with mode: 0644]
csit/suites/vtn/VTN_Mgr_OF13/010__vtn_manager.robot
csit/suites/vtn/VTN_Mgr_OF13/010__vtn_manager_dataflow.robot
csit/suites/vtn/VTN_Mgr_OF13/010__vtn_manager_pathpolicy.robot

index 110bbf9084c682504fee816aa4a296595956ffc6..af13e4db4eef08508add95487e8092607d8e4414 100644 (file)
@@ -15,7 +15,8 @@ ${REST_CONTEXT_VTNS}    controller/nb/v2/vtn/default/vtns
 ${REST_CONTEXT}    controller/nb/v2/vtn/default
 ${VERSION_VTN}    controller/nb/v2/vtn/version
 ${VTN_INVENTORY}    restconf/operational/vtn-inventory:vtn-nodes
-${DUMPFLOWS}      dpctl dump-flows -O OpenFlow13
+${DUMPFLOWS_OF10}    dpctl dump-flows -O OpenFlow10
+${DUMPFLOWS_OF13}    dpctl dump-flows -O OpenFlow13
 ${index}          7
 @{FLOWELMENTS}    nw_src=10.0.0.1    nw_dst=10.0.0.3    actions=drop
 @{BRIDGE1_DATAFLOW}    "reason":"PORTMAPPED"    "path":{"tenant":"Tenant1","bridge":"vBridge1","interface":"if2"}
@@ -24,7 +25,8 @@ ${vlanmap_bridge1}    {"vlan": "200"}
 ${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}    sudo mn --controller=remote,ip=${CONTROLLER} --custom topo-3sw-2host_multipath.py --topo pathpolicytopo --switch ovsk,protocols=OpenFlow13
+${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
 @{PATHPOLICY_ATTR}    "id":"1"    "type":"OF"    "name":"s4-eth2"
@@ -134,7 +136,9 @@ Get a pathpolicy
     \    should Contain    ${resp.content}    ${pathpolicyElement}
 
 Verify flowEntryBeforePathPolicy
+    [Arguments]    ${OF_VERSION}
     [Documentation]    Checking Flows on switch S1 and switch S3 before applying path policy
+    ${DUMPFLOWS}=    Set Variable If    "${OF_VERSION}"=="OF10"    ${DUMPFLOWS_OF10}    ${DUMPFLOWS_OF13}
     write    ${DUMPFLOWS}
     ${result}    Read Until    mininet>
     @{list_to_verify}    Create List    in_port=1    actions=output:2    actions=output:3
@@ -142,7 +146,9 @@ Verify flowEntryBeforePathPolicy
     \    should Contain    ${result}    ${flowverifyElement}
 
 Verify flowEntryAfterPathPolicy
+    [Arguments]    ${OF_VERSION}
     [Documentation]    Checking Flows on switch S1 and switch S3 after applying path policy
+    ${DUMPFLOWS}=    Set Variable If    "${OF_VERSION}"=="OF10"    ${DUMPFLOWS_OF10}    ${DUMPFLOWS_OF13}
     write    ${DUMPFLOWS}
     ${result}    Read Until    mininet>
     @{list_to_verify}    Create List    in_port=1    actions=output:3    in_port=2
@@ -152,7 +158,12 @@ Verify flowEntryAfterPathPolicy
 Start PathSuiteVtnMaTest
     [Documentation]    Start VTN Manager Test Suite and Mininet
     Start SuiteVtnMaTest
-    Start Mininet    ${MININET}    ${pathpolicy_topo}    ${custom}
+    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.
@@ -256,17 +267,27 @@ Remove a portmap
     Should Be Equal As Strings    ${resp.status_code}    200
 
 Verify FlowMacAddress
-    [Arguments]    ${host1}    ${host2}
-    ${booleanValue}=    Run Keyword And Return Status    Verify macaddress    ${host1}    ${host2}
+    [Arguments]    ${host1}    ${host2}    ${OF_VERSION}
+    Run Keyword If    '${OF_VERSION}' == 'OF10'    VerifyFlowsOnOpenFlow    ${host1}    ${host2}    ${DUMPFLOWS_OF10}
+    ...    ELSE    VerifyFlowsOnOpenFlow    ${host1}    ${host2}    ${DUMPFLOWS_OF13}
+
+VerifyFlowsOnOpenFlow
+    [Arguments]    ${host1}    ${host2}    ${DUMPFLOWS}
+    ${booleanValue}=    Run Keyword And Return Status    Verify macaddress    ${host1}    ${host2}    ${DUMPFLOWS}
     Should Be Equal As Strings    ${booleanValue}    True
 
 Verify RemovedFlowMacAddress
-    [Arguments]    ${host1}    ${host2}
-    ${booleanValue}=    Run Keyword And Return Status    Verify macaddress    ${host1}    ${host2}
+    [Arguments]    ${host1}    ${host2}    ${OF_VERSION}
+    Run Keyword If    '${OF_VERSION}' == 'OF10'    VerifyRemovedFlowsOnOpenFlow    ${host1}    ${host2}    ${DUMPFLOWS_OF10}
+    ...    ELSE    VerifyRemovedFlowsOnOpenFlow    ${host1}    ${host2}    ${DUMPFLOWS_OF13}
+
+VerifyRemovedFlowsOnOpenFlow
+    [Arguments]    ${host1}    ${host2}    ${DUMPFLOWS}
+    ${booleanValue}=    Run Keyword And Return Status    Verify macaddress    ${host1}    ${host2}    ${DUMPFLOWS}
     Should Not Be Equal As Strings    ${booleanValue}    True
 
 Verify macaddress
-    [Arguments]    ${host1}    ${host2}
+    [Arguments]    ${host1}    ${host2}    ${DUMPFLOWS}
     write    ${host1} ifconfig -a | grep HWaddr
     ${sourcemacaddr}    Read Until    mininet>
     ${macaddress}=    Split String    ${sourcemacaddr}    ${SPACE}
@@ -336,7 +357,7 @@ Verify Removed Flow Entry for Inet Drop Flowfilter
     Should Be Equal As Strings    ${booleanValue}    True
 
 Verify Actions on Flow Entry
-    write    ${DUMPFLOWS}
+    write    ${DUMPFLOWS_OF13}
     ${result}    Read Until    mininet>
     : FOR    ${flowElement}    IN    @{FLOWELMENTS}
     \    should Contain    ${result}    ${flowElement}
index 419f76de05867a720f71cce7a37eccef3221860e..43dde11d6fbe869b774cf1f4e6638d179f310874 100644 (file)
@@ -1,5 +1,5 @@
 *** Settings ***
-Documentation     Test suite for VTN Manager
+Documentation     Test suite for VTN Manager using OF10
 Suite Setup       Start SuiteVtnMaTest
 Suite Teardown    Stop SuiteVtnMaTest
 Resource          ../../../libraries/VtnMaKeywords.robot
@@ -47,6 +47,10 @@ Add a portmap for interface if2
     ${portmap_data}=    Create Dictionary    node=${node}    port=${port}
     Add a portmap    Tenant1    vBridge1    if2    ${portmap_data}
 
+Ping h1 to h3
+    [Documentation]    Ping h1 to h3, verify no packet loss
+    Mininet Ping Should Succeed    h1    h3
+
 Add a vBridge vBridge2
     [Documentation]    Add a vBridge vBridge2 in vtn Tenant1
     Add a vBridge    Tenant1    vBridge2    {}
@@ -73,14 +77,30 @@ Add a portmap for interface if4
     ${portmap_data}=    Create Dictionary    node=${node}    port=${port}
     Add a portmap    Tenant1    vBridge2    if4    ${portmap_data}
 
-Ping h1 to h3
-    [Documentation]    Ping h1 to h3, verify no packet loss
-    Mininet Ping Should Succeed    h1    h3
-
 Ping h2 to h4
     [Documentation]    Ping h2 to h4, verify no packet loss
     Mininet Ping Should Succeed    h2    h4
 
+Get flow
+    [Documentation]    Get flow of a vtn Tenant1
+    Get flow    Tenant1
+
+Verify FlowMacAddress
+    [Documentation]    Checking Flows on switch
+    [Tags]    Switch
+    Verify FlowMacAddress    h2    h4    OF10
+
+Remove Portmap for If1
+    [Documentation]    Remove portmap for the interface If1
+    ${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}
+    Remove a portmap    Tenant1    vBridge1    if1    ${portmap_data}
+
+Verify RemovedFlowMacAddress
+    [Documentation]    flows will be deleted after the port map is removed
+    Verify RemovedFlowMacAddress    h1    h3    OF10
+
 Delete a vtn Tenant1
     [Documentation]    Delete a vtn Tenant1
     Delete a vtn    Tenant1
diff --git a/csit/suites/vtn/VTN_Mgr_OF10/010__vtn_manager_dataflow.robot b/csit/suites/vtn/VTN_Mgr_OF10/010__vtn_manager_dataflow.robot
new file mode 100644 (file)
index 0000000..09529d3
--- /dev/null
@@ -0,0 +1,110 @@
+*** Settings ***
+Documentation     Test suite for VTN Manager Data Flow using OF10
+Suite Setup       Start SuiteVtnMaTest
+Suite Teardown    Stop SuiteVtnMaTest
+Resource          ../../../libraries/VtnMaKeywords.robot
+
+*** 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
+
+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 vBridge vBridge1
+    [Documentation]    Add a vBridge vBridge1 in vtn Tenant1
+    Add a vBridge    Tenant1    vBridge1    {"ageInterval": "300","description": "vBridge1 for Tenant1"}
+
+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 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 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 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}
+
+Ping h1 to h3
+    [Documentation]    Ping h1 to h3, verify no packet loss
+    Mininet Ping Should Succeed    h1    h3
+
+Verify data flow details For vBridge1
+    [Documentation]    Verify the data flows for the specified tenant and bridge
+    Verify Data Flows    Tenant1    vBridge1
+
+Add a vBridge vBridge2
+    [Documentation]    Add a vBridge vBridge2 in vtn Tenant1
+    Add a vBridge    Tenant1    vBridge2    {}
+
+Add a interface If3
+    [Documentation]    Add a interface if3 into vBrdige vBridge1
+    Add a interface    Tenant1    vBridge2    if3    {}
+
+Add a interface if4
+    [Documentation]    Add a interface if4 into vBrdige vBridge1
+    Add a interface    Tenant1    vBridge2    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    vBridge2    if3    ${portmap_data}
+
+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    vBridge2    if4    ${portmap_data}
+
+Ping h2 to h4
+    [Documentation]    Ping h2 to h4, verify no packet loss
+    Mininet Ping Should Succeed    h2    h4
+
+Verify data flow details for vBridge2
+    [Documentation]    Verify the data flows for the specified tenant and bridge
+    Verify Data Flows    Tenant1    vBridge2
+
+Verify FlowMacAddress
+    [Documentation]    Checking Flows on switch
+    [Tags]    Switch
+    Verify FlowMacAddress    h2    h4    OF10
+
+Remove Portmap for If1
+    [Documentation]    Remove portmap for the interface If1
+    ${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}
+    Remove a portmap    Tenant1    vBridge1    if1    ${portmap_data}
+
+Verify RemovedFlowMacAddress
+    [Documentation]    flows will be deleted after the port map is removed
+    Verify RemovedFlowMacAddress    h1    h3    OF10
+
+Delete a vtn Tenant1
+    [Documentation]    Delete a vtn Tenant1
+    Delete a vtn    Tenant1
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
new file mode 100644 (file)
index 0000000..a2e205a
--- /dev/null
@@ -0,0 +1,162 @@
+*** Settings ***
+Documentation     Test suite for VTN Manager using OF10
+Suite Setup       Start SuiteVtnMaTest
+Suite Teardown    Stop SuiteVtnMaTest
+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"}}]}
+
+*** 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
+
+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 vBridge vBridge1
+    [Documentation]    Add a vBridge vBridge1 in vtn Tenant1
+    Add a vBridge    Tenant1    vBridge1    {"ageInterval": "300","description": "vBridge1 for Tenant1"}
+
+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 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 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 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}
+
+Ping h1 to h3
+    [Documentation]    Ping h1 to h3, verify no packet loss
+    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 interface If3
+    [Documentation]    Add a interface if3 into vBrdige vBridge1
+    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 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 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}
+
+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}
+
+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 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 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 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 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
+
+Verify Flow Entry for Inet Flowfilter
+    [Documentation]    Verify Flow Entry for Inet Flowfilter
+    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 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 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 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
+
+Delete a flowcondition
+    [Documentation]    Delete a flowcondition
+    Delete a flowcondition    cond1
+
+Delete a vtn Tenant1
+    [Documentation]    Delete a 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
new file mode 100644 (file)
index 0000000..19434a0
--- /dev/null
@@ -0,0 +1,128 @@
+*** Settings ***
+Documentation     Test suite for VTN Manager using OF10
+Suite Setup       Start PathSuiteVtnMaTestOF10
+Suite Teardown    Stop PathSuiteVtnMaTest
+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
+    [Tags]    exclude
+    Verify flowEntryBeforePathPolicy    OF10
+
+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
+    [Tags]    exclude
+    Verify flowEntryAfterPathPolicy    OF10
+
+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
+
+
+
+
index 81ba86769f45169dd0cd0292d18d3ec0bad5858d..ea1cdfeb66977a9dcdbbfcfccd7c6f21ae9f3091 100644 (file)
@@ -88,7 +88,7 @@ Get flow
 Verify FlowMacAddress
     [Documentation]    Checking Flows on switch
     [Tags]    Switch
-    Verify FlowMacAddress    h2    h4
+    Verify FlowMacAddress    h2    h4    OF13
 
 Remove Portmap for If1
     [Documentation]    Remove portmap for the interface If1
@@ -99,7 +99,7 @@ Remove Portmap for If1
 
 Verify RemovedFlowMacAddress
     [Documentation]    flows will be deleted after the port map is removed
-    Verify RemovedFlowMacAddress    h1    h3
+    Verify RemovedFlowMacAddress    h1    h3    OF13
 
 Delete a vtn Tenant1
     [Documentation]    Delete a vtn Tenant1
index e0d63664982390c67c499f8e7511d6c91775605b..14edaeea237bf9de1705a33ebc7d50dc775a1d02 100644 (file)
@@ -92,7 +92,7 @@ Verify data flow details for vBridge2
 Verify FlowMacAddress
     [Documentation]    Checking Flows on switch
     [Tags]    Switch
-    Verify FlowMacAddress    h2    h4
+    Verify FlowMacAddress    h2    h4    OF13
 
 Remove Portmap for If1
     [Documentation]    Remove portmap for the interface If1
@@ -103,7 +103,7 @@ Remove Portmap for If1
 
 Verify RemovedFlowMacAddress
     [Documentation]    flows will be deleted after the port map is removed
-    Verify RemovedFlowMacAddress    h1    h3
+    Verify RemovedFlowMacAddress    h1    h3    OF13
 
 Delete a vtn Tenant1
     [Documentation]    Delete a vtn Tenant1
index 94562db190a2edbf6a82b84f362a0603d185be18..f22ca8f5680e5344726873fcdac4001b3b68e164 100644 (file)
@@ -1,5 +1,5 @@
 *** Settings ***
-Documentation     Test suite for VTN Manager using OF13
+Documentation     Test suite for VTN Manager PathPolicy using OF13
 Suite Setup       Start PathSuiteVtnMaTest
 Suite Teardown    Stop PathSuiteVtnMaTest
 Resource          ../../../libraries/VtnMaKeywords.robot
@@ -61,8 +61,8 @@ Ping h1 to h2 before path policy
 
 Verify flowEntryBeforePathPolicy
     [Documentation]    Checking Flows on switch s1 and s3
-    [Tags]    Switch
-    Verify flowEntryBeforePathPolicy
+    [Tags]    exclude
+    Verify flowEntryBeforePathPolicy    OF13
 
 Add a flowcondition flowcond_path
     [Documentation]    Create a flowcondition flowcond_path
@@ -96,8 +96,8 @@ Ping h1 to h2 after path policy
 
 Verify flowEntryAfterPathPolicy
     [Documentation]    Checking Flows on switch s1 and s3
-    [Tags]    Switch
-    Verify flowEntryAfterPathPolicy
+    [Tags]    exclude
+    Verify flowEntryAfterPathPolicy    OF13
 
 Delete a pathmap
     [Documentation]    Delete a pathmap