Don't fail if osmo-ggsn can't be killed at the end of a testsuite
run. This happens currently with ttcn3-ggsn-test-kernel-latest-* jobs,
in the v6_only configurations, because osmo-ggsn latest doesn't support
ipv6 yet and exits. The jenkins.sh should keep going and try other
combinations, and exit without error in the end.
Fixes: d8c51cce ("ttcn3-ggsn-test: run with multiple configurations")
Change-Id: I6f3154a9ef114f31bcb5868ee09d1ebc10f35d07
The kernel ttcn3-ggsn-tests have been failing since the osmo-ggsn
config for kernel-gtp has been adjusted for v4v6 instead of v4 only.
This new configuration caused a regression with:
* linux kernel without Pablo's GTP IPv6 patches
* latest stable release of osmo-ggsn, which does not support IPv6
As the kernel patches aren't merged yet, this caused all tests to fail.
Avoid this by running the ttcn3-ggsn-test with multiple 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
With this change, the tests running in the v4_only configuration will
pass again with the stable versions of osmo-ggsn, libgtpnl and kernel.
And with new versions, most test in the other configurations will pass
too.
As discussed with Harald, this does not only split up the configuration
for osmo-ggsn with kernel gtp-u, but also with the userspace
implementation. The "all" config currently only works with the
userspace gtp implementation (OS#6106).
Related: OS#6096
Depends: osmo-ttcn3-hacks I6d94a8b18200fbb2119406827b74b83e912e3ecc
Fixes: e24442f9 ("ttcn3-ggsn-test: kernel-gtp: add ipv6")
Change-Id: Ia2fe0c3ed4ccf06e72fd258d085e4a79cecd5f26
Prepare to add variations of the configs: move them to subdirs, so we
don't cullter the main directory.
Related: OS#6096
Change-Id: I03a06f9f516922c47e3092ff7d7c2c68b0852c1b
Prepare to run start_ggsn and start_testsuite multiple times with
different configurations in a follow-up patch.
Related: OS#6096
Change-Id: I0754b0df5f1b0b162732c3db0797f65676553ab0
Prepare to add more kernel related env vars. Instead of duplicating the
descriptions here, point to the README file.
Change-Id: I324f12930c5521e29312b309d6344ed5ffbd2581
Try multiple subnet numbers until successfully creating a network. This
way we can run the same ttcn3 testsuite multiple times in parallel
without conflicts (e.g. once against latest, once against nightly). Also
we don't need to make sure each new testsuite has a unique subnet
number anymore.
I've considered also adjusting network_bridge_create, but that gets used
exclusively by osmo-ran/jenkins.sh, a script which we don't actually run
in jenkins. It seems that in this script it makes more sense to not get
a random subnet number.
Related: OS#5802
Change-Id: I57152b08ef0f38e17e7019a8df032189b03f56cf
Prepare for a future patch where a free subnet will be figured out
automatically instead of having a hardcoded one, by moving
initrd-ggsn.sh to $VOL_BASE_DIR as the subnet will be replaced in files
in this directory.
Related: OS#5802
Change-Id: Ie4f35b77a2bff20f2a0479890a429754768cafd2
Add "--rm" to each "docker run" command, so they don't continuously fill
up disk space.
Fix this even in the pipework script. We don't use the code path there,
but by always having --rm after "docker run" (same line or next line),
a new lint script in osmo-ci I8ab9c291504475d670bdefc50c4524c5bdd4c880
can help us avoid this in the future.
In ttcn3-ggsn-test/jenkins.sh, move one existing --rm in a later line
upwards so the linter can find it.
Related: SYS#5827, OS#5099
Related: https://github.com/jpetazzo/pipework/pull/248
Change-Id: I48b01c43fedf379b8a565eaab0369806d7831bd8
This enables the test suite to obtain talloc reports between the
test case executions, which get stored together with the PCAP files.
Change-Id: I61fef7763e6445c231ff2664036e243a9ac96ff6
Related: Icd4c2d80db934535d499598282ed9416d8088163
Write a line like 'Misc_Helpers.mp_osmo_repo := "nightly"' into the
TTCN-3 config file (e.g. BSC_Tests.cfg), before starting the testsuite.
This allows executing different code paths in the tests based on the
repository.
Related: OS#5327
Change-Id: Ic06532f7a67e59458652c5cf4c8f6fee8113e703
Disable KVM if /dev/kvm is missing, as it is apparently the case on our
jenkins nodes. This makes the tests run a bit slower, but not much. Add
kernel_test_wait_for_vm to sleep until the VM is booted up (~5s instead
of ~1s without KVM), so the first test in the testsuite does not fail
when using KVM.
The variable is useful to test the non-KVM code path even if KVM is
available on the host.
Related: OS#3208
Change-Id: I1f337af1e2de6db05b22636bc31a535404235559
Make it possible to run ttcn3-ggsn-test against osmo-ggsn with the GTP
kernel module. This feature is enabled by environment variables
explained in ttcn3-ggsn-test/jenkins.sh, and can either use the
pre-built kernel from Debian, or build a kernel from source.
The kernel runs inside QEMU inside the usual osmo-ggsn-master docker
image.
Thanks to Pau for providing the kernel config and kernel-test scripts
that this patch is based on! I ended up modifying them quite a bit to
fit the docker use case, and to build the initrd (so we can use the
stock debian kernel).
Related: OS#3208
Change-Id: I54e752048eed2a170a1cf4e0fd410de255b9de5d
Abort the script and trigger the clean up script, whenever any of the
commands below to prepare the testsuite are failing. This saves time
with figuring out why suddenly all or most tests are failing, and avoids
running the entire testsuite on jenkins if it's obviously not going to
work.
Related: OS#3208
Change-Id: Ie68da2affda8c96b3a515a857a921a05f1bf8ef7
Add set_clean_up_trap() in jenkins-common.sh and run it at the beginning
of the jenkins.sh files. Move the common clean up code from the end of
every jenkins.sh file into clean_up_common(), which gets called by the
trap. Add a custom clean_up() function to those jenkins.sh files that
need additional clean up.
Replace explicit container stop commands (for containers attached to the
docker network) with one call to network_clean() in clean_up_common(). It
kills all containers attached to the docker network.
The motivation for this change is the upcoming optional build of initrd
and kernel during ttcn3-ggsn-test/jenkins.sh. After building these, a
short smoke test will be performed to make sure we can boot the kernel
and initrd, before continuing to run the entire testsuite against it. If
building or the smoke test fails, we must do a proper clean up of the
network and fix permissions.
Related: OS#3208
Change-Id: I807c6221d22fec31db23e2516e477a3eb43347fb
We previously only allocated IPv4 sub-nets to the network segments
created with 'docker network'. Let's fix that by assigning both
IPv4 and IPv6 address ranges to each docker network.
Related: OS#4700
Change-Id: I8802208fddcce1ffa57e5626575d23d02b320d99
Don't list debian-stretch-build and debian-stretch-titan as dependencies
anymore, now that docker_images_require finds them automatically.
Related: OS#4564
Change-Id: I3cb6b693f3dd9df84fb29c0217bb3dae454cc18f
Allow to pass options to each "docker run" line in the various
jenkins.sh scripts. I'm using this to run the testsuites and Osmocom
components in docker with the same configurations as jenkins, but with
Osmocom and testsuite binaries built outside and mounted into the
containers:
DOCKER_ARGS="-v /usr/local:/usr/local:ro -v $hacks:/osmo-ttcn3-hacks:ro"
This allows very short test cycles without a second set of configs. The
full script that makes use of this feature is in osmo-dev.git,
ttcn3/ttcn3.sh.
Change-Id: I8d1f78aee926f8f6ec0b704e16639bc83f525816
It was removed since latest osmo-ggsn release is nowadays 1.5.0.
Depends: osmo-ttcn3-hacks.git Ie1c3cde2a01e8ea49aadcb1f7384995cb68039cb
Change-Id: I9ffd7549172055e6180a5c3f167dcc1133648243
Default value "master" of the IMAGE_SUFFIX environment variable can be
changed to "latest" to test the latest stable builds instead of the
nightly ones. Use docker_images_require() to make sure that the required
images are existing and up-to-date before running the tests.
Related: OS#3268
Change-Id: Idbb708ab16cb71bab5069127945b63388222369e
Do not brush over VOL_BASE_DIR with a new temp dir, since jenkins-common.sh has
already figured out where these should run.
Should fix jenkins job build failures for mgw and ggsn, after the merge of
I8cf6014725ae8ba602be5f3ec31dfb8e49ff993e.
Change-Id: Iee034df93bf8e8b995262749cf4654886032af2b
To remove code dup and prepare a change to where logs are written, add
collect_logs() to jenkins_common.sh and call that from each jenkins.sh after
the tests are done.
The 'rm -rf' is already done before a test starts. No need to do that again
after each test.
Change-Id: I5d8472ec36b07c828685b1bd7718e31392d168a3