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