Pau Espin Pedrol | bc1ed88 | 2018-05-17 16:59:58 +0200 | [diff] [blame] | 1 | #!/bin/sh |
| 2 | set -x |
| 3 | |
| 4 | RUNDIR="$1" |
| 5 | JUNIT_TTCN3_DST_FILE="$2" |
| 6 | L2_SOCKET_PATH="$3" |
| 7 | PCU_SOCKET_PATH="$4" |
| 8 | |
| 9 | # Absolute path to this script |
| 10 | SCRIPT=$(readlink -f "$0") |
| 11 | # Absolute path this script is in |
| 12 | SCRIPTPATH=$(dirname "$SCRIPT") |
| 13 | |
| 14 | VOL_BASE_DIR="$RUNDIR/logs" |
| 15 | rm -rf "$VOL_BASE_DIR" |
| 16 | mkdir -p "$VOL_BASE_DIR" |
| 17 | |
| 18 | if [ "x$BUILD_TAG" = "x" ]; then |
| 19 | BUILD_TAG=nonjenkins |
| 20 | fi |
| 21 | |
| 22 | REPO_USER="registry.sysmocom.de" |
| 23 | SUITE_NAME="ttcn3-bts-test" |
| 24 | NET_NAME=$SUITE_NAME |
| 25 | DOCKER_NAME="$BUILD_TAG-$SUITE_NAME" |
| 26 | |
| 27 | network_create() { |
| 28 | NET=$1 |
| 29 | echo Creating network $NET_NAME |
| 30 | docker network create --internal --subnet $NET $NET_NAME |
| 31 | } |
| 32 | |
| 33 | network_remove() { |
| 34 | echo Removing network $NET_NAME |
| 35 | docker network remove $NET_NAME |
| 36 | } |
| 37 | |
| 38 | child_ps=0 |
| 39 | forward_kill() { |
| 40 | sig="$1" |
| 41 | echo "Caught signal SIG$sig!" |
| 42 | if [ "$child_ps" != "0" ]; then |
| 43 | echo "Killing $child_ps with SIG$sig!" |
| 44 | docker kill ${DOCKER_NAME} |
| 45 | fi |
| 46 | exit 130 |
| 47 | } |
| 48 | forward_kill_int() { |
| 49 | forward_kill "INT" |
| 50 | } |
| 51 | forward_kill_term() { |
| 52 | forward_kill "TERM" |
| 53 | } |
| 54 | # Don't use 'set -e', otherwise traps are not triggered! |
| 55 | trap forward_kill_int INT |
| 56 | trap forward_kill_term TERM |
| 57 | |
| 58 | network_create 172.18.9.0/24 |
| 59 | |
| 60 | mkdir $VOL_BASE_DIR/bts-tester |
| 61 | echo "SCRIPTPATH=$SCRIPTPATH PWD=$PWD" |
| 62 | cp $RUNDIR/BTS_Tests.cfg $VOL_BASE_DIR/bts-tester/ |
| 63 | |
| 64 | echo Starting container with BTS testsuite |
| 65 | docker kill ${DOCKER_NAME} |
Pau Espin Pedrol | f616614 | 2018-10-11 17:49:34 +0200 | [diff] [blame^] | 66 | if [ "x$PCU_SOCKET_PATH" != "x" ]; then |
| 67 | MOUNT_PCU_SOCKET_OPT="--mount type=bind,source=$(dirname "$PCU_SOCKET_PATH"),destination=/data/unix_pcu" |
| 68 | else |
| 69 | MOUNT_PCU_SOCKET_OPT="" |
| 70 | fi |
Pau Espin Pedrol | bc1ed88 | 2018-05-17 16:59:58 +0200 | [diff] [blame] | 71 | docker run --rm \ |
| 72 | --network $NET_NAME --ip 172.18.9.10 \ |
| 73 | -e "TTCN3_PCAP_PATH=/data" \ |
| 74 | --mount type=bind,source=$VOL_BASE_DIR/bts-tester,destination=/data \ |
| 75 | --mount type=bind,source="$(dirname "$L2_SOCKET_PATH")",destination=/data/unix_l2 \ |
Pau Espin Pedrol | f616614 | 2018-10-11 17:49:34 +0200 | [diff] [blame^] | 76 | $MOUNT_PCU_SOCKET_OPT \ |
Pau Espin Pedrol | bc1ed88 | 2018-05-17 16:59:58 +0200 | [diff] [blame] | 77 | --name ${DOCKER_NAME} \ |
| 78 | $REPO_USER/${SUITE_NAME} & |
| 79 | child_ps=$! |
| 80 | echo "$$: waiting for $child_ps" |
| 81 | wait "$child_ps" |
| 82 | child_exit_code="$?" |
| 83 | echo "ttcn3 docker exited with code $child_exit_code" |
| 84 | |
| 85 | network_remove |
| 86 | |
| 87 | echo "Copying TTCN3 junit file to $JUNIT_TTCN3_DST_FILE" |
| 88 | cp $VOL_BASE_DIR/bts-tester/junit-xml-*.log $JUNIT_TTCN3_DST_FILE |
| 89 | sed -i "s#classname='BTS_Tests'#classname='$(basename $JUNIT_TTCN3_DST_FILE)'#g" $JUNIT_TTCN3_DST_FILE |
| 90 | |
| 91 | exit $child_exit_code |