-Library BuiltIn
-Library SSHLibrary
-Library String
-Resource DataModels.robot
-Resource Genius.robot
-Resource OVSDB.robot
-Resource SSHKeywords.robot
-Resource Utils.robot
-Resource ../variables/netvirt/Variables.robot
-Resource ../variables/Variables.robot
-Resource VpnOperations.robot
-Variables ../variables/coe/Modules.py
-Variables ../variables/netvirt/Modules.py
-Resource ToolsSystem.robot
+Library BuiltIn
+Library SSHLibrary
+Library String
+Resource DataModels.robot
+Resource OVSDB.robot
+Resource SSHKeywords.robot
+Resource Utils.robot
+Resource ../variables/Variables.robot
+Variables ../variables/coe/Modules.py
+Resource ToolsSystem.robot
+
-${BUSY_BOX} ${CURDIR}/../variables/coe/busy-box.yaml
-${CNI_BINARY_FILE} /opt/cni/bin/odlovs-cni
-${CONFIG_FILE} /etc/cni/net.d/odlovs-cni.conf
-${CONFIG_FILE_TEMPLATE} ${CURDIR}/../variables/coe/odlovs-cni.conf.j2
-${HOST_INVENTORY} ${CURDIR}/../variables/coe/hosts.yaml
-${K8s_MASTER_IP} ${TOOLS_SYSTEM_1_IP}
-${HOSTS_FILE_TEMPLATE} ${CURDIR}/../variables/coe/minions_template.yaml
-${NODE_READY_STATUS} \\sReady # The check using this variable should not mess up with NotReady
-${PLAYBOOK_FILE} ${CURDIR}/../variables/coe/coe_play.yaml
-${POD_RUNNING_STATUS} \\sRunning
-${VARIABLES_PATH} ${CURDIR}/../variables/coe
-${WATCHER_COE} ${CURDIR}/../variables/coe/coe.yaml
-@{COE_DIAG_SERVICES} OPENFLOW IFM ITM DATASTORE ELAN OVSDB
+${BUSY_BOX} ${CURDIR}/../variables/coe/busy-box.yaml
+${CNI_BINARY_FILE} /opt/cni/bin/odlovs-cni
+${CONFIG_FILE} /etc/cni/net.d/odlovs-cni.conf
+${CONFIG_FILE_TEMPLATE} ${CURDIR}/../variables/coe/odlovs-cni.conf.j2
+${HOST_INVENTORY} ${CURDIR}/../variables/coe/hosts.yaml
+${K8s_MASTER_IP} ${TOOLS_SYSTEM_1_IP}
+${HOSTS_FILE_TEMPLATE} ${CURDIR}/../variables/coe/minions_template.yaml
+${NODE_READY_STATUS} \\sReady # The check using this variable should not mess up with NotReady
+${PLAYBOOK_FILE} ${CURDIR}/../variables/coe/coe_play.yaml
+${POD_RUNNING_STATUS} \\sRunning
+${VARIABLES_PATH} ${CURDIR}/../variables/coe
+${WATCHER_COE} ${CURDIR}/../variables/coe/coe.yaml
+@{COE_DIAG_SERVICES} OPENFLOW IFM ITM DATASTORE ELAN OVSDB
+
ToolsSystem.Get Tools System Nodes Data
Coe.Set Connection ids and Bridge
Coe.Derive Coe Data Models
ToolsSystem.Get Tools System Nodes Data
Coe.Set Connection ids and Bridge
Coe.Derive Coe Data Models
${first_suite} = Set Variable ${suite names updated[0]}
${status} = BuiltIn.Evaluate '${first_suite}' == '${current suite}'
${first_suite} = Set Variable ${suite names updated[0]}
${status} = BuiltIn.Evaluate '${first_suite}' == '${current suite}'
Coe.Verify Watcher Is Running
BuiltIn.Wait Until Keyword Succeeds 40s 2s Coe.Check Node Status Is Ready
Coe.Label Nodes
Coe.Verify Watcher Is Running
BuiltIn.Wait Until Keyword Succeeds 40s 2s Coe.Check Node Status Is Ready
Coe.Label Nodes
- BuiltIn.Wait Until Keyword Succeeds 60 2 ClusterManagement.Check Status Of Services Is OPERATIONAL @{COE_DIAG_SERVICES}
- BuiltIn.Wait Until Keyword Succeeds 85 2 Genius.Verify Tunnel Status as UP default-transport-zone
+ BuiltIn.Wait Until Keyword Succeeds
+ ... 60
+ ... 2
+ ... ClusterManagement.Check Status Of Services Is OPERATIONAL
+ ... @{COE_DIAG_SERVICES}
Set Connection ids and Bridge
[Documentation] Sets the connection ids for all the nodes and get the bridge from configuration file .
Set Connection ids and Bridge
[Documentation] Sets the connection ids for all the nodes and get the bridge from configuration file .
- : FOR ${conn_id} IN @{TOOLS_SYSTEM_ALL_CONN_IDS}
- \ SSHLibrary.Switch Connection ${conn_id}
- \ SSHKeywords.Flexible_SSH_Login ${DEFAULT_USER} ${DEFAULT_PASSWORD}
+ FOR ${conn_id} IN @{TOOLS_SYSTEM_ALL_CONN_IDS}
+ SSHLibrary.Switch Connection ${conn_id}
+ SSHKeywords.Flexible_SSH_Login ${DEFAULT_USER} ${DEFAULT_PASSWORD}
+ END
${file} = OperatingSystem.Get File ${CONFIG_FILE_TEMPLATE}
${ovs bridge output} ${bridge} = BuiltIn.Should Match Regexp ${file} "ovsBridge": "(\\w.*)"
BuiltIn.Set Suite Variable ${bridge}
Configuration Playbook
[Documentation] Ansible playbook which does all basic configuration for kubernetes nodes.
${file} = OperatingSystem.Get File ${CONFIG_FILE_TEMPLATE}
${ovs bridge output} ${bridge} = BuiltIn.Should Match Regexp ${file} "ovsBridge": "(\\w.*)"
BuiltIn.Set Suite Variable ${bridge}
Configuration Playbook
[Documentation] Ansible playbook which does all basic configuration for kubernetes nodes.
${playbook} = OperatingSystem.Get File ${PLAYBOOK_FILE}
${playbook} = String.Replace String ${playbook} coe-hosts ${playbook hosts}
${playbook} = String.Replace String ${playbook} coe-minions ${playbook minions}
${playbook} = OperatingSystem.Get File ${PLAYBOOK_FILE}
${playbook} = String.Replace String ${playbook} coe-hosts ${playbook hosts}
${playbook} = String.Replace String ${playbook} coe-minions ${playbook minions}
SSHKeywords.Copy_File_To_Remote_System ${K8s_MASTER_IP} ${WATCHER_COE} ${USER_HOME}
OperatingSystem.Copy File ${PLAYBOOK_FILE} ${USER_HOME}
${branch_ref_spec} = BuiltIn.Catenate SEPARATOR= refs/heads/ ${GERRIT_BRANCH}
SSHKeywords.Copy_File_To_Remote_System ${K8s_MASTER_IP} ${WATCHER_COE} ${USER_HOME}
OperatingSystem.Copy File ${PLAYBOOK_FILE} ${USER_HOME}
${branch_ref_spec} = BuiltIn.Catenate SEPARATOR= refs/heads/ ${GERRIT_BRANCH}
- ${play_output} = OperatingSystem.Run ansible-playbook -v ${USER_HOME}/coe_play.yaml -i ${USER_HOME}/hosts.yaml --extra-vars '{"gerrit_branch":"FETCH_HEAD","gerrit_refspec":"${gerrit_ref_spec}"}'
+ ${play_output} = OperatingSystem.Run
+ ... ansible-playbook -v ${USER_HOME}/coe_play.yaml -i ${USER_HOME}/hosts.yaml --extra-vars '{"gerrit_branch":"FETCH_HEAD","gerrit_refspec":"${gerrit_ref_spec}"}'
BuiltIn.Log ${play_output}
Modifying templates in playbook
${inventory} = OperatingSystem.Get File ${HOST_INVENTORY}
${template} = OperatingSystem.Get File ${HOSTS_FILE_TEMPLATE}
${template} = String.Replace String ${template} minion_ip ${TOOLS_SYSTEM_ALL_IPS[0]}
BuiltIn.Log ${play_output}
Modifying templates in playbook
${inventory} = OperatingSystem.Get File ${HOST_INVENTORY}
${template} = OperatingSystem.Get File ${HOSTS_FILE_TEMPLATE}
${template} = String.Replace String ${template} minion_ip ${TOOLS_SYSTEM_ALL_IPS[0]}
- @{minions} Create List coe-minion
- ${hosts} Set Variable coe-master:
- : FOR ${i} IN RANGE 1 ${NUM_TOOLS_SYSTEM}
- \ Append To List ${minions} coe-minion${i}
- \ ${hosts} = Catenate ${hosts} coe-minion${i}:
+ @{minions} = Create List coe-minion
+ ${hosts} = Set Variable coe-master:
+ FOR ${i} IN RANGE 1 ${NUM_TOOLS_SYSTEM}
+ Append To List ${minions} coe-minion${i}
+ ${hosts} = Catenate ${hosts} coe-minion${i}:
+ END
${hosts} = Replace String Using Regexp ${hosts} :$ ${EMPTY}
${hosts} = Remove Space on String ${hosts}
${minion hosts} = Replace String Using Regexp ${hosts} ^[\\w-]+: ${EMPTY}
${hosts} = Replace String Using Regexp ${hosts} :$ ${EMPTY}
${hosts} = Remove Space on String ${hosts}
${minion hosts} = Replace String Using Regexp ${hosts} ^[\\w-]+: ${EMPTY}
- : FOR ${i} IN RANGE 1 ${NUM_TOOLS_SYSTEM}
- \ ${j} = Evaluate ${i}+1
- \ ${template} = String.Replace String ${template} ${minions[${i}-1]} ${minions[${i}]}
- \ ${template} = String.Replace String ${template} ${TOOLS_SYSTEM_ALL_IPS[${i}-1]} ${TOOLS_SYSTEM_ALL_IPS[${i}]}
- \ ${template} = String.Replace String ${template} 192.168.50.1${i} 192.168.50.1${j}
- \ ${template} = String.Replace String ${template} 10.11.${i}.0/24 10.11.${j}.0/24
- \ ${template} = String.Replace String ${template} 10.11.${i}.1 10.11.${j}.1
- \ Append To File ${HOST_INVENTORY} ${template}
+ FOR ${i} IN RANGE 1 ${NUM_TOOLS_SYSTEM}
+ ${j} = Evaluate ${i}+1
+ ${template} = String.Replace String ${template} ${minions[${i}-1]} ${minions[${i}]}
+ ${template} = String.Replace String
+ ... ${template}
+ ... ${TOOLS_SYSTEM_ALL_IPS[${i}-1]}
+ ... ${TOOLS_SYSTEM_ALL_IPS[${i}]}
+ ${template} = String.Replace String ${template} 192.168.50.1${i} 192.168.50.1${j}
+ ${template} = String.Replace String ${template} 10.11.${i}.0/24 10.11.${j}.0/24
+ ${template} = String.Replace String ${template} 10.11.${i}.1 10.11.${j}.1
+ Append To File ${HOST_INVENTORY} ${template}
+ END
${host file} = OperatingSystem.Get File ${HOST_INVENTORY}
${host file} = String.Replace String ${host file} master_ip ${TOOLS_SYSTEM_ALL_IPS[0]}
${host file} = String.Replace String ${host file} odl_ip ${ODL_SYSTEM_IP}
${host file} = OperatingSystem.Get File ${HOST_INVENTORY}
${host file} = String.Replace String ${host file} master_ip ${TOOLS_SYSTEM_ALL_IPS[0]}
${host file} = String.Replace String ${host file} odl_ip ${ODL_SYSTEM_IP}
${host file} = String.Replace String ${host file} filepath ${CONFIG_FILE_TEMPLATE}
${host file} = String.Replace String ${host file} yamlpath ${USER_HOME}/coe.yaml
log ${host file}
${host file} = String.Replace String ${host file} filepath ${CONFIG_FILE_TEMPLATE}
${host file} = String.Replace String ${host file} yamlpath ${USER_HOME}/coe.yaml
log ${host file}
- : FOR ${nodes} IN @{TOOLS_SYSTEM_ALL_IPS}
- \ Utils.Verify File Exists On Remote System ${nodes} ${CONFIG_FILE}
- : FOR ${nodes} IN @{TOOLS_SYSTEM_ALL_IPS}
- \ Utils.Verify File Exists On Remote System ${nodes} ${CNI_BINARY_FILE}
+ FOR ${nodes} IN @{TOOLS_SYSTEM_ALL_IPS}
+ Utils.Verify File Exists On Remote System ${nodes} ${CONFIG_FILE}
+ END
+ FOR ${nodes} IN @{TOOLS_SYSTEM_ALL_IPS}
+ Utils.Verify File Exists On Remote System ${nodes} ${CNI_BINARY_FILE}
+ END
Check Node Status Is Ready
[Documentation] Checks the status of nodes.This keyword is repeated until the status of all nodes is Ready
Check Node Status Is Ready
[Documentation] Checks the status of nodes.This keyword is repeated until the status of all nodes is Ready
- ${nodes} = Utils.Run Command On Remote System And Log ${K8s_MASTER_IP} kubectl get nodes ${DEFAULT_USER} ${DEFAULT_PASSWORD} ${DEFAULT_LINUX_PROMPT_STRICT}
+ ${nodes} = Utils.Run Command On Remote System And Log
+ ... ${K8s_MASTER_IP}
+ ... kubectl get nodes
+ ... ${DEFAULT_USER}
+ ... ${DEFAULT_PASSWORD}
+ ... ${DEFAULT_LINUX_PROMPT_STRICT}
${node_status} = String.Get Lines Matching Regexp ${nodes} ${NODE_READY_STATUS} partial_match=True
${lines_containing_ready} = String.Get Line Count ${node_status}
BuiltIn.Should Be Equal As Strings ${lines_containing_ready} ${NUM_TOOLS_SYSTEM}
${node_status} = String.Get Lines Matching Regexp ${nodes} ${NODE_READY_STATUS} partial_match=True
${lines_containing_ready} = String.Get Line Count ${node_status}
BuiltIn.Should Be Equal As Strings ${lines_containing_ready} ${NUM_TOOLS_SYSTEM}
${i} = BuiltIn.Set Variable 1
${get nodes} = Utils.Run Command On Remote System And Log ${K8s_MASTER_IP} kubectl get nodes
@{get nodes} = String.Split To Lines ${get nodes} 2
${i} = BuiltIn.Set Variable 1
${get nodes} = Utils.Run Command On Remote System And Log ${K8s_MASTER_IP} kubectl get nodes
@{get nodes} = String.Split To Lines ${get nodes} 2
- : FOR ${status} IN @{get nodes}
- \ ${minion} = BuiltIn.Should Match Regexp ${status} ^\\w+-.*-\\d+
- \ Utils.Run Command On Remote System And Log ${K8s_MASTER_IP} kubectl label nodes ${minion} disktype=ss${i}
- \ ${i} = BuiltIn.Evaluate ${i}+1
+ FOR ${status} IN @{get nodes}
+ ${minion} = BuiltIn.Should Match Regexp ${status} ^\\w+-.*-\\d+
+ Utils.Run Command On Remote System And Log ${K8s_MASTER_IP} kubectl label nodes ${minion} disktype=ss${i}
+ ${i} = BuiltIn.Evaluate ${i}+1
+ END
Check Pod Status Is Running
[Documentation] Checks the status of pods.This keyword is repeated until the status of all pods is Running
Check Pod Status Is Running
[Documentation] Checks the status of pods.This keyword is repeated until the status of all pods is Running
- ${pods} = Utils.Run Command On Remote System And Log ${K8s_MASTER_IP} kubectl get pods -o wide ${DEFAULT_USER} ${DEFAULT_PASSWORD} ${DEFAULT_LINUX_PROMPT_STRICT}
+ ${pods} = Utils.Run Command On Remote System And Log
+ ... ${K8s_MASTER_IP}
+ ... kubectl get pods -o wide
+ ... ${DEFAULT_USER}
+ ... ${DEFAULT_PASSWORD}
+ ... ${DEFAULT_LINUX_PROMPT_STRICT}
Tear Down
[Documentation] Test teardown to get dumpflows,ovsconfig,model dump,node status,pod status and to dump config files \ and delete pods.
Tear Down
[Documentation] Test teardown to get dumpflows,ovsconfig,model dump,node status,pod status and to dump config files \ and delete pods.
- : FOR ${conn_id} IN @{TOOLS_SYSTEM_ALL_CONN_IDS}
- \ OVSDB.Get DumpFlows And Ovsconfig ${conn_id} ${bridge}
+ FOR ${conn_id} IN @{TOOLS_SYSTEM_ALL_CONN_IDS}
+ OVSDB.Get DumpFlows And Ovsconfig ${conn_id} ${bridge}
+ END
- Utils.Run Command On Remote System And Log ${K8s_MASTER_IP} kubectl get nodes ${DEFAULT_USER} ${DEFAULT_PASSWORD} ${DEFAULT_LINUX_PROMPT_STRICT}
- Utils.Run Command On Remote System And Log ${K8s_MASTER_IP} kubectl get pods -o wide ${DEFAULT_USER} ${DEFAULT_PASSWORD} ${DEFAULT_LINUX_PROMPT_STRICT}
+ Utils.Run Command On Remote System And Log
+ ... ${K8s_MASTER_IP}
+ ... kubectl get nodes
+ ... ${DEFAULT_USER}
+ ... ${DEFAULT_PASSWORD}
+ ... ${DEFAULT_LINUX_PROMPT_STRICT}
+ Utils.Run Command On Remote System And Log
+ ... ${K8s_MASTER_IP}
+ ... kubectl get pods -o wide
+ ... ${DEFAULT_USER}
+ ... ${DEFAULT_PASSWORD}
+ ... ${DEFAULT_LINUX_PROMPT_STRICT}
Coe.Delete Pods
Delete Pods
[Documentation] Waits till the keyword delete status succeeds implying that all pods created have been deleted
${get pods} = Utils.Run Command On Remote System ${K8s_MASTER_IP} kubectl get pods -o wide
@{get pods} = String.Split To Lines ${get pods} 1
Coe.Delete Pods
Delete Pods
[Documentation] Waits till the keyword delete status succeeds implying that all pods created have been deleted
${get pods} = Utils.Run Command On Remote System ${K8s_MASTER_IP} kubectl get pods -o wide
@{get pods} = String.Split To Lines ${get pods} 1
- : FOR ${status} IN @{get pods}
- \ ${pod_name} = BuiltIn.Should Match Regexp ${status} ^\\w+-\\w+
- \ Utils.Run Command On Remote System ${K8s_MASTER_IP} kubectl delete pods ${pod_name}
+ FOR ${status} IN @{get pods}
+ ${pod_name} = BuiltIn.Should Match Regexp ${status} ^\\w+-\\w+
+ Utils.Run Command On Remote System ${K8s_MASTER_IP} kubectl delete pods ${pod_name}
+ END
BuiltIn.Wait Until Keyword Succeeds 60s 3s Coe.Check If Pods Are Terminated
Coe.Check For Stale veth Ports
Check If Pods Are Terminated
[Documentation] Checks if the pods created have been terminated.The keyword is repeated until the pods are deleted
BuiltIn.Wait Until Keyword Succeeds 60s 3s Coe.Check If Pods Are Terminated
Coe.Check For Stale veth Ports
Check If Pods Are Terminated
[Documentation] Checks if the pods created have been terminated.The keyword is repeated until the pods are deleted
- ${status} = Utils.Run Command On Remote System ${K8s_MASTER_IP} kubectl get pods -o wide ${DEFAULT_USER} ${DEFAULT_PASSWORD} ${DEFAULT_LINUX_PROMPT_STRICT}
- ... ${DEFAULT_TIMEOUT} return_stdout=False return_stderr=True
+ ${status} = Utils.Run Command On Remote System
+ ... ${K8s_MASTER_IP}
+ ... kubectl get pods -o wide
+ ... ${DEFAULT_USER}
+ ... ${DEFAULT_PASSWORD}
+ ... ${DEFAULT_LINUX_PROMPT_STRICT}
+ ... ${DEFAULT_TIMEOUT}
+ ... return_stdout=False
+ ... return_stderr=True
BuiltIn.Should Contain ${status} No resources
Dump Config File
[Documentation] Logs the configuration files present in all nodes
BuiltIn.Should Contain ${status} No resources
Dump Config File
[Documentation] Logs the configuration files present in all nodes
- : FOR ${nodes} IN @{TOOLS_SYSTEM_ALL_IPS}
- \ Utils.Run Command On Remote System And Log ${nodes} cat ${CONFIG_FILE}
+ FOR ${nodes} IN @{TOOLS_SYSTEM_ALL_IPS}
+ Utils.Run Command On Remote System And Log ${nodes} cat ${CONFIG_FILE}
+ END
SSHLibrary.Switch Connection ${TOOLS_SYSTEM_ALL_CONN_IDS[0]}
SSHLibrary.Get File ${USER_HOME}/journal.txt ${JENKINS_WORKSPACE}/archives/journalctl.log
SSHLibrary.Switch Connection ${TOOLS_SYSTEM_ALL_CONN_IDS[0]}
SSHLibrary.Get File ${USER_HOME}/journal.txt ${JENKINS_WORKSPACE}/archives/journalctl.log
- : FOR ${nodes} IN @{TOOLS_SYSTEM_ALL_IPS}
- \ ${kube} = Utils.Run Command On Remote System And Log ${nodes} sudo kubeadm reset
- \ BuiltIn.Should Contain ${kube} Stopping the kubelet service.
+ FOR ${nodes} IN @{TOOLS_SYSTEM_ALL_IPS}
+ ${kube} = Utils.Run Command On Remote System And Log ${nodes} sudo kubeadm reset
+ BuiltIn.Should Contain ${kube} Stopping the kubelet service.
+ END
${busybox} = OperatingSystem.Get File ${BUSY_BOX}
${busybox} = String.Replace String ${busybox} string ${label}
${busybox} = String.Replace String ${busybox} busyboxname ${name}
${busybox} = OperatingSystem.Get File ${BUSY_BOX}
${busybox} = String.Replace String ${busybox} string ${label}
${busybox} = String.Replace String ${busybox} busyboxname ${name}
${get pods} = Write Commands Until Expected Prompt kubectl get pods -o wide ${DEFAULT_LINUX_PROMPT_STRICT}
@{pod ips} = String.Get Regexp Matches ${get pods} \\d+\\.\\d+\\.\\d+\\.\\d+
@{pod names} = String.Get Regexp Matches ${get pods} ss\\w+-\\w+
${get pods} = Write Commands Until Expected Prompt kubectl get pods -o wide ${DEFAULT_LINUX_PROMPT_STRICT}
@{pod ips} = String.Get Regexp Matches ${get pods} \\d+\\.\\d+\\.\\d+\\.\\d+
@{pod names} = String.Get Regexp Matches ${get pods} ss\\w+-\\w+
- : FOR ${pod_name} IN @{pod names}
- \ ${logs} = Log Statements ${pod ips} ${pod names} ${pod_name}
- \ Ping Pods ${pod_name} ${pod ips} ${logs}
+ FOR ${pod_name} IN @{pod names}
+ ${logs} = Log Statements ${pod ips} ${pod names} ${pod_name}
+ Ping Pods ${pod_name} ${pod ips} ${logs}
+ END
- : FOR ${pod_ip} IN @{pod ips}
- \ ${ping statement} Set Variable Ping from ${pod_name} to ${pod names[${i}]} (${pod ip})
- \ Append To List ${log statement} ${ping statement}
- \ ${i} = Evaluate ${i}+1
- [Return] @{log statement}
+ FOR ${pod_ip} IN @{pod ips}
+ ${ping statement} = Set Variable Ping from ${pod_name} to ${pod names[${i}]} (${pod ip})
+ Append To List ${log statement} ${ping statement}
+ ${i} = Evaluate ${i}+1
+ END
+ RETURN @{log statement}
- : FOR ${ping info} IN @{logs}
- \ ${ping} = Write Commands Until Expected Prompt kubectl exec -it ${pod_name} -- ping -c 3 ${pod ips[${i}]} ${DEFAULT_LINUX_PROMPT_STRICT}
- \ BuiltIn.log ${ping}
- \ Builtin.Should Match Regexp ${ping} ${PING_REGEXP}
- \ ${i} Evaluate ${i}+1
+ FOR ${ping info} IN @{logs}
+ ${ping} = Write Commands Until Expected Prompt
+ ... kubectl exec -it ${pod_name} -- ping -c 3 ${pod ips[${i}]}
+ ... ${DEFAULT_LINUX_PROMPT_STRICT}
+ BuiltIn.log ${ping}
+ BuiltIn.Should Contain ${ping} 64 bytes
+ ${i} = Evaluate ${i}+1
+ END
Coe Suite Teardown
[Documentation] COE project requires stop suite to be executed only for the last test suite.This keyword find the current suite,compares it with the stored last suite value and executes Coe.Stop suite only if the cuurent suite is equal to the last suite.
Coe Suite Teardown
[Documentation] COE project requires stop suite to be executed only for the last test suite.This keyword find the current suite,compares it with the stored last suite value and executes Coe.Stop suite only if the cuurent suite is equal to the last suite.
${last_suite} = Set Variable ${suite names updated[-1]}
${status} = BuiltIn.Evaluate '${last_suite}' == '${current suite}'
${last_suite} = Set Variable ${suite names updated[-1]}
${status} = BuiltIn.Evaluate '${last_suite}' == '${current suite}'
Extract current suite name
[Documentation] This keyword returns the name of current test suite.Appropriate replacement in text is done to make test suite names in SUITES and SUITE_NAME similar.
BuiltIn.Log SUITE_NAME: ${SUITE_NAME}
BuiltIn.Log SUITES: ${SUITES}
Extract current suite name
[Documentation] This keyword returns the name of current test suite.Appropriate replacement in text is done to make test suite names in SUITES and SUITE_NAME similar.
BuiltIn.Log SUITE_NAME: ${SUITE_NAME}
BuiltIn.Log SUITES: ${SUITES}
- @{suite_names} Get Regexp Matches ${SUITES} coe\\/(\\w+).robot 1
- @{suite_names_updated} Create List
- : FOR ${suite} IN @{suite_names}
- \ ${suite} Replace String ${suite} _ ${SPACE}
- \ Append To List ${suite_names_updated} ${suite}
+ @{suite_names} = Get Regexp Matches ${SUITES} coe\\/(\\w+).robot 1
+ @{suite_names_updated} = Create List
+ FOR ${suite} IN @{suite_names}
+ ${suite} = Replace String ${suite} _ ${SPACE}
+ Append To List ${suite_names_updated} ${suite}
+ END
- ${suite line} ${current_suite} = BuiltIn.Run Keyword If ${num_suites} > ${1} Should Match Regexp ${SUITE_NAME} .txt.(\\w.*)
- ... ELSE BuiltIn.Set Variable @{suite_names_updated}[0] @{suite_names_updated}[0]
- [Return] ${current_suite} ${suite_names_updated}
+ IF ${num_suites} > ${1}
+ ${suite line} ${current_suite} = Should Match Regexp ${SUITE_NAME} .txt.(\\w.*)
+ ELSE
+ ${suite line} ${current_suite} = BuiltIn.Set Variable
+ ... ${suite_names_updated}[0]
+ ... ${suite_names_updated}[0]
+ END
+ RETURN ${current_suite} ${suite_names_updated}
Check For Stale veth Ports
[Documentation] Check on switches(except master) where pods were created and deleted to ensure there are no stale veth ports left behind.
Check For Stale veth Ports
[Documentation] Check on switches(except master) where pods were created and deleted to ensure there are no stale veth ports left behind.
- : FOR ${minion_index} IN RANGE 2 ${NUM_TOOLS_SYSTEM}+1
- \ ${switch output} = Utils.Run Command On Remote System And Log ${TOOLS_SYSTEM_${minion_index}_IP} sudo ovs-vsctl show
- \ BuiltIn.Should Not Contain ${switch output} veth
+ FOR ${minion_index} IN RANGE 2 ${NUM_TOOLS_SYSTEM}+1
+ ${switch output} = Utils.Run Command On Remote System And Log
+ ... ${TOOLS_SYSTEM_${minion_index}_IP}
+ ... sudo ovs-vsctl show
+ BuiltIn.Should Not Contain ${switch output} veth
+ END