[SEBA-285] Read deployment configs from robot scripts
Change-Id: I47977a1a85bc2eebf7cd139c4f7e072ee909543c
diff --git a/Jenkinsfile-attworkflow-build b/Jenkinsfile-attworkflow-build
index 97f3de9..9d315e6 100644
--- a/Jenkinsfile-attworkflow-build
+++ b/Jenkinsfile-attworkflow-build
@@ -18,7 +18,7 @@
stage ("Parse deployment configuration file") {
sh returnStdout: true, script: "rm -rf ${configBaseDir}"
sh returnStdout: true, script: "git clone -b ${branch} ${cordRepoUrl}/${configBaseDir}"
- deployment_config = readYaml file: "${configBaseDir}/${configDeploymentDir}/${configFileName}.yml"
+ deployment_config = readYaml file: "${configBaseDir}/${configDeploymentDir}/${configFileName}.yaml"
}
stage('Clean up') {
timeout(10) {
diff --git a/Jenkinsfile-attworkflow-test b/Jenkinsfile-attworkflow-test
index 6e04f98..db49939 100644
--- a/Jenkinsfile-attworkflow-test
+++ b/Jenkinsfile-attworkflow-test
@@ -18,12 +18,13 @@
stage ("Parse deployment configuration file") {
sh returnStdout: true, script: "rm -rf ${configBaseDir}"
sh returnStdout: true, script: "git clone -b ${branch} ${cordRepoUrl}/${configBaseDir}"
- deployment_config = readYaml file: "${configBaseDir}/${configDeploymentDir}/${configFileName}.yml"
+ deployment_config = readYaml file: "${configBaseDir}/${configDeploymentDir}/${configFileName}.yaml"
}
stage('Download Cord-Tester Repo') {
timeout(2) {
sh returnStdout: true, script: """
- rm -rf cord-tester
+ rm -rf helm-charts cord-tester
+ git clone -b ${branch} ${cordRepoUrl}/helm-charts
git clone -b ${branch} ${cordRepoUrl}/cord-tester
"""
}
@@ -47,7 +48,7 @@
sh """
export KUBECONFIG=$WORKSPACE/${configBaseDir}/${configKubernetesDir}/${configFileName}.conf
cd $WORKSPACE/cord-tester/src/test/cord-api/Tests/
- pybot -d Log -T -l log-ATT_Test001 -v src_ip:${deployment_config.hosts.src.ip} -v src_gateway:${deployment_config.hosts.src.dp_iface_gateway} -v src_user:${deployment_config.hosts.src.user} -v src_pass:${deployment_config.hosts.src.pass} -v src_iface:${deployment_config.hosts.src.dp_iface_name} -v dst_ip:${deployment_config.hosts.dst.ip} -v dst_user:${deployment_config.hosts.dst.user} -v dst_pass:${deployment_config.hosts.dst.pass} -v dst_gateway:${deployment_config.hosts.dst.dp_iface_gateway} -v dst_dp_iface:${deployment_config.hosts.dst.dp_iface_name} -v dst_dp_ip:${deployment_config.hosts.dst.dp_iface_ip_qinq} -v olt_ip:${deployment_config.olts[0].ip} -v olt_user:${deployment_config.olts[0].user} -v olt_pass:${deployment_config.olts[0].pass} -v kubernetes_conf:$WORKSPACE/${configBaseDir}/${configKubernetesDir}/${configFileName}.conf -v kubernetes_yml:$WORKSPACE/${configBaseDir}/${configKubernetesDir}/${configFileName}.yml WorkflowValidations/ATT_Test001.txt || true
+ pybot -d Log -T -l log-ATT_Test001 -V $WORKSPACE/${configBaseDir}/${configDeploymentDir}/${configFileName}.yaml -v POD_NAME:${configFileName} -v KUBERNETES_CONFIGS_DIR:$WORKSPACE/${configBaseDir}/${configKubernetesDir} -v HELM_CHARTS_DIR:$WORKSPACE/helm-charts WorkflowValidations/ATT_Test001.robot || true
"""
}
}
diff --git a/Jenkinsfile-rcordlite-topdown-build b/Jenkinsfile-rcordlite-topdown-build
index 113ae91..d1eabf1 100644
--- a/Jenkinsfile-rcordlite-topdown-build
+++ b/Jenkinsfile-rcordlite-topdown-build
@@ -18,7 +18,7 @@
stage ("Parse deployment configuration file") {
sh returnStdout: true, script: "rm -rf ${configBaseDir}"
sh returnStdout: true, script: "git clone -b ${branch} ${cordRepoUrl}/${configBaseDir}"
- deployment_config = readYaml file: "${configBaseDir}/${configDeploymentDir}/${configFileName}.yml"
+ deployment_config = readYaml file: "${configBaseDir}/${configDeploymentDir}/${configFileName}.yaml"
}
stage('Clean up') {
timeout(10) {
diff --git a/Jenkinsfile-rcordlite-topdown-test b/Jenkinsfile-rcordlite-topdown-test
index cd87e1b..c6623b2 100644
--- a/Jenkinsfile-rcordlite-topdown-test
+++ b/Jenkinsfile-rcordlite-topdown-test
@@ -18,7 +18,7 @@
stage ("Parse deployment configuration file") {
sh returnStdout: true, script: "rm -rf ${configBaseDir}"
sh returnStdout: true, script: "git clone -b ${branch} ${cordRepoUrl}/${configBaseDir}"
- deployment_config = readYaml file: "${configBaseDir}/${configDeploymentDir}/${configFileName}.yml"
+ deployment_config = readYaml file: "${configBaseDir}/${configDeploymentDir}/${configFileName}.yaml"
}
stage('Download cord-tester repo') {
diff --git a/Jenkinsfile-rcordlite-zerotouch-build b/Jenkinsfile-rcordlite-zerotouch-build
index 2683b74..e413ff7 100644
--- a/Jenkinsfile-rcordlite-zerotouch-build
+++ b/Jenkinsfile-rcordlite-zerotouch-build
@@ -18,7 +18,7 @@
stage ("Parse deployment configuration file") {
sh returnStdout: true, script: "rm -rf ${configBaseDir}"
sh returnStdout: true, script: "git clone -b ${branch} ${cordRepoUrl}/${configBaseDir}"
- deployment_config = readYaml file: "${configBaseDir}/${configDeploymentDir}/${configFileName}.yml"
+ deployment_config = readYaml file: "${configBaseDir}/${configDeploymentDir}/${configFileName}.yaml"
}
stage('Clean up') {
timeout(10) {
diff --git a/Jenkinsfile-rcordlite-zerotouch-test b/Jenkinsfile-rcordlite-zerotouch-test
index 67001dc..aa5063a 100644
--- a/Jenkinsfile-rcordlite-zerotouch-test
+++ b/Jenkinsfile-rcordlite-zerotouch-test
@@ -18,7 +18,7 @@
stage ("Parse deployment configuration file") {
sh returnStdout: true, script: "rm -rf ${configBaseDir}"
sh returnStdout: true, script: "git clone -b ${branch} ${cordRepoUrl}/${configBaseDir}"
- deployment_config = readYaml file: "${configBaseDir}/${configDeploymentDir}/${configFileName}.yml"
+ deployment_config = readYaml file: "${configBaseDir}/${configDeploymentDir}/${configFileName}.yaml"
}
stage('Download cord-tester repo') {
diff --git a/src/test/cord-api/Framework/DHCP.robot b/src/test/cord-api/Framework/DHCP.robot
index 8af8ada..a8ddb7d 100644
--- a/src/test/cord-api/Framework/DHCP.robot
+++ b/src/test/cord-api/Framework/DHCP.robot
@@ -20,20 +20,20 @@
*** Keywords ***
Send Dhclient Request
- [Arguments] ${iface} ${ip} ${user} ${pass}=${EMPTY} ${key}=${EMPTY} ${container_name}=${EMPTY}
+ [Arguments] ${iface} ${ip} ${user} ${pass}=${None} ${container_name}=${None}
[Documentation] Executes a dhclient against a particular interface on the RG (src)
- ${result}= Login And Run Command On Remote System sudo dhclient -nw ${iface} ${ip} ${user} ${pass} ${key} ${container_name}
+ ${result}= Login And Run Command On Remote System sudo dhclient -nw ${iface} ${ip} ${user} ${pass} ${container_name}
[Return] ${result}
Add Default Route to Dst Gateway
- [Arguments] ${src_gateway} ${dst_subnet} ${iface} ${ip} ${user} ${pass}=${EMPTY} ${key}=${EMPTY} ${container_name}=${EMPTY}
+ [Arguments] ${src_gateway} ${dst_subnet} ${iface} ${ip} ${user} ${pass}=${None} ${container_name}=${None}
[Documentation] Adds an entry to the routing table on the RG (src)
- ${result}= Login And Run Command On Remote System sudo ip route add ${dst_subnet} via ${src_gateway} dev ${iface} ${ip} ${user} ${pass} ${key} ${container_name}
+ ${result}= Login And Run Command On Remote System sudo ip route add ${dst_subnet} via ${src_gateway} dev ${iface} ${ip} ${user} ${pass} ${container_name}
[Return] ${result}
Check IPv4 Address on DHCP Client
- [Arguments] ${ip_should_exist} ${iface} ${ip} ${user} ${pass}=${EMPTY} ${key}=${EMPTY} ${container_name}=${EMPTY}
+ [Arguments] ${ip_should_exist} ${iface} ${ip} ${user} ${pass}=${None} ${container_name}=${None}
[Documentation] Check if the sepcified interface has an IPv4 address assigned
- ${output}= Login And Run Command On Remote System ifconfig ${iface} ${ip} ${user} ${pass} ${key} ${container_name}
+ ${output}= Login And Run Command On Remote System ifconfig ${iface} ${ip} ${user} ${pass} ${container_name}
Run Keyword If '${ip_should_exist}' == 'True' Should Match Regexp ${output} \\b([0-9]{1,3}\\.){3}[0-9]{1,3}\\b
Run Keyword If '${ip_should_exist}' == 'False' Should Not Match Regexp ${output} \\b([0-9]{1,3}\\.){3}[0-9]{1,3}\\b
diff --git a/src/test/cord-api/Framework/Subscriber.robot b/src/test/cord-api/Framework/Subscriber.robot
index 91aff61..f4d296f 100644
--- a/src/test/cord-api/Framework/Subscriber.robot
+++ b/src/test/cord-api/Framework/Subscriber.robot
@@ -59,38 +59,38 @@
Should Be True ${api_result}
Send EAPOL Message
- [Arguments] ${auth_pass} ${iface} ${conf_file} ${ip} ${user} ${pass}=${EMPTY} ${key}=${EMPTY} ${container_name}=${EMPTY}
+ [Arguments] ${auth_pass} ${iface} ${conf_file} ${ip} ${user} ${pass}=${None} ${container_name}=${None}
[Documentation] Executes a particular auth request on the RG via wpa_supplicant client. Requested packet should exist on src.
- Login And Run Command On Remote System sudo rm -f /tmp/wpa.log; sudo wpa_supplicant -B -i ${iface} -Dwired -c /etc/wpa_supplicant/${conf_file} -f /tmp/wpa.log ${ip} ${user} ${pass} ${key} ${container_name}
- Run Keyword If '${auth_pass}' == 'True' Wait Until Keyword Succeeds 30s 2s Check Remote File Contents True /tmp/wpa.log authentication completed successfully ${ip} ${user} ${pass} ${key} ${container_name}
+ Login And Run Command On Remote System sudo rm -f /tmp/wpa.log; sudo wpa_supplicant -B -i ${iface} -Dwired -c /etc/wpa_supplicant/${conf_file} -f /tmp/wpa.log ${ip} ${user} ${pass} ${container_name}
+ Run Keyword If '${auth_pass}' == 'True' Wait Until Keyword Succeeds 30s 2s Check Remote File Contents True /tmp/wpa.log authentication completed successfully ${ip} ${user} ${pass} ${container_name}
Run Keyword If '${auth_pass}' == 'False' Sleep 10s
- Run Keyword If '${auth_pass}' == 'False' Check Remote File Contents False /tmp/wpa.log authentication completed successfully ${ip} ${user} ${pass} ${key} ${container_name}
+ Run Keyword If '${auth_pass}' == 'False' Check Remote File Contents False /tmp/wpa.log authentication completed successfully ${ip} ${user} ${pass} ${container_name}
Start DHCP Server on Remote Host
- [Arguments] ${interface} ${ip} ${user} ${pass}=${EMPTY} ${key}=${EMPTY} ${container_name}=${EMPTY}
- ${result}= Login And Run Command On Remote System sudo dhcpd -cf /etc/dhcp/dhcpd.conf ${interface} ${ip} ${user} ${pass} ${key} ${container_name}
+ [Arguments] ${interface} ${ip} ${user} ${pass}=${None} ${container_name}=${None}
+ ${result}= Login And Run Command On Remote System sudo dhcpd -cf /etc/dhcp/dhcpd.conf ${interface} ${ip} ${user} ${pass} ${container_name}
Should Contain ${result} Listening on LPF/${interface}
Delete IP Addresses from Interface on Remote Host
- [Arguments] ${interface} ${ip} ${user} ${pass}=${EMPTY} ${key}=${EMPTY} ${container_name}=${EMPTY}
- Login And Run Command On Remote System sudo ip addr flush dev ${interface} ${ip} ${user} ${pass} ${key} ${container_name}
+ [Arguments] ${interface} ${ip} ${user} ${pass}=${None} ${container_name}=${None}
+ Login And Run Command On Remote System sudo ip addr flush dev ${interface} ${ip} ${user} ${pass} ${container_name}
Add Double Vlan Interface on Host
- [Arguments] ${interface} ${stag} ${ctag} ${ip} ${user} ${pass}=${EMPTY} ${key}=${EMPTY} ${container_name}=${EMPTY}
- Login And Run Command On Remote System sudo ip link add link ${interface} name ${interface}.${stag} type vlan id ${stag} ${ip} ${user} ${pass} ${key} ${container_name}
- Login And Run Command On Remote System sudo ip link set ${interface}.${stag} up ${ip} ${user} ${pass} ${key} ${container_name}
- Login And Run Command On Remote System sudo ip link add link ${interface}.${stag} name ${interface}.${stag}.${ctag} type vlan id ${ctag} ${ip} ${user} ${pass} ${key} ${container_name}
- Login And Run Command On Remote System sudo ip link set ${interface}.${stag}.${ctag} up ${ip} ${user} ${pass} ${key} ${container_name}
- Login And Run Command On Remote System ifconfig ${interface}.${stag}.${ctag} ${ip} ${user} ${pass} ${key} ${container_name}
+ [Arguments] ${interface} ${stag} ${ctag} ${ip} ${user} ${pass}=${None} ${container_name}=${None}
+ Login And Run Command On Remote System sudo ip link add link ${interface} name ${interface}.${stag} type vlan id ${stag} ${ip} ${user} ${pass} ${container_name}
+ Login And Run Command On Remote System sudo ip link set ${interface}.${stag} up ${ip} ${user} ${pass} ${container_name}
+ Login And Run Command On Remote System sudo ip link add link ${interface}.${stag} name ${interface}.${stag}.${ctag} type vlan id ${ctag} ${ip} ${user} ${pass} ${container_name}
+ Login And Run Command On Remote System sudo ip link set ${interface}.${stag}.${ctag} up ${ip} ${user} ${pass} ${container_name}
+ Login And Run Command On Remote System ifconfig ${interface}.${stag}.${ctag} ${ip} ${user} ${pass} ${container_name}
Delete Interface on Remote Host
- [Arguments] ${interface} ${ip} ${user} ${pass}=${EMPTY} ${key}=${EMPTY} ${container_name}=${EMPTY}
- Login And Run Command On Remote System sudo ip link del ${interface} ${ip} ${user} ${pass} ${key} ${container_name}
+ [Arguments] ${interface} ${ip} ${user} ${pass}=${None} ${container_name}=${None}
+ Login And Run Command On Remote System sudo ip link del ${interface} ${ip} ${user} ${pass} ${container_name}
Add Ip Address on Interface on Host
- [Arguments] ${ip_address} ${interface} ${ip} ${user} ${pass}=${EMPTY} ${key}=${EMPTY} ${container_name}=${EMPTY}
- Login And Run Command On Remote System sudo ip addr add ${ip_address} dev ${interface} ${ip} ${user} ${pass} ${key} ${container_name}
+ [Arguments] ${ip_address} ${interface} ${ip} ${user} ${pass}=${None} ${container_name}=${None}
+ Login And Run Command On Remote System sudo ip addr add ${ip_address} dev ${interface} ${ip} ${user} ${pass} ${container_name}
Add Route to Remote Host
- [Arguments] ${subnet} ${gateway} ${interface} ${ip} ${user} ${pass}=${EMPTY} ${key}=${EMPTY} ${container_name}=${EMPTY}
- Login And Run Command On Remote System sudo ip route add ${subnet} via ${gateway} dev ${interface} ${ip} ${user} ${pass} ${key} ${container_name}
+ [Arguments] ${subnet} ${gateway} ${interface} ${ip} ${user} ${pass}=${None} ${container_name}=${None}
+ Login And Run Command On Remote System sudo ip route add ${subnet} via ${gateway} dev ${interface} ${ip} ${user} ${pass} ${container_name}
diff --git a/src/test/cord-api/Framework/utils/utils.robot b/src/test/cord-api/Framework/utils/utils.robot
index 5bd801a..e8a6a6b 100644
--- a/src/test/cord-api/Framework/utils/utils.robot
+++ b/src/test/cord-api/Framework/utils/utils.robot
@@ -24,25 +24,25 @@
*** Keywords ***
Login And Run Command On Remote System
- [Arguments] ${cmd} ${ip} ${user} ${pass}=${EMPTY} ${key}=${EMPTY} ${container_name}=${EMPTY} ${prompt}=~$ ${prompt_timeout}=15s ${container_prompt}=~#
+ [Arguments] ${cmd} ${ip} ${user} ${pass}=${None} ${container_name}=${None} ${prompt}=~$ ${prompt_timeout}=15s ${container_prompt}=~#
[Documentation] SSH's into a remote host and executes a command and returns output. If container_name is specified, login to the container before executing the command
- ${conn_id} ${prompt}= Login To Remote System ${ip} ${user} ${pass} ${key} ${container_name} ${prompt} ${prompt_timeout} ${container_prompt}
+ ${conn_id} ${prompt}= Login To Remote System ${ip} ${user} ${pass} ${container_name} ${prompt} ${prompt_timeout} ${container_prompt}
${output}= Run Command On Remote System ${cmd} ${conn_id} ${user} ${prompt} ${pass}
Logout From Remote System ${conn_id}
[Return] ${output}
Login To Remote System
- [Arguments] ${ip} ${user} ${pass}=${EMPTY} ${key}=${EMPTY} ${container_name}=${EMPTY} ${prompt}=~$ ${prompt_timeout}=15s ${container_prompt}=~#
+ [Arguments] ${ip} ${user} ${pass}=${None} ${container_name}=${None} ${prompt}=~$ ${prompt_timeout}=15s ${container_prompt}=~#
[Documentation] SSH's into a remote host and returns connection ID. If container_name is specified, login to the container before returning
${conn_id}= SSHLibrary.Open Connection ${ip} prompt=${prompt} timeout=${prompt_timeout}
- Run Keyword If '${key}' != '${EMPTY}' SSHLibrary.Login With Public Key ${user} ${key}
- ... ELSE SSHLibrary.Login ${user} ${pass}
+ Run Keyword If '${pass}' != '${None}' SSHLibrary.Login ${user} ${pass}
+ ... ELSE SSHLibrary.Login With Public Key ${user} %{HOME}/.ssh/id_rsa
# Login to the lxc container
- Run Keyword If '${container_name}' != '${EMPTY}' Run Keywords
+ Run Keyword If '${container_name}' != '${None}' Run Keywords
... SSHLibrary.Write lxc exec ${container_name} /bin/bash AND
... SSHLibrary.Read Until ${container_prompt} AND
... SSHLibrary.Set Client Configuration prompt=${container_prompt}
- ${prompt}= Set Variable If '${container_name}' != '${EMPTY}' ${container_prompt} ${prompt}
+ ${prompt}= Set Variable If '${container_name}' != '${None}' ${container_prompt} ${prompt}
[Return] ${conn_id} ${prompt}
Logout From Remote System
@@ -52,7 +52,7 @@
SSHLibrary.Close Connection
Run Command On Remote System
- [Arguments] ${cmd} ${conn_id} ${user} ${prompt} ${pass}=${EMPTY}
+ [Arguments] ${cmd} ${conn_id} ${user} ${prompt} ${pass}=${None}
[Documentation] Executes a command on remote host and returns output
SSHLibrary.Switch Connection ${conn_id}
SSHLibrary.Write ${cmd}
@@ -217,19 +217,19 @@
[Return] ${id}
Kill Linux Process
- [Arguments] ${process} ${ip} ${user} ${pass}=${EMPTY} ${key}=${EMPTY} ${container_name}=${EMPTY}
- ${rc}= Login And Run Command On Remote System sudo kill $(ps aux | grep '${process}' | awk '{print $2}'); echo $? ${ip} ${user} ${pass} ${key} ${container_name}
+ [Arguments] ${process} ${ip} ${user} ${pass}=${None} ${container_name}=${None}
+ ${rc}= Login And Run Command On Remote System sudo kill $(ps aux | grep '${process}' | awk '{print $2}'); echo $? ${ip} ${user} ${pass} ${container_name}
Should Be Equal As Integers ${rc} 0
Check Remote File Contents
- [Arguments] ${file_should_exist} ${file} ${pattern} ${ip} ${user} ${pass}=${EMPTY} ${key}=${EMPTY} ${container_name}=${EMPTY} ${prompt}=~$
- ${output}= Login And Run Command On Remote System cat ${file} | grep '${pattern}' ${ip} ${user} ${pass} ${key} ${container_name} ${prompt}
+ [Arguments] ${file_should_exist} ${file} ${pattern} ${ip} ${user} ${pass}=${None} ${container_name}=${None} ${prompt}=~$
+ ${output}= Login And Run Command On Remote System cat ${file} | grep '${pattern}' ${ip} ${user} ${pass} ${container_name} ${prompt}
Run Keyword If '${file_should_exist}' == 'True' Should Contain ${output} ${pattern}
... ELSE Should Not Contain ${output} ${pattern}
Check Ping
- [Arguments] ${ping_should_pass} ${dst_ip} ${iface} ${ip} ${user} ${pass}=${EMPTY} ${key}=${EMPTY} ${container_name}=${EMPTY}
- ${result}= Login And Run Command On Remote System ping -I ${iface} -c 3 ${dst_ip} ${ip} ${user} ${pass} ${key} ${container_name}
+ [Arguments] ${ping_should_pass} ${dst_ip} ${iface} ${ip} ${user} ${pass}=${None} ${container_name}=${None}
+ ${result}= Login And Run Command On Remote System ping -I ${iface} -c 3 ${dst_ip} ${ip} ${user} ${pass} ${container_name}
Check Ping Result ${ping_should_pass} ${result}
Check Remote System Reachability
diff --git a/src/test/cord-api/Properties/RestApiProperties.py b/src/test/cord-api/Properties/RestApiProperties.py
index 74264b1..2600c70 100644
--- a/src/test/cord-api/Properties/RestApiProperties.py
+++ b/src/test/cord-api/Properties/RestApiProperties.py
@@ -16,7 +16,8 @@
#!/usr/bin/env python
-SERVER_IP = '127.0.0.1'
+SERVER_IP = '10.192.4.241'
+#SERVER_IP = '10.90.0.101'
SERVER_PORT = '30006'
XOS_USER = 'admin@opencord.org'
XOS_PASSWD = 'letmein'
diff --git a/src/test/cord-api/Tests/WorkflowValidations/ATT_Test001.txt b/src/test/cord-api/Tests/WorkflowValidations/ATT_Test001.robot
similarity index 72%
rename from src/test/cord-api/Tests/WorkflowValidations/ATT_Test001.txt
rename to src/test/cord-api/Tests/WorkflowValidations/ATT_Test001.robot
index 59c6e56..48b2fe6 100644
--- a/src/test/cord-api/Tests/WorkflowValidations/ATT_Test001.txt
+++ b/src/test/cord-api/Tests/WorkflowValidations/ATT_Test001.robot
@@ -13,7 +13,7 @@
# limitations under the License.
*** Settings ***
-Documentation Test successful ping from end-end
+Documentation Test various end-to-end scenarios with ATT workflow
Suite Setup Setup
Suite Teardown Teardown
Test Setup Create Models
@@ -35,31 +35,15 @@
Variables ../../Properties/RestApiProperties.py
*** Variables ***
-${WHITELIST_PATHFILE} ${CURDIR}/data/ATTWhiteList.json
-${SUBSCRIBER_PATHFILE} ${CURDIR}/data/ATTSubscriber.json
-${VOLT_DEVICE_PATHFILE} ${CURDIR}/../data/RealOLTDevice.json
-${src_ip} X.X.X.X
-${src_gateway} X.X.X.X
-${src_user} user
-${src_pass} ${EMPTY}
-${src_key} ${EMPTY}
-${src_container_name} ${EMPTY}
-${src_iface} eth0
-${dst_ip} ${EMPTY}
-${dst_dp_iface} eth0
-${dst_dp_ip} X.X.X.X
-${dst_user} user
-${dst_pass} ${EMPTY}
-${dst_key} ${EMPTY}
-${dst_container_name} ${EMPTY}
-${dst_gateway} X.X.X.X
-${olt_ip} X.X.X.X
-${olt_user} user
-${olt_pass} ${EMPTY}
-${kubernetes_conf} x.conf
-${kubernetes_yml} x.yml
-${helm_dir} ~/helm-charts
-${voltha_pod_num} 8
+${POD_NAME} flex-pod1-olt
+${KUBERNETES_CONFIGS_DIR} ~/pod-configs/kubernetes-configs
+${HELM_CHARTS_DIR} ~/helm-charts
+${WHITELIST_PATHFILE} ${CURDIR}/data/${POD_NAME}/ATTWhiteList.json
+${SUBSCRIBER_PATHFILE} ${CURDIR}/data/${POD_NAME}/ATTSubscriber.json
+${VOLT_DEVICE_PATHFILE} ${CURDIR}/data/${POD_NAME}/RealOLTDevice.json
+${KUBERNETES_CONF} ${KUBERNETES_CONFIGS_DIR}/${POD_NAME}.conf
+${KUBERNETES_YAML} ${KUBERNETES_CONFIGS_DIR}/${POD_NAME}.yml
+${VOLTHA_POD_NUM} 8
*** Test Cases ***
ONU in Correct Location + Successful Auth Request
@@ -73,7 +57,7 @@
Wait Until Keyword Succeeds 300s 15s Validate ONU States ACTIVE ENABLED
Wait Until Keyword Succeeds 60s 2s Validate ATT Workflow Driver SI ENABLED AWAITING
Wait Until Keyword Succeeds 60s 2s Validate Subscriber Status awaiting-auth
- Send EAPOL Message True ${src_iface} wpa_supplicant.conf ${src_ip} ${src_user} ${src_pass} ${src_key} ${src_container_name}
+ Send EAPOL Message True ${src_iface} wpa_supplicant.conf ${src_ip} ${src_user} ${src_pass} ${src_container_name}
Wait Until Keyword Succeeds 60s 2s Validate ATT Workflow Driver SI ENABLED APPROVED
Wait Until Keyword Succeeds 60s 2s Validate Subscriber Status enabled
Validate DHCP and Ping True True
@@ -106,7 +90,7 @@
Wait Until Keyword Succeeds 300s 15s Validate ONU States UNKNOWN DISABLED
Wait Until Keyword Succeeds 60s 2s Validate ATT Workflow Driver SI DISABLED AWAITING
Wait Until Keyword Succeeds 60s 2s Validate Subscriber Status awaiting-auth
- Send EAPOL Message False ${src_iface} wpa_supplicant.conf ${src_ip} ${src_user} ${src_pass} ${src_key} ${src_container_name}
+ Send EAPOL Message False ${src_iface} wpa_supplicant.conf ${src_ip} ${src_user} ${src_pass} ${src_container_name}
Wait Until Keyword Succeeds 60s 2s Validate ATT Workflow Driver SI DISABLED AWAITING
Wait Until Keyword Succeeds 60s 2s Validate Subscriber Status awaiting-auth
Validate DHCP and Ping False False
@@ -136,7 +120,36 @@
Set Global Variable ${vlist} ${VoltDeviceList}
Set Suite Variable ${s_tag}
Set Suite Variable ${c_tag}
- Set Global Variable ${export_kubeconfig} export KUBECONFIG=${kubernetes_conf}
+ Set Global Variable ${export_kubeconfig} export KUBECONFIG=${KUBERNETES_CONF}
+ # Read variables from yaml file
+ ${src_ip}= Evaluate ${hosts}.get("src").get("ip")
+ ${src_user}= Evaluate ${hosts}.get("src").get("user")
+ ${src_pass}= Evaluate ${hosts}.get("src").get("pass")
+ ${src_container_name}= Evaluate ${hosts}.get("src").get("container_name")
+ ${src_iface}= Evaluate ${hosts}.get("src").get("dp_iface_name")
+ ${dst_ip}= Evaluate ${hosts}.get("dst").get("ip")
+ ${dst_user} = Evaluate ${hosts}.get("dst").get("user")
+ ${dst_pass}= Evaluate ${hosts}.get("dst").get("pass")
+ ${dst_container_name}= Evaluate ${hosts}.get("dst").get("container_name")
+ ${dst_dp_iface}= Evaluate ${hosts}.get("dst").get("dp_iface_name")
+ ${dst_dp_ip}= Evaluate ${hosts}.get("dst").get("dp_iface_ip_qinq")
+ ${olt_ip}= Evaluate ${olts}[0].get("ip")
+ ${olt_user}= Evaluate ${olts}[0].get("user")
+ ${olt_pass}= Evaluate ${olts}[0].get("pass")
+ Set Suite Variable ${src_ip}
+ Set Suite Variable ${src_user}
+ Set Suite Variable ${src_pass}
+ Set Suite Variable ${src_container_name}
+ Set Suite Variable ${src_iface}
+ Set Suite Variable ${dst_ip}
+ Set Suite Variable ${dst_user}
+ Set Suite Variable ${dst_pass}
+ Set Suite Variable ${dst_container_name}
+ Set Suite Variable ${dst_dp_iface}
+ Set Suite Variable ${dst_dp_ip}
+ Set Suite Variable ${olt_ip}
+ Set Suite Variable ${olt_user}
+ Set Suite Variable ${olt_pass}
Teardown
[Documentation] Performs any additional cleanup required
@@ -147,25 +160,25 @@
[Documentation] Re-create Subscriber, whitelist, and olt-device models to test
Log Re-creating objects
#create attwhitelist
- ${AttWhiteListList} = Get Variable Value ${alist}
+ ${AttWhiteListList}= Get Variable Value ${alist}
${AttWhiteListDict}= utils.listToDict ${AttWhiteListList} 0
CORD Post ${ATT_WHITELIST} ${AttWhiteListDict}
#create subscriber
- ${SubscriberList} = Get Variable Value ${slist}
+ ${SubscriberList}= Get Variable Value ${slist}
${SubscriberDict}= utils.listToDict ${SubscriberList} 0
Wait Until Keyword Succeeds 120s 15s CORD Post ${VOLT_SUBSCRIBER} ${SubscriberDict}
#create olt device
- ${VoltDeviceList} = Get Variable Value ${vlist}
+ ${VoltDeviceList}= Get Variable Value ${vlist}
${VoltDeviceDict}= utils.listToDict ${VoltDeviceList} 0
CORD Post ${VOLT_DEVICE} ${VoltDeviceDict}
Clean Test Environment
[Documentation] Delete xos objects, kills processes and cleans up interfaces on src+dst servers
- Run Keyword And Ignore Error Kill Linux Process [w]pa_supplicant ${src_ip} ${src_user} ${src_pass} ${src_key} ${src_container_name}
- Run Keyword And Ignore Error Kill Linux Process [d]hclient ${src_ip} ${src_user} ${src_pass} ${src_key} ${src_container_name}
- Run Keyword If '${dst_ip}' != '${EMPTY}' Run Keyword And Ignore Error Kill Linux Process [d]hcpd ${dst_ip} ${dst_user} ${dst_pass} ${dst_key} ${dst_container_name}
- Delete IP Addresses from Interface on Remote Host ${src_iface} ${src_ip} ${src_user} ${src_pass} ${src_key} ${src_container_name}
- Run Keyword If '${dst_ip}' != '${EMPTY}' Delete Interface on Remote Host ${dst_dp_iface}.${s_tag} ${dst_ip} ${dst_user} ${dst_pass} ${dst_key} ${dst_container_name}
+ Run Keyword And Ignore Error Kill Linux Process [w]pa_supplicant ${src_ip} ${src_user} ${src_pass} ${src_container_name}
+ Run Keyword And Ignore Error Kill Linux Process [d]hclient ${src_ip} ${src_user} ${src_pass} ${src_container_name}
+ Run Keyword If '${dst_ip}' != '${None}' Run Keyword And Ignore Error Kill Linux Process [d]hcpd ${dst_ip} ${dst_user} ${dst_pass} ${dst_container_name}
+ Delete IP Addresses from Interface on Remote Host ${src_iface} ${src_ip} ${src_user} ${src_pass} ${src_container_name}
+ Run Keyword If '${dst_ip}' != '${None}' Delete Interface on Remote Host ${dst_dp_iface}.${s_tag} ${dst_ip} ${dst_user} ${dst_pass} ${dst_container_name}
Wait Until Keyword Succeeds 60s 2s Clean Up Objects ${VOLT_SUBSCRIBER}
Wait Until Keyword Succeeds 60s 2s Clean Up Objects ${VOLT_DEVICE}
Wait Until Keyword Succeeds 60s 2s Clean Up Objects ${ATT_WHITELIST}
@@ -193,22 +206,24 @@
Validate DHCP and Ping
[Arguments] ${dhcp_should_pass} ${ping_should_pass}
- Run Keyword If '${dst_ip}' != '${EMPTY}' Run Keywords
- ... Add Double Vlan Interface on Host ${dst_dp_iface} ${s_tag} ${c_tag} ${dst_ip} ${dst_user} ${dst_pass} ${dst_key} ${dst_container_name} AND
- ... Add IP Address on Interface on Host ${dst_dp_ip}/24 ${dst_dp_iface}.${s_tag}.${c_tag} ${dst_ip} ${dst_user} ${dst_pass} ${dst_key} ${dst_container_name} AND
- ... Start DHCP Server on Remote Host ${dst_dp_iface}.${s_tag}.${c_tag} ${dst_ip} ${dst_user} ${dst_pass} ${dst_key} ${dst_container_name}
- Send Dhclient Request ${src_iface} ${src_ip} ${src_user} ${src_pass} ${src_key} ${src_container_name}
- Run Keyword If '${dhcp_should_pass}' == 'True' Wait Until Keyword Succeeds 60s 5s Check IPv4 Address on DHCP Client True ${src_iface} ${src_ip} ${src_user} ${src_pass} ${src_key} ${src_container_name}
+ Run Keyword If '${dst_ip}' != '${None}' Run Keywords
+ ... Add Double Vlan Interface on Host ${dst_dp_iface} ${s_tag} ${c_tag} ${dst_ip} ${dst_user} ${dst_pass} ${dst_container_name} AND
+ ... Add IP Address on Interface on Host ${dst_dp_ip}/24 ${dst_dp_iface}.${s_tag}.${c_tag} ${dst_ip} ${dst_user} ${dst_pass} ${dst_container_name} AND
+ ... Start DHCP Server on Remote Host ${dst_dp_iface}.${s_tag}.${c_tag} ${dst_ip} ${dst_user} ${dst_pass} ${dst_container_name}
+ Send Dhclient Request ${src_iface} ${src_ip} ${src_user} ${src_pass} ${src_container_name}
+ Run Keyword If '${dhcp_should_pass}' == 'True' Wait Until Keyword Succeeds 60s 5s Check IPv4 Address on DHCP Client True ${src_iface} ${src_ip} ${src_user} ${src_pass} ${src_container_name}
Run Keyword If '${dhcp_should_pass}' == 'False' Sleep 10s
- Run Keyword If '${dhcp_should_pass}' == 'False' Check IPv4 Address on DHCP Client False ${src_iface} ${src_ip} ${src_user} ${src_pass} ${src_key} ${src_container_name}
- Run Keyword If '${ping_should_pass}' == 'True' Wait Until Keyword Succeeds 60s 5s Check Ping True ${dst_dp_ip} ${src_iface} ${src_ip} ${src_user} ${src_pass} ${src_key} ${src_container_name}
- ... ELSE Wait Until Keyword Succeeds 60s 5s Check Ping False ${dst_dp_ip} ${src_iface} ${src_ip} ${src_user} ${src_pass} ${src_key} ${src_container_name}
+ Run Keyword If '${dhcp_should_pass}' == 'False' Check IPv4 Address on DHCP Client False ${src_iface} ${src_ip} ${src_user} ${src_pass} ${src_container_name}
+ Run Keyword If '${ping_should_pass}' == 'True' Wait Until Keyword Succeeds 60s 5s Check Ping True ${dst_dp_ip} ${src_iface} ${src_ip} ${src_user} ${src_pass} ${src_container_name}
+ ... ELSE Wait Until Keyword Succeeds 60s 5s Check Ping False ${dst_dp_ip} ${src_iface} ${src_ip} ${src_user} ${src_pass} ${src_container_name}
Reinstall Voltha
Run ${export_kubeconfig}; helm delete --purge voltha
Wait Until Keyword Succeeds 60s 10s Helm Chart is Removed voltha
Wait Until Keyword Succeeds 120s 10s Kubernetes PODs in Namespace are Removed voltha
- ${rc} ${output}= Run And Return Rc And Output ${export_kubeconfig}; helm install -n voltha -f ${kubernetes_yml} --set etcd-operator.customResources.createEtcdClusterCRD=false ${helm_dir}/voltha
- ${rc} ${output}= Run And Return Rc And Output ${export_kubeconfig}; helm upgrade -f ${kubernetes_yml} --set etcd-operator.customResources.createEtcdClusterCRD=true voltha ${helm_dir}/voltha
- Wait Until Keyword Succeeds 60s 10s Kubernetes PODs in Namespace are Running voltha ${voltha_pod_num}
+ Run ${export_kubeconfig}; cd ${HELM_CHARTS_DIR}; helm repo add incubator https://kubernetes-charts-incubator.storage.googleapis.com/
+ Run ${export_kubeconfig}; cd ${HELM_CHARTS_DIR}; helm dep up voltha
+ Run ${export_kubeconfig}; helm install -n voltha -f ${KUBERNETES_YAML} --set etcd-operator.customResources.createEtcdClusterCRD=false ${HELM_CHARTS_DIR}/voltha
+ Run ${export_kubeconfig}; helm upgrade -f ${KUBERNETES_YAML} --set etcd-operator.customResources.createEtcdClusterCRD=true voltha ${HELM_CHARTS_DIR}/voltha
+ Wait Until Keyword Succeeds 60s 10s Kubernetes PODs in Namespace are Running voltha ${VOLTHA_POD_NUM}
Sleep 10s
diff --git a/src/test/cord-api/Tests/WorkflowValidations/data/ATTSubscriber.json b/src/test/cord-api/Tests/WorkflowValidations/data/flex-pod1-olt/ATTSubscriber.json
similarity index 100%
rename from src/test/cord-api/Tests/WorkflowValidations/data/ATTSubscriber.json
rename to src/test/cord-api/Tests/WorkflowValidations/data/flex-pod1-olt/ATTSubscriber.json
diff --git a/src/test/cord-api/Tests/WorkflowValidations/data/ATTWhiteList.json b/src/test/cord-api/Tests/WorkflowValidations/data/flex-pod1-olt/ATTWhiteList.json
similarity index 100%
rename from src/test/cord-api/Tests/WorkflowValidations/data/ATTWhiteList.json
rename to src/test/cord-api/Tests/WorkflowValidations/data/flex-pod1-olt/ATTWhiteList.json
diff --git a/src/test/cord-api/Tests/WorkflowValidations/data/flex-pod1-olt/RealOLTDevice.json b/src/test/cord-api/Tests/WorkflowValidations/data/flex-pod1-olt/RealOLTDevice.json
new file mode 100644
index 0000000..1b93373
--- /dev/null
+++ b/src/test/cord-api/Tests/WorkflowValidations/data/flex-pod1-olt/RealOLTDevice.json
@@ -0,0 +1,16 @@
+{
+ "VOLTDeviceInfo" : [
+ {
+ "device_type": "openolt",
+ "host": "10.192.4.218",
+ "port": 9191,
+ "switch_datapath_id": "of:0000cc37ab5b6da8",
+ "switch_port": "7",
+ "outer_tpid": "0x8100",
+ "name": "olt-1",
+ "uplink": "65536",
+ "volt_service_id": 2,
+ "nas_id": "NAS_ID"
+ }
+ ]
+}
diff --git a/src/test/cord-api/Tests/WorkflowValidations/data/ATTSubscriber-ONF.json b/src/test/cord-api/Tests/WorkflowValidations/data/onlab-pod1/ATTSubscriber.json
similarity index 100%
rename from src/test/cord-api/Tests/WorkflowValidations/data/ATTSubscriber-ONF.json
rename to src/test/cord-api/Tests/WorkflowValidations/data/onlab-pod1/ATTSubscriber.json
diff --git a/src/test/cord-api/Tests/WorkflowValidations/data/ATTWhiteList-ONF.json b/src/test/cord-api/Tests/WorkflowValidations/data/onlab-pod1/ATTWhiteList.json
similarity index 100%
rename from src/test/cord-api/Tests/WorkflowValidations/data/ATTWhiteList-ONF.json
rename to src/test/cord-api/Tests/WorkflowValidations/data/onlab-pod1/ATTWhiteList.json
diff --git a/src/test/cord-api/Tests/WorkflowValidations/data/RealOLTDevice-ONF.json b/src/test/cord-api/Tests/WorkflowValidations/data/onlab-pod1/RealOLTDevice.json
similarity index 100%
rename from src/test/cord-api/Tests/WorkflowValidations/data/RealOLTDevice-ONF.json
rename to src/test/cord-api/Tests/WorkflowValidations/data/onlab-pod1/RealOLTDevice.json