From 2d7e1faef8f0641941ddf56e73227fc76c127297 Mon Sep 17 00:00:00 2001 From: Luis Gomez Date: Thu, 20 Oct 2016 01:06:04 -0700 Subject: [PATCH] Refactor OpenFlow sw/link scalability and longevity tests - 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 --- csit/libraries/MininetKeywords.robot | 19 +- csit/libraries/NicKeywords.robot | 4 +- csit/libraries/Scalability.robot | 268 ------------------ csit/libraries/WorkflowsL2switch.robot | 129 +++++++++ csit/libraries/WorkflowsOpenFlow.robot | 261 +++++++++++++++++ .../openflowplugin-link-scalability-daily.txt | 3 + .../openflowplugin-sw-scalability-daily.txt | 3 + .../010__finding_max_hosts.robot | 2 +- .../vtn_renderer_nic_cli_test.robot | 2 +- .../Longevity/010__longevity_switches.robot | 69 ----- .../Longevity/010__longevity_test.robot | 37 +++ .../020__longevity_switches_links.robot | 73 ----- .../010__finding_max_links.robot | 46 +-- .../010__finding_max_switches.robot | 35 ++- .../openflowplugin-link-scalability-daily.txt | 1 + csit/testplans/openflowplugin-longevity.txt | 2 +- .../openflowplugin-scalability-daily.txt | 2 - .../openflowplugin-sw-scalability-daily.txt | 3 +- csit/variables/Variables.py | 10 - csit/variables/Variables.robot | 10 +- 20 files changed, 501 insertions(+), 478 deletions(-) delete mode 100644 csit/libraries/Scalability.robot create mode 100644 csit/libraries/WorkflowsL2switch.robot create mode 100644 csit/libraries/WorkflowsOpenFlow.robot create mode 100644 csit/scriptplans/openflowplugin-link-scalability-daily.txt create mode 100644 csit/scriptplans/openflowplugin-sw-scalability-daily.txt delete mode 100644 csit/suites/openflowplugin/Longevity/010__longevity_switches.robot create mode 100644 csit/suites/openflowplugin/Longevity/010__longevity_test.robot delete mode 100644 csit/suites/openflowplugin/Longevity/020__longevity_switches_links.robot delete mode 100644 csit/testplans/openflowplugin-scalability-daily.txt diff --git a/csit/libraries/MininetKeywords.robot b/csit/libraries/MininetKeywords.robot index e4f8b9b5e1..1114b2213a 100644 --- a/csit/libraries/MininetKeywords.robot +++ b/csit/libraries/MininetKeywords.robot @@ -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} diff --git a/csit/libraries/NicKeywords.robot b/csit/libraries/NicKeywords.robot index bc09383b20..efb208940c 100644 --- a/csit/libraries/NicKeywords.robot +++ b/csit/libraries/NicKeywords.robot @@ -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 index 902ce90eca..0000000000 --- a/csit/libraries/Scalability.robot +++ /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 index 0000000000..197f33f9fe --- /dev/null +++ b/csit/libraries/WorkflowsL2switch.robot @@ -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 index 0000000000..1e33769b6b --- /dev/null +++ b/csit/libraries/WorkflowsOpenFlow.robot @@ -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 index 0000000000..1a31c3ac4b --- /dev/null +++ b/csit/scriptplans/openflowplugin-link-scalability-daily.txt @@ -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 index 0000000000..1a31c3ac4b --- /dev/null +++ b/csit/scriptplans/openflowplugin-sw-scalability-daily.txt @@ -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/suites/l2switch/Maximum_Hosts/010__finding_max_hosts.robot b/csit/suites/l2switch/Maximum_Hosts/010__finding_max_hosts.robot index 917b0e2d49..3f4b94eb3b 100644 --- a/csit/suites/l2switch/Maximum_Hosts/010__finding_max_hosts.robot +++ b/csit/suites/l2switch/Maximum_Hosts/010__finding_max_hosts.robot @@ -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 diff --git a/csit/suites/nic/vtn_renderer/vtn_renderer_nic_cli_test.robot b/csit/suites/nic/vtn_renderer/vtn_renderer_nic_cli_test.robot index f70b96b376..3dcd7e8113 100644 --- a/csit/suites/nic/vtn_renderer/vtn_renderer_nic_cli_test.robot +++ b/csit/suites/nic/vtn_renderer/vtn_renderer_nic_cli_test.robot @@ -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 index 46be738b18..0000000000 --- a/csit/suites/openflowplugin/Longevity/010__longevity_switches.robot +++ /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 index 0000000000..631eecc7e7 --- /dev/null +++ b/csit/suites/openflowplugin/Longevity/010__longevity_test.robot @@ -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 index b1876d7372..0000000000 --- a/csit/suites/openflowplugin/Longevity/020__longevity_switches_links.robot +++ /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 diff --git a/csit/suites/openflowplugin/Maximum_Links/010__finding_max_links.robot b/csit/suites/openflowplugin/Maximum_Links/010__finding_max_links.robot index f24f4edd29..13df49e876 100644 --- a/csit/suites/openflowplugin/Maximum_Links/010__finding_max_links.robot +++ b/csit/suites/openflowplugin/Maximum_Links/010__finding_max_links.robot @@ -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 diff --git a/csit/suites/openflowplugin/Maximum_Switches/010__finding_max_switches.robot b/csit/suites/openflowplugin/Maximum_Switches/010__finding_max_switches.robot index 3ee32a9783..8b01bcf073 100644 --- a/csit/suites/openflowplugin/Maximum_Switches/010__finding_max_switches.robot +++ b/csit/suites/openflowplugin/Maximum_Switches/010__finding_max_switches.robot @@ -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 diff --git a/csit/testplans/openflowplugin-link-scalability-daily.txt b/csit/testplans/openflowplugin-link-scalability-daily.txt index abb02cc592..8e47218adf 100644 --- a/csit/testplans/openflowplugin-link-scalability-daily.txt +++ b/csit/testplans/openflowplugin-link-scalability-daily.txt @@ -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 diff --git a/csit/testplans/openflowplugin-longevity.txt b/csit/testplans/openflowplugin-longevity.txt index fd77bff99a..5694d625f2 100644 --- a/csit/testplans/openflowplugin-longevity.txt +++ b/csit/testplans/openflowplugin-longevity.txt @@ -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 index 1f7689ff17..0000000000 --- a/csit/testplans/openflowplugin-scalability-daily.txt +++ /dev/null @@ -1,2 +0,0 @@ -# Place the suites in run order: -integration/test/csit/suites/openflowplugin/Maximum_Switches/010__finding_max_switches.robot diff --git a/csit/testplans/openflowplugin-sw-scalability-daily.txt b/csit/testplans/openflowplugin-sw-scalability-daily.txt index 33c65e8db6..daedcbf95d 100644 --- a/csit/testplans/openflowplugin-sw-scalability-daily.txt +++ b/csit/testplans/openflowplugin-sw-scalability-daily.txt @@ -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 diff --git a/csit/variables/Variables.py b/csit/variables/Variables.py index 1fe9235c82..e461d71e9c 100644 --- a/csit/variables/Variables.py +++ b/csit/variables/Variables.py @@ -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/" +\ diff --git a/csit/variables/Variables.robot b/csit/variables/Variables.robot index f90d423766..6e62cb8f51 100644 --- a/csit/variables/Variables.robot +++ b/csit/variables/Variables.robot @@ -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. -- 2.36.6