<p>osmith <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ci/+/18509">View Change</a></p><div style="white-space:pre-wrap">Approvals:
laforge: Looks good to me, approved
pespin: Looks good to me, but someone else must approve
osmith: Verified
</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">repo-install-test: move from docker-playground<br><br>Prepare the repo-install-test to be extended to cover centos8 as well.<br>Move the scripts to osmo-ci.git first, so we can mount them as shared<br>files into the docker containers from here.<br><br>Move files without any changes. Integration will be done in a follow-up<br>commit, so we have a clean git log.<br><br>debian-repo-install-test/jenkins.sh<br> => scripts/repo-install-test.sh<br>debian-repo-install-test/testdata/blacklist.txt<br> => scripts/repo-install-test/blacklist.txt<br>debian-repo-install-test/testdata/repo-install-test.sh<br> => scripts/repo-install-test/run-inside-docker.sh<br><br>Related: OS#4563<br>Related: If93f37e8d46597a9abc67a4529be9addd65780f5 (docker-playground)<br>Change-Id: Ia678cc15e66630bd6b75b6c89bc75c1e27afd66c<br>---<br>A scripts/repo-install-test.sh<br>A scripts/repo-install-test/blacklist.txt<br>A scripts/repo-install-test/run-inside-docker.sh<br>3 files changed, 231 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/scripts/repo-install-test.sh b/scripts/repo-install-test.sh</span><br><span>new file mode 100755</span><br><span>index 0000000..c0c38c5</span><br><span>--- /dev/null</span><br><span>+++ b/scripts/repo-install-test.sh</span><br><span>@@ -0,0 +1,58 @@</span><br><span style="color: hsl(120, 100%, 40%);">+#!/bin/sh</span><br><span style="color: hsl(120, 100%, 40%);">+. ../jenkins-common.sh</span><br><span style="color: hsl(120, 100%, 40%);">+docker_images_require "debian-repo-install-test"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[ -z "$FEED" ] && FEED="nightly"</span><br><span style="color: hsl(120, 100%, 40%);">+CONTAINER="repo-install-test-$FEED"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Try to run "systemctl status" 10 times, kill the container on failure</span><br><span style="color: hsl(120, 100%, 40%);">+check_if_systemd_is_running() {</span><br><span style="color: hsl(120, 100%, 40%);">+ for i in $(seq 1 10); do</span><br><span style="color: hsl(120, 100%, 40%);">+ sleep 1</span><br><span style="color: hsl(120, 100%, 40%);">+ if docker exec "$CONTAINER" systemctl status; then</span><br><span style="color: hsl(120, 100%, 40%);">+ return</span><br><span style="color: hsl(120, 100%, 40%);">+ fi</span><br><span style="color: hsl(120, 100%, 40%);">+ done</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ echo "ERROR: systemd is not running properly."</span><br><span style="color: hsl(120, 100%, 40%);">+ docker container kill "$CONTAINER"</span><br><span style="color: hsl(120, 100%, 40%);">+ exit 1</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Kill already running container</span><br><span style="color: hsl(120, 100%, 40%);">+if [ "$(docker inspect -f '{{.State.Running}}' "$CONTAINER" 2> /dev/null)" = "true" ]; then</span><br><span style="color: hsl(120, 100%, 40%);">+ docker container kill "$CONTAINER"</span><br><span style="color: hsl(120, 100%, 40%);">+ sleep 1</span><br><span style="color: hsl(120, 100%, 40%);">+fi</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Run the container</span><br><span style="color: hsl(120, 100%, 40%);">+# * This does not output anything, for debugging add -it and remove &.</span><br><span style="color: hsl(120, 100%, 40%);">+# * /run, /tmp, cgroups, SYS_ADMIN: needed for systemd</span><br><span style="color: hsl(120, 100%, 40%);">+# * SYS_NICE: needed for changing CPUScheduling{Policy,Priority} (osmo-bts systemd service files)</span><br><span style="color: hsl(120, 100%, 40%);">+docker run --rm \</span><br><span style="color: hsl(120, 100%, 40%);">+ -v "$PWD/testdata:/testdata:ro" \</span><br><span style="color: hsl(120, 100%, 40%);">+ -v "$VOL_BASE_DIR:/data" \</span><br><span style="color: hsl(120, 100%, 40%);">+ --name "$CONTAINER" \</span><br><span style="color: hsl(120, 100%, 40%);">+ -e FEED="$FEED" \</span><br><span style="color: hsl(120, 100%, 40%);">+ -e container=docker \</span><br><span style="color: hsl(120, 100%, 40%);">+ --tmpfs /run \</span><br><span style="color: hsl(120, 100%, 40%);">+ --tmpfs /tmp \</span><br><span style="color: hsl(120, 100%, 40%);">+ -v /sys/fs/cgroup:/sys/fs/cgroup:ro \</span><br><span style="color: hsl(120, 100%, 40%);">+ --cap-add SYS_ADMIN \</span><br><span style="color: hsl(120, 100%, 40%);">+ --cap-add SYS_NICE \</span><br><span style="color: hsl(120, 100%, 40%);">+ "$REPO_USER/debian-repo-install-test" \</span><br><span style="color: hsl(120, 100%, 40%);">+ /lib/systemd/systemd &</span><br><span style="color: hsl(120, 100%, 40%);">+check_if_systemd_is_running</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Run the test script</span><br><span style="color: hsl(120, 100%, 40%);">+docker exec "$CONTAINER" /testdata/repo-install-test.sh</span><br><span style="color: hsl(120, 100%, 40%);">+ret="$?"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Interactive shell</span><br><span style="color: hsl(120, 100%, 40%);">+if [ -n "$INTERACTIVE" ]; then</span><br><span style="color: hsl(120, 100%, 40%);">+ docker exec -it "$CONTAINER" bash</span><br><span style="color: hsl(120, 100%, 40%);">+fi</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+docker container kill "$CONTAINER"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+exit $ret</span><br><span>diff --git a/scripts/repo-install-test/blacklist.txt b/scripts/repo-install-test/blacklist.txt</span><br><span>new file mode 100644</span><br><span>index 0000000..cb7db6a</span><br><span>--- /dev/null</span><br><span>+++ b/scripts/repo-install-test/blacklist.txt</span><br><span>@@ -0,0 +1,27 @@</span><br><span style="color: hsl(120, 100%, 40%);">+# These packages will not get explicitly installed in this test.</span><br><span style="color: hsl(120, 100%, 40%);">+# Package lines must have nothing but the package (no comment,</span><br><span style="color: hsl(120, 100%, 40%);">+# no additional space etc).</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# OpenBSC</span><br><span style="color: hsl(120, 100%, 40%);">+# This is legacy, we aren't really interested in testing openbsc.git</span><br><span style="color: hsl(120, 100%, 40%);">+# derived packages. Packages are found in openbsc/debian/control.</span><br><span style="color: hsl(120, 100%, 40%);">+openbsc-dev</span><br><span style="color: hsl(120, 100%, 40%);">+osmo-bsc-mgcp</span><br><span style="color: hsl(120, 100%, 40%);">+osmo-bsc-mgcp-dbg</span><br><span style="color: hsl(120, 100%, 40%);">+osmocom-bs11-utils</span><br><span style="color: hsl(120, 100%, 40%);">+osmocom-bs11-utils-dbg</span><br><span style="color: hsl(120, 100%, 40%);">+osmocom-bsc-nat</span><br><span style="color: hsl(120, 100%, 40%);">+osmocom-bsc-nat-dbg</span><br><span style="color: hsl(120, 100%, 40%);">+osmocom-bsc-sccplite</span><br><span style="color: hsl(120, 100%, 40%);">+osmocom-bsc-sccplite-dbg</span><br><span style="color: hsl(120, 100%, 40%);">+osmocom-ipaccess-utils</span><br><span style="color: hsl(120, 100%, 40%);">+osmocom-ipaccess-utils-dbg</span><br><span style="color: hsl(120, 100%, 40%);">+osmocom-nitb</span><br><span style="color: hsl(120, 100%, 40%);">+osmocom-nitb-dbg</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# SoapySDR is not used anymore (see OS#3542)</span><br><span style="color: hsl(120, 100%, 40%);">+soapysdr-module-lms7</span><br><span style="color: hsl(120, 100%, 40%);">+soapysdr0.6-module-lms7</span><br><span style="color: hsl(120, 100%, 40%);">+soapysdr0.6-module-lms7-dbgsym</span><br><span style="color: hsl(120, 100%, 40%);">+soapysdr0.7-module-lms7</span><br><span style="color: hsl(120, 100%, 40%);">+soapysdr0.7-module-lms7-dbgsym</span><br><span>diff --git a/scripts/repo-install-test/run-inside-docker.sh b/scripts/repo-install-test/run-inside-docker.sh</span><br><span>new file mode 100755</span><br><span>index 0000000..63e1819</span><br><span>--- /dev/null</span><br><span>+++ b/scripts/repo-install-test/run-inside-docker.sh</span><br><span>@@ -0,0 +1,146 @@</span><br><span style="color: hsl(120, 100%, 40%);">+#!/bin/sh -ex</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Systemd services that must start up successfully after installing all packages (OS#3369)</span><br><span style="color: hsl(120, 100%, 40%);">+# Disabled services:</span><br><span style="color: hsl(120, 100%, 40%);">+# * osmo-ctrl2cgi (missing config: /etc/osmocom/ctrl2cgi.ini, OS#4108)</span><br><span style="color: hsl(120, 100%, 40%);">+# * osmo-trap2cgi (missing config: /etc/osmocom/%N.ini, OS#4108)</span><br><span style="color: hsl(120, 100%, 40%);">+# * osmo-ggsn (no tun device in docker)</span><br><span style="color: hsl(120, 100%, 40%);">+SERVICES="</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo-bsc</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo-gbproxy</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo-gtphub</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo-hlr</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo-mgw</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo-msc</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo-pcap-client</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo-sip-connector</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo-stp</span><br><span style="color: hsl(120, 100%, 40%);">+"</span><br><span style="color: hsl(120, 100%, 40%);">+# Services working in nightly, but not yet in latest</span><br><span style="color: hsl(120, 100%, 40%);">+# * osmo-pcap-server: service not included in osmo-pcap 0.0.11</span><br><span style="color: hsl(120, 100%, 40%);">+# * osmo-sgsn: conflicts with osmo-gtphub config in osmo-sgsn 1.4.0</span><br><span style="color: hsl(120, 100%, 40%);">+# * osmo-pcu: needs osmo-bts-virtual to start up properly</span><br><span style="color: hsl(120, 100%, 40%);">+# * osmo-hnbgw: tries to listen on 10.23.24.1 in osmo-iuh 0.4.0</span><br><span style="color: hsl(120, 100%, 40%);">+# * osmo-bts-virtual: unit id not matching osmo-bsc's config in osmo-bsc 1.4.0</span><br><span style="color: hsl(120, 100%, 40%);">+SERVICES_NIGHTLY="</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo-pcap-server</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo-sgsn</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo-pcu</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo-hnbgw</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo-bts-virtual</span><br><span style="color: hsl(120, 100%, 40%);">+"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+HTTP="http://download.opensuse.org/repositories/network:/osmocom:/$FEED/Debian_9.0/"</span><br><span style="color: hsl(120, 100%, 40%);">+OBS="obs://build.opensuse.org/network:osmocom:$FEED/Debian_9.0"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+check_env() {</span><br><span style="color: hsl(120, 100%, 40%);">+ if [ -n "$FEED" ]; then</span><br><span style="color: hsl(120, 100%, 40%);">+ echo "Checking feed: $FEED"</span><br><span style="color: hsl(120, 100%, 40%);">+ else</span><br><span style="color: hsl(120, 100%, 40%);">+ echo "ERROR: missing environment variable \$FEED!"</span><br><span style="color: hsl(120, 100%, 40%);">+ exit 1</span><br><span style="color: hsl(120, 100%, 40%);">+ fi</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+configure_osmocom_repo() {</span><br><span style="color: hsl(120, 100%, 40%);">+ echo "Configuring Osmocom repository"</span><br><span style="color: hsl(120, 100%, 40%);">+ echo "deb $HTTP ./" \</span><br><span style="color: hsl(120, 100%, 40%);">+ > /etc/apt/sources.list.d/osmocom-latest.list</span><br><span style="color: hsl(120, 100%, 40%);">+ apt-get update</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+install_repo_packages() {</span><br><span style="color: hsl(120, 100%, 40%);">+ echo "Installing all repository packages"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ # Get a list of all packages from the repository. Reference:</span><br><span style="color: hsl(120, 100%, 40%);">+ # https://www.debian.org/doc/manuals/aptitude/ch02s04s05.en.html</span><br><span style="color: hsl(120, 100%, 40%);">+ aptitude search -F%p \</span><br><span style="color: hsl(120, 100%, 40%);">+ "?origin($OBS) ?architecture(native)" | sort \</span><br><span style="color: hsl(120, 100%, 40%);">+ > /data/osmocom_packages_all.txt</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ # Remove comments from blacklist.txt (and sort it)</span><br><span style="color: hsl(120, 100%, 40%);">+ grep -v "^#" /testdata/blacklist.txt | sort -u > /data/blacklist.txt</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ # Install all repo packages which are not on the blacklist</span><br><span style="color: hsl(120, 100%, 40%);">+ comm -23 /data/osmocom_packages_all.txt \</span><br><span style="color: hsl(120, 100%, 40%);">+ /data/blacklist.txt > /data/osmocom_packages.txt</span><br><span style="color: hsl(120, 100%, 40%);">+ apt install -y $(cat /data/osmocom_packages.txt)</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+test_binaries_version() {</span><br><span style="color: hsl(120, 100%, 40%);">+ # Make sure --version runs and does not output UNKNOWN</span><br><span style="color: hsl(120, 100%, 40%);">+ failed=""</span><br><span style="color: hsl(120, 100%, 40%);">+ for program in $@; do</span><br><span style="color: hsl(120, 100%, 40%);">+ # Make sure it runs at all</span><br><span style="color: hsl(120, 100%, 40%);">+ $program --version</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ # Check for UNKNOWN</span><br><span style="color: hsl(120, 100%, 40%);">+ if $program --version | grep -q UNKNOWN; then</span><br><span style="color: hsl(120, 100%, 40%);">+ failed="$failed $program"</span><br><span style="color: hsl(120, 100%, 40%);">+ echo "ERROR: this program prints UNKNOWN in --version!"</span><br><span style="color: hsl(120, 100%, 40%);">+ fi</span><br><span style="color: hsl(120, 100%, 40%);">+ done</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ if [ -n "$failed" ]; then</span><br><span style="color: hsl(120, 100%, 40%);">+ echo "ERROR: the following program(s) print UNKNOWN in --version:"</span><br><span style="color: hsl(120, 100%, 40%);">+ echo "$failed"</span><br><span style="color: hsl(120, 100%, 40%);">+ return 1</span><br><span style="color: hsl(120, 100%, 40%);">+ fi</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+test_binaries() {</span><br><span style="color: hsl(120, 100%, 40%);">+ # Make sure that binares run at all and output a proper version</span><br><span style="color: hsl(120, 100%, 40%);">+ test_binaries_version \</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo-bsc \</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo-bts-trx \</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo-bts-virtual \</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo-gbproxy \</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo-gtphub \</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo-ggsn \</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo-hlr \</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo-hlr-db-tool \</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo-hnbgw \</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo-mgw \</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo-msc \</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo-pcu \</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo-sgsn \</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo-sip-connector \</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo-stp \</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo-trx-uhd \</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo-trx-usrp1</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+services_check() {</span><br><span style="color: hsl(120, 100%, 40%);">+ local service</span><br><span style="color: hsl(120, 100%, 40%);">+ local services_feed="$SERVICES"</span><br><span style="color: hsl(120, 100%, 40%);">+ local failed=""</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ if [ "$FEED" = "nightly" ]; then</span><br><span style="color: hsl(120, 100%, 40%);">+ services_feed="$services_feed $SERVICES_NIGHTLY"</span><br><span style="color: hsl(120, 100%, 40%);">+ fi</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ systemctl start $services_feed</span><br><span style="color: hsl(120, 100%, 40%);">+ sleep 2</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ for service in $services_feed; do</span><br><span style="color: hsl(120, 100%, 40%);">+ if ! systemctl --no-pager -l -n 200 status $service; then</span><br><span style="color: hsl(120, 100%, 40%);">+ failed="$failed $service"</span><br><span style="color: hsl(120, 100%, 40%);">+ fi</span><br><span style="color: hsl(120, 100%, 40%);">+ done</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ systemctl stop $services_feed</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ if [ -n "$failed" ]; then</span><br><span style="color: hsl(120, 100%, 40%);">+ set +x</span><br><span style="color: hsl(120, 100%, 40%);">+ echo</span><br><span style="color: hsl(120, 100%, 40%);">+ echo "ERROR: services failed to start: $failed"</span><br><span style="color: hsl(120, 100%, 40%);">+ echo</span><br><span style="color: hsl(120, 100%, 40%);">+ exit 1</span><br><span style="color: hsl(120, 100%, 40%);">+ fi</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+check_env</span><br><span style="color: hsl(120, 100%, 40%);">+configure_osmocom_repo</span><br><span style="color: hsl(120, 100%, 40%);">+install_repo_packages</span><br><span style="color: hsl(120, 100%, 40%);">+test_binaries</span><br><span style="color: hsl(120, 100%, 40%);">+services_check</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ci/+/18509">change 18509</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-ci/+/18509"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: osmo-ci </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Ia678cc15e66630bd6b75b6c89bc75c1e27afd66c </div>
<div style="display:none"> Gerrit-Change-Number: 18509 </div>
<div style="display:none"> Gerrit-PatchSet: 2 </div>
<div style="display:none"> Gerrit-Owner: osmith <osmith@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: fixeria <axilirator@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: osmith <osmith@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>