blob: 7c9c7ac2f4a298f99ebc1b5b7de671ebe138d602 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
|
#!/bin/sh
# Environment variables: see README.md
# Possible test configurations:
# * v4_only: one APN with v4
# * v6_only: one APN with v6
# * v4v6_only: one APN with v4v6
# * all: multiple APNs with all of the above
TEST_CONFIGS_ALL="all v4_only v6_only v4v6_only"
TEST_CONFIGS="${TEST_CONFIGS:-$TEST_CONFIGS_ALL}"
. ../jenkins-common.sh
KERNEL_TEST="${KERNEL_TEST:-0}"
IMAGE_SUFFIX="${IMAGE_SUFFIX:-master}"
docker_images_require \
"osmo-ggsn-$IMAGE_SUFFIX" \
"ttcn3-ggsn-test"
set_clean_up_trap
set -e
clean_up() {
local i
local log
# Add a suffix to the class names in the junit-xml log
for i in $TEST_CONFIGS; do
if [ "$i" = "all" ]; then
continue
fi
for log in "$VOL_BASE_DIR"/ggsn-tester-"$i"/junit-xml-*.log; do
if ! [ -e "$log" ]; then
continue
fi
sed -i "s/classname='\([^']\+\)'/classname='\1_$i'/g" "$log"
done
done
}
# Start container with ggsn in background
start_ggsn() {
local test_config="$1"
GGSN_CMD="osmo-ggsn -c /data/osmo-ggsn.cfg"
GGSN_DOCKER_ARGS=""
if [ "$KERNEL_TEST" = "1" ]; then
cp osmo-ggsn-kernel/initrd-ggsn.sh $VOL_BASE_DIR/ggsn-"$test_config"/
network_replace_subnet_in_configs
kernel_test_prepare \
"defconfig" \
"osmo-ggsn-kernel/fragment.config" \
"$VOL_BASE_DIR/ggsn-$test_config/initrd-ggsn.sh" \
"$REPO_USER/osmo-ggsn-$IMAGE_SUFFIX" \
-v $VOL_BASE_DIR/ggsn-"$test_config":/data
GGSN_CMD="/kernel-test/run-qemu.sh"
GGSN_DOCKER_ARGS="
$(docker_network_params $SUBNET 200)
$(docker_kvm_param)
-v "$KERNEL_TEST_DIR:/kernel-test:ro"
-v "$CACHE_DIR:/cache"
"
OSMO_SUT_HOST="172.18.$SUBNET.200"
else
GGSN_DOCKER_ARGS="
$(docker_network_params $SUBNET 201)
"
OSMO_SUT_HOST="172.18.$SUBNET.201"
fi
docker run --rm \
--cap-add=NET_ADMIN \
--device /dev/net/tun:/dev/net/tun \
--sysctl net.ipv6.conf.all.disable_ipv6=0 \
--ulimit core=-1 \
-v $VOL_BASE_DIR/ggsn-"$test_config":/data \
--name ${BUILD_TAG}-ggsn -d \
$DOCKER_ARGS \
$GGSN_DOCKER_ARGS \
$REPO_USER/osmo-ggsn-$IMAGE_SUFFIX \
/bin/sh -c "$GGSN_CMD >/data/osmo-ggsn.log 2>&1"
kernel_test_wait_for_vm "$VOL_BASE_DIR/ggsn-$test_config/osmo-ggsn.log"
}
# Start docker container with testsuite in foreground
start_testsuite() {
local test_config="$1"
docker run --rm \
--sysctl net.ipv6.conf.all.disable_ipv6=0 \
$(docker_network_params $SUBNET 202) \
--ulimit core=-1 \
-v $VOL_BASE_DIR/ggsn-tester-"$test_config":/data \
-e "TTCN3_PCAP_PATH=/data" \
-e "OSMO_SUT_HOST=$OSMO_SUT_HOST" \
-e "OSMO_SUT_PORT=4260" \
--name ${BUILD_TAG}-ggsn-test \
$DOCKER_ARGS \
$REPO_USER/ttcn3-ggsn-test
}
network_create
if [ "$KERNEL_TEST" = 1 ]; then
CONFIGS_DIR="osmo-ggsn-kernel"
else
CONFIGS_DIR="osmo-ggsn"
fi
for i in $TEST_CONFIGS_ALL; do
if ! test_config_enabled "$i"; then
continue
fi
# OS#6106: Currently it is not possible to configure multiple APNs with
# gtpu-mode kernel-gtp in OsmoGGSN, because it cannot share the GTP-U
# bind socket between tunnels.
if [ "$i" = "all" ] && [ "$KERNEL_TEST" = "1" ]; then
continue
fi
mkdir $VOL_BASE_DIR/ggsn-tester-"$i"
cp ttcn3/"$i"/GGSN_Tests.cfg $VOL_BASE_DIR/ggsn-tester-"$i"/GGSN_Tests.cfg
write_mp_osmo_repo "$VOL_BASE_DIR/ggsn-tester-$i/GGSN_Tests.cfg"
mkdir $VOL_BASE_DIR/ggsn-"$i"
cp "$CONFIGS_DIR"/"$i"/osmo-ggsn.cfg "$VOL_BASE_DIR"/ggsn-"$i"/osmo-ggsn.cfg
network_replace_subnet_in_configs
start_ggsn "$i"
start_testsuite "$i"
docker_kill_wait "$BUILD_TAG"-ggsn || true
done
|