aboutsummaryrefslogtreecommitdiffstats
path: root/test/csit
diff options
context:
space:
mode:
Diffstat (limited to 'test/csit')
-rw-r--r--test/csit/README.md4
-rwxr-xr-xtest/csit/run-all-tests.sh34
-rwxr-xr-xtest/csit/run-csit.sh153
3 files changed, 191 insertions, 0 deletions
diff --git a/test/csit/README.md b/test/csit/README.md
new file mode 100644
index 000000000..a05fb0758
--- /dev/null
+++ b/test/csit/README.md
@@ -0,0 +1,4 @@
+# Manual CSIT Scripts
+The scripts in this directory are to help developers manually
+kick off test flows on their own dev environments in order to
+help debug any test failures.
diff --git a/test/csit/run-all-tests.sh b/test/csit/run-all-tests.sh
new file mode 100755
index 000000000..c41f06984
--- /dev/null
+++ b/test/csit/run-all-tests.sh
@@ -0,0 +1,34 @@
+#!/bin/bash
+#
+# Copyright 2016-2017 Huawei Technologies Co., Ltd.
+#
+# 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.
+#
+
+set -e
+
+ROOT=`git rev-parse --show-toplevel`
+CSIT=$ROOT/test/csit
+cd $CSIT
+
+# break the name up using the first dash, since run-csit.sh just join them anyway
+for file in plans/*/*/testplan.txt; do
+ testplan=`dirname $file`
+
+ echo
+ echo "#############################################################################"
+ echo "Running test plan $testplan"
+ echo "#############################################################################"
+ $CSIT/run-csit.sh $testplan
+ echo
+done
diff --git a/test/csit/run-csit.sh b/test/csit/run-csit.sh
new file mode 100755
index 000000000..657de56be
--- /dev/null
+++ b/test/csit/run-csit.sh
@@ -0,0 +1,153 @@
+#!/bin/bash
+#
+# Copyright 2016-2017 Huawei Technologies Co., Ltd.
+#
+# 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.
+#
+# $1 project/functionality
+# $2 robot options
+# $3 ci-management repo location
+
+
+function docker_stats(){
+ #General memory details
+ echo "> top -bn1 | head -3"
+ top -bn1 | head -3
+ echo
+
+ echo "> free -h"
+ free -h
+ echo
+
+ #Memory details per Docker
+ echo "> docker ps"
+ docker ps
+ echo
+
+ echo "> docker stats --no-stream"
+ docker stats --no-stream
+ echo
+}
+
+if [ $# -eq 0 ]
+then
+ echo
+ echo "Usage: $0 plans/<project>/<functionality> [<robot-options>] [<ci-management-dir>]"
+ echo
+ echo " <project>, <functionality>, <robot-options>: "
+ echo " The same values as for the '{project}-csit-{functionality}' JJB job template."
+ echo
+ echo " <ci-management-dir>: "
+ echo " Path to the ci-management repo checked out locally. It not specified, "
+ echo " assumed to be adjacent to the integration repo directory."
+ echo
+ exit 1
+fi
+
+if [ -z "$WORKSPACE" ]; then
+ export WORKSPACE=`git rev-parse --show-toplevel`
+fi
+rm -rf $WORKSPACE/archives
+mkdir -p $WORKSPACE/archives
+
+if [ -f ${WORKSPACE}/test/csit/${1}/testplan.txt ]; then
+ export TESTPLAN="${1}"
+else
+ echo "testplan not found: ${WORKSPACE}/test/csit/${TESTPLAN}/testplan.txt"
+ exit 2
+fi
+
+
+export TESTOPTIONS="${2}"
+
+if [ -z "$3" ]; then
+ CI=${WORKSPACE}/../ci-management
+else
+ CI=${3}
+fi
+
+
+
+
+TESTPLANDIR=${WORKSPACE}/test/csit/${TESTPLAN}
+
+# Assume that if ROBOT_VENV is set, we don't need to reinstall robot
+if [ -f ${WORKSPACE}/env.properties ]; then
+ source ${WORKSPACE}/env.properties
+ source ${ROBOT_VENV}/bin/activate
+fi
+if ! type pybot > /dev/null; then
+ rm -f ${WORKSPACE}/env.properties
+ source $CI/jjb/integration/include-raw-integration-install-robotframework.sh
+ source ${WORKSPACE}/env.properties
+ source ${ROBOT_VENV}/bin/activate
+fi
+
+
+WORKDIR=`mktemp -d --suffix=-robot-workdir`
+cd ${WORKDIR}
+
+
+set +u
+set -x
+
+
+# Add csit scripts to PATH
+export PATH=${PATH}:${WORKSPACE}/test/csit/docker/scripts:${WORKSPACE}/test/csit/scripts
+export SCRIPTS=${WORKSPACE}/test/csit/scripts
+export ROBOT_VARIABLES=
+
+# Run setup script plan if it exists
+cd ${TESTPLANDIR}
+SETUP=${TESTPLANDIR}/setup.sh
+if [ -f ${SETUP} ]; then
+ echo "Running setup script ${SETUP}"
+ source ${SETUP}
+fi
+
+# show memory consumption after all docker instances initialized
+docker_stats | tee $WORKSPACE/archives/_sysinfo-1-after-setup.txt
+
+# Run test plan
+cd $WORKDIR
+echo "Reading the testplan:"
+cat ${TESTPLANDIR}/testplan.txt | egrep -v '(^[[:space:]]*#|^[[:space:]]*$)' | sed "s|^|${WORKSPACE}/test/csit/tests/|" > testplan.txt
+cat testplan.txt
+SUITES=$( xargs -a testplan.txt )
+
+echo ROBOT_VARIABLES=${ROBOT_VARIABLES}
+echo "Starting Robot test suites ${SUITES} ..."
+set +e
+pybot -N ${TESTPLAN} -v WORKSPACE:/tmp ${ROBOT_VARIABLES} ${TESTOPTIONS} ${SUITES}
+RESULT=$?
+set -e
+echo "RESULT: " $RESULT
+rsync -av $WORKDIR/ $WORKSPACE/archives
+
+# Record list of active docker containers
+docker ps --format "{{.Image}}" > $WORKSPACE/archives/_docker-images.log
+
+# show memory consumption after all docker instances initialized
+docker_stats | tee $WORKSPACE/archives/_sysinfo-2-after-robot.txt
+
+# Run teardown script plan if it exists
+cd ${TESTPLANDIR}
+TEARDOWN=${TESTPLANDIR}/teardown.sh
+if [ -f ${TEARDOWN} ]; then
+ echo "Running teardown script ${TEARDOWN}"
+ source ${TEARDOWN}
+fi
+
+# TODO: do something with the output
+
+exit $RESULT