Merge "VOL-2435 Allow hardware tests to be configured with delay"
diff --git a/jjb/cord-test/nightly-build-pipeline.yaml b/jjb/cord-test/nightly-build-pipeline.yaml
index f565c37..228100e 100644
--- a/jjb/cord-test/nightly-build-pipeline.yaml
+++ b/jjb/cord-test/nightly-build-pipeline.yaml
@@ -948,6 +948,11 @@
default: '{profile}'
description: 'Technology Profile pushed to the ETCD'
+ - bool:
+ name: released
+ default: '{released}'
+ description: "Pulls tests that are tagged with released as identifier"
+
- string:
name: branch
default: '{branch}'
diff --git a/jjb/cord-test/voltha.yaml b/jjb/cord-test/voltha.yaml
index 8231ee6..a01557b 100644
--- a/jjb/cord-test/voltha.yaml
+++ b/jjb/cord-test/voltha.yaml
@@ -29,7 +29,7 @@
test-repo: 'voltha-system-tests'
Jenkinsfile: 'Jenkinsfile-voltha-test'
- # onlab pod1 OCP pod with olt/onu - testing BAL3.1 release voltha master build job
+ # onlab pod1 OCP pod with olt/onu - Manual testing BAL3.1 release voltha master build job
- 'build_pod_manual':
testvm: 'onf-build'
config-pod: 'onlab-pod1'
@@ -69,6 +69,7 @@
config-pod: 'flex-ocp-cord'
release: 'master'
branch: 'master'
+ released: false
test-repo: 'voltha-system-tests'
profile: 'Default'
@@ -92,6 +93,7 @@
config-pod: 'flex-ocp-cord'
release: 'master'
branch: 'master'
+ released: false
test-repo: 'voltha-system-tests'
profile: '1T4GEM-bal31'
@@ -115,6 +117,7 @@
config-pod: 'flex-ocp-cord'
release: 'release'
branch: 'master'
+ released: true
test-repo: 'voltha-system-tests'
profile: 'Default'
@@ -138,6 +141,7 @@
config-pod: 'onf-demo-pod'
release: 'master'
branch: 'master'
+ released: false
test-repo: 'voltha-system-tests'
profile: 'Default'
@@ -161,6 +165,7 @@
config-pod: 'onf-demo-pod'
release: 'release'
branch: 'master'
+ released: true
test-repo: 'voltha-system-tests'
profile: 'Default'
@@ -184,6 +189,7 @@
config-pod: 'onf-demo-pod'
release: 'master'
branch: 'master'
+ released: false
test-repo: 'voltha-system-tests'
profile: '1T4GEM-bal31'
diff --git a/jjb/defaults.yaml b/jjb/defaults.yaml
index 7d6caca..0e88661 100644
--- a/jjb/defaults.yaml
+++ b/jjb/defaults.yaml
@@ -88,6 +88,9 @@
# (basically the same as imagebuilder projects + helm charts + tools
version-tag-projects-regexp: '^(xos.*|.*helm-charts|automation-tools|cord-tester|chameleon|rcord|mcord|ecord|acordion|addressmanager|epc-service|exampleservice|fabric.*|globalxos|hippie-oss|hss_db|hypercache|internetemulator|kubernetes-service|monitoring|olt-service|onos-service|openstack|progran|sdn-controller|simpleexampleservice|templateservice|vEE|vEG|vBBU|venb|vHSS|vMME|vnaas|vPGWC|vPGWU|vrouter|vsg|vsg-hw|vSGW|vSM|vspgwc|vspgwu|vtn-service|vtr|att-workflow-driver|tt-workflow-driver|ves-agent|voltha-bbsim|openolt|sadis-server|kafka-topic-exporter|pyvoltha||plyxproto|voltha-protos|alpine-grpc-base|cordctl|voltha-go|voltha-onos|device-management|cord-workflow.*|voltha-system-tests|openairinterface|omec-.*|bbsim|omci-sim|ponsim|pppoel2relay|voltha-api-server|aaa|config|dhcpl2relay|igmp|igmpproxy|kafka-onos|mcast|olt|sadis|vtn|voltha-.*-adapter|voltha-lib-go|voltha-python-base|mn-stratum-siab|ofagent.*|bng|voltctl|openolt-scale-tester)$'
+ # List of all repos that contribute to the CORD guide
+ cord-guide-projects-regexp: '^(att-workflow-driver|cord-tester|cordctl|exampleservice|fabric|fabric-crossconnect|hippie-oss|kubernetes-service|olt-service|onos-service|openolt|openstack|rcord|simpleexampleservice|vrouter|vtn-service|xos|xos-gui|xos-tosca)$'
+
# PyPI related publishing variables
#
# Pipe-separated list of directories relative to $WORKSPACE containing
diff --git a/jjb/docs.yaml b/jjb/docs.yaml
index 2a7c91a..91676b0 100644
--- a/jjb/docs.yaml
+++ b/jjb/docs.yaml
@@ -6,7 +6,7 @@
jobs:
- 'verify-documentation':
- other-docs-repos-regexp: '.*'
+ other-docs-repos-regexp: '{cord-guide-projects-regexp}'
branch-regexp: '{modern-branches-regexp}'
- project:
@@ -14,7 +14,7 @@
jobs:
- 'publish-documentation':
- other-docs-repos-regexp: '.*'
+ other-docs-repos-regexp: '{cord-guide-projects-regexp}'
branch-regexp: '{modern-branches-regexp}'
- project:
diff --git a/jjb/pipeline/voltha-bbsim-tests.groovy b/jjb/pipeline/voltha-bbsim-tests.groovy
index 8362159..a6f7b3d 100644
--- a/jjb/pipeline/voltha-bbsim-tests.groovy
+++ b/jjb/pipeline/voltha-bbsim-tests.groovy
@@ -140,7 +140,7 @@
cd $WORKSPACE/kind-voltha/
echo \$HELM_FLAG
- EXTRA_HELM_FLAGS=\$HELM_FLAG VOLTHA_LOG_LEVEL=DEBUG TYPE=minimal WITH_RADIUS=y WITH_BBSIM=y INSTALL_ONOS_APPS=y CONFIG_SADIS=y FANCY=0 WITH_SIM_ADAPTERS=n ./voltha up
+ EXTRA_HELM_FLAGS=\$HELM_FLAG VOLTHA_LOG_LEVEL=DEBUG TYPE=minimal WITH_RADIUS=y WITH_BBSIM=y INSTALL_ONOS_APPS=y CONFIG_SADIS=n FANCY=0 WITH_SIM_ADAPTERS=n ./voltha up
'''
}
}
diff --git a/jjb/pipeline/voltha-go-multi-tests.groovy b/jjb/pipeline/voltha-go-multi-tests.groovy
new file mode 100644
index 0000000..ed2107b
--- /dev/null
+++ b/jjb/pipeline/voltha-go-multi-tests.groovy
@@ -0,0 +1,178 @@
+// Copyright 2017-present Open Networking Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// voltha-2.x e2e tests
+// uses kind-voltha to deploy voltha-2.X
+// uses bbsim to simulate OLT/ONUs
+
+pipeline {
+
+ /* no label, executor is determined by JJB */
+ agent {
+ label "${params.buildNode}"
+ }
+ options {
+ timeout(time: 40, unit: 'MINUTES')
+ }
+ environment {
+ KUBECONFIG="$HOME/.kube/kind-config-voltha-minimal"
+ VOLTCONFIG="$HOME/.volt/config-minimal"
+ PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$WORKSPACE/kind-voltha/bin"
+ TYPE="minimal"
+ FANCY=0
+ WITH_SIM_ADAPTERS="n"
+ WITH_RADIUS="y"
+ WITH_BBSIM="y"
+ DEPLOY_K8S="y"
+ VOLTHA_LOG_LEVEL="DEBUG"
+ CONFIG_SADIS="n"
+ EXTRA_HELM_FLAGS="${params.extraHelmFlags}"
+ ROBOT_MISC_ARGS="${params.extraRobotArgs} -d $WORKSPACE/RobotLogs -v teardown_device:False"
+ }
+ stages {
+
+ stage('Repo') {
+ steps {
+ step([$class: 'WsCleanup'])
+ checkout(changelog: true,
+ poll: false,
+ scm: [$class: 'RepoScm',
+ manifestRepositoryUrl: "${params.manifestUrl}",
+ manifestBranch: "${params.manifestBranch}",
+ currentBranch: true,
+ destinationDir: 'voltha',
+ forceSync: true,
+ resetFirst: true,
+ quiet: true,
+ jobs: 4,
+ showAllChanges: true]
+ )
+ }
+ }
+
+ stage('Download kind-voltha') {
+ steps {
+ sh """
+ git clone https://github.com/ciena/kind-voltha.git
+ """
+ }
+ }
+
+ stage('Deploy Voltha') {
+ steps {
+ sh """
+ cd kind-voltha/
+ ./voltha up
+ """
+ }
+ }
+
+ stage('Run E2E Tests') {
+ steps {
+ sh '''
+
+ clear_etcd() {
+ kubectl -n voltha exec $(kubectl -n voltha get pods -lapp=etcd -o=name) -- sh -c "ETCDCTL_API=3 etcdctl del --prefix $1"
+ }
+
+ wait_for_state_change() {
+ timeout 60 bash -c "until voltctl device list -f Type=$2,AdminState=$3,OperStatus=$4,ConnectStatus=$5 -q | wc -l | grep -q 1; do echo Waiting for $1 to change states; voltctl device list; echo; sleep 5; done"
+ }
+
+ mkdir -p $WORKSPACE/RobotLogs
+ git clone https://gerrit.opencord.org/voltha-system-tests
+ cd kind-voltha
+ for i in \$(seq 1 ${testRuns})
+ do
+ make -C $WORKSPACE/voltha-system-tests ${makeTarget}
+ echo "Completed run: \$i"
+ echo ""
+ if [[ \$i -lt ${testRuns} ]]
+ then
+ # For testing multiple back-to-back runs
+ # Doing some manual cleanup to work around known issues in BBSim and ONOS apps
+
+ OLT=\$( voltctl device list -f Type=openolt -q )
+ ONU=\$( voltctl device list -f Type=brcm_openomci_onu -q )
+
+ voltctl device disable \$OLT
+ wait_for_state_change OLT openolt DISABLED UNKNOWN REACHABLE
+ wait_for_state_change ONU brcm_openomci_onu ENABLED DISCOVERED UNREACHABLE
+
+ voltctl device disable \$ONU
+ wait_for_state_change ONU brcm_openomci_onu DISABLED UNKNOWN UNREACHABLE
+
+ voltctl device delete \$OLT
+
+ timeout 60 bash -c 'until voltctl device list -q | wc -l | grep -q 0; do echo "Waiting for all devices to be deleted"; voltctl device list; echo ""; sleep 5; done'
+
+ helm delete --purge bbsim # VOL-2342
+ helm delete --purge onos # VOL-2343, VOL-2363
+ clear_etcd service/voltha/resource_manager
+ clear_etcd service/voltha/openolt
+ clear_etcd service/voltha/devices
+ sleep 30
+ DEPLOY_K8S=no ./voltha up # Will just re-deploy BBSim and ONOS
+ fi
+ done
+ '''
+ }
+ }
+ }
+
+ post {
+ always {
+ sh '''
+ set +e
+ cd kind-voltha/
+ cp install-minimal.log $WORKSPACE/
+ kubectl get pods --all-namespaces -o jsonpath="{range .items[*].status.containerStatuses[*]}{.image}{'\\t'}{.imageID}{'\\n'}" | sort | uniq -c
+ kubectl get nodes -o wide
+ kubectl get pods -o wide
+ kubectl get pods -n voltha -o wide
+ ## get default pod logs
+ for pod in \$(kubectl get pods --no-headers | awk '{print \$1}');
+ do
+ if [[ \$pod == *"onos"* && \$pod != *"onos-service"* ]]; then
+ kubectl logs \$pod onos> $WORKSPACE/\$pod.log;
+ else
+ kubectl logs \$pod> $WORKSPACE/\$pod.log;
+ fi
+ done
+ ## get voltha pod logs
+ for pod in \$(kubectl get pods --no-headers -n voltha | awk '{print \$1}');
+ do
+ if [[ \$pod == *"-api-"* ]]; then
+ kubectl logs \$pod arouter -n voltha > $WORKSPACE/\$pod.log;
+ else
+ kubectl logs \$pod -n voltha > $WORKSPACE/\$pod.log;
+ fi
+ done
+ ## shut down voltha
+ WAIT_ON_DOWN=y ./voltha down
+ '''
+ step([$class: 'RobotPublisher',
+ disableArchiveOutput: false,
+ logFileName: 'RobotLogs/log*.html',
+ otherFiles: '',
+ outputFileName: 'RobotLogs/output*.xml',
+ outputPath: '.',
+ passThreshold: 100,
+ reportFileName: 'RobotLogs/report*.html',
+ unstableThreshold: 0]);
+ archiveArtifacts artifacts: '*.log'
+
+ }
+ }
+}
diff --git a/jjb/pipeline/voltha-go-tests.groovy b/jjb/pipeline/voltha-go-tests.groovy
index d5ecedb..7e1227e 100644
--- a/jjb/pipeline/voltha-go-tests.groovy
+++ b/jjb/pipeline/voltha-go-tests.groovy
@@ -36,7 +36,7 @@
WITH_BBSIM="y"
DEPLOY_K8S="y"
VOLTHA_LOG_LEVEL="DEBUG"
- CONFIG_SADIS="y"
+ CONFIG_SADIS="n"
EXTRA_HELM_FLAGS="${params.extraHelmFlags}"
ROBOT_MISC_ARGS="${params.extraRobotArgs} -d $WORKSPACE/RobotLogs"
}
@@ -83,17 +83,7 @@
sh '''
mkdir -p $WORKSPACE/RobotLogs
git clone https://gerrit.opencord.org/voltha-system-tests
- for i in \$(seq 1 ${testRuns})
- do
- make -C $WORKSPACE/voltha-system-tests ${makeTarget}
- kubectl -n voltha delete pod -lapp=bbsim # VOL-2342
- kubectl -n voltha wait pod -lapp=bbsim --for condition=Ready --timeout=60s # VOL-2342
- http -a karaf:karaf --ignore-stdin DELETE http://localhost:8181/onos/v1/applications/org.opencord.dhcpl2relay/active > /dev/null # VOL-2343
- http -a karaf:karaf --ignore-stdin POST http://localhost:8181/onos/v1/applications/org.opencord.dhcpl2relay/active > /dev/null # VOL-2343
- http -a karaf:karaf --ignore-stdin DELETE http://localhost:8181/onos/v1/applications/org.opencord.aaa/active > /dev/null # VOL-2363
- http -a karaf:karaf --ignore-stdin POST http://localhost:8181/onos/v1/applications/org.opencord.aaa/active > /dev/null # VOL-2363
- sleep 10
- done
+ make -C $WORKSPACE/voltha-system-tests ${makeTarget}
'''
}
}
diff --git a/jjb/pipeline/voltha-physical-build-and-tests.groovy b/jjb/pipeline/voltha-physical-build-and-tests.groovy
index 4a028ae..190cfc3 100644
--- a/jjb/pipeline/voltha-physical-build-and-tests.groovy
+++ b/jjb/pipeline/voltha-physical-build-and-tests.groovy
@@ -263,6 +263,7 @@
sshpass -p ${olt.pass} ssh -l ${olt.user} ${olt.ip} 'service openolt stop' || true
sshpass -p ${olt.pass} ssh -l ${olt.user} ${olt.ip} 'killall dev_mgmt_daemon' || true
sshpass -p ${olt.pass} ssh -l ${olt.user} ${olt.ip} 'rm -f /var/log/openolt.log'
+ sshpass -p ${olt.pass} ssh -l ${olt.user} ${olt.ip} 'rm -f /var/log/dev_mgmt_daemon.log'
sshpass -p ${olt.pass} ssh -l ${olt.user} ${olt.ip} 'service dev_mgmt_daemon start &'
sleep 5
sshpass -p ${olt.pass} ssh -l ${olt.user} ${olt.ip} 'service openolt start &'
@@ -344,6 +345,8 @@
sh returnStdout: false, script: """
sshpass -p ${olt.pass} scp ${olt.user}@${olt.ip}:/var/log/openolt.log $WORKSPACE/openolt-${olt.ip}.log || true
sed -i 's/\\x1b\\[[0-9;]*[a-zA-Z]//g' $WORKSPACE/openolt-${olt.ip}.log # Remove escape sequences
+ sshpass -p ${olt.pass} scp ${olt.user}@${olt.ip}:/var/log/dev_mgmt_daemon.log $WORKSPACE/dev_mgmt_daemon-${olt.ip}.log || true
+ sed -i 's/\\x1b\\[[0-9;]*[a-zA-Z]//g' $WORKSPACE/dev_mgmt_daemon-${olt.ip}.log # Remove escape sequences
"""
}
}
diff --git a/jjb/pipeline/voltha-physical-functional-tests.groovy b/jjb/pipeline/voltha-physical-functional-tests.groovy
index baba016..8aa703e 100644
--- a/jjb/pipeline/voltha-physical-functional-tests.groovy
+++ b/jjb/pipeline/voltha-physical-functional-tests.groovy
@@ -64,12 +64,16 @@
stage('Subscriber Validation and Ping Tests') {
environment {
ROBOT_CONFIG_FILE="$WORKSPACE/${configBaseDir}/${configDeploymentDir}/${configFileName}.yaml"
- ROBOT_MISC_ARGS="--removekeywords wuks -e bbsim -e notready -d $WORKSPACE/RobotLogs -v POD_NAME:${configFileName} -v KUBERNETES_CONFIGS_DIR:$WORKSPACE/${configBaseDir}/${configKubernetesDir}"
ROBOT_FILE="Voltha_PODTests.robot"
}
steps {
sh """
mkdir -p $WORKSPACE/RobotLogs
+ if ( ${released} ); then
+ export ROBOT_MISC_ARGS="--removekeywords wuks -i released -i sanity -e bbsim -e notready -d $WORKSPACE/RobotLogs -v POD_NAME:${configFileName} -v KUBERNETES_CONFIGS_DIR:$WORKSPACE/${configBaseDir}/${configKubernetesDir}"
+ else
+ export ROBOT_MISC_ARGS="--removekeywords wuks -e bbsim -e notready -d $WORKSPACE/RobotLogs -v POD_NAME:${configFileName} -v KUBERNETES_CONFIGS_DIR:$WORKSPACE/${configBaseDir}/${configKubernetesDir}"
+ fi
make -C $WORKSPACE/voltha/voltha-system-tests voltha-test || true
"""
}
diff --git a/jjb/voltha-e2e.yaml b/jjb/voltha-e2e.yaml
index ab222ac..ef41768 100644
--- a/jjb/voltha-e2e.yaml
+++ b/jjb/voltha-e2e.yaml
@@ -30,6 +30,7 @@
- 'voltha-periodic-test':
name: 'periodic-voltha-sanity-test-multi-runs'
+ pipeline-script: 'voltha-go-multi-tests.groovy'
build-node: 'qct-pod4-node2'
default-image-tag: 'master'
code-branch: 'master'