Modify interactions with installer VM to set up jenkins-ci for cbench test
[releng.git] / jjb / cperf / cperf-ci-jobs.yml
index 05f4d19..6cd4e22 100644 (file)
         branch: '{stream}'
         gs-pathname: ''
         docker-tag: 'latest'
+    danube: &danube
+        stream: danube
+        branch: 'stable/{stream}'
+        gs-pathname: '/{stream}'
+        docker-tag: 'stable'
 
 #--------------------------------
 # POD, INSTALLER, AND BRANCH MAPPING
@@ -24,7 +29,9 @@
         - intel-pod2:
             installer: apex
             <<: *master
-
+        - intel-pod2:
+            installer: apex
+            <<: *danube
 #--------------------------------
 
     testsuite:
     concurrent: true
 
     properties:
+        - logrotate-default
         - throttle:
             enabled: true
             max-per-node: 1
+            option: 'project'
 
     wrappers:
         - build-name:
@@ -56,6 +65,7 @@
     parameters:
         - project-parameter:
             project: '{project}'
+            branch: '{branch}'
         - '{pod}-defaults'
         - '{installer}-defaults'
         - cperf-parameter:
             docker-tag: '{docker-tag}'
 
     scm:
-        - git-scm:
-            credentials-id: '{ssh-credentials}'
-            refspec: ''
-            branch: '{branch}'
+        - git-scm
 
     builders:
         - 'cperf-{testsuite}-builder'
 ########################
 - builder:
     name: cperf-daily-builder
+    builders:
+        - 'cperf-cleanup'
+        - 'cperf-robot-cbench'
+
+- builder:
+    name: cperf-robot-cbench
     builders:
         - shell: |
             #!/bin/bash
-            set +e
-            # TODO: need to figure out the logic to get ${CONTROLLER_IP} used below
+            set -o errexit
+            set -o nounset
+            set -o pipefail
+            undercloud_mac=$(sudo virsh domiflist undercloud | grep default | \
+                              grep -Eo "[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+")
+            INSTALLER_IP=$(/usr/sbin/arp -e | grep ${undercloud_mac} | awk {'print $1'})
+            sudo scp -o StrictHostKeyChecking=no root@$INSTALLER_IP:/home/stack/overcloudrc /tmp/overcloudrc
+            sudo chmod 755 /tmp/overcloudrc
+            source /tmp/overcloudrc
+
+            # robot suites need the ssh key to log in to controller nodes, so throwing it
+            # in tmp, and mounting /tmp as $HOME as far as robot is concerned
+            sudo mkdir -p /tmp/.ssh
+            sudo scp -o StrictHostKeyChecking=no root@$INSTALLER_IP:/home/stack/.ssh/id_rsa /tmp/.ssh/
+            sudo chown -R jenkins-ci:jenkins-ci /tmp/.ssh
+            # done with sudo. jenkins-ci is the user from this point
+            sudo mv /tmp/.ssh/id_rsa ~jenkins-ci/.ssh/
+            chmod -R 0600 ~jenkins-ci/.ssh
+
+            # cbench requires the openflow drop test feature to be installed.
+            sshpass -p karaf ssh -o StrictHostKeyChecking=no \
+                                 -o UserKnownHostsFile=/dev/null \
+                                 -o LogLevel=error \
+                                 -p 8101 karaf@$SDN_CONTROLLER_IP \
+                                  feature:install odl-openflowplugin-flow-services-ui odl-openflowplugin-drop-test
+
             docker pull opnfv/cperf:$DOCKER_TAG
-            robot_cmd="pybot -e exclude -v ODL_SYSTEM_IP:${CONTROLLER_IP} -v switch_count:100 -v loops:10 \
-                              -v TOOLS_SYSTEM_IP:localhost -v duration_in_seconds:60"
-            robot_suite="/home/opnfv/repos/test/csit/suites/openflowplugin/Performance/010_Cbench.robot"
-            sudo docker run -t -i opnfv/cperf:$DOCKER_TAG ${robot_cmd} ${robot_suite}
+
+            robot_cmd="pybot -e exclude -L TRACE \
+                        -v ODL_SYSTEM_1_IP:${SDN_CONTROLLER_IP} \
+                        -v ODL_SYSTEM_IP:${SDN_CONTROLLER_IP} \
+                        -v BUNDLEFOLDER:/opt/opendaylight \
+                        -v RESTCONFPORT:8081 \
+                        -v USER_HOME:/tmp \
+                        -v USER:heat-admin \
+                        -v ODL_SYSTEM_USER:heat-admin \
+                        -v TOOLS_SYSTEM_IP:localhost \
+                        -v of_port:6653"
+            robot_suite="/home/opnfv/repos/odl_test/csit/suites/openflowplugin/Performance/010_Cbench.robot"
+
+            docker run -v /tmp:/tmp opnfv/cperf:$DOCKER_TAG ${robot_cmd} ${robot_suite}
+
+- builder:
+    name: cperf-cleanup
+    builders:
+        - shell: |
+            #!/bin/bash
+            [[ $CI_DEBUG == true ]] && redirect="/dev/stdout" || redirect="/dev/null"
+
+            echo "Cleaning up docker containers/images..."
+            # Remove previous running containers if exist
+            if [[ ! -z $(docker ps -a | grep opnfv/cperf) ]]; then
+                echo "Removing existing opnfv/cperf containers..."
+                docker ps -a | grep opnfv/cperf | awk '{print $1}' | xargs docker rm -f >${redirect}
+            fi
+
+            # Remove existing images if exist
+            if [[ ! -z $(docker images | grep opnfv/cperf) ]]; then
+                echo "Docker images to remove:"
+                docker images | head -1 && docker images | grep opnfv/cperf >${redirect}
+                image_tags=($(docker images | grep opnfv/cperf | awk '{print $2}'))
+                for tag in "${image_tags[@]}"; do
+                    echo "Removing docker image opnfv/cperf:$tag..."
+                    docker rmi opnfv/cperf:$tag >/dev/null
+                done
+            fi