Refactor OpenFlow sw/link scalability and longevity tests 92/47192/18
authorLuis Gomez <ecelgp@gmail.com>
Thu, 20 Oct 2016 08:06:04 +0000 (01:06 -0700)
committerVenkatrangan Govindarajan <venkatrangang@hcl.com>
Wed, 26 Oct 2016 21:16:48 +0000 (21:16 +0000)
- Remove Scalability.robot resource
- Create WorkflowsOpenFlow.robot and WorkflowsL2switch.robot
- Modify longevity to use full mesh topology workflow
- Add flow 10K flow add/delete check to all tests.
- Add error messages in case of failure.
- Add topology discovery time and plot for it.
- Add JVM monitoring.
- Remove redundant sw scale test.

This goes with https://git.opendaylight.org/gerrit/#/c/47254

Change-Id: I7773ff1b2e7c6b36de46a51db8aa38994c282f30
Signed-off-by: Luis Gomez <ecelgp@gmail.com>
20 files changed:
csit/libraries/MininetKeywords.robot
csit/libraries/NicKeywords.robot
csit/libraries/Scalability.robot [deleted file]
csit/libraries/WorkflowsL2switch.robot [new file with mode: 0644]
csit/libraries/WorkflowsOpenFlow.robot [new file with mode: 0644]
csit/scriptplans/openflowplugin-link-scalability-daily.txt [new file with mode: 0644]
csit/scriptplans/openflowplugin-sw-scalability-daily.txt [new file with mode: 0644]
csit/suites/l2switch/Maximum_Hosts/010__finding_max_hosts.robot
csit/suites/nic/vtn_renderer/vtn_renderer_nic_cli_test.robot
csit/suites/openflowplugin/Longevity/010__longevity_switches.robot [deleted file]
csit/suites/openflowplugin/Longevity/010__longevity_test.robot [new file with mode: 0644]
csit/suites/openflowplugin/Longevity/020__longevity_switches_links.robot [deleted file]
csit/suites/openflowplugin/Maximum_Links/010__finding_max_links.robot
csit/suites/openflowplugin/Maximum_Switches/010__finding_max_switches.robot
csit/testplans/openflowplugin-link-scalability-daily.txt
csit/testplans/openflowplugin-longevity.txt
csit/testplans/openflowplugin-scalability-daily.txt [deleted file]
csit/testplans/openflowplugin-sw-scalability-daily.txt
csit/variables/Variables.py
csit/variables/Variables.robot

index e4f8b9b5e1db55505283c4e5f2b18ba1be2a7860..1114b2213a0b407463ac55f2c55593680e15542d 100644 (file)
@@ -8,28 +8,29 @@ Variables         ../variables/Variables.py
 
 *** Keywords ***
 Start Mininet Single Controller
-    [Arguments]    ${mininet}=${TOOLS_SYSTEM_IP}    ${controller}=${ODL_SYSTEM_IP}    ${options}=--topo tree,1 --switch ovsk,protocols=OpenFlow13    ${custom}=${EMPTY}    ${ofport}=${ODL_OF_PORT}
+    [Arguments]    ${mininet}=${TOOLS_SYSTEM_IP}    ${controller}=${ODL_SYSTEM_IP}    ${options}=--topo tree,1 --switch ovsk,protocols=OpenFlow13    ${custom}=${EMPTY}    ${ofport}=${ODL_OF_PORT}    ${timeout}=${DEFAULT_TIMEOUT}
     [Documentation]    Start Mininet with custom topology and connect to controller.
     Log    Clear any existing mininet
     Utils.Clean Mininet System    ${mininet}
-    ${mininet_conn_id}=    SSHLibrary.Open Connection    ${mininet}    prompt=${TOOLS_SYSTEM_PROMPT}    timeout=${DEFAULT_TIMEOUT}
+    ${mininet_conn_id}=    SSHLibrary.Open Connection    ${mininet}    prompt=${TOOLS_SYSTEM_PROMPT}    timeout=${timeout}
     Set Suite Variable    ${mininet_conn_id}
     Utils.Flexible Mininet Login
     Run Keyword If    '${custom}' != '${EMPTY}'    Put File    ${custom}
     Log    Start mininet ${options} to ${controller}
     SSHLibrary.Write    sudo mn --controller 'remote,ip=${controller},port=${ofport}' ${options}
     SSHLibrary.Read Until    mininet>
-    ${output}=    Utils.Run Command On Mininet    ${mininet}    sudo ovs-vsctl show
-    Log    ${output}
+    Log    Check OVS configuratiom
+    SSHLibrary.Write    sh ovs-vsctl show
+    SSHLibrary.Read Until    mininet>
     [Return]    ${mininet_conn_id}
 
 Start Mininet Multiple Controllers
-    [Arguments]    ${mininet}=${TOOLS_SYSTEM_IP}    ${controller_index_list}=${EMPTY}    ${options}=--topo tree,1 --switch ovsk,protocols=OpenFlow13    ${custom}=${EMPTY}    ${ofport}=${ODL_OF_PORT}
+    [Arguments]    ${mininet}    ${controller_index_list}=${EMPTY}    ${options}=--topo tree,1 --switch ovsk,protocols=OpenFlow13    ${custom}=${EMPTY}    ${ofport}=${ODL_OF_PORT}    ${timeout}=${DEFAULT_TIMEOUT}
     [Documentation]    Start Mininet with custom topology and connect to list of controllers in ${controller_index_list} or all if no list is provided.
     ${index_list} =    ClusterManagement__Given_Or_Internal_Index_List    given_list=${controller_index_list}
     Log    Clear any existing mininet
     Utils.Clean Mininet System    ${mininet}
-    ${mininet_conn_id}=    SSHLibrary.Open Connection    ${mininet}    prompt=${TOOLS_SYSTEM_PROMPT}    timeout=${DEFAULT_TIMEOUT}
+    ${mininet_conn_id}=    SSHLibrary.Open Connection    ${mininet}    prompt=${TOOLS_SYSTEM_PROMPT}    timeout=${timeout}
     Set Suite Variable    ${mininet_conn_id}
     Utils.Flexible Mininet Login
     Run Keyword If    '${custom}' != '${EMPTY}'    Put File    ${custom}
@@ -49,8 +50,8 @@ Start Mininet Multiple Controllers
     \    ${bridge}=    Utils.Run Command On Mininet    ${mininet}    sudo ovs-vsctl show | grep Bridge | cut -c 12- | sort | head -${i} | tail -1
     \    OVSDB.Set Controller In OVS Bridge    ${mininet}    ${bridge}    ${controller_opt}
     Log    Check OVS configuratiom
-    ${output}=    Utils.Run Command On Mininet    ${mininet}    sudo ovs-vsctl show
-    Log    ${output}
+    SSHLibrary.Write    sh ovs-vsctl show
+    SSHLibrary.Read Until    mininet>
     [Return]    ${mininet_conn_id}
 
 Send Mininet Command
@@ -76,7 +77,7 @@ Stop Mininet And Exit
     Run Keyword If    """${mininet_conn}""" != ""    SSHLibrary.Switch Connection    ${mininet_conn}
     SSHLibrary.Write    exit
     SSHLibrary.Read Until    ${TOOLS_SYSTEM_PROMPT}
-    Close Connection
+    SSHLibrary.Close Connection
 
 Stop Mininet And Exit Multiple Sessions
     [Arguments]    ${mininet_conn_list}
index bc09383b204cae1f7d9bf55baa9ee690e3724e74..efb208940c82321c2d9d4c05f862d6346baf0f9c 100644 (file)
@@ -6,8 +6,8 @@ Library           Collections
 Library           json
 Library           RequestsLibrary
 Variables         ../variables/Variables.py
-Resource          ./Utils.robot
-Resource          Scalability.robot
+Resource          Utils.robot
+Resource          WorkflowsOpenFlow.robot
 
 *** Variables ***
 ${switches}       2
diff --git a/csit/libraries/Scalability.robot b/csit/libraries/Scalability.robot
deleted file mode 100644 (file)
index 902ce90..0000000
+++ /dev/null
@@ -1,268 +0,0 @@
-*** Settings ***
-Library           SSHLibrary
-Resource          Utils.robot
-Library           String
-Library           Collections
-Variables         ../variables/Variables.py
-Library           RequestsLibrary
-Library           SwitchClasses/BaseSwitch.py
-
-*** Keywords ***
-Find Max Switches
-    [Arguments]    ${start}    ${stop}    ${step}    ${sustain_time}=0
-    [Documentation]    Will find out max switches starting from ${start} till reaching ${stop} and in steps defined by ${step}.
-    ...    The network is hold for ${sustain_time} seconds after everything is checked successful.
-    ${max-switches}    Set Variable    ${0}
-    Set Suite Variable    ${max-switches}
-    ${start}    Convert to Integer    ${start}
-    ${stop}    Convert to Integer    ${stop}
-    ${step}    Convert to Integer    ${step}
-    : FOR    ${switches}    IN RANGE    ${start}    ${stop+1}    ${step}
-    \    ${status}    ${result}    Run Keyword And Ignore Error    Start Mininet Linear    ${switches}
-    \    Exit For Loop If    '${status}' == 'FAIL'
-    \    ${status}    ${result}    Run Keyword And Ignore Error    Verify Controller Is Not Dead    ${ODL_SYSTEM_IP}
-    \    Exit For Loop If    '${status}' == 'FAIL'
-    \    ${status}    ${result}    Run Keyword And Ignore Error    Wait Until Keyword Succeeds    ${switches*2}    10s
-    \    ...    Check Every Switch    ${switches}
-    \    Exit For Loop If    '${status}' == 'FAIL'
-    \    ${status}    ${result}    Run Keyword And Ignore Error    Wait Until Keyword Succeeds    ${switches*2}    10s
-    \    ...    Check Linear Topology    ${switches}
-    \    Exit For Loop If    '${status}' == 'FAIL'
-    \    Sleep    ${sustain_time}
-    \    ${status}    ${result}    Run Keyword And Ignore Error    Stop Mininet Simulation
-    \    Exit For Loop If    '${status}' == 'FAIL'
-    \    ${status}    ${result}    Run Keyword And Ignore Error    Wait Until Keyword Succeeds    ${switches*2}    10s
-    \    ...    Check No Switches    ${switches}
-    \    Exit For Loop If    '${status}' == 'FAIL'
-    \    ${status}    ${result}    Run Keyword And Ignore Error    Wait Until Keyword Succeeds    ${switches*2}    10s
-    \    ...    Check No Topology    ${switches}
-    \    Exit For Loop If    '${status}' == 'FAIL'
-    \    ${max-switches}    Convert To String    ${switches}
-    \    Sleep    ${sustain_time}
-    [Return]    ${max-switches}
-
-Find Max Links
-    [Arguments]    ${begin}    ${stop}    ${step}    ${sustain_time}=5
-    [Documentation]    Will find out max switches in fully mesh topology starting from ${start} till reaching ${stop} and in steps defined by ${step}.
-    ...    The network is hold for ${sustain_time} seconds after everything is checked successful.
-    ${max_switches}    Set Variable    ${0}
-    ${stop}    Convert to Integer    ${stop}
-    ${step}    Convert to Integer    ${step}
-    : FOR    ${switches}    IN RANGE    ${begin}    ${stop+1}    ${step}
-    \    ${status}    ${result}    Run Keyword And Ignore Error    Start Mininet With Custom Topology    ${CREATE_FULLYMESH_TOPOLOGY_FILE}    ${switches}
-    \    ...    ${BASE_MAC_1}    ${BASE_IP_1}    ${0}    ${switches*20}
-    \    Exit For Loop If    '${status}' == 'FAIL'
-    \    ${status}    ${result}    Run Keyword And Ignore Error    Verify Controller Is Not Dead    ${ODL_SYSTEM_IP}
-    \    Exit For Loop If    '${status}' == 'FAIL'
-    \    ${status}    ${result}    Run Keyword And Ignore Error    Verify Controller Has No Null Pointer Exceptions    ${ODL_SYSTEM_IP}
-    \    Exit For Loop If    '${status}' == 'FAIL'
-    \    ${status}    ${result}    Run Keyword And Ignore Error    Wait Until Keyword Succeeds    120    10s
-    \    ...    Check Every Switch    ${switches}    ${BASE_MAC_1}
-    \    Exit For Loop If    '${status}' == 'FAIL'
-    \    ${max-links}=    Evaluate    ${switches}*${switches-1}
-    \    ${status}    ${result}    Run Keyword And Ignore Error    Wait Until Keyword Succeeds    120    10s
-    \    ...    Check Number Of Links    ${max-links}
-    \    Exit For Loop If    '${status}' == 'FAIL'
-    \    Sleep    ${sustain_time}
-    \    ${status}    ${result}    Run Keyword And Ignore Error    Stop Mininet Simulation
-    \    Exit For Loop If    '${status}' == 'FAIL'
-    \    ${status}    ${result}    Run Keyword And Ignore Error    Wait Until Keyword Succeeds    120    10s
-    \    ...    Check No Switches    ${switches}
-    \    Exit For Loop If    '${status}' == 'FAIL'
-    \    ${status}    ${result}    Run Keyword And Ignore Error    Wait Until Keyword Succeeds    120    10s
-    \    ...    Check No Topology    ${switches}
-    \    Exit For Loop If    '${status}' == 'FAIL'
-    \    ${max_switches}    Set Variable    ${switches}
-    \    Sleep    ${sustain_time}
-    ${max-links}=    Evaluate    ${max_switches}*${max_switches-1}
-    [Return]    ${max-links}
-
-Find Max Hosts
-    [Arguments]    ${begin}    ${stop}    ${step}    ${sustain_time}=5
-    [Documentation]    Will find out max hosts starting from ${begin} till reaching ${stop} and in steps defined by ${step}.
-    ...    The network is hold for ${sustain_time} seconds after everything is checked successful.
-    ${max-hosts}    Set Variable    ${0}
-    ${stop}    Convert to Integer    ${stop}
-    ${step}    Convert to Integer    ${step}
-    : FOR    ${hosts}    IN RANGE    ${begin}    ${stop+1}    ${step}
-    \    ${status}    ${result}    Run Keyword And Ignore Error    Start Mininet With One Switch And ${hosts} hosts
-    \    Exit For Loop If    '${status}' == 'FAIL'
-    \    ${status}    ${result}    Run Keyword And Ignore Error    Wait Until Keyword Succeeds    120s    30s
-    \    ...    Check Every Switch    ${1}
-    \    Exit For Loop If    '${status}' == 'FAIL'
-    \    @{host_list}=    Get Mininet Hosts
-    \    ${status}=    Ping All Hosts    @{host_list}
-    \    Exit For Loop If    ${status} != ${0}
-    \    ${status}    ${result}    Run Keyword And Ignore Error    Verify Controller Is Not Dead    ${ODL_SYSTEM_IP}
-    \    Exit For Loop If    '${status}' == 'FAIL'
-    \    ${status}    ${result}    Run Keyword And Ignore Error    Wait Until Keyword Succeeds    120s    30s
-    \    ...    Check Number Of Hosts    ${hosts}
-    \    Exit For Loop If    '${status}' == 'FAIL'
-    \    Sleep    ${sustain_time}
-    \    ${status}    ${result}    Run Keyword And Ignore Error    Stop Mininet Simulation
-    \    Exit For Loop If    '${status}' == 'FAIL'
-    \    ${status}    ${result}    Run Keyword And Ignore Error    Check No Switches    ${1}
-    \    Exit For Loop If    '${status}' == 'FAIL'
-    \    ${status}    ${result}    Run Keyword And Ignore Error    Check No Hosts
-    \    Exit For Loop If    '${status}' == 'FAIL'
-    \    ${max-hosts}    Convert To String    ${hosts}
-    \    Sleep    ${sustain_time}
-    [Return]    ${max-hosts}
-
-Get Mininet Hosts
-    [Documentation]    Get all the hosts from mininet
-    ${host_list}=    Create List
-    Write    nodes
-    ${out}=    Read Until    mininet>
-    @{words}=    Split String    ${out}    ${SPACE}
-    : FOR    ${item}    IN    @{words}
-    \    ${h}=    Get Lines Matching Regexp    ${item.rstrip()}    .*h[0-9]*s.
-    \    Run Keyword If    '${h}' != '${EMPTY}'    Append To List    ${host_list}    ${h}
-    [Return]    ${host_list}
-
-Ping All Hosts
-    [Arguments]    @{host_list}
-    [Documentation]    Do one round of ping from one host to all other hosts in mininet
-    ${source}=    Get From List    ${host_list}    ${0}
-    : FOR    ${h}    IN    @{host_list}
-    \    ${status}=    Ping Two Hosts    ${source}    ${h}    1
-    \    Exit For Loop If    ${status}!=${0}
-    [Return]    ${status}
-
-Start Mininet With One Switch And ${hosts} hosts
-    [Documentation]    Start mininet with one switch and ${hosts} hosts
-    Log    Starting mininet with one switch and ${hosts} hosts
-    Log To Console    Starting mininet with one switch and ${hosts} hosts
-    ${mininet_conn_id}=    Open Connection    ${TOOLS_SYSTEM_IP}    prompt=${DEFAULT_LINUX_PROMPT}    timeout=${hosts*3}
-    Set Suite Variable    ${mininet_conn_id}
-    Login With Public Key    ${TOOLS_SYSTEM_USER}    ${USER_HOME}/.ssh/${SSH_KEY}    any
-    Write    sudo mn --controller=remote,ip=${ODL_SYSTEM_IP} --topo linear,1,${hosts} --switch ovsk,protocols=OpenFlow13
-    Read Until    mininet>
-
-Check Number Of Hosts
-    [Arguments]    ${hosts}
-    [Documentation]    Check number of hosts in inventory
-    ${resp}=    RequestsLibrary.Get Request    session    ${OPERATIONAL_TOPO_API}
-    Log    Check number of hosts in inventory
-    Log To Console    Check number of hosts in inventory
-    Should Be Equal As Strings    ${resp.status_code}    200
-    ${count}=    Get Count    ${resp.content}    "node-id":"host:
-    Should Be Equal As Integers    ${count}    ${hosts}
-
-Check Number Of Links
-    [Arguments]    ${links}
-    [Documentation]    Check number of links in inventory is ${links}
-    ${resp}=    RequestsLibrary.Get Request    session    ${OPERATIONAL_TOPO_API}
-    Log    Check number of links in inventory is ${links}
-    Log To Console    Check number of links in inventory is ${links}
-    Should Be Equal As Strings    ${resp.status_code}    200
-    ${count}=    Get Count    ${resp.content}    "link-id":"openflow:
-    Should Be Equal As Integers    ${count}    ${links}
-
-Ping Two Hosts
-    [Arguments]    ${host1}    ${host2}    ${pingcount}=2    ${connection_index}=${EMPTY}    ${connection_alias}=${EMPTY}
-    [Documentation]    Ping between mininet hosts. Must be used only after a mininet session is in place.Returns non zero value if there is 100% packet loss.
-    Run Keyword If    '${connection_index}'    !=    '${EMPTY}'    Switch Connection    ${connection_index}
-    Run Keyword If    '${connection_alias}'    !=    '${EMPTY}'    Switch Connection    ${connection_alias}
-    Write    ${host1} ping -c ${pingcount} ${host2}
-    ${out}=    Read Until    mininet>
-    ${ret}=    Get Lines Matching Regexp    ${out}    .*100% packet loss.*
-    ${len}=    Get Length    ${ret}
-    [Return]    ${len}
-
-Check No Hosts
-    [Documentation]    Check if all hosts are deleted from inventory
-    ${resp}=    RequestsLibrary.Get Request    session    ${OPERATIONAL_TOPO_API}
-    Log To Console    Checking no hosts are present in operational database
-    Log    Checking no hosts are present in operational database
-    Should Be Equal As Strings    ${resp.status_code}    200
-    Should Not Contain    ${resp.content}    "node-id":"host:
-
-Start Mininet Linear
-    [Arguments]    ${switches}
-    [Documentation]    Start mininet linear topology with ${switches} nodes
-    Log To Console    Starting mininet linear ${switches}
-    ${mininet_conn_id}=    Open Connection    ${TOOLS_SYSTEM_IP}    prompt=${DEFAULT_LINUX_PROMPT}    timeout=${switches*3}
-    Set Suite Variable    ${mininet_conn_id}
-    Login With Public Key    ${TOOLS_SYSTEM_USER}    ${USER_HOME}/.ssh/${SSH_KEY}    any
-    Write    sudo mn --controller=remote,ip=${ODL_SYSTEM_IP} --topo linear,${switches} --switch ovsk,protocols=OpenFlow13
-    Read Until    mininet>
-
-Start Mininet With Custom Topology
-    [Arguments]    ${topology_file}    ${switches}    ${base_mac}=00:00:00:00:00:00    ${base_ip}=1.1.1.1    ${hosts}=0    ${mininet_start_time}=100
-    [Documentation]    Start a custom mininet topology.
-    Log To Console    Start a custom mininet topology with ${switches} nodes
-    ${mininet_conn_id}=    Open Connection    ${TOOLS_SYSTEM_IP}    prompt=${DEFAULT_LINUX_PROMPT}    timeout=${mininet_start_time}
-    Set Suite Variable    ${mininet_conn_id}
-    Login With Public Key    ${TOOLS_SYSTEM_USER}    ${USER_HOME}/.ssh/${SSH_KEY}    any
-    Write    python ${topology_file} ${switches} ${hosts} ${base_mac} ${base_ip}
-    Read Until    ${DEFAULT_LINUX_PROMPT}
-    Write    sudo mn --controller=remote,ip=${ODL_SYSTEM_IP} --custom switch.py --topo demotopo --switch ovsk,protocols=OpenFlow13
-    Read Until    mininet>
-    Write    sh ovs-vsctl show
-    ${output}=    Read Until    mininet>
-    # Ovsdb connection is sometimes lost after mininet is started. Checking if the connection is alive before proceeding.
-    Should Not Contain    ${output}    database connection failed
-    Log To Console    Mininet Started with ${switches} nodes
-
-Check Every Switch
-    [Arguments]    ${switches}    ${base_mac}=00:00:00:00:00:00
-    [Documentation]    Check all switches and stats in operational inventory
-    ${mac}=    Replace String Using Regexp    ${base_mac}    :    ${EMPTY}
-    ${mac}=    Convert Hex To Decimal As String    ${mac}
-    ${mac}=    Convert To Integer    ${mac}
-    : FOR    ${switch}    IN RANGE    1    ${switches+1}
-    \    ${dpid_decimal}=    Evaluate    ${mac}+${switch}
-    \    ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_NODES_API}/node/openflow:${dpid_decimal}
-    \    Should Be Equal As Strings    ${resp.status_code}    200
-    \    Log To Console    Checking Switch ${switch}
-    \    Should Contain    ${resp.content}    flow-capable-node-connector-statistics
-    \    Should Contain    ${resp.content}    flow-table-statistics
-
-Check Linear Topology
-    [Arguments]    ${switches}
-    [Documentation]    Check Linear topology given ${switches}
-    ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_TOPO_API}
-    Log To Console    Checking Topology
-    Should Be Equal As Strings    ${resp.status_code}    200
-    : FOR    ${switch}    IN RANGE    1    ${switches+1}
-    \    Should Contain    ${resp.content}    "node-id":"openflow:${switch}"
-    \    Should Contain    ${resp.content}    "tp-id":"openflow:${switch}:1"
-    \    Should Contain    ${resp.content}    "tp-id":"openflow:${switch}:2"
-    \    Should Contain    ${resp.content}    "source-tp":"openflow:${switch}:2"
-    \    Should Contain    ${resp.content}    "dest-tp":"openflow:${switch}:2"
-    \    ${edge}    Evaluate    ${switch}==1 or ${switch}==${switches}
-    \    Run Keyword Unless    ${edge}    Should Contain    ${resp.content}    "tp-id":"openflow:${switch}:3"
-    \    Run Keyword Unless    ${edge}    Should Contain    ${resp.content}    "source-tp":"openflow:${switch}:3"
-    \    Run Keyword Unless    ${edge}    Should Contain    ${resp.content}    "dest-tp":"openflow:${switch}:3"
-
-Check No Switches
-    [Arguments]    ${switches}
-    [Documentation]    Check no switch is in inventory
-    ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_NODES_API}
-    Log To Console    Checking No Switches
-    Should Be Equal As Strings    ${resp.status_code}    200
-    : FOR    ${switch}    IN RANGE    1    ${switches+1}
-    \    Should Not Contain    ${resp.content}    "openflow:${switch}"
-
-Check No Topology
-    [Arguments]    ${switches}
-    [Documentation]    Check no switch is in topology
-    ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_TOPO_API}
-    Log To Console    Checking No Topology
-    Should Be Equal As Strings    ${resp.status_code}    200
-    : FOR    ${switch}    IN RANGE    1    ${switches+1}
-    \    Should Not Contain    ${resp.content}    openflow:${switch}
-
-Stop Mininet Simulation
-    [Documentation]    Stop mininet
-    Log To Console    Stopping Mininet
-    Switch Connection    ${mininet_conn_id}
-    Read
-    Write    exit
-    Read Until    ${DEFAULT_LINUX_PROMPT}
-    Close Connection
-
-Scalability Suite Teardown
-    Delete All Sessions
-    Clean Mininet System
diff --git a/csit/libraries/WorkflowsL2switch.robot b/csit/libraries/WorkflowsL2switch.robot
new file mode 100644 (file)
index 0000000..197f33f
--- /dev/null
@@ -0,0 +1,129 @@
+*** Settings ***
+Documentation     Resource for L2switch workflows. TODO: Refactor KWs once this test works in public.
+Library           SSHLibrary
+Library           RequestsLibrary
+Library           String
+Library           Collections
+Library           SwitchClasses/BaseSwitch.py
+Resource          Utils.robot
+Variables         ../variables/Variables.py
+
+*** Keywords ***
+Find Max Hosts
+    [Arguments]    ${begin}    ${stop}    ${step}    ${sustain_time}=0
+    [Documentation]    Will find out max hosts starting from ${begin} till reaching ${stop} and in steps defined by ${step}.
+    ...    The network is hold for ${sustain_time} seconds after everything is checked successful.
+    ${max-hosts}    Set Variable    ${0}
+    ${stop}    Convert to Integer    ${stop}
+    ${step}    Convert to Integer    ${step}
+    : FOR    ${hosts}    IN RANGE    ${begin}    ${stop+1}    ${step}
+    \    Log To Console    Starting mininet with one switch and ${hosts} hosts
+    \    ${status}    ${result}    Run Keyword And Ignore Error    Start Mininet With One Switch And ${hosts} hosts
+    \    Exit For Loop If    '${status}' == 'FAIL'
+    \    Log To Console    Checking ${switches} switches
+    \    ${status}    ${result}    Run Keyword And Ignore Error    Wait Until Keyword Succeeds    120s    30s
+    \    ...    Check Every Switch    ${1}
+    \    Exit For Loop If    '${status}' == 'FAIL'
+    \    Log To Console    Ping all hosts
+    \    @{host_list}=    Get Mininet Hosts
+    \    ${status}=    Ping All Hosts    @{host_list}
+    \    Exit For Loop If    ${status} != ${0}
+    \    Log To Console    Verify controller is OK
+    \    ${status}    ${result}    Run Keyword And Ignore Error    Verify Controller Is Not Dead    ${ODL_SYSTEM_IP}
+    \    Exit For Loop If    '${status}' == 'FAIL'
+    \    ${status}    ${result}    Run Keyword And Ignore Error    Verify Controller Has No Null Pointer Exceptions    ${ODL_SYSTEM_IP}
+    \    Exit For Loop If    '${status}' == 'FAIL'
+    \    Log To Console    Check number of hosts in inventory is ${hosts}
+    \    ${status}    ${result}    Run Keyword And Ignore Error    Wait Until Keyword Succeeds    120s    30s
+    \    ...    Check Number Of Hosts    ${hosts}
+    \    Exit For Loop If    '${status}' == 'FAIL'
+    \    Log To Console    Sleep for ${sustain_time} seconds
+    \    Sleep    ${sustain_time}
+    \    Log To Console    Stopping Mininet
+    \    ${status}    ${result}    Run Keyword And Ignore Error    Stop Mininet Simulation
+    \    Exit For Loop If    '${status}' == 'FAIL'
+    \    Log To Console    Checking No Switches
+    \    ${status}    ${result}    Run Keyword And Ignore Error    Check No Switches
+    \    Exit For Loop If    '${status}' == 'FAIL'
+    \    Log To Console    Checking no hosts are present in operational database
+    \    ${status}    ${result}    Run Keyword And Ignore Error    Check No Hosts
+    \    Exit For Loop If    '${status}' == 'FAIL'
+    \    ${max-hosts}    Convert To String    ${hosts}
+    [Return]    ${max-hosts}
+
+Get Mininet Hosts
+    [Documentation]    Get all the hosts from mininet
+    ${host_list}=    Create List
+    Write    nodes
+    ${out}=    Read Until    mininet>
+    @{words}=    Split String    ${out}    ${SPACE}
+    : FOR    ${item}    IN    @{words}
+    \    ${h}=    Get Lines Matching Regexp    ${item.rstrip()}    .*h[0-9]*s.
+    \    Run Keyword If    '${h}' != '${EMPTY}'    Append To List    ${host_list}    ${h}
+    [Return]    ${host_list}
+
+Ping All Hosts
+    [Arguments]    @{host_list}
+    [Documentation]    Do one round of ping from one host to all other hosts in mininet
+    ${source}=    Get From List    ${host_list}    ${0}
+    : FOR    ${h}    IN    @{host_list}
+    \    ${status}=    Ping Two Hosts    ${source}    ${h}    1
+    \    Exit For Loop If    ${status}!=${0}
+    [Return]    ${status}
+
+Start Mininet With One Switch And ${hosts} hosts
+    [Documentation]    Start mininet with one switch and ${hosts} hosts
+    Log    Starting mininet with one switch and ${hosts} hosts
+    ${mininet_conn_id}=    Open Connection    ${TOOLS_SYSTEM_IP}    prompt=${DEFAULT_LINUX_PROMPT}    timeout=${hosts*3}
+    Set Suite Variable    ${mininet_conn_id}
+    Login With Public Key    ${TOOLS_SYSTEM_USER}    ${USER_HOME}/.ssh/${SSH_KEY}    any
+    Write    sudo mn --controller=remote,ip=${ODL_SYSTEM_IP} --topo linear,1,${hosts} --switch ovsk,protocols=OpenFlow13
+    Read Until    mininet>
+
+Check Number Of Hosts
+    [Arguments]    ${hosts}
+    [Documentation]    Check number of hosts in inventory
+    ${resp}=    RequestsLibrary.Get Request    session    ${OPERATIONAL_TOPO_API}
+    Log    Check number of hosts in inventory is ${hosts}
+    Should Be Equal As Strings    ${resp.status_code}    200
+    ${count}=    Get Count    ${resp.content}    "node-id":"host:
+    Should Be Equal As Integers    ${count}    ${hosts}
+
+Ping Two Hosts
+    [Arguments]    ${host1}    ${host2}    ${pingcount}=2    ${connection_index}=${EMPTY}    ${connection_alias}=${EMPTY}
+    [Documentation]    Ping between mininet hosts. Must be used only after a mininet session is in place.Returns non zero value if there is 100% packet loss.
+    Run Keyword If    '${connection_index}'    !=    '${EMPTY}'    Switch Connection    ${connection_index}
+    Run Keyword If    '${connection_alias}'    !=    '${EMPTY}'    Switch Connection    ${connection_alias}
+    Write    ${host1} ping -c ${pingcount} ${host2}
+    ${out}=    Read Until    mininet>
+    ${ret}=    Get Lines Matching Regexp    ${out}    .*100% packet loss.*
+    ${len}=    Get Length    ${ret}
+    [Return]    ${len}
+
+Check No Hosts
+    [Documentation]    Check if all hosts are deleted from inventory
+    ${resp}=    RequestsLibrary.Get Request    session    ${OPERATIONAL_TOPO_API}
+    Log    Checking no hosts are present in operational database
+    Should Be Equal As Strings    ${resp.status_code}    200
+    Should Not Contain    ${resp.content}    "node-id":"host:
+
+Check No Switches
+    [Arguments]    ${switches}
+    [Documentation]    Check no switch is in inventory
+    ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_NODES_API}
+    Should Be Equal As Strings    ${resp.status_code}    200
+    : FOR    ${switch}    IN RANGE    1    ${switches+1}
+    \    Should Not Contain    ${resp.content}    "openflow:${switch}"
+
+Stop Mininet Simulation
+    [Documentation]    Stop mininet
+    Switch Connection    ${mininet_conn_id}
+    Read
+    Write    exit
+    Read Until    ${DEFAULT_LINUX_PROMPT}
+    Close Connection
+
+Scalability Suite Teardown
+    Run Keyword And Ignore Error    RequestsLibrary.Delete Request    session    ${CONFIG_NODES_API}
+    Delete All Sessions
+    Clean Mininet System
diff --git a/csit/libraries/WorkflowsOpenFlow.robot b/csit/libraries/WorkflowsOpenFlow.robot
new file mode 100644 (file)
index 0000000..1e33769
--- /dev/null
@@ -0,0 +1,261 @@
+*** Settings ***
+Documentation     Resource for OpenFlow workflows. This library can be used for scalability and longevity tests.
+Library           SSHLibrary
+Library           DateTime
+Library           RequestsLibrary
+Library           ScaleClient.py
+Library           SwitchClasses/BaseSwitch.py
+Resource          Utils.robot
+Resource          CompareStream.robot
+Resource          MininetKeywords.robot
+Resource          KarafKeywords.robot
+Resource          ../variables/Variables.robot
+
+*** Variables ***
+${topology_file}    create_fullymesh.py
+${topology_file_path}    MininetTopo/${topology_file}
+${flow_count}     10000
+${swspread}       linear
+${tables}         10
+${tabspread}      linear
+${nrthreads}      1
+
+*** Keywords ***
+Workflow Linear Topology
+    [Arguments]    ${switches}    ${sustain_time}=0
+    [Documentation]    Workflow to bring a Linear topology of ${switches} switches, push flows, hold for ${sustain_time} seconds, delete flows and stop topology.
+    ...    This KW returns workflow state (PASS/FAIL), error message and topology discover time.
+    # Define required variables
+    ${error_message}=    Set Variable    Test has completed
+    ${topology_discover_time}=    Set Variable    ${0}
+    ${controller_list}=    Create List    ${ODL_SYSTEM_IP}
+    ${flow_count}=    Convert to Integer    ${flow_count}
+    ${flows_ovs_25}=    Evaluate    ${flow_count} + ${switches}
+    ${flows_before}=    CompareStream.Set_Variable_If_At_Least_Boron    ${switches}    ${0}
+    ${flows_after}=    CompareStream.Set_Variable_If_At_Least_Boron    ${flows_ovs_25}    ${flow_count}
+    ${flows}    ${notes}    ScaleClient.Generate New Flow Details    flows=${flow_count}    switches=${switches}    swspread=${swspread}    tables=${tables}
+    ...    tabspread=${tabspread}
+    # Workflow starts
+    Log to console    ${\n}
+    Log To Console    Starting mininet linear ${switches} switches
+    ${status}    ${result}    Run Keyword And Ignore Error    Start Mininet Linear    ${switches}    mininet_timeout=${switches*4}
+    Return From Keyword If    '${status}' == 'FAIL'    ${status}    Fail starting mininet    ${topology_discover_time}
+    ${start_time}=    DateTime.Get Current Date    result_format=timestamp
+    Log To Console    Verify controller is OK
+    ${status}    ${result}    Run Keyword And Ignore Error    Utils.Verify Controller Is Not Dead    ${ODL_SYSTEM_IP}
+    Return From Keyword If    '${status}' == 'FAIL'    ${status}    Controller is dead    ${topology_discover_time}
+    ${status}    ${result}    Run Keyword And Ignore Error    Utils.Verify Controller Has No Null Pointer Exceptions    ${ODL_SYSTEM_IP}
+    Return From Keyword If    '${status}' == 'FAIL'    ${status}    Controller has NPE    ${topology_discover_time}
+    Log To Console    Checking ${switches} switches
+    ${status}    ${result}    Run Keyword And Ignore Error    Wait Until Keyword Succeeds    ${switches*2}    2s    Check Every Switch
+    ...    ${switches}
+    Return From Keyword If    '${status}' == 'FAIL'    ${status}    Fail checking switch    ${topology_discover_time}
+    Log To Console    Checking Linear Topology
+    ${status}    ${result}    Run Keyword And Ignore Error    Wait Until Keyword Succeeds    ${switches}    2s    Check Linear Topology
+    ...    ${switches}
+    Return From Keyword If    '${status}' == 'FAIL'    ${status}    Fail checking topology    ${topology_discover_time}
+    ${end_time}=    DateTime.Get Current Date    result_format=timestamp
+    ${topology_discover_time}=    DateTime.Subtract Date From Date    ${end_time}    ${start_time}
+    Log To Console    Topology Discovery Time = ${topology_discover_time} seconds
+    Log To Console    Adding ${flow_count} flows
+    ${status}    ${result}    Run Keyword And Ignore Error    ScaleClient.Configure Flows    flow_details=${flows}    controllers=${controller_list}    nrthreads=${nrthreads}
+    Return From Keyword If    '${status}' == 'FAIL'    ${status}    Fail configuring flows    ${topology_discover_time}
+    Log To Console    Checking ${flow_count} flows in Mininet
+    ${status}    ${result}    Run Keyword And Ignore Error    MininetKeywords.Verify Aggregate Flow From Mininet Session    ${mininet_conn_id}    ${flows_after}    ${switches}
+    Return From Keyword If    '${status}' == 'FAIL'    ${status}    Fail checking flows in mininet    ${topology_discover_time}
+    Log To Console    Checking ${flow_count} flows in Operational DS
+    ${status}    ${result}    Run Keyword And Ignore Error    Wait Until Keyword Succeeds    ${switches*4}    2s    Check Flows Operational Datastore
+    ...    ${flows_after}
+    Return From Keyword If    '${status}' == 'FAIL'    ${status}    Fail checking flows in operational DS    ${topology_discover_time}
+    Log To Console    Sleep for ${sustain_time} seconds
+    Sleep    ${sustain_time}
+    Log To Console    Deleting ${flow_count} flows
+    ${status}    ${result}    Run Keyword And Ignore Error    ScaleClient.Deconfigure Flows    flow_details=${flows}    controllers=${controller_list}    nrthreads=${nrthreads}
+    Return From Keyword If    '${status}' == 'FAIL'    ${status}    Fail deconfiguring flows    ${topology_discover_time}
+    Log To Console    Checking no flows in Mininet
+    ${status}    ${result}    Run Keyword And Ignore Error    MininetKeywords.Verify Aggregate Flow From Mininet Session    ${mininet_conn_id}    ${flows_before}    ${switches}
+    Return From Keyword If    '${status}' == 'FAIL'    ${status}    Fail checking no flows in mininet    ${topology_discover_time}
+    Log To Console    Checking no flows in Operational DS
+    ${status}    ${result}    Run Keyword And Ignore Error    Wait Until Keyword Succeeds    ${switches*4}    2s    Check Flows Operational Datastore
+    ...    ${flows_before}
+    Return From Keyword If    '${status}' == 'FAIL'    ${status}    Fail checking no flows in operational DS    ${topology_discover_time}
+    Log To Console    Stopping Mininet
+    ${status}    ${result}    Run Keyword And Ignore Error    MininetKeywords.Stop Mininet And Exit
+    Return From Keyword If    '${status}' == 'FAIL'    ${status}    Fail stopping mininet    ${topology_discover_time}
+    Log To Console    Checking No Switches
+    ${status}    ${result}    Run Keyword And Ignore Error    Wait Until Keyword Succeeds    10s    2s    Check No Switches
+    ...    ${switches}
+    Return From Keyword If    '${status}' == 'FAIL'    ${status}    Fail checking no switch    ${topology_discover_time}
+    Log To Console    Checking No Topology
+    ${status}    ${result}    Run Keyword And Ignore Error    Wait Until Keyword Succeeds    10s    2s    Check No Topology
+    ...    ${switches}
+    Return From Keyword If    '${status}' == 'FAIL'    ${status}    Fail checking no topology    ${topology_discover_time}
+    [Return]    PASS    ${error_message}    ${topology_discover_time}
+
+Workflow Full Mesh Topology
+    [Arguments]    ${switches}    ${sustain_time}=0
+    [Documentation]    Workflow to bring a Full mesh topology of ${switches} switches, push some flows, delete flows and stop topology.
+    ...    This KW returns workflow state (PASS/FAIL), error message and topology discover time.
+    # Define required variables
+    ${error_message}=    Set Variable    Test has completed
+    ${topology_discover_time}=    Set Variable    ${0}
+    ${mininet_timeout}=    Evaluate    ${switches} * ${switches}
+    ${links}=    Evaluate    ${switches} * ${switches-1}
+    ${controller_list}=    Create List    ${ODL_SYSTEM_IP}
+    ${flow_count}=    Convert to Integer    ${flow_count}
+    ${flows_ovs_25}=    Evaluate    ${flow_count} + ${switches}
+    ${flows_before}=    CompareStream.Set_Variable_If_At_Least_Boron    ${switches}    ${0}
+    ${flows_after}=    CompareStream.Set_Variable_If_At_Least_Boron    ${flows_ovs_25}    ${flow_count}
+    ${flows}    ${notes}    ScaleClient.Generate New Flow Details    flows=${flow_count}    switches=${switches}    swspread=${swspread}    tables=${tables}
+    ...    tabspread=${tabspread}
+    # Workflow starts
+    Log to console    ${\n}
+    Log To Console    Start a mininet full mesh ${switches} switches
+    ${status}    ${result}    Run Keyword And Ignore Error    Start Mininet Full Mesh    ${switches}    mininet_timeout=${mininet_timeout}
+    Return From Keyword If    '${status}' == 'FAIL'    ${status}    Fail starting mininet    ${topology_discover_time}
+    ${start_time}=    DateTime.Get Current Date    result_format=timestamp
+    Log To Console    Verify controller is OK
+    ${status}    ${result}    Run Keyword And Ignore Error    Utils.Verify Controller Is Not Dead    ${ODL_SYSTEM_IP}
+    Return From Keyword If    '${status}' == 'FAIL'    ${status}    Controller is dead    ${topology_discover_time}
+    ${status}    ${result}    Run Keyword And Ignore Error    Utils.Verify Controller Has No Null Pointer Exceptions    ${ODL_SYSTEM_IP}
+    Return From Keyword If    '${status}' == 'FAIL'    ${status}    Controller has NPE    ${topology_discover_time}
+    Log To Console    Checking ${switches} switches
+    ${status}    ${result}    Run Keyword And Ignore Error    Wait Until Keyword Succeeds    10s    2s    Check Every Switch
+    ...    ${switches}
+    Return From Keyword If    '${status}' == 'FAIL'    ${status}    Fail checking switch    ${topology_discover_time}
+    Log To Console    Check number of links in inventory is ${links}
+    ${status}    ${result}    Run Keyword And Ignore Error    Wait Until Keyword Succeeds    10s    2s    Check Number Of Links
+    ...    ${links}
+    Return From Keyword If    '${status}' == 'FAIL'    ${status}    Fail checking topology    ${topology_discover_time}
+    ${end_time}=    DateTime.Get Current Date    result_format=timestamp
+    ${topology_discover_time}=    DateTime.Subtract Date From Date    ${end_time}    ${start_time}
+    Log To Console    Topology Discovery Time = ${topology_discover_time} seconds
+    Log To Console    Adding ${flow_count} flows
+    ${status}    ${result}    Run Keyword And Ignore Error    ScaleClient.Configure Flows    flow_details=${flows}    controllers=${controller_list}    nrthreads=${nrthreads}
+    Return From Keyword If    '${status}' == 'FAIL'    ${status}    Fail configuring flows    ${topology_discover_time}
+    Log To Console    Checking ${flow_count} flows in Mininet
+    ${status}    ${result}    Run Keyword And Ignore Error    MininetKeywords.Verify Aggregate Flow From Mininet Session    ${mininet_conn_id}    ${flows_after}    ${switches}
+    Return From Keyword If    '${status}' == 'FAIL'    ${status}    Fail checking flows in mininet    ${topology_discover_time}
+    Log To Console    Checking ${flow_count} flows in Operational DS
+    ${status}    ${result}    Run Keyword And Ignore Error    Wait Until Keyword Succeeds    ${switches*4}    2s    Check Flows Operational Datastore
+    ...    ${flows_after}
+    Return From Keyword If    '${status}' == 'FAIL'    ${status}    Fail checking flows in operational DS    ${topology_discover_time}
+    Log To Console    Sleep for ${sustain_time} seconds
+    Sleep    ${sustain_time}
+    Log To Console    Deleting ${flow_count} flows
+    ${status}    ${result}    Run Keyword And Ignore Error    ScaleClient.Deconfigure Flows    flow_details=${flows}    controllers=${controller_list}    nrthreads=${nrthreads}
+    Return From Keyword If    '${status}' == 'FAIL'    ${status}    Fail deconfiguring flows    ${topology_discover_time}
+    Log To Console    Checking no flows in Mininet
+    ${status}    ${result}    Run Keyword And Ignore Error    MininetKeywords.Verify Aggregate Flow From Mininet Session    ${mininet_conn_id}    ${flows_before}    ${switches}
+    Return From Keyword If    '${status}' == 'FAIL'    ${status}    Fail checking no flows in mininet    ${topology_discover_time}
+    Log To Console    Checking no flows in Operational DS
+    ${status}    ${result}    Run Keyword And Ignore Error    Wait Until Keyword Succeeds    ${switches*4}    2s    Check Flows Operational Datastore
+    ...    ${flows_before}
+    Return From Keyword If    '${status}' == 'FAIL'    ${status}    Fail checking no flows in operational DS    ${topology_discover_time}
+    Log To Console    Stopping Mininet
+    ${status}    ${result}    Run Keyword And Ignore Error    MininetKeywords.Stop Mininet And Exit
+    Return From Keyword If    '${status}' == 'FAIL'    ${status}    Fail stopping mininet    ${topology_discover_time}
+    Log To Console    Checking No Switches
+    ${status}    ${result}    Run Keyword And Ignore Error    Wait Until Keyword Succeeds    10s    2s    Check No Switches
+    ...    ${switches}
+    Return From Keyword If    '${status}' == 'FAIL'    ${status}    Fail checking no switch    ${topology_discover_time}
+    Log To Console    Checking No Topology
+    ${status}    ${result}    Run Keyword And Ignore Error    Wait Until Keyword Succeeds    10s    2s    Check No Topology
+    ...    ${switches}
+    Return From Keyword If    '${status}' == 'FAIL'    ${status}    Fail checking no topology    ${topology_discover_time}
+    [Return]    PASS    ${error_message}    ${topology_discover_time}
+
+Start Mininet Linear
+    [Arguments]    ${switches}    ${mininet_timeout}=${DEFAULT_TIMEOUT}
+    [Documentation]    Start mininet linear topology with ${switches} nodes
+    Log    Start Mininet Linear
+    MininetKeywords.StartMininet Single Controller    options=--topo linear,${switches} --switch ovsk,protocols=OpenFlow13    timeout=${mininet_timeout}
+
+Start Mininet Full Mesh
+    [Arguments]    ${switches}    ${base_mac}=00:00:00:00:00:00    ${base_ip}=10.0.0.0    ${hosts}=0    ${mininet_timeout}=${DEFAULT_TIMEOUT}
+    [Documentation]    Start a custom mininet topology.
+    ${mininet_conn_id}=    SSHLibrary.Open Connection    ${TOOLS_SYSTEM_IP}    prompt=${DEFAULT_LINUX_PROMPT}    timeout=${mininet_timeout}
+    Set Suite Variable    ${mininet_conn_id}
+    Utils.Flexible_Mininet_Login
+    Log    Copying ${topology_file_path} file to Mininet VM and Creating Full Mesh topology
+    SSHLibrary.Put File    ${CURDIR}/${topology_file_path}
+    SSHLibrary.Write    python ${topology_file} ${switches} ${hosts} ${base_mac} ${base_ip}
+    SSHLibrary.Read Until    ${DEFAULT_LINUX_PROMPT}
+    Log    Start Mininet Full Mesh
+    SSHLibrary.Write    sudo mn --controller=remote,ip=${ODL_SYSTEM_IP} --custom switch.py --topo demotopo --switch ovsk,protocols=OpenFlow13
+    Read Until    mininet>
+    Log    Check OVS configuratiom
+    Write    sh ovs-vsctl show
+    ${output}=    Read Until    mininet>
+    # Ovsdb connection is sometimes lost after mininet is started. Checking if the connection is alive before proceeding.
+    Should Not Contain    ${output}    database connection failed
+
+Check Every Switch
+    [Arguments]    ${switches}    ${base_mac}=00:00:00:00:00:00
+    [Documentation]    Check all switches and stats in operational inventory
+    ${mac}=    String.Replace String Using Regexp    ${base_mac}    :    ${EMPTY}
+    ${mac}=    BaseSwitch.Convert Hex To Decimal As String    ${mac}
+    ${mac}=    Convert To Integer    ${mac}
+    : FOR    ${switch}    IN RANGE    1    ${switches+1}
+    \    ${dpid_decimal}=    Evaluate    ${mac} + ${switch}
+    \    ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_NODES_API}/node/openflow:${dpid_decimal}
+    \    Should Be Equal As Strings    ${resp.status_code}    200
+    \    Should Contain    ${resp.content}    flow-capable-node-connector-statistics
+    \    Should Contain    ${resp.content}    flow-table-statistics
+
+Check Linear Topology
+    [Arguments]    ${switches}
+    [Documentation]    Check Linear topology given ${switches}
+    ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_TOPO_API}
+    Should Be Equal As Strings    ${resp.status_code}    200
+    : FOR    ${switch}    IN RANGE    1    ${switches+1}
+    \    Should Contain    ${resp.content}    "node-id":"openflow:${switch}"
+    \    Should Contain    ${resp.content}    "tp-id":"openflow:${switch}:1"
+    \    Should Contain    ${resp.content}    "tp-id":"openflow:${switch}:2"
+    \    Should Contain    ${resp.content}    "source-tp":"openflow:${switch}:2"
+    \    Should Contain    ${resp.content}    "dest-tp":"openflow:${switch}:2"
+    \    ${edge}    Evaluate    ${switch}==1 or ${switch}==${switches}
+    \    Run Keyword Unless    ${edge}    Should Contain    ${resp.content}    "tp-id":"openflow:${switch}:3"
+    \    Run Keyword Unless    ${edge}    Should Contain    ${resp.content}    "source-tp":"openflow:${switch}:3"
+    \    Run Keyword Unless    ${edge}    Should Contain    ${resp.content}    "dest-tp":"openflow:${switch}:3"
+
+Check Number Of Links
+    [Arguments]    ${links}
+    [Documentation]    Check number of links in inventory is ${links}
+    ${resp}=    RequestsLibrary.Get Request    session    ${OPERATIONAL_TOPO_API}
+    Log    Check number of links in inventory is ${links}
+    Should Be Equal As Strings    ${resp.status_code}    200
+    ${count}=    Get Count    ${resp.content}    "link-id":"openflow:
+    Should Be Equal As Integers    ${count}    ${links}
+
+Check Flows Operational Datastore
+    [Arguments]    ${flow_count}    ${controller_ip}=${ODL_SYSTEM_IP}
+    [Documentation]    Check if number of Operational Flows on member of given index is equal to ${flow_count}.
+    ${sw}    ${reported_flow}    ${found_flow}=    ScaleClient.Flow Stats Collected    controller=${controller_ip}
+    Should_Be_Equal_As_Numbers    ${flow_count}    ${found_flow}
+
+Check No Switches
+    [Arguments]    ${switches}
+    [Documentation]    Check no switch is in inventory
+    ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_NODES_API}
+    Should Be Equal As Strings    ${resp.status_code}    200
+    : FOR    ${switch}    IN RANGE    1    ${switches+1}
+    \    Should Not Contain    ${resp.content}    "openflow:${switch}"
+
+Check No Topology
+    [Arguments]    ${switches}
+    [Documentation]    Check no switch is in topology
+    ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_TOPO_API}
+    Should Be Equal As Strings    ${resp.status_code}    200
+    : FOR    ${switch}    IN RANGE    1    ${switches+1}
+    \    Should Not Contain    ${resp.content}    openflow:${switch}
+
+Workflow Setup
+    RequestsLibrary.Create Session    session    http://${ODL_SYSTEM_IP}:${RESTCONFPORT}    auth=${AUTH}    headers=${HEADERS_XML}
+    Wait Until Keyword Succeeds    3x    1s    KarafKeywords.Issue Command On Karaf Console    log:set ERROR
+
+Workflow Teardown
+    [Documentation]    Cleanup when workflow is interrupt
+    Run Keyword And Ignore Error    RequestsLibrary.Delete Request    session    ${CONFIG_NODES_API}
+    Clean Mininet System
+    RequestsLibrary.Delete All Sessions
diff --git a/csit/scriptplans/openflowplugin-link-scalability-daily.txt b/csit/scriptplans/openflowplugin-link-scalability-daily.txt
new file mode 100644 (file)
index 0000000..1a31c3a
--- /dev/null
@@ -0,0 +1,3 @@
+# Place the scripts in run order:
+integration/test/csit/scripts/set_elasticsearch_attribute_short.sh
+integration/test/csit/scripts/set_jvm_common_attribute.sh
diff --git a/csit/scriptplans/openflowplugin-sw-scalability-daily.txt b/csit/scriptplans/openflowplugin-sw-scalability-daily.txt
new file mode 100644 (file)
index 0000000..1a31c3a
--- /dev/null
@@ -0,0 +1,3 @@
+# Place the scripts in run order:
+integration/test/csit/scripts/set_elasticsearch_attribute_short.sh
+integration/test/csit/scripts/set_jvm_common_attribute.sh
index 917b0e2d490be37f1b74557ae65bbb3389f20381..3f4b94eb3bb41d60d5889c26ae07d5ec7224bf9a 100644 (file)
@@ -5,7 +5,7 @@ Suite Teardown    Scalability Suite Teardown
 Library           OperatingSystem
 Library           RequestsLibrary
 Variables         ../../../variables/Variables.py
-Resource          ../../../libraries/Scalability.robot
+Resource          ../../../libraries/WorkflowsL2switch.robot
 
 *** Variables ***
 ${MIN_HOSTS}      100
index f70b96b3769a59906f775966e88633cdc502159d..3dcd7e811355ac2791a84de4c87de6e243870637 100644 (file)
@@ -12,7 +12,7 @@ Library           SSHLibrary
 Library           Collections
 Library           ../../../libraries/Common.py
 Resource          ../../../libraries/NicKeywords.robot
-Resource          ../../../libraries/Scalability.robot
+Resource          ../../../libraries/WorkflowsOpenFlow.robot
 
 *** Variables ***
 ${switches}       8
diff --git a/csit/suites/openflowplugin/Longevity/010__longevity_switches.robot b/csit/suites/openflowplugin/Longevity/010__longevity_switches.robot
deleted file mode 100644 (file)
index 46be738..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-*** Settings ***
-Documentation     Beta Version of the Longevity Test. Currently it does a single test:
-...               1. runs one iteration of the switch scale test based on ${NUM_SWITCHES}
-...               Step 1 runs in a psuedo infinite loop and before each loop is
-...               run, a time check is made against the ${TEST_LENGTH}. If the test duration
-...               has expired, the loop is exited and the test is marked PASS
-...
-...               If step 1 fails to reach their configured value of ${NUM_SWITCHES}
-...               the test will exit immediately and not continue.
-Suite Setup       Longevity Suite Setup
-Suite Teardown    Longevity Suite Teardown
-Library           RequestsLibrary
-Library           DateTime
-Variables         ../../../variables/Variables.py
-Resource          ../../../libraries/Scalability.robot
-Resource          ../../../libraries/KarafKeywords.robot
-
-*** Variables ***
-${NUM_SWITCHES}    200
-${SUSTAIN_TIME}    60
-${TEST_LENGTH}    2 hours
-${KARAF_LOG_LEVEL}    ERROR
-
-*** Test Cases ***
-Longevity Test
-    [Documentation]    Uses switch scalability test functionality in a loop for given period of time
-    #    This loop is not infinite, so going "sufficiently large" for now.
-    : FOR    ${i}    IN RANGE    1    65536
-    \    ${expiration_flag}=    Check If There Is A Reason To Exit Test Or If Duration Has Expired
-    \    Exit For Loop If    "${expiration_flag}" == "True"
-    \    ${switch_count}=    Find Max Switches    ${NUM_SWITCHES}    ${NUM_SWITCHES}    ${NUM_SWITCHES}    ${SUSTAIN_TIME}
-    \    Check If There Is A Reason To Exit Test Or If Duration Has Expired    ${switch_count}    ${NUM_SWITCHES}    Switch count not correct
-
-*** Keywords ***
-Check If There Is A Reason To Exit Test Or If Duration Has Expired
-    [Arguments]    ${comparator1}=1    ${comparator2}=1    ${comparator_failure_message}=null
-    [Documentation]    In order to simplify the main test case, this keyword will make all the neccessary checks
-    ...    to determine if the test should FAIL and quit because of some problem. It will also return a bool to
-    ...    indicate if the requested duration of the longevity test has elapsed. The caller does not have to use
-    ...    that return value.
-    Should Be Equal    ${comparator1}    ${comparator2}    ${comparator_failure_message}
-    Verify Controller Is Not Dead    ${ODL_SYSTEM_IP}
-    Verify Controller Has No Null Pointer Exceptions    ${ODL_SYSTEM_IP}
-    ${is_expired}=    Check If Test Duration Is Expired
-    [Return]    ${is_expired}
-
-Check If Test Duration Is Expired
-    [Documentation]    Compares the current time with that of the suite variable ${end_time} to determine if the
-    ...    test duration has expired.
-    ${test_is_expired}=    Set Variable    False
-    ${current_time}=    Get Current Date
-    ${current_time}=    Convert Date    ${current_time}    epoch
-    ${test_is_expired}=    Set Variable If    "${current_time}" > "${end_time}"    True
-    [Return]    ${test_is_expired}
-
-Longevity Suite Setup
-    [Documentation]    In addtion to opening the REST session to the controller, the ${end_time} that this
-    ...    test should not exceed is calculated and made in to a suite wide variable.
-    Create Session    session    http://${ODL_SYSTEM_IP}:${RESTCONFPORT}    auth=${AUTH}    headers=${HEADERS_XML}
-    Wait Until Keyword Succeeds    3x    1s    KarafKeywords.Issue Command On Karaf Console    log:set ${KARAF_LOG_LEVEL}
-    ${start_time}=    Get Current Date
-    ${end_time}=    Add Time To Date    ${start_time}    ${TEST_LENGTH}
-    ${end_time}=    Convert Date    ${end_time}    epoch
-    Set Suite Variable    ${end_time}
-
-Longevity Suite Teardown
-    [Documentation]    Any cleanup neccessary to allow this test to be run in a static environment should go here
-    ...    Currently, the same steps needed for the scalability suites should suffice.
-    Scalability Suite Teardown
diff --git a/csit/suites/openflowplugin/Longevity/010__longevity_test.robot b/csit/suites/openflowplugin/Longevity/010__longevity_test.robot
new file mode 100644 (file)
index 0000000..631eecc
--- /dev/null
@@ -0,0 +1,37 @@
+*** Settings ***
+Documentation     Beta Version of the Longevity Test. Currently it does a single test:
+...               1. runs one iteration of the link scale test based on ${NUM_SWITCHES}
+...               Step 1 runs in a psuedo infinite loop and before each loop is
+...               run, a time check is made against the ${TEST_LENGTH}. If the test duration
+...               has expired, the loop is exited and the test is marked PASS
+Suite Setup       Workflow Setup
+Suite Teardown    Workflow Teardown
+Library           DateTime
+Resource          ../../../variables/Variables.robot
+Resource          ../../../libraries/WorkflowsOpenFlow.robot
+Resource          ../../../libraries/KarafKeywords.robot
+
+*** Variables ***
+${NUM_SWITCHES}    36
+${SUSTAIN_TIME}    60s
+${TEST_LENGTH}    2h
+
+*** Test Cases ***
+Longevity Test
+    [Documentation]    Uses OpenFlow Full Mesh Topology workflow in a loop for given period of time ${TEST_LENGTH}
+    ${error_message}=    Set Variable    Fail initializing suite
+    ${switches}=    Convert to Integer    ${NUM_SWITCHES}
+    ${max_duration}=    DateTime.Convert Time    ${TEST_LENGTH}    number
+    ${start_time}=    DateTime.Get Current Date
+    #    This loop is not infinite, so going "sufficiently large" for now.
+    : FOR    ${i}    IN RANGE    1    65536
+    \    ${status}    ${error_message}    ${topology_discover_time}    WorkflowsOpenFlow.Workflow Full Mesh Topology    ${switches}    ${SUSTAIN_TIME}
+    \    ${current_time}=    DateTime.Get Current Date
+    \    ${duration}=    DateTime.Subtract Date From Date    ${current_time}    ${start_time}    number
+    \    Exit For Loop If    '${status}' == 'FAIL'
+    \    Exit For Loop If    ${duration} > ${max_duration}
+    ${duration_compact}=    DateTime.Convert Time    ${duration}    compact
+    Log to console    ${\n}
+    Log To Console    Execution stopped because: ${error_message}
+    Log To Console    Test executed for ${duration_compact} seconds
+    Run Keyword If    '${status}' == 'FAIL'    Fail    ${error_message}
diff --git a/csit/suites/openflowplugin/Longevity/020__longevity_switches_links.robot b/csit/suites/openflowplugin/Longevity/020__longevity_switches_links.robot
deleted file mode 100644 (file)
index b1876d7..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-*** Settings ***
-Documentation     Beta Version of the Longevity Test. Currently:
-...               1. runs one iteration of the switch scale test based on ${NUM_SWITCHES}
-...               2. runs one iteration of the link scale test based on ${NUM_LINKS}
-...               Steps 1 and 2 are run in a psuedo infinite loop and before each loop is
-...               run, a time check is made against the ${TEST_LENGTH}. If the test duration
-...               has expired, the loop is exited and the test is marked PASS
-...
-...               If either of steps 1 or 2 fail to reach their configured value of ${NUM_SWITCHES}
-...               or ${NUM_LINKS} the test will exit immediately and not continue.
-Suite Setup       Longevity Suite Setup
-Suite Teardown    Longevity Suite Teardown
-Library           RequestsLibrary
-Library           DateTime
-Variables         ../../../variables/Variables.py
-Resource          ../../../libraries/Scalability.robot
-
-*** Variables ***
-${NUM_SWITCHES}    200
-${NUM_LINKS}      20
-${TEST_LENGTH}    2 hours
-
-*** Test Cases ***
-Longevity Test
-    [Documentation]    Uses switch and link scale test functionality in a loop for given period of time
-    #    This loop is not infinite, so going "sufficiently large" for now.
-    : FOR    ${i}    IN RANGE    1    65536
-    \    ${expiration_flag}=    Check If There Is A Reason To Exit Test Or If Duration Has Expired
-    \    Exit For Loop If    "${expiration_flag}" == "True"
-    \    ${switch_count}=    Find Max Switches    ${NUM_SWITCHES}    ${NUM_SWITCHES}    ${NUM_SWITCHES}
-    \    Check If There Is A Reason To Exit Test Or If Duration Has Expired    ${switch_count}    ${NUM_SWITCHES}    Switch count not correct
-    \    ${link_count}=    Find Max Links    ${NUM_LINKS}    ${NUM_LINKS}    ${NUM_LINKS}
-    \    Check If There Is A Reason To Exit Test Or If Duration Has Expired    ${link_count}    ${NUM_LINKS}    Link count not correct
-
-*** Keywords ***
-Check If There Is A Reason To Exit Test Or If Duration Has Expired
-    [Arguments]    ${comparator1}=1    ${comparator2}=1    ${comparator_failure_message}=null
-    [Documentation]    In order to simplify the main test case, this keyword will make all the neccessary checks
-    ...    to determine if the test should FAIL and quit because of some problem. It will also return a bool to
-    ...    indicate if the requested duration of the longevity test has elapsed. The caller does not have to use
-    ...    that return value.
-    Should Be Equal    ${comparator1}    ${comparator2}    ${comparator_failure_message}
-    Verify Controller Is Not Dead    ${ODL_SYSTEM_IP}
-    ${is_expired}=    Check If Test Duration Is Expired
-    [Return]    ${is_expired}
-
-Check If Test Duration Is Expired
-    [Documentation]    Compares the current time with that of the suite variable ${end_time} to determine if the
-    ...    test duration has expired.
-    ${test_is_expired}=    Set Variable    False
-    ${current_time}=    Get Current Date
-    ${current_time}=    Convert Date    ${current_time}    epoch
-    ${test_is_expired}=    Set Variable If    "${current_time}" > "${end_time}"    True
-    [Return]    ${test_is_expired}
-
-Longevity Suite Setup
-    [Documentation]    In addtion to opening the REST session to the controller, the ${end_time} that this
-    ...    test should not exceed is calculated and made in to a suite wide variable.
-    Create Session    session    http://${ODL_SYSTEM_IP}:${RESTCONFPORT}    auth=${AUTH}    headers=${HEADERS_XML}
-    ${mininet_conn_id}=    Open Connection    ${TOOLS_SYSTEM_IP}    prompt=${DEFAULT_LINUX_PROMPT}
-    Login With Public Key    ${TOOLS_SYSTEM_USER}    ${USER_HOME}/.ssh/${SSH_KEY}    any
-    Log    Copying ${CREATE_FULLYMESH_TOPOLOGY_FILE_PATH} file to Mininet VM
-    Put File    ${CURDIR}/../../../${CREATE_FULLYMESH_TOPOLOGY_FILE_PATH}
-    Close Connection
-    ${start_time}=    Get Current Date
-    ${end_time}=    Add Time To Date    ${start_time}    ${TEST_LENGTH}
-    ${end_time}=    Convert Date    ${end_time}    epoch
-    Set Suite Variable    ${end_time}
-
-Longevity Suite Teardown
-    [Documentation]    Any cleanup neccessary to allow this test to be run in a static environment should go here
-    ...    Currently, the same steps needed for the scalability suites should suffice.
-    Scalability Suite Teardown
index f24f4edd297b6417c331da46a03b6b3b232bfd2d..13df49e8761956365d8dee2f4738f4ba2b9912b5 100644 (file)
@@ -1,33 +1,33 @@
 *** Settings ***
 Documentation     Test suite for finding out max number of Links
-Suite Setup       Link Scale Suite Setup
-Suite Teardown    Scalability Suite Teardown
+Suite Setup       Workflow Setup
+Suite Teardown    Workflow Teardown
 Library           OperatingSystem
-Library           RequestsLibrary
-Variables         ../../../variables/Variables.py
-Resource          ../../../libraries/Scalability.robot
+Resource          ../../../variables/Variables.robot
+Resource          ../../../libraries/WorkflowsOpenFlow.robot
+Resource          ../../../libraries/KarafKeywords.robot
 
 *** Variables ***
-${MIN_SWITCHES}    10
-${MAX_SWITCHES}    200
-${STEP_SWITCHES}    5
+@{SWITCH_LIST}    ${16}    ${32}    ${40}    ${48}    ${52}    ${56}    ${60}
 ${LINKS_RESULT_FILE}    links.csv
+${TIME_RESULT_FILE}    time.csv
 
 *** Test Cases ***
-Find Max Switch Links
+Find Max Links
     [Documentation]    Find max number of Links supported. Fully mesh topology starting from
     ...    ${MIN_SWITCHES} switches till ${MAX_SWITCHES} switches will be attempted in steps of ${STEP_SWITCHES}
-    Append To File    ${LINKS_RESULT_FILE}    Max Links \n
-    ${max-links}    Find Max Links    ${MIN_SWITCHES}    ${MAX_SWITCHES}    ${STEP_SWITCHES}
-    Log    ${max-links}
-    Append To File    ${LINKS_RESULT_FILE}    ${max-links}\n
-
-*** Keywords ***
-Link Scale Suite Setup
-    [Documentation]    Do initial steps for link scale tests
-    Create Session    session    http://${ODL_SYSTEM_IP}:${RESTCONFPORT}    auth=${AUTH}    headers=${HEADERS_XML}
-    ${mininet_conn_id}=    Open Connection    ${TOOLS_SYSTEM_IP}    prompt=${DEFAULT_LINUX_PROMPT}
-    Login With Public Key    ${TOOLS_SYSTEM_USER}    ${USER_HOME}/.ssh/${SSH_KEY}    any
-    Log    Copying ${CREATE_FULLYMESH_TOPOLOGY_FILE_PATH} file to Mininet VM
-    Put File    ${CURDIR}/../../../${CREATE_FULLYMESH_TOPOLOGY_FILE_PATH}
-    Close Connection
+    ${error_message}=    Set Variable    Fail initializing suite
+    ${maximum_links}=    Set Variable    ${0}
+    ${discover_time}=    Set Variable    0
+    : FOR    ${switches}    IN    @{SWITCH_LIST}
+    \    ${status}    ${error_message}    ${topology_discover_time}    WorkflowsOpenFlow.Workflow Full Mesh Topology    ${switches}
+    \    Exit For Loop If    '${status}' == 'FAIL'
+    \    ${maximum_links}=    Evaluate    ${switches} * ${switches-1}
+    \    ${discover_time}=    Set Variable    ${topology_discover_time}
+    Log to console    ${\n}
+    Log To Console    Execution stopped because: ${error_message}
+    Log To Console    Max Links: ${maximum_links}
+    OperatingSystem.Append To File    ${LINKS_RESULT_FILE}    Max Links\n
+    OperatingSystem.Append To File    ${LINKS_RESULT_FILE}    ${maximum_links}\n
+    OperatingSystem.Append To File    ${TIME_RESULT_FILE}    Discover Time\n
+    OperatingSystem.Append To File    ${TIME_RESULT_FILE}    ${discover_time}\n
index 3ee32a97836d51df810d5869c58e9d9d92d6c14c..8b01bcf073cff1815d16da7d65802da3f9d17fef 100644 (file)
@@ -1,24 +1,37 @@
 *** Settings ***
 Documentation     Test suite for finding out max number of switches
-Suite Setup       Create Session    session    http://${ODL_SYSTEM_IP}:${RESTCONFPORT}    auth=${AUTH}    headers=${HEADERS_XML}
-Suite Teardown    Scalability Suite Teardown
+Suite Setup       Workflow Setup
+Suite Teardown    Workflow Teardown
 Library           OperatingSystem
-Library           RequestsLibrary
-Variables         ../../../variables/Variables.py
-Resource          ../../../libraries/Scalability.robot
+Resource          ../../../variables/Variables.robot
+Resource          ../../../libraries/WorkflowsOpenFlow.robot
 Resource          ../../../libraries/KarafKeywords.robot
 
 *** Variables ***
 ${MIN_SWITCHES}    100
-${MAX_SWITCHES}    500
+${MAX_SWITCHES}    800
 ${STEP_SWITCHES}    100
 ${SWITCHES_RESULT_FILE}    switches.csv
+${TIME_RESULT_FILE}    time.csv
 
 *** Test Cases ***
 Find Max Switches
     [Documentation]    Find max number of switches starting from ${MIN_SWITCHES} till reaching ${MAX_SWITCHES} in steps of ${STEP_SWITCHES}
-    Wait Until Keyword Succeeds    3x    1s    KarafKeywords.Issue Command On Karaf Console    log:set ERROR
-    Append To File    ${SWITCHES_RESULT_FILE}    Max Switches Linear Topo\n
-    ${max-switches}    Find Max Switches    ${MIN_SWITCHES}    ${MAX_SWITCHES}    ${STEP_SWITCHES}
-    Log    ${max-switches}
-    Append To File    ${SWITCHES_RESULT_FILE}    ${max-switches}\n
+    ${error_message}=    Set Variable    Fail initializing suite
+    ${maximum_switches}=    Set Variable    ${0}
+    ${discover_time}=    Set Variable    0
+    ${start}=    Convert to Integer    ${MIN_SWITCHES}
+    ${stop}=    Convert to Integer    ${MAX_SWITCHES}
+    ${step}=    Convert to Integer    ${STEP_SWITCHES}
+    : FOR    ${switches}    IN RANGE    ${start}    ${stop+1}    ${step}
+    \    ${status}    ${error_message}    ${topology_discover_time}    WorkflowsOpenFlow.Workflow Linear Topology    ${switches}
+    \    Exit For Loop If    '${status}' == 'FAIL'
+    \    ${maximum_switches}=    Set variable    ${switches}
+    \    ${discover_time}=    Set Variable    ${topology_discover_time}
+    Log to console    ${\n}
+    Log To Console    Execution stopped because: ${error_message}
+    Log To Console    Max Switches: ${maximum_switches}
+    OperatingSystem.Append To File    ${SWITCHES_RESULT_FILE}    Max Switches\n
+    OperatingSystem.Append To File    ${SWITCHES_RESULT_FILE}    ${maximum_switches}\n
+    OperatingSystem.Append To File    ${TIME_RESULT_FILE}    Discover Time\n
+    OperatingSystem.Append To File    ${TIME_RESULT_FILE}    ${discover_time}\n
index abb02cc592fcd7f1432d7b8b6c7423402777b53b..8e47218adf476cc6c739c0a7a00ba8849eb83f29 100644 (file)
@@ -1,2 +1,3 @@
 # Place the suites in run order:
 integration/test/csit/suites/openflowplugin/Maximum_Links
+integration/test/csit/suites/integration/Create_JVM_Plots.robot
index fd77bff99a7e60d00186b99b39f259aedec8aed4..5694d625f289870f27fe5c77b2adfda786971e55 100644 (file)
@@ -1,3 +1,3 @@
 # Place the suites in run order:
-integration/test/csit/suites/openflowplugin/Longevity/010__longevity_switches.robot
+integration/test/csit/suites/openflowplugin/Longevity/010__longevity_test.robot
 integration/test/csit/suites/integration/Create_JVM_Plots.robot
diff --git a/csit/testplans/openflowplugin-scalability-daily.txt b/csit/testplans/openflowplugin-scalability-daily.txt
deleted file mode 100644 (file)
index 1f7689f..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-# Place the suites in run order:
-integration/test/csit/suites/openflowplugin/Maximum_Switches/010__finding_max_switches.robot
index 33c65e8db64cc8021331a98747b5e34f2ae6d751..daedcbf95d1e21d34c9b302350f7798f8c920d26 100644 (file)
@@ -1,2 +1,3 @@
 # Place the suites in run order:
-integration/test/csit/suites/openflowplugin/Maximum_Switches/020__find_max_switches.robot
+integration/test/csit/suites/openflowplugin/Maximum_Switches/010__finding_max_switches.robot
+integration/test/csit/suites/integration/Create_JVM_Plots.robot
index 1fe9235c82df90f056806618f92602e416fe0496..e461d71e9c6d63e0d79a4a31f76a5f41d986f693 100644 (file)
@@ -136,21 +136,11 @@ GET_INTENTS_URI = '/retconf/config/intent:intents'
 AUTH_TOKEN_API = '/oauth2/token'
 REVOKE_TOKEN_API = '/oauth2/revoke'
 
-# Base Mininet Mac address. DPID of mininet switches will be derived from this.
-BASE_MAC_1 = '00:4b:00:00:00:00'
-# Base IP of mininet hosts
-BASE_IP_1 = '75.75.0.0'
-
 # Vlan Custom Topology Path and File
 CREATE_VLAN_TOPOLOGY_FILE = "vlan_vtn_test.py"
 CREATE_VLAN_TOPOLOGY_FILE_PATH = "MininetTopo/" +\
                                  CREATE_VLAN_TOPOLOGY_FILE
 
-# Mininet Custom Topology Path and File
-CREATE_FULLYMESH_TOPOLOGY_FILE = "create_fullymesh.py"
-CREATE_FULLYMESH_TOPOLOGY_FILE_PATH = "libraries/MininetTopo/" +\
-                                      CREATE_FULLYMESH_TOPOLOGY_FILE
-
 # Mininet Custom Topology Path and File for Path Policy
 CREATE_PATHPOLICY_TOPOLOGY_FILE = "topo-3sw-2host_multipath.py"
 CREATE_PATHPOLICY_TOPOLOGY_FILE_PATH = "MininetTopo/" +\
index f90d423766948ad3f418b4f8c12f1379272ccd3a..6e62cb8f51386a77396f783042ea50201020fef0 100644 (file)
@@ -29,8 +29,6 @@ ${ALERTFIELDVALUERULERECORD}    /restconf/config/alertrule:alertFieldValueRuleRe
 ${ALERTMESSAGECOUNTRULERECORD}    /restconf/config/alertrule:alertMessageCountRuleRecord/    # FIXME: Move to a separate Centinel-related Resource and add description.
 @{AUTH}           admin    admin    # Authentication tuple for accessing ODL RESTCONF server. TODO: Migrate most suites to TemplatedRequests, then chose a more descriptive name.
 ${AUTH_TOKEN_API}    /oauth2/token    # FIXME: Move to a separate AAA-related Resource and add description.
-${BASE_IP_1}      75.75.0.0    # A shorthand. FIXME: Find who uses this and eliminate, or at least add a good description.
-${BASE_MAC_1}     00:4b:00:00:00:00    # A shorthand. FIXME: Find who uses this and eliminate, or at least add a good description.
 ${BGP_TOOL_PORT}    17900    # Tool side of BGP communication listens on this port.
 ${BGPCEP_LOG_LEVEL}    ${DEFAULT_BGPCEP_LOG_LEVEL}    # Some suites temporarily override org.opendaylight.bgpcep Karaf log level to this value.
 ${CTRLS}          controllers    # A shorthand. FIXME: Find who uses this and eliminate, or at least add a good description.
@@ -41,12 +39,10 @@ ${CONFIG_API}     /restconf/config    # FIXME: Move to a separate Resource and a
 ${CONTAINER}      default    # A shorthand. FIXME: Find who uses this and eliminate, or at least add a good description.
 ${CONTROLLER}     ${ODL_SYSTEM_IP}    # Deprecated. FIXME: Eradicate.
 ${CONTROLLER_PASSWORD}    ${ODL_SYSTEM_PASSWORD}    # Deprecated. FIXME: Eradicate.
-${CONTROLLER_PROMPT}    ${ODL_SYSTEM_PROMPT}    # Deprecated. FIXME: Eradicate.
+${CONTROLLER_PROMPT}    ${DEFAULT_LINUX_PROMPT}    # Deprecated. FIXME: Eradicate.
 ${CONTROLLERS}    ${ODL_SYSTEM_IP_LIST}    # Deprecated. FIXME: Eradicate.
 ${CONTROLLER_CONFIG_MOUNT}    /restconf/config/network-topology:network-topology/topology/topology-netconf/node/controller-config/yang-ext:mount    # FIXME: Move to a separate Resource and add description.
 ${CONTROLLER_STOP_TIMEOUT}    120    # Max number of seconds test will wait for a controller to stop. FIXME: Hiden into a Resource and rename.
-${CREATE_FULLYMESH_TOPOLOGY_FILE}    create_fullymesh.py    # A shorthand. FIXME: Find who uses this and eliminate, or at least add a good description.
-${CREATE_FULLYMESH_TOPOLOGY_FILE_PATH}    libraries/MininetTopo/${CREATE_FULLYMESH_TOPOLOGY_FILE}    # A shorthand. FIXME: Find who uses this and eliminate, or at least add a good description.
 ${CREATE_PATHPOLICY_TOPOLOGY_FILE}    topo-3sw-2host_multipath.py    # A shorthand. FIXME: Find who uses this and eliminate, or at least add a good description.
 ${CREATE_PATHPOLICY_TOPOLOGY_FILE_PATH}    MininetTopo/${CREATE_PATHPOLICY_TOPOLOGY_FILE}    # A shorthand. FIXME: Find who uses this and eliminate, or at least add a good description.
 ${CREATE_VLAN_TOPOLOGY_FILE}    vlan_vtn_test.py    # A shorthand. FIXME: Find who uses this and eliminate, or at least add a good description.
@@ -115,7 +111,7 @@ ${ODL_SYSTEM_IP}    ${ODL_SYSTEM_1_IP}    # IP address of system hosting ODL for
 @{ODL_SYSTEM_IP_LIST}    ${ODL_SYSTEM_1_IP}    ${ODL_SYSTEM_2_IP}    ${ODL_SYSTEM_3_IP}    # Deprecated. List of ODL cluster member IP addresses. See ClusterManagement.robot for alternatives.
 ${ODL_SYSTEM_USER}    ${DEFAULT_USER}    # Linux username specific for ODL systems.
 ${ODL_SYSTEM_PASSWORD}    ${DEFAULT_PASSWORD}    # Linux password (or empty to use public key) specific for ODL systems.
-${ODL_SYSTEM_PROMPT}    ${DEFAULT_PROMPT}    # Bash prompt substring specific for ODL systems.
+${ODL_SYSTEM_PROMPT}    ${DEFAULT_LINUX_PROMPT}    # Bash prompt substring specific for ODL systems.
 ${OPERATIONAL_API}    /restconf/operational    # FIXME: Move to a separate Resource and add description.
 ${OPERATIONS_API}    /restconf/operations    # FIXME: Move to a separate Resource and add description.
 ${OPERATIONAL_GBP_TENANTS_API}    /restconf/operational/policy:tenants    # FIXME: Move to a separate GroupBasedPolicy-related Resource and add description.
@@ -134,7 +130,7 @@ ${PREDEFINE_NODE_URI}    /restconf/config/nemo-object:node-definitions    # FIXM
 ${PREDEFINE_ROLE_URI}    /restconf/config/nemo-user:user-roles    # FIXME: Move to a separate Nemo-related Resource and add description.
 ${PREFIX}         http://${ODL_SYSTEM_IP}:${PORT}    # Deprecated. FIXME: Name is to generic. Eradicate.
 ${PROTOCOL_LOG_LEVEL}    ${DEFAULT_PROTOCOL_LOG_LEVEL}    # Some suites temporarily override org.opendaylight.protocol Karaf log level to this value.
-${PWD}            ${ODL_RESTCONF_PESSWORD}    # Deprecated. FIXME: Eradicate.
+${PWD}            ${ODL_RESTCONF_PASSWORD}    # Deprecated. FIXME: Eradicate.
 ${REGISTER_TENANT_URI}    /restconf/operations/nemo-intent:register-user    # FIXME: Move to a separate Nemo-related Resource and add description.
 ${RESTCONFPORT}    8181    # Primary port for ODL RESTCONF, although 8080 should also work.
 ${RESTPORT}       8282    # Deprecated. Restconf port used by AD-SAL services. FIXME: Eradicate.