Adding a sanity test for the openonu-go adapter
The openonu-go adapter is still in a very preliminary stage of
development, but at least check that we can deploy it and that it
will correctly register itself with the core
Change-Id: Icb57fdb2d33fb470b277e02d5294b34611a59ec0
diff --git a/jjb/pipeline/voltha-openonu-go-tests.groovy b/jjb/pipeline/voltha-openonu-go-tests.groovy
new file mode 100644
index 0000000..79b52ed
--- /dev/null
+++ b/jjb/pipeline/voltha-openonu-go-tests.groovy
@@ -0,0 +1,213 @@
+// 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: 90, unit: 'MINUTES')
+ }
+ environment {
+ KUBECONFIG="$HOME/.kube/kind-config-voltha-minimal"
+ VOLTCONFIG="$HOME/.volt/config-minimal"
+ PATH="$WORKSPACE/voltha/kind-voltha/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/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"
+ ROBOT_MISC_ARGS="-d $WORKSPACE/RobotLogs"
+ }
+
+ stages {
+
+ stage('Repo') {
+ steps {
+ step([$class: 'WsCleanup'])
+ checkout(changelog: false, \
+ poll: false,
+ scm: [$class: 'RepoScm', \
+ manifestRepositoryUrl: "${params.manifestUrl}", \
+ manifestBranch: "${params.branch}", \
+ currentBranch: true, \
+ destinationDir: 'voltha', \
+ forceSync: true,
+ resetFirst: true, \
+ quiet: true, \
+ jobs: 4, \
+ showAllChanges: true] \
+ )
+ }
+ }
+ stage('Patch') {
+ steps {
+ sh """
+ if [ "${gerritProject}" != "voltha-openonu-adapter-go"]
+ then
+ echo "This pipeline is reserved for 'voltha-openonu-adapter-go' you are probably looking for 'voltha-bbsim-test.groovy'"
+ exit 1
+ fi
+ pushd voltha
+ if [ "${gerritProject}" != "" -a "${gerritChangeNumber}" != "" -a "${gerritPatchsetNumber}" != "" ]
+ then
+ repo download "${gerritProject}" "${gerritChangeNumber}/${gerritPatchsetNumber}"
+ else
+ echo "No patchset to download!"
+ fi
+ popd
+ """
+ }
+ }
+ stage('Create K8s Cluster') {
+ steps {
+ sh """
+ cd $WORKSPACE/voltha/kind-voltha/
+ JUST_K8S=y ./voltha up
+ bash <( curl -sfL https://raw.githubusercontent.com/boz/kail/master/godownloader.sh) -b "$WORKSPACE/voltha/kind-voltha/bin"
+ """
+ }
+ }
+
+ stage('Build Images') {
+ steps {
+ sh """
+ make -C $WORKSPACE/voltha/voltha-openonu-adapter-go DOCKER_REPOSITORY=voltha/ DOCKER_TAG=citest docker-build
+ """
+ }
+ }
+
+ stage('Push Images') {
+ steps {
+ sh '''
+ docker images | grep citest
+ for image in \$(docker images -f "reference=*/*citest" --format "{{.Repository}}"); do echo "Pushing \$image to nodes"; kind load docker-image \$image:citest --name voltha-\$TYPE --nodes voltha-\$TYPE-worker,voltha-\$TYPE-worker2; done
+ '''
+ }
+ }
+ stage('Deploy Voltha') {
+ steps {
+ sh '''
+ export EXTRA_HELM_FLAGS+="--set log_agent.enabled=False ${extraHelmFlags},use_openonu_adapter_go=true "
+
+ IMAGES="adapter_open_onu_go"
+
+ for I in \$IMAGES
+ do
+ EXTRA_HELM_FLAGS+="--set images.\$I.tag=citest,images.\$I.pullPolicy=Never "
+ done
+
+ cd $WORKSPACE/voltha/kind-voltha/
+ echo \$EXTRA_HELM_FLAGS
+ kail -n voltha -n default > $WORKSPACE/onos-voltha-combined.log &
+ ./voltha up
+ '''
+ }
+ }
+
+ stage('Run E2E Tests') {
+ steps {
+ sh '''
+ RUNNING=$(kubectl get pods --all-namespaces | grep open-onu | grep 1/1 | wc -l)
+ if [ $RUNNING -eq 1 ]; then
+ echo "Openonu adapter is correctly deployed"
+ else
+ echo "Openonu adapter is not running!"
+ exit 1
+ fi
+
+ ADAPTER=$(voltctl adapter list | grep brcm_openomci_onu | wc -l)
+ if [ $ADAPTER -eq 1 ]; then
+ echo "Openonu adapter is correctly registered with VOLTHA core"
+ else
+ echo "Openonu adapter is NOT registered with VOLTHA core"
+ exit 1
+ fi
+ # TODO once we have a test for the openonu golang adapter replace the bash check
+ '''
+ }
+ }
+ }
+
+ post {
+ always {
+ sh '''
+ set +e
+ cp $WORKSPACE/voltha/kind-voltha/install-minimal.log $WORKSPACE/
+ kubectl get pods --all-namespaces -o jsonpath="{range .items[*].status.containerStatuses[*]}{.image}{'\\n'}" | sort | uniq
+ kubectl get pods --all-namespaces -o jsonpath="{range .items[*].status.containerStatuses[*]}{.imageID}{'\\n'}" | sort | uniq
+ kubectl get nodes -o wide
+ kubectl get pods -o wide
+ kubectl get pods -n voltha -o wide
+
+ sync
+ pkill kail || true
+ md5sum $WORKSPACE/voltha/kind-voltha/bin/voltctl
+
+ ## Pull out errors from log files
+ extract_errors_go() {
+ echo
+ echo "Error summary for $1:"
+ grep $1 $WORKSPACE/onos-voltha-combined.log | grep '"level":"error"' | cut -d ' ' -f 2- | jq -r '.msg'
+ echo
+ }
+
+ extract_errors_python() {
+ echo
+ echo "Error summary for $1:"
+ grep $1 $WORKSPACE/onos-voltha-combined.log | grep 'ERROR' | cut -d ' ' -f 2-
+ echo
+ }
+
+ extract_errors_go voltha-rw-core > $WORKSPACE/error-report.log
+ extract_errors_go adapter-open-olt >> $WORKSPACE/error-report.log
+ extract_errors_python adapter-open-onu >> $WORKSPACE/error-report.log
+ extract_errors_python voltha-ofagent >> $WORKSPACE/error-report.log
+
+ gzip $WORKSPACE/onos-voltha-combined.log
+
+
+ ## shut down kind-voltha
+ if [ "${branch}" != "master" ]; then
+ echo "on branch: ${branch}, sourcing kind-voltha/releases/${branch}"
+ source "$WORKSPACE/voltha/kind-voltha/releases/${branch}"
+ else
+ echo "on master, using default settings for kind-voltha"
+ fi
+
+ cd $WORKSPACE/voltha/kind-voltha
+ WAIT_ON_DOWN=y ./voltha down
+ '''
+ step([$class: 'RobotPublisher',
+ disableArchiveOutput: false,
+ logFileName: 'RobotLogs/log*.html',
+ otherFiles: '',
+ outputFileName: 'RobotLogs/output*.xml',
+ outputPath: '.',
+ passThreshold: 80,
+ reportFileName: 'RobotLogs/report*.html',
+ unstableThreshold: 0]);
+ archiveArtifacts artifacts: '*.log,*.gz'
+ }
+ }
+}
diff --git a/jjb/verify/voltha-openonu-adapter-go.yaml b/jjb/verify/voltha-openonu-adapter-go.yaml
index d3e9cba..00bfd35 100644
--- a/jjb/verify/voltha-openonu-adapter-go.yaml
+++ b/jjb/verify/voltha-openonu-adapter-go.yaml
@@ -17,9 +17,8 @@
- 'verify-licensed'
- 'tag-collision-reject'
- 'make-unit-test'
-# Add this job later when working with kind-voltha and bbsim
-# - 'voltha-patch-test':
-# pipeline-script: 'voltha-bbsim-tests.groovy'
+ - 'voltha-patch-test':
+ pipeline-script: 'voltha-openonu-go-tests.groovy'
- job-group:
name: 'publish-voltha-openonu-adapter-go-jobs'