Add RESTAPI tests for Li Test jobs 43/31843/4
authorgvrangan <venkatrangang@hcl.com>
Wed, 23 Dec 2015 19:31:04 +0000 (11:31 -0800)
committerGerrit Code Review <gerrit@opendaylight.org>
Tue, 29 Dec 2015 21:32:41 +0000 (21:32 +0000)
- Added seperate directories for Li Tests
- Added a new plan for Li Tests

Change-Id: I4a5f035d6b81f930c96ff3e2e64099163eb54dfd
Signed-off-by: gvrangan <venkatrangang@hcl.com>
17 files changed:
csit/libraries/VtnMaKeywordsLi.robot [new file with mode: 0644]
csit/suites/vtn/VTN_Mgr_OF10_Li/010__vtn_macmap.robot [new file with mode: 0644]
csit/suites/vtn/VTN_Mgr_OF10_Li/010__vtn_manager.robot [new file with mode: 0644]
csit/suites/vtn/VTN_Mgr_OF10_Li/010__vtn_manager_dataflow.robot [new file with mode: 0644]
csit/suites/vtn/VTN_Mgr_OF10_Li/010__vtn_manager_flowfilter.robot [new file with mode: 0644]
csit/suites/vtn/VTN_Mgr_OF10_Li/010__vtn_manager_pathpolicy.robot [new file with mode: 0644]
csit/suites/vtn/VTN_Mgr_OF10_Li/010__vtn_vlanmap.robot [new file with mode: 0644]
csit/suites/vtn/VTN_Mgr_OF10_Li/__init__.robot [new file with mode: 0644]
csit/suites/vtn/VTN_Mgr_OF13_Li/010__vtn_macmap.robot [new file with mode: 0644]
csit/suites/vtn/VTN_Mgr_OF13_Li/010__vtn_manager.robot [new file with mode: 0644]
csit/suites/vtn/VTN_Mgr_OF13_Li/010__vtn_manager_dataflow.robot [new file with mode: 0644]
csit/suites/vtn/VTN_Mgr_OF13_Li/010__vtn_manager_flowfilter.robot [new file with mode: 0644]
csit/suites/vtn/VTN_Mgr_OF13_Li/010__vtn_manager_pathpolicy.robot [new file with mode: 0644]
csit/suites/vtn/VTN_Mgr_OF13_Li/010__vtn_vlanmap.robot [new file with mode: 0644]
csit/suites/vtn/VTN_Mgr_OF13_Li/010__vtn_vlanmap_dataflow.robot [new file with mode: 0644]
csit/suites/vtn/VTN_Mgr_OF13_Li/__init__.robot [new file with mode: 0644]
csit/testplans/vtn-manager_li.txt [new file with mode: 0644]

diff --git a/csit/libraries/VtnMaKeywordsLi.robot b/csit/libraries/VtnMaKeywordsLi.robot
new file mode 100644 (file)
index 0000000..6eb581d
--- /dev/null
@@ -0,0 +1,358 @@
+*** Settings ***
+Library           SSHLibrary
+Library           String
+Library           DateTime
+Library           Collections
+Library           json
+Library           RequestsLibrary
+Variables         ../variables/Variables.py
+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
+${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_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"}
+@{BRIDGE2_DATAFLOW}    "reason":"PORTMAPPED"    "path":{"tenant":"Tenant1","bridge":"vBridge2","interface":"if3"}
+${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_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"
+${custom}         ${CURDIR}/${CREATE_PATHPOLICY_TOPOLOGY_FILE_PATH}
+${in_port}        1
+${out_before_pathpolicy}    output:2
+${out_after_pathpolicy}    output:3
+
+*** Keywords ***
+Start SuiteVtnMa
+    [Documentation]    Start VTN Manager Init Test Suite
+    Create Session    session    http://${CONTROLLER}:${RESTPORT}    auth=${AUTH}    headers=${HEADERS}
+    BuiltIn.Wait_Until_Keyword_Succeeds    30    3    Fetch vtn list
+    Start Suite
+
+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}
+
+Stop SuiteVtnMaTest
+    [Documentation]    Stop VTN Manager Test Suite
+    Delete All Sessions
+
+Fetch vtn list
+    [Documentation]    Check if VTN Manager is up.
+    ${resp}=    RequestsLibrary.Get    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}
+    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}
+    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}
+    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}
+    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}
+    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}
+    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
+    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}
+    ...    ELSE    DataFlowsForBridge    ${resp}    @{VLANMAP_BRIDGE2_DATAFLOW}
+
+DataFlowsForBridge
+    [Arguments]    ${resp}    @{BRIDGE_DATAFLOW}
+    [Documentation]    Verify whether the required attributes exists.
+    : FOR    ${dataflowElement}    IN    @{BRIDGE_DATAFLOW}
+    \    should Contain    ${resp.content}    ${dataflowElement}
+
+Add a pathmap
+    [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}
+    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
+    : FOR    ${pathElement}    IN    @{PATHMAP_ATTR}
+    \    should Contain    ${resp.content}    ${pathElement}
+
+Add a pathpolicy
+    [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}
+    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}
+    : FOR    ${pathpolicyElement}    IN    @{PATHPOLICY_ATTR}
+    \    should Contain    ${resp.content}    ${pathpolicyElement}
+
+Verify flowEntryPathPolicy
+    [Arguments]    ${of_version}    ${port}    ${output}
+    [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>
+    Should Contain    ${result}    in_port=${port}    actions=${output}
+
+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}
+
+Delete a pathmap
+    [Documentation]    Delete a pathmap for a vtn
+    ${resp}=    RequestsLibrary.Delete    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
+    : 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
+    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}
+    : FOR    ${pathpolicyElement}    IN    @{PATHPOLICY_ATTR}
+    \    should Not Contain    ${resp.content}    ${pathpolicyElement}
+
+Add a macmap
+    [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}
+    Should Be Equal As Strings    ${resp.status_code}    201
+
+Get DynamicMacAddress
+    [Arguments]    ${h}
+    [Documentation]    Get Dynamic mac address of Host
+    write    ${h} ifconfig -a | grep HWaddr
+    ${source}    Read Until    mininet>
+    ${HWaddress}=    Split String    ${source}    ${SPACE}
+    ${sourceHWaddr}=    Get from List    ${HWaddress}    ${index}
+    ${sourceHWaddress}=    Convert To Lowercase    ${sourceHWaddr}
+    Return From Keyword    ${sourceHWaddress}    # Also [Return] would work here.
+
+Add a vBridgeMacMapping
+    [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}
+    Should Be Equal As Strings    ${resp.status_code}    201
+
+Mininet Ping Should Succeed
+    [Arguments]    ${host1}    ${host2}
+    Write    ${host1} ping -c 10 ${host2}
+    ${result}    Read Until    mininet>
+    Should Contain    ${result}    64 bytes
+
+Mininet Ping Should Not Succeed
+    [Arguments]    ${host1}    ${host2}
+    Write    ${host1} ping -c 10 ${host2}
+    ${result}    Read Until    mininet>
+    Should Not Contain    ${result}    64 bytes
+
+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}
+    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
+    Set Suite Variable    ${mininet_conn_id1}
+    Login With Public Key    ${MININET_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}
+    ...    ELSE IF    '${OF}' == 'OF10'    Write    ${vlan_topo_10}
+    ${result}    Read Until    mininet>
+
+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}
+    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
+    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}
+    Should Be Equal As Strings    ${resp.status_code}    200
+
+Verify FlowMacAddress
+    [Arguments]    ${host1}    ${host2}    ${OF_VERSION}
+    [Documentation]    Verify the source and destination mac address.
+    Run Keyword If    '${OF_VERSION}' == 'OF10'    Verify Flows On OpenFlow    ${host1}    ${host2}    ${DUMPFLOWS_OF10}
+    ...    ELSE    VerifyFlowsOnOpenFlow    ${host1}    ${host2}    ${DUMPFLOWS_OF13}
+
+Verify Flows On OpenFlow
+    [Arguments]    ${host1}    ${host2}    ${DUMPFLOWS}
+    [Documentation]    Verify the mac addresses on the specified open flow.
+    ${booleanValue}=    Run Keyword And Return Status    Verify macaddress    ${host1}    ${host2}    ${DUMPFLOWS}
+    Should Be Equal As Strings    ${booleanValue}    True
+
+Verify RemovedFlowMacAddress
+    [Arguments]    ${host1}    ${host2}    ${OF_VERSION}
+    [Documentation]    Verify the removed source and destination mac address.
+    Run Keyword If    '${OF_VERSION}' == 'OF10'    Verify Removed Flows On OpenFlow    ${host1}    ${host2}    ${DUMPFLOWS_OF10}
+    ...    ELSE    VerifyRemovedFlowsOnOpenFlow    ${host1}    ${host2}    ${DUMPFLOWS_OF13}
+
+Verify Removed Flows On OpenFlow
+    [Arguments]    ${host1}    ${host2}    ${DUMPFLOWS}
+    [Documentation]    Verify the removed mac addresses on the specified open flow.
+    ${booleanValue}=    Run Keyword And Return Status    Verify macaddress    ${host1}    ${host2}    ${DUMPFLOWS}
+    Should Not Be Equal As Strings    ${booleanValue}    True
+
+Verify macaddress
+    [Arguments]    ${host1}    ${host2}    ${DUMPFLOWS}
+    [Documentation]    Verify the source and destination mac address after ping in the dumpflows
+    write    ${host1} ifconfig -a | grep HWaddr
+    ${sourcemacaddr}    Read Until    mininet>
+    ${macaddress}=    Split String    ${sourcemacaddr}    ${SPACE}
+    ${sourcemacaddr}=    Get from List    ${macaddress}    ${index}
+    ${sourcemacaddress}=    Convert To Lowercase    ${sourcemacaddr}
+    write    ${host2} ifconfig -a | grep HWaddr
+    ${destmacaddr}    Read Until    mininet>
+    ${macaddress}=    Split String    ${destmacaddr}    ${SPACE}
+    ${destmacaddr}=    Get from List    ${macaddress}    ${index}
+    ${destmacaddress}=    Convert To Lowercase    ${destmacaddr}
+    write    ${DUMPFLOWS}
+    ${result}    Read Until    mininet>
+    Should Contain    ${result}    ${sourcemacaddress}
+    Should Contain    ${result}    ${destmacaddress}
+
+Add a flowcondition
+    [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}
+    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}
+    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}
+    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}
+    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}
+    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}
+    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}
+    Should Be Equal As Strings    ${resp.status_code}    200
+
+Verify Flow Entry for Inet Flowfilter
+    [Documentation]    Verify switch flow entry using flowfilter for a vtn
+    ${booleanValue}=    Run Keyword And Return Status    Verify Actions on Flow Entry
+    Should Not Be Equal As Strings    ${booleanValue}    True
+
+Verify Removed Flow Entry for Inet Drop Flowfilter
+    [Documentation]    Verify removed switch flow entry using flowfilter drop for a vtn
+    ${booleanValue}=    Run Keyword And Return Status    Verify Actions on Flow Entry
+    Should Be Equal As Strings    ${booleanValue}    True
+
+Verify Actions on Flow Entry
+    write    ${DUMPFLOWS_OF13}
+    ${result}    Read Until    mininet>
+    : FOR    ${flowElement}    IN    @{FLOWELMENTS}
+    \    should Contain    ${result}    ${flowElement}
diff --git a/csit/suites/vtn/VTN_Mgr_OF10_Li/010__vtn_macmap.robot b/csit/suites/vtn/VTN_Mgr_OF10_Li/010__vtn_macmap.robot
new file mode 100644 (file)
index 0000000..5946cb3
--- /dev/null
@@ -0,0 +1,44 @@
+*** Settings ***
+Documentation     Test suite for VTN Manager using OF13
+Suite Setup       Start SuiteVtnMaTest
+Suite Teardown    Stop SuiteVtnMaTest
+Resource          ../../../libraries/VtnMaKeywordsLi.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    {}
+
+Add a vBridge vBridge1
+    [Documentation]    Add a vBridge vBridge1 in vtn Tenant1
+    Add a vBridge    Tenant1    vBridge1    {}
+
+Add a macmap for bridge1
+    [Documentation]    Add a macmap for bridge1 in vtn Tenant1
+    ${source}=    Get DynamicMacAddress    h1
+    ${destination}=    Get DynamicMacAddress    h3
+    ${destaddress}=    Create Dictionary    vlan=0    address=${destination}
+    ${sourceaddress}=    Create Dictionary    vlan=0    address=${source}
+    @{machost}    Create List    ${sourceaddress}    ${destaddress}
+    ${mac_map_data}=    Create Dictionary    machost=${machost}
+    Add a vBridgeMacMapping    Tenant1    vBridge1    ${mac_map_data}
+
+Get macmapflow h3 h1
+    [Documentation]    ping h3 to h1
+    Wait Until Keyword Succeeds    10s    2s    Mininet Ping Should Succeed    h3    h1
+
+Delete a vtn Tenant1
+    [Documentation]    Delete a vtn Tenant1
+    Delete a vtn    Tenant1
diff --git a/csit/suites/vtn/VTN_Mgr_OF10_Li/010__vtn_manager.robot b/csit/suites/vtn/VTN_Mgr_OF10_Li/010__vtn_manager.robot
new file mode 100644 (file)
index 0000000..902015e
--- /dev/null
@@ -0,0 +1,106 @@
+*** Settings ***
+Documentation     Test suite for VTN Manager using OF10
+Suite Setup       Start SuiteVtnMaTest
+Suite Teardown    Stop SuiteVtnMaTest
+Resource          ../../../libraries/VtnMaKeywordsLi.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    {"description": "Virtual Tenant 1 for Hackfest network"}
+
+Add a vBridge vBridge1
+    [Documentation]    Add a vBridge vBridge1 in vtn Tenant1
+    Add a vBridge    Tenant1    vBridge1    {}
+
+Add a interface If1
+    [Documentation]    Add a interface if1 into vBridge vBrdige1
+    Add a interface    Tenant1    vBridge1    if1    {}
+
+Add a interface if2
+    [Documentation]    Add a interface if2 into vBridge vBrdige1
+    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 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 vBridge vBrdige2
+    Add a interface    Tenant1    vBridge2    if3    {}
+
+Add a interface if4
+    [Documentation]    Add a interface if4 into vBridge vBrdige2
+    Add a interface    Tenant1    vBridge2    if4    {}
+
+Add a portmap for interface if3
+    [Documentation]    Create a portmap on Interface if3 of vBridge2
+    ${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 vBridge2
+    ${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
+
+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_Li/010__vtn_manager_dataflow.robot b/csit/suites/vtn/VTN_Mgr_OF10_Li/010__vtn_manager_dataflow.robot
new file mode 100644 (file)
index 0000000..8b81ae9
--- /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/VtnMaKeywordsLi.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_Li/010__vtn_manager_flowfilter.robot b/csit/suites/vtn/VTN_Mgr_OF10_Li/010__vtn_manager_flowfilter.robot
new file mode 100644 (file)
index 0000000..eb80888
--- /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/VtnMaKeywordsLi.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_Li/010__vtn_manager_pathpolicy.robot b/csit/suites/vtn/VTN_Mgr_OF10_Li/010__vtn_manager_pathpolicy.robot
new file mode 100644 (file)
index 0000000..c473ff4
--- /dev/null
@@ -0,0 +1,124 @@
+*** Settings ***
+Documentation     Test suite for VTN Manager using OF10
+Suite Setup       Start PathSuiteVtnMaTestOF10
+Suite Teardown    Stop PathSuiteVtnMaTest
+Resource          ../../../libraries/VtnMaKeywordsLi.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 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
+    [Tags]    exclude
+    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_Li/010__vtn_vlanmap.robot b/csit/suites/vtn/VTN_Mgr_OF10_Li/010__vtn_vlanmap.robot
new file mode 100644 (file)
index 0000000..4835205
--- /dev/null
@@ -0,0 +1,66 @@
+*** Settings ***
+Documentation     Test suite for VTN Manager using OF10
+Suite Setup       Start SuiteVtnMaTest
+Suite Teardown    Stop SuiteVtnMaTest
+Resource          ../../../libraries/VtnMaKeywordsLi.robot
+
+*** Test Cases ***
+Start topology
+    [Documentation]    Add a vlan topology
+    Start vlan_topo    OF10
+
+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    {}
+
+Add a vBridge vBridge1
+    [Documentation]    Add a vBridge vBridge1 in vtn Tenant1
+    Add a vBridge    Tenant1    vBridge1    {}
+
+Add a vlanmap for bridge1
+    [Documentation]    Add a Vlanmap for bridge1 in vtn Tenant1
+    Add a vlanmap    Tenant1    vBridge1    ${vlanmap_bridge1}
+
+Add a vBridge vBridge2
+    [Documentation]    Add a vBridge vBridge2 in vtn Tenant1
+    Add a vBridge    Tenant1    vBridge2    {}
+
+Add a vlanmap for bridge2
+    [Documentation]    Add a Vlanmap for bridge1 in vtn Tenant1
+    Add a vlanmap    Tenant1    vBridge2    ${vlanmap_bridge2}
+
+Get vlanflow h1 h3
+    [Documentation]    ping h1 to h3
+    Wait Until Keyword Succeeds    10s    2s    Mininet Ping Should Succeed    h1    h3
+
+Get vlanflow h1 h5
+    [Documentation]    ping h1 to h5
+    Wait Until Keyword Succeeds    10s    2s    Mininet Ping Should Succeed    h1    h5
+
+Get vlanflow h2 h4
+    [Documentation]    ping h2 to h4
+    Wait Until Keyword Succeeds    10s    2s    Mininet Ping Should Succeed    h2    h4
+
+Get vlanflow h2 h6
+    [Documentation]    ping h2 to h6
+    Wait Until Keyword Succeeds    10s    2s    Mininet Ping Should Succeed    h2    h6
+
+Get vlanflow h2 h5
+    [Documentation]    ping h2 to h5
+    Mininet Ping Should Not Succeed    h2    h5
+
+Delete a vtn Tenant1
+    [Documentation]    Delete a vtn Tenant1
+    Delete a vtn    Tenant1
diff --git a/csit/suites/vtn/VTN_Mgr_OF10_Li/__init__.robot b/csit/suites/vtn/VTN_Mgr_OF10_Li/__init__.robot
new file mode 100644 (file)
index 0000000..cf1898d
--- /dev/null
@@ -0,0 +1,8 @@
+*** Settings ***
+Documentation     Test suite for VTN Manager (OF10)
+Suite Setup       Start SuiteVtnMa
+Suite Teardown    Stop SuiteVtnMa
+Resource          ../../../libraries/VtnMaKeywordsLi.robot
+
+*** Variables ***
+${start}          sudo mn --controller=remote,ip=${CONTROLLER} --topo tree,2
diff --git a/csit/suites/vtn/VTN_Mgr_OF13_Li/010__vtn_macmap.robot b/csit/suites/vtn/VTN_Mgr_OF13_Li/010__vtn_macmap.robot
new file mode 100644 (file)
index 0000000..5946cb3
--- /dev/null
@@ -0,0 +1,44 @@
+*** Settings ***
+Documentation     Test suite for VTN Manager using OF13
+Suite Setup       Start SuiteVtnMaTest
+Suite Teardown    Stop SuiteVtnMaTest
+Resource          ../../../libraries/VtnMaKeywordsLi.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    {}
+
+Add a vBridge vBridge1
+    [Documentation]    Add a vBridge vBridge1 in vtn Tenant1
+    Add a vBridge    Tenant1    vBridge1    {}
+
+Add a macmap for bridge1
+    [Documentation]    Add a macmap for bridge1 in vtn Tenant1
+    ${source}=    Get DynamicMacAddress    h1
+    ${destination}=    Get DynamicMacAddress    h3
+    ${destaddress}=    Create Dictionary    vlan=0    address=${destination}
+    ${sourceaddress}=    Create Dictionary    vlan=0    address=${source}
+    @{machost}    Create List    ${sourceaddress}    ${destaddress}
+    ${mac_map_data}=    Create Dictionary    machost=${machost}
+    Add a vBridgeMacMapping    Tenant1    vBridge1    ${mac_map_data}
+
+Get macmapflow h3 h1
+    [Documentation]    ping h3 to h1
+    Wait Until Keyword Succeeds    10s    2s    Mininet Ping Should Succeed    h3    h1
+
+Delete a vtn Tenant1
+    [Documentation]    Delete a vtn Tenant1
+    Delete a vtn    Tenant1
diff --git a/csit/suites/vtn/VTN_Mgr_OF13_Li/010__vtn_manager.robot b/csit/suites/vtn/VTN_Mgr_OF13_Li/010__vtn_manager.robot
new file mode 100644 (file)
index 0000000..41371d6
--- /dev/null
@@ -0,0 +1,106 @@
+*** Settings ***
+Documentation     Test suite for VTN Manager using OF13
+Suite Setup       Start SuiteVtnMaTest
+Suite Teardown    Stop SuiteVtnMaTest
+Resource          ../../../libraries/VtnMaKeywordsLi.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
+
+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
+
+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    OF13
+
+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    OF13
+
+Delete a vtn Tenant1
+    [Documentation]    Delete a vtn Tenant1
+    Delete a vtn    Tenant1
diff --git a/csit/suites/vtn/VTN_Mgr_OF13_Li/010__vtn_manager_dataflow.robot b/csit/suites/vtn/VTN_Mgr_OF13_Li/010__vtn_manager_dataflow.robot
new file mode 100644 (file)
index 0000000..12d7c8a
--- /dev/null
@@ -0,0 +1,110 @@
+*** Settings ***
+Documentation     Test suite for VTN Manager Data Flow using OF13
+Suite Setup       Start SuiteVtnMaTest
+Suite Teardown    Stop SuiteVtnMaTest
+Resource          ../../../libraries/VtnMaKeywordsLi.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    OF13
+
+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    OF13
+
+Delete a vtn Tenant1
+    [Documentation]    Delete a vtn Tenant1
+    Delete a vtn    Tenant1
diff --git a/csit/suites/vtn/VTN_Mgr_OF13_Li/010__vtn_manager_flowfilter.robot b/csit/suites/vtn/VTN_Mgr_OF13_Li/010__vtn_manager_flowfilter.robot
new file mode 100644 (file)
index 0000000..917fd2a
--- /dev/null
@@ -0,0 +1,166 @@
+*** Settings ***
+Documentation     Test suite for VTN Manager using OF13
+Suite Setup       Start SuiteVtnMaTest
+Suite Teardown    Stop SuiteVtnMaTest
+Resource          ../../../libraries/VtnMaKeywordsLi.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
+
+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
+
+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_OF13_Li/010__vtn_manager_pathpolicy.robot b/csit/suites/vtn/VTN_Mgr_OF13_Li/010__vtn_manager_pathpolicy.robot
new file mode 100644 (file)
index 0000000..8046177
--- /dev/null
@@ -0,0 +1,124 @@
+*** Settings ***
+Documentation     Test suite for VTN Manager PathPolicy using OF13
+Suite Setup       Start PathSuiteVtnMaTest
+Suite Teardown    Stop PathSuiteVtnMaTest
+Resource          ../../../libraries/VtnMaKeywordsLi.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 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
+    [Tags]    exclude
+    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_Li/010__vtn_vlanmap.robot b/csit/suites/vtn/VTN_Mgr_OF13_Li/010__vtn_vlanmap.robot
new file mode 100644 (file)
index 0000000..28a973d
--- /dev/null
@@ -0,0 +1,66 @@
+*** Settings ***
+Documentation     Test suite for VTN Manager using OF13
+Suite Setup       Start SuiteVtnMaTest
+Suite Teardown    Stop SuiteVtnMaTest
+Resource          ../../../libraries/VtnMaKeywordsLi.robot
+
+*** Test Cases ***
+Start topology
+    [Documentation]    Add a vlan topology
+    Start vlan_topo    OF13
+
+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    {}
+
+Add a vBridge vBridge1
+    [Documentation]    Add a vBridge vBridge1 in vtn Tenant1
+    Add a vBridge    Tenant1    vBridge1    {}
+
+Add a vlanmap for bridge1
+    [Documentation]    Add a Vlanmap for bridge1 in vtn Tenant1
+    Add a vlanmap    Tenant1    vBridge1    ${vlanmap_bridge1}
+
+Add a vBridge vBridge2
+    [Documentation]    Add a vBridge vBridge2 in vtn Tenant1
+    Add a vBridge    Tenant1    vBridge2    {}
+
+Add a vlanmap for bridge2
+    [Documentation]    Add a Vlanmap for bridge1 in vtn Tenant1
+    Add a vlanmap    Tenant1    vBridge2    ${vlanmap_bridge2}
+
+Get vlanflow h1 h3
+    [Documentation]    ping h1 to h3
+    Wait Until Keyword Succeeds    10s    2s    Mininet Ping Should Succeed    h1    h3
+
+Get vlanflow h1 h5
+    [Documentation]    ping h1 to h5
+    Wait Until Keyword Succeeds    10s    2s    Mininet Ping Should Succeed    h1    h5
+
+Get vlanflow h2 h4
+    [Documentation]    ping h2 to h4
+    Wait Until Keyword Succeeds    10s    2s    Mininet Ping Should Succeed    h2    h4
+
+Get vlanflow h2 h6
+    [Documentation]    ping h2 to h6
+    Wait Until Keyword Succeeds    10s    2s    Mininet Ping Should Succeed    h2    h6
+
+Get vlanflow h2 h5
+    [Documentation]    ping h2 to h5
+    Mininet Ping Should Not Succeed    h2    h5
+
+Delete a vtn Tenant1
+    [Documentation]    Delete a vtn Tenant1
+    Delete a vtn    Tenant1
diff --git a/csit/suites/vtn/VTN_Mgr_OF13_Li/010__vtn_vlanmap_dataflow.robot b/csit/suites/vtn/VTN_Mgr_OF13_Li/010__vtn_vlanmap_dataflow.robot
new file mode 100644 (file)
index 0000000..71a042f
--- /dev/null
@@ -0,0 +1,74 @@
+*** Settings ***
+Documentation     Test suite for VTN Manager Data Flows using OF13
+Suite Setup       Start SuiteVtnMaTest
+Suite Teardown    Stop SuiteVtnMaTest
+Resource          ../../../libraries/VtnMaKeywordsLi.robot
+
+*** Test Cases ***
+Start topology
+    [Documentation]    Add a vlan topology
+    Start vlan_topo    OF13
+
+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    {}
+
+Add a vBridge vBridge1_vlan
+    [Documentation]    Add a vBridge vBridge1_vlan in vtn Tenant1
+    Add a vBridge    Tenant1    vBridge1_vlan    {}
+
+Add a vlanmap for vBridge1_vlan
+    [Documentation]    Add a Vlanmap for vBridge1_vlan in vtn Tenant1
+    Add a vlanmap    Tenant1    vBridge1_vlan    ${vlanmap_bridge1}
+
+Add a vBridge vBridge2_vlan
+    [Documentation]    Add a vBridge vBridge2_vlan in vtn Tenant1
+    Add a vBridge    Tenant1    vBridge2_vlan    {}
+
+Add a vlanmap for vBridge2_vlan
+    [Documentation]    Add a Vlanmap for vBridge2_vlan in vtn Tenant1
+    Add a vlanmap    Tenant1    vBridge2_vlan    ${vlanmap_bridge2}
+
+Get vlanflow h1 h3
+    [Documentation]    ping h1 to h3
+    Wait Until Keyword Succeeds    10s    2s    Mininet Ping Should Succeed    h1    h3
+
+Get vlanflow h1 h5
+    [Documentation]    ping h1 to h5
+    Wait Until Keyword Succeeds    10s    2s    Mininet Ping Should Succeed    h1    h5
+
+Verify data flow details for vlanmap vBridge1_vlan
+    [Documentation]    Verify the data flows for the specified tenant and vBridge1_vlan
+    Verify Data Flows    Tenant1    vBridge1_vlan
+
+Get vlanflow h2 h4
+    [Documentation]    ping h2 to h4
+    Wait Until Keyword Succeeds    10s    2s    Mininet Ping Should Succeed    h2    h4
+
+Get vlanflow h2 h6
+    [Documentation]    ping h2 to h6
+    Wait Until Keyword Succeeds    10s    2s    Mininet Ping Should Succeed    h2    h6
+
+Verify data flow details for vlanmap vBridge2_vlan
+    [Documentation]    Verify the data flows for the specified tenant and vBridge2_vlan
+    Verify Data Flows    Tenant1    vBridge2_vlan
+
+Get vlanflow h2 h5
+    [Documentation]    ping h2 to h5
+    Mininet Ping Should Not Succeed    h2    h5
+
+Delete a vtn Tenant1
+    [Documentation]    Delete a vtn Tenant1
+    Delete a vtn    Tenant1
diff --git a/csit/suites/vtn/VTN_Mgr_OF13_Li/__init__.robot b/csit/suites/vtn/VTN_Mgr_OF13_Li/__init__.robot
new file mode 100644 (file)
index 0000000..ab7c7fc
--- /dev/null
@@ -0,0 +1,8 @@
+*** Settings ***
+Documentation     Test suite for VTN Manager (OF13)
+Suite Setup       Start SuiteVtnMa
+Suite Teardown    Stop SuiteVtnMa
+Resource          ../../../libraries/VtnMaKeywordsLi.robot
+
+*** Variables ***
+${start}          sudo mn --controller=remote,ip=${CONTROLLER} --topo tree,2 --switch ovsk,protocols=OpenFlow13
diff --git a/csit/testplans/vtn-manager_li.txt b/csit/testplans/vtn-manager_li.txt
new file mode 100644 (file)
index 0000000..fa10a06
--- /dev/null
@@ -0,0 +1,4 @@
+# Place the suites in run order:
+integration/test/csit/suites/vtn/VTN_Mgr_OF10_Li
+integration/test/csit/suites/vtn/VTN_Mgr_OF13_Li
+