diff options
111 files changed, 2497 insertions, 225 deletions
diff --git a/asterisk-master/Dockerfile b/asterisk-master/Dockerfile index 0281176..55734ba 100644 --- a/asterisk-master/Dockerfile +++ b/asterisk-master/Dockerfile @@ -28,6 +28,16 @@ RUN apt-get update && \ wget && \ apt-get clean +# AMR support in asterisk, catched at configure time: +RUN apt-get update && \ +apt-get upgrade -y && \ +DEBIAN_FRONTEND=noninteractive \ +apt-get install -y --no-install-recommends \ + libopencore-amrnb-dev \ + libopencore-amrwb-dev \ + libvo-amrwbenc-dev && \ +apt-get clean + # create a user ARG username=asterisk RUN useradd -m ${username} && \ @@ -50,10 +60,13 @@ RUN cd pjproject && \ # clone asterisk ARG ASTERISK_REMOTE=https://gitea.sysmocom.de/sysmocom/asterisk.git +ARG ASTERISK_BRANCH=sysmocom/master RUN git clone $ASTERISK_REMOTE +ADD https://gitea.sysmocom.de/api/v1/repos/sysmocom/asterisk/git/refs/heads/$ASTERISK_BRANCH /tmp/asterisk-ver + RUN cd asterisk && \ - git fetch && git checkout -f -B sysmocom/master origin/sysmocom/master + git fetch && git checkout -f -B $ASTERISK_BRANCH origin/$ASTERISK_BRANCH # Use pjproject from git repo above instead of downloading tar.gz: RUN cd asterisk/third-party/pjproject && \ @@ -62,17 +75,9 @@ RUN cd asterisk/third-party/pjproject && \ RUN cd asterisk && \ ./bootstrap.sh && \ ./configure && \ - make "-j$(nproc)" - -ARG ASTERISK_BRANCH=sysmocom/master - -ADD https://gitea.sysmocom.de/api/v1/repos/sysmocom/asterisk/git/refs/heads/$ASTERISK_BRANCH /tmp/asterisk-ver - -# update the source code (if needed) -RUN cd asterisk && \ - git fetch && git checkout -B $ASTERISK_BRANCH origin/$ASTERISK_BRANCH - -RUN cd asterisk && \ + make menuselect.makeopts && \ + menuselect/menuselect --enable codec_vevs menuselect.makeopts && \ + menuselect/menuselect --check-deps menuselect.makeopts && \ make "-j$(nproc)" && \ make install && \ make samples && \ @@ -80,3 +85,7 @@ RUN cd asterisk && \ # Required to set up ipsec: RUN setcap 'cap_net_admin,cap_sys_resource=ep' /usr/sbin/asterisk + +RUN cd asterisk/codec_server && \ + make "-j$(nproc)" && \ + cp cserver /usr/bin/cserver diff --git a/centos7-build/Dockerfile b/centos7-build/Dockerfile index f449d42..d4b152c 100644 --- a/centos7-build/Dockerfile +++ b/centos7-build/Dockerfile @@ -5,6 +5,13 @@ FROM ${REGISTRY}/${UPSTREAM_DISTRO} ARG OSMOCOM_REPO_MIRROR="https://downloads.osmocom.org" ARG OSMOCOM_REPO_PATH="packages/osmocom:" +# Use vault.centos.org instead of mirrorlist.centos.org, which doesn't exist +# anymore (see https://serverfault.com/a/1161847). +RUN set -x && \ + sed -i 's/mirror.centos.org/vault.centos.org/g' /etc/yum.repos.d/*.repo && \ + sed -i 's/^#.*baseurl=http/baseurl=http/g' /etc/yum.repos.d/*.repo && \ + sed -i 's/^mirrorlist=http/#mirrorlist=http/g' /etc/yum.repos.d/*.repo + # Use dnf package manager instead of yum, so we can use all the dnf codepaths # that were originally written for CentOS8 in this CentOS7 image too RUN yum install -y dnf diff --git a/centos7-obs-latest/Dockerfile b/centos7-obs-latest/Dockerfile index 2c06882..7da0db3 100644 --- a/centos7-obs-latest/Dockerfile +++ b/centos7-obs-latest/Dockerfile @@ -6,6 +6,13 @@ ARG OSMOCOM_REPO_MIRROR="https://downloads.osmocom.org" ARG OSMOCOM_REPO_PATH="packages/osmocom:" ARG OSMOCOM_REPO_VERSION="latest" +# Use vault.centos.org instead of mirrorlist.centos.org, which doesn't exist +# anymore (see https://serverfault.com/a/1161847). +RUN set -x && \ + sed -i 's/mirror.centos.org/vault.centos.org/g' /etc/yum.repos.d/*.repo && \ + sed -i 's/^#.*baseurl=http/baseurl=http/g' /etc/yum.repos.d/*.repo && \ + sed -i 's/^mirrorlist=http/#mirrorlist=http/g' /etc/yum.repos.d/*.repo + # Use dnf package manager instead of yum, so we can use all the dnf codepaths # that were originally written for CentOS8 in this CentOS7 image too RUN yum install -y dnf diff --git a/common/Release.key b/common/Release.key index ecca084..b4c019a 100644 --- a/common/Release.key +++ b/common/Release.key @@ -8,13 +8,13 @@ e93fLa2Cu8vhFBcVn6CuHeEhsmuMf6NLbQRNfNNCEEUYaZn7beMYtpZ7t1djsKx5 1xGm50OzI22FLu8lELQ9d7qMVGRG3WHYawX9BDteRybiyqxfwUHm1haWazRJtlGt UWyzvwAb80BK1J2Nu5fbAa3w5CoEPAbUuCyrABEBAAG0JW9zbW9jb20gT0JTIFBy b2plY3QgPG9zbW9jb21Ab3Ntb2NvbT6JAVQEEwEIAD4WIQRrKp83ktFetw1Oao+G -pzC2U3JZcwUCYrMV4wIbAwUJBB6yjwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK -CRCGpzC2U3JZc4FRCACQQkKIrnvQ7n2u7GSmyVZa3I+oLoFXSGqaGyey5TW/nrMm -vFDKU3qliHiuNSmUY35SnAhXUsvqOYppxVRoO1MLrqUvzMOnIWqkJpf8mtjGUnsW -jyVeto7Rsjs75y2i1Hk+e7ljb/V65J3NlfrfEYWbqR9AKd53ReNXTdrQ0J05A38N -GdI4Ld/2lNISAwaBmGhqdeKsLHpQw/JERU1TApVJR1whFiIwDF1rOCg9GPnNKIk7 -yRZdK267XzztrainX/cbPILyzUZEDhYs6wQuyACyQ1YUxZIxrwVfk7PMNay8CrLH -z42B73Ne5IAj8+op/3iJafFONLm7YXiDUFN+QDYAiQEzBBMBCAAdFiEExoiYhHND +pzC2U3JZcwUCZrNL8wIbAwUJCB7onwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK +CRCGpzC2U3JZc11RB/9oogcqTF30pPEwjjGvXF+WMiRFHl8aVvQIk9m+2KUcjlVk +0q8+/guOg7KcVejPxyn2AQbTByWWgpH1o3BoDKWnvypURAV2uGOtCo6mUQop5yK0 +d50j9hwIXSwJWoD2r5OY+Gbs4dBzMGkKbnCED1n8324b8EN6m96eoL570Uq9vy4G +gIp+QCpePu8AMdoCLR2w3J+TA4gLdDeH2cr7TgmwlDCp8e6R8FVmRt3SvunPmFz3 +FHDicv2f9ZoHXVLQ20DgWUyI1xOPlzBNJowgK9YnLPdIidE9i+EbvC1YA+6O/WMa +kSUEyJLZS5mv2+T6ptgnCIgxrIoTu63O4Rsf5zV+iQEzBBMBCAAdFiEExoiYhHND S7aVYlnqa51NyAUyjdsFAmKzE1UACgkQa51NyAUyjdvuZgf+OXmr//i7u7Gg7eWB 7e0qUsyCId9lXS8J437x3K6ciJfD7/6RSy8TFW5Nglm/uSkbyq582I8t+SoOirMD E6cg9U/5+h5s46bAf+Kd2XS/6tLGeNLM18i4el8CP06NpFzDrsKu76uYFpyRiiHD @@ -22,5 +22,5 @@ otBdtgxeLJ83LugGfZslF+/5cigJkAJMhAdVvGO8h85R6fba8ZSOKtMKkaQRfi76 nhyOrJPlLuS+DLEnHwdkOFgtKnxHdjM97K+Tx0gisb6uwaWroXfSLnhP8RTLLZZy Z+noU1Hw3c+mn4c/NYbcC/uwHYHKRzuf9gHnQ3dGgv0Z5sbeLRVo92hjGj7Ftlyd 4hmKBg== -=HxK4 +=5Cwc -----END PGP PUBLIC KEY BLOCK----- diff --git a/common/ttcn3-docker-prepare.sh b/common/ttcn3-docker-prepare.sh index c2b28b9..2c18b53 100755 --- a/common/ttcn3-docker-prepare.sh +++ b/common/ttcn3-docker-prepare.sh @@ -14,7 +14,7 @@ OSMO_TTCN3_BRANCH=$1 shift cd /osmo-ttcn3-hacks - +git remote set-url origin "https://gerrit.osmocom.org/osmo-ttcn3-hacks" git fetch git checkout "$OSMO_TTCN3_BRANCH" diff --git a/debian-bookworm-build-arm/Dockerfile b/debian-bookworm-build-arm/Dockerfile index d7e963b..9b725a7 100644 --- a/debian-bookworm-build-arm/Dockerfile +++ b/debian-bookworm-build-arm/Dockerfile @@ -17,9 +17,8 @@ COPY .common/Release.key /etc/apt/trusted.gpg.d/obs.osmocom.org.asc # Configure build user, disable installing man pages # * man pages: without them we avoid waiting for "generating manpages" RUN set -x && \ - useradd --uid=${UID} build && \ - mkdir /build && \ - chown -R build:build /build /usr/local && \ + useradd --uid=${UID} -d /build -m build && \ + chown -R build:build /usr/local && \ \ echo "path-exclude=/usr/share/man/*" \ > /etc/dpkg/dpkg.cfg.d/exclude-man-pages && \ diff --git a/debian-bookworm-build/Dockerfile b/debian-bookworm-build/Dockerfile index edca2d7..3efbc6e 100644 --- a/debian-bookworm-build/Dockerfile +++ b/debian-bookworm-build/Dockerfile @@ -18,9 +18,8 @@ COPY .common/Release.key /etc/apt/trusted.gpg.d/obs.osmocom.org.asc # * /usr/local: osmo-python-tests's contrib/jenkins.sh writes there # * man pages: without them we avoid waiting for "generating manpages" RUN set -x && \ - useradd --uid=${UID} build && \ - mkdir /build && \ - chown -R build:build /build /usr/local && \ + useradd --uid=${UID} -d /build -m build && \ + chown -R build:build /usr/local && \ \ echo "path-exclude=/usr/share/man/*" \ > /etc/dpkg/dpkg.cfg.d/exclude-man-pages && \ @@ -177,7 +176,7 @@ RUN set -x && \ cat /tmp/pysim_requirements.txt && \ pip3 install --break-system-packages \ 'git+https://github.com/eriwen/lcov-to-cobertura-xml.git' \ - 'git+https://github.com/osmocom/sphinx-argparse@master#egg=sphinx-argparse' \ + 'git+https://github.com/osmocom/sphinx-argparse@inside-classes#egg=sphinx-argparse' \ 'git+https://github.com/podshumok/python-smpplib.git' \ 'pydbus' \ 'pysispm' \ diff --git a/debian-bookworm-erlang/Dockerfile b/debian-bookworm-erlang/Dockerfile index ec5ed52..60e7583 100644 --- a/debian-bookworm-erlang/Dockerfile +++ b/debian-bookworm-erlang/Dockerfile @@ -24,10 +24,11 @@ RUN set -x && \ apt-get install -y --no-install-recommends \ build-essential \ git \ + iproute2 \ + netcat-openbsd \ procps \ tcpdump \ vim \ - netcat-openbsd \ wget \ && \ apt-get clean diff --git a/debian-bookworm-obs-asan/Dockerfile b/debian-bookworm-obs-asan/Dockerfile new file mode 100644 index 0000000..370b845 --- /dev/null +++ b/debian-bookworm-obs-asan/Dockerfile @@ -0,0 +1,38 @@ +ARG REGISTRY=docker.io +ARG UPSTREAM_DISTRO=debian:bookworm +FROM ${REGISTRY}/${UPSTREAM_DISTRO} + +# Arguments used after FROM must be specified again +ARG OSMOCOM_REPO_MIRROR="https://downloads.osmocom.org" +ARG OSMOCOM_REPO_PATH="packages/osmocom:" +ARG OSMOCOM_REPO="${OSMOCOM_REPO_MIRROR}/${OSMOCOM_REPO_PATH}/nightly:/asan/Debian_12/" +ARG UID + +# Copy from common dir +COPY .common/respawn.sh /usr/local/bin/respawn.sh +COPY .common/Release.key /usr/share/keyrings/osmocom-nightly-asan.asc + +# Configure build user, disable installing man pages +# * /usr/local: osmo-python-tests's contrib/jenkins.sh writes there +# * man pages: without them we avoid waiting for "generating manpages" +RUN set -x && \ + useradd --uid=${UID} -d /build -m build && \ + chown -R build:build /usr/local && \ + \ + echo "path-exclude=/usr/share/man/*" \ + > /etc/dpkg/dpkg.cfg.d/exclude-man-pages && \ + rm -rf /usr/share/man/ + +# Configure Osmocom nightly asan repository, add telnet for debugging +RUN set -x && \ + apt-get update && \ + apt-get install -y --no-install-recommends \ + ca-certificates \ + telnet \ + && \ + apt-get clean && \ + echo "deb [signed-by=/usr/share/keyrings/osmocom-nightly-asan.asc] $OSMOCOM_REPO ./" \ + > /etc/apt/sources.list.d/osmocom-nightly-asan.list + +# Invalidate cache once the repository is updated +ADD $OSMOCOM_REPO/Release /tmp/Release diff --git a/debian-bookworm-obs-asan/Makefile b/debian-bookworm-obs-asan/Makefile new file mode 100644 index 0000000..cdac90c --- /dev/null +++ b/debian-bookworm-obs-asan/Makefile @@ -0,0 +1,3 @@ +UPSTREAM_DISTRO=debian:bookworm +DISTRO=debian-bookworm +include ../make/Makefile diff --git a/debian-bookworm-obs-latest/Dockerfile b/debian-bookworm-obs-latest/Dockerfile index 9451902..523afb6 100644 --- a/debian-bookworm-obs-latest/Dockerfile +++ b/debian-bookworm-obs-latest/Dockerfile @@ -16,9 +16,8 @@ COPY .common/Release.key /usr/share/keyrings/osmocom-latest.asc # * /usr/local: osmo-python-tests's contrib/jenkins.sh writes there # * man pages: without them we avoid waiting for "generating manpages" RUN set -x && \ - useradd --uid=${UID} build && \ - mkdir /build && \ - chown -R build:build /build /usr/local && \ + useradd --uid=${UID} -d /build -m build && \ + chown -R build:build /usr/local && \ \ echo "path-exclude=/usr/share/man/*" \ > /etc/dpkg/dpkg.cfg.d/exclude-man-pages && \ diff --git a/debian-bullseye-erlang/Dockerfile b/debian-bullseye-erlang/Dockerfile index 9a90c0c..4abb7b6 100644 --- a/debian-bullseye-erlang/Dockerfile +++ b/debian-bullseye-erlang/Dockerfile @@ -25,10 +25,11 @@ RUN apt-get update && \ apt-get -y install \ build-essential \ git \ + iproute2 \ + netcat-openbsd \ procps \ tcpdump \ vim \ - netcat-openbsd \ wget \ && \ apt-get clean diff --git a/debian-buster-build/Dockerfile b/debian-buster-build/Dockerfile index 0d2b5b7..c54af17 100644 --- a/debian-buster-build/Dockerfile +++ b/debian-buster-build/Dockerfile @@ -39,6 +39,7 @@ RUN apt-get update && \ libgnutls28-dev \ libgps-dev \ libgsm1-dev \ + libmnl-dev \ libncurses5-dev \ libnewlib-arm-none-eabi \ libortp-dev \ diff --git a/dnsmasq/Dockerfile b/dnsmasq/Dockerfile new file mode 100644 index 0000000..61cd94a --- /dev/null +++ b/dnsmasq/Dockerfile @@ -0,0 +1,18 @@ +FROM debian:stable + +LABEL name="dnsmasq" \ + description="Dnsmasq Server" \ + version="1.0" \ + maintainer="pespin@sysmocom.de" + +RUN apt-get update && \ + apt-get install -y --no-install-recommends \ + dnsmasq && \ + apt-get clean + +EXPOSE 53/tcp \ + 53/udp + +VOLUME /etc/dnsmasq + +CMD ["/bin/sh", "-c", "dnsmasq -d --log-queries=extra -C /data/dnsmasq.conf >/data/dnsmasq.log 2>&1"] diff --git a/dnsmasq/Makefile b/dnsmasq/Makefile new file mode 100644 index 0000000..59dce87 --- /dev/null +++ b/dnsmasq/Makefile @@ -0,0 +1,2 @@ +IMAGE=registry.sysmocom.de/dnsmasq +include ../make/Makefile diff --git a/jenkins-common.sh b/jenkins-common.sh index eae0473..af52b7f 100644 --- a/jenkins-common.sh +++ b/jenkins-common.sh @@ -2,6 +2,9 @@ CACHE_DIR="$(realpath ../_cache)" KERNEL_TEST_DIR="$(realpath ../scripts/kernel-test)" DEBIAN_DEFAULT="bookworm" +SUB4_PREFIX="172.18" +SUB6_PREFIX="fd02:db8" + docker_image_exists() { test -n "$(docker images -q "$REPO_USER/$1")" } @@ -21,8 +24,10 @@ docker_depends() { osmo-*-centos7) echo "centos7-build" ;; osmo-*-centos8) echo "centos8-build" ;; osmo-*-latest) echo "debian-$DEBIAN_DEFAULT-obs-latest" ;; + osmo-*-asan) echo "debian-$DEBIAN_DEFAULT-obs-asan" ;; osmo_dia2gsup-*) echo "debian-$DEBIAN_DEFAULT-erlang" ;; osmo-epdg-*) echo "debian-$DEBIAN_DEFAULT-erlang" ;; + osmo-s1gw-*) echo "debian-$DEBIAN_DEFAULT-erlang" ;; osmo-*) echo "debian-$DEBIAN_DEFAULT-build" ;; open5gs-master) echo "debian-$DEBIAN_DEFAULT-build" ;; ttcn3-*) echo "debian-bookworm-titan" ;; @@ -78,6 +83,13 @@ docker_dir_from_image_name() { # e.g. centos8-obs-2021q1 -> centos8-obs-latest echo "$1" | sed 's/20[0-9][0-9]q.*$/latest/' ;; + osmo-*-asan) + # Build Osmocom programs from the asan repository with the + # "-latest" docker containers (osmo-mgw-latest/Dockerfile etc.) + # so they are completely built from the OBS packages instead of + # building some of it from git (as in *-master/Dockerfile). + echo "$1" | sed 's/-asan/-latest/' + ;; *) echo "$1" ;; @@ -242,8 +254,8 @@ network_create() { for i in $(seq 1 30); do SUBNET="$(echo "($SUBNET + 1) % 256" | bc)" NET_NAME="$SUITE_NAME-$SUBNET" - SUB4="172.18.$SUBNET.0/24" - SUB6="fd02:db8:$SUBNET::/64" + SUB4="$SUB4_PREFIX.$SUBNET.0/24" + SUB6="$SUB6_PREFIX:$SUBNET::/64" set +x echo "Creating network $NET_NAME, trying SUBNET=$SUBNET..." set -x @@ -282,8 +294,8 @@ network_bridge_create() { network_clean network_remove fi - SUB4="172.18.$NET.0/24" - SUB6="fd02:db8:$NET::/64" + SUB4="$SUB4_PREFIX.$NET.0/24" + SUB6="$SUB6_PREFIX:$NET::/64" set +x echo "Creating network $NET_NAME" set -x @@ -291,7 +303,7 @@ network_bridge_create() { --driver=bridge \ --subnet $SUB4 \ --ipv6 --subnet $SUB6 \ - -o "com.docker.network.bridge.host_binding_ipv4"="172.18.$NET.1" \ + -o "com.docker.network.bridge.host_binding_ipv4"="$SUB4_PREFIX.$NET.1" \ $NET_NAME } @@ -360,8 +372,8 @@ network_replace_subnet_in_configs() { sed \ -i \ -E \ - -e "s/172\.18\.[0-9]{1,3}\./172.18.$SUBNET./g" \ - -e "s/fd02:db8:[0-9]{1,3}:/fd02:db8:$SUBNET:/g" \ + -e "s/172\.18\.[0-9]{1,3}\./$SUB4_PREFIX.$SUBNET./g" \ + -e "s/$SUB6_PREFIX:[0-9]{1,3}:/$SUB6_PREFIX:$SUBNET:/g" \ "$i" done @@ -374,7 +386,7 @@ network_replace_subnet_in_configs() { docker_network_params() { NET=$1 ADDR_SUFIX=$2 - echo --network $NET_NAME --ip "172.18.$NET.$ADDR_SUFIX" --ip6 "fd02:db8:$NET::$ADDR_SUFIX" + echo --network $NET_NAME --ip "$SUB4_PREFIX.$NET.$ADDR_SUFIX" --ip6 "$SUB6_PREFIX:$NET::$ADDR_SUFIX" } fix_perms() { @@ -528,24 +540,25 @@ kernel_test_wait_for_vm() { exit 1 } -# Check if IMAGE_SUFFIX starts with "latest" (e.g. "latest-centos8") -image_suffix_is_latest() { +# Check if the "latest" repo is used (e.g. "latest-centos8") +osmo_repo_is_latest() { case "$IMAGE_SUFFIX" in latest*) return 0 ;; *) return 1 ;; esac } -# Check if IMAGE_SUFFIX starts with "master" (e.g. "master-centos8") -image_suffix_is_master() { +# Check if the "nightly" repo is used (e.g. "master-centos8") +osmo_repo_is_nightly() { case "$IMAGE_SUFFIX" in master*) return 0 ;; + asan*) return 0 ;; *) return 1 ;; esac } -# Check if IMAGE_SUFFIX starts with "2023q1" (e.g. "2023q1-centos8") -image_suffix_is_2023q1() { +# Check if the "2023q1" repo is used (e.g. "2023q1-centos8") +osmo_repo_is_2023q1() { case "$IMAGE_SUFFIX" in 2023q1*) return 0 ;; *) return 1 ;; diff --git a/make/Makefile b/make/Makefile index 24308e5..27414f3 100644 --- a/make/Makefile +++ b/make/Makefile @@ -17,8 +17,10 @@ REGISTRY_HOST?=docker.io USERNAME?=$(USER) UID=$(shell id -u) NAME?=$(shell basename $(CURDIR)) -ASTERISK_BRANCH?=sysmocom/master +ASTERISK_BRANCH?=jolly/work LIBOSMOCORE_BRANCH?=master +LIBOSMOABIS_BRANCH?=master +LIBOSMONETIF_BRANCH?=master OSMO_TTCN3_BRANCH?=master OSMO_BB_BRANCH?=master OSMO_BSC_BRANCH?=master @@ -42,7 +44,7 @@ OSMO_SIP_BRANCH?=master OSMO_STP_BRANCH?=master OSMO_UECUPS_BRANCH?=master OPEN5GS_BRANCH?=main -PJPROJECT_BRANCH?=sysmocom/2.14 +PJPROJECT_BRANCH?=jolly/work BUILD_ARGS?= RUN_ARGS?=-it UPSTREAM_DISTRO?=debian:bookworm @@ -104,6 +106,8 @@ docker-build: .release --build-arg OSMOCOM_REPO_TESTSUITE_MIRROR=$(OSMOCOM_REPO_TESTSUITE_MIRROR) \ --build-arg ASTERISK_BRANCH=$(ASTERISK_BRANCH) \ --build-arg LIBOSMOCORE_BRANCH=$(LIBOSMOCORE_BRANCH) \ + --build-arg LIBOSMOABIS_BRANCH=$(LIBOSMOABIS_BRANCH) \ + --build-arg LIBOSMONETIF_BRANCH=$(LIBOSMONETIF_BRANCH) \ --build-arg OSMO_BB_BRANCH=$(OSMO_BB_BRANCH) \ --build-arg OSMO_BSC_BRANCH=$(OSMO_BSC_BRANCH) \ --build-arg OSMO_BTS_BRANCH=$(OSMO_BTS_BRANCH) \ diff --git a/open5gs-master/Dockerfile b/open5gs-master/Dockerfile index e9b3cf4..2280abb 100644 --- a/open5gs-master/Dockerfile +++ b/open5gs-master/Dockerfile @@ -43,6 +43,16 @@ RUN apt-get update && \ apt-get install -y \ mongodb-org +RUN apt-get update && \ + apt-get upgrade -y && \ + DEBIAN_FRONTEND=noninteractive \ + apt-get install -y --no-install-recommends \ + gdb \ + libtalloc-dev \ + valgrind \ + tcpdump && \ + apt-get clean + # create a user ARG username=osmocom RUN useradd -m ${username} && \ diff --git a/osmo-bsc-master/Dockerfile b/osmo-bsc-master/Dockerfile index 65ec5d4..74a6d85 100644 --- a/osmo-bsc-master/Dockerfile +++ b/osmo-bsc-master/Dockerfile @@ -34,6 +34,84 @@ RUN case "$DISTRO" in \ WORKDIR /tmp +# Download, build and install libosmocore +ARG LIBOSMOCORE_BRANCH="master" +RUN git clone https://gerrit.osmocom.org/libosmocore +ADD https://gerrit.osmocom.org/plugins/gitiles/libosmocore/+/$LIBOSMOCORE_BRANCH?format=TEXT /tmp/commit-libosmocore + +RUN cd libosmocore \ + && git fetch && git checkout -f -B $LIBOSMOCORE_BRANCH origin/$LIBOSMOCORE_BRANCH \ + && git rev-parse --abbrev-ref HEAD && git rev-parse HEAD \ + && autoreconf -fi \ + && ./configure \ + --disable-doxygen \ + --disable-pcsc \ + --prefix=/usr/local \ + --enable-sanitize \ + && make -j5 \ + && make install \ + && make distclean && ldconfig + +ARG LIBOSMOABIS_BRANCH="master" +RUN git clone https://gerrit.osmocom.org/libosmo-abis +ADD https://gerrit.osmocom.org/plugins/gitiles/libosmo-abis/+/$LIBOSMOABIS_BRANCH?format=TEXT /tmp/commit-libosmoabis + +RUN cd libosmo-abis \ + && git fetch && git checkout -f -B $LIBOSMOABIS_BRANCH origin/$LIBOSMOABIS_BRANCH \ + && git rev-parse --abbrev-ref HEAD && git rev-parse HEAD \ + && autoreconf -fi \ + && ./configure \ + --disable-doxygen \ + --prefix=/usr/local \ + --enable-sanitize \ + && make -j5 \ + && make install \ + && make distclean && ldconfig + +ARG LIBOSMONETIF_BRANCH="master" +RUN git clone https://gerrit.osmocom.org/libosmo-netif +ADD https://gerrit.osmocom.org/plugins/gitiles/libosmo-netif/+/$LIBOSMONETIF_BRANCH?format=TEXT /tmp/commit-libosmonetif + +RUN cd libosmo-netif \ + && git fetch && git checkout -f -B $LIBOSMONETIF_BRANCH origin/$LIBOSMONETIF_BRANCH \ + && git rev-parse --abbrev-ref HEAD && git rev-parse HEAD \ + && autoreconf -fi \ + && ./configure \ + --disable-doxygen \ + --prefix=/usr/local \ + --enable-sanitize \ + && make -j8 \ + && make install \ + && make distclean && ldconfig + +ARG OSMO_STP_BRANCH="master" + +RUN git clone https://gerrit.osmocom.org/libosmo-sccp.git +ADD https://gerrit.osmocom.org/plugins/gitiles/libosmo-sccp/+/$OSMO_STP_BRANCH?format=TEXT /tmp/commit +RUN cd libosmo-sccp && \ + git fetch && git checkout $OSMO_STP_BRANCH && \ + (git symbolic-ref -q HEAD && git reset --hard origin/$OSMO_STP_BRANCH || exit 1); \ + git rev-parse --abbrev-ref HEAD && git rev-parse HEAD && \ + autoreconf -fi && \ + ./configure --enable-sanitize && \ + make "-j$(nproc)" install && \ + install examples/.libs/sccp_demo_user /usr/local/bin/ && \ + ldconfig + +ARG OSMO_MGW_BRANCH="master" + +RUN git clone https://gerrit.osmocom.org/osmo-mgw.git +ADD https://gerrit.osmocom.org/plugins/gitiles/osmo-mgw/+/$OSMO_MGW_BRANCH?format=TEXT /tmp/commit-osmo-mgw + +RUN cd osmo-mgw && \ + git fetch && git checkout $OSMO_MGW_BRANCH && \ + (git symbolic-ref -q HEAD && git reset --hard origin/$OSMO_MGW_BRANCH || exit 1); \ + git rev-parse --abbrev-ref HEAD && git rev-parse HEAD && \ + autoreconf -fi && \ + ./configure && \ + make "-j$(nproc)" install && \ + ldconfig + ARG OSMO_BSC_BRANCH="master" RUN git clone https://gerrit.osmocom.org/osmo-bsc.git @@ -44,7 +122,7 @@ RUN cd osmo-bsc && \ (git symbolic-ref -q HEAD && git reset --hard origin/$OSMO_BSC_BRANCH || exit 1); \ git rev-parse --abbrev-ref HEAD && git rev-parse HEAD && \ autoreconf -fi && \ - ./configure && \ + ./configure --enable-sanitize && \ make "-j$(nproc)" install VOLUME /data diff --git a/osmo-bts-master/Dockerfile b/osmo-bts-master/Dockerfile index 8c43973..31dc06b 100644 --- a/osmo-bts-master/Dockerfile +++ b/osmo-bts-master/Dockerfile @@ -13,7 +13,8 @@ RUN case "$DISTRO" in \ libosmo-netif-dev \ libosmo-sccp-dev \ libsmpp34-dev \ - libgtp-dev && \ + libgtp-dev \ + gdb && \ apt-get clean \ ;; \ centos*) \ @@ -33,6 +34,57 @@ RUN case "$DISTRO" in \ WORKDIR /tmp +# Download, build and install libosmocore +ARG LIBOSMOCORE_BRANCH="master" +RUN git clone https://gerrit.osmocom.org/libosmocore +ADD https://gerrit.osmocom.org/plugins/gitiles/libosmocore/+/$LIBOSMOCORE_BRANCH?format=TEXT /tmp/commit-libosmocore + +RUN cd libosmocore \ + && git fetch && git checkout -f -B $LIBOSMOCORE_BRANCH origin/$LIBOSMOCORE_BRANCH \ + && git rev-parse --abbrev-ref HEAD && git rev-parse HEAD \ + && autoreconf -fi \ + && ./configure \ + --disable-doxygen \ + --disable-pcsc \ + --prefix=/usr/local \ + --enable-sanitize \ + && make -j5 \ + && make install \ + && make distclean && ldconfig + +ARG LIBOSMOABIS_BRANCH="master" +RUN git clone https://gerrit.osmocom.org/libosmo-abis +ADD https://gerrit.osmocom.org/plugins/gitiles/libosmo-abis/+/$LIBOSMOABIS_BRANCH?format=TEXT /tmp/commit-libosmoabis + +RUN cd libosmo-abis \ + && git fetch && git checkout -f -B $LIBOSMOABIS_BRANCH origin/$LIBOSMOABIS_BRANCH \ + && git rev-parse --abbrev-ref HEAD && git rev-parse HEAD \ + && autoreconf -fi \ + && ./configure \ + --disable-doxygen \ + --prefix=/usr/local \ + --enable-sanitize \ + && make -j5 \ + && make install \ + && make distclean && ldconfig + +ARG LIBOSMONETIF_BRANCH="master" +RUN git clone https://gerrit.osmocom.org/libosmo-netif +ADD https://gerrit.osmocom.org/plugins/gitiles/libosmo-netif/+/$LIBOSMONETIF_BRANCH?format=TEXT /tmp/commit-libosmonetif + +RUN cd libosmo-netif \ + && git fetch && git checkout -f -B $LIBOSMONETIF_BRANCH origin/$LIBOSMONETIF_BRANCH \ + && git rev-parse --abbrev-ref HEAD && git rev-parse HEAD \ + && autoreconf -fi \ + && ./configure \ + --disable-doxygen \ + --prefix=/usr/local \ + --enable-sanitize \ + --enable-libsctp \ + && make -j8 \ + && make install \ + && make distclean && ldconfig + ARG OSMO_BTS_BRANCH="master" RUN git clone https://gerrit.osmocom.org/osmo-bts.git @@ -43,7 +95,7 @@ RUN cd osmo-bts && \ (git symbolic-ref -q HEAD && git reset --hard origin/$OSMO_BTS_BRANCH || exit 1); \ git rev-parse --abbrev-ref HEAD && git rev-parse HEAD && \ autoreconf -fi && \ - ./configure --enable-trx && \ + ./configure --enable-trx --enable-sanitize && \ make "-j$(nproc)" install VOLUME /data diff --git a/osmo-cbc-master/Dockerfile b/osmo-cbc-master/Dockerfile index 0e90fc8..f3f527f 100644 --- a/osmo-cbc-master/Dockerfile +++ b/osmo-cbc-master/Dockerfile @@ -11,6 +11,8 @@ RUN case "$DISTRO" in \ libosmocore-dev \ libosmo-netif-dev \ libulfius-dev \ + libsctp-dev \ + gdb \ && \ apt-get clean \ ;; \ @@ -27,6 +29,68 @@ RUN case "$DISTRO" in \ WORKDIR /tmp +# Download, build and install libosmocore +ARG LIBOSMOCORE_BRANCH="master" +RUN git clone https://gerrit.osmocom.org/libosmocore +ADD https://gerrit.osmocom.org/plugins/gitiles/libosmocore/+/$LIBOSMOCORE_BRANCH?format=TEXT /tmp/commit-libosmocore + +RUN cd libosmocore \ + && git fetch && git checkout -f -B $LIBOSMOCORE_BRANCH origin/$LIBOSMOCORE_BRANCH \ + && git rev-parse --abbrev-ref HEAD && git rev-parse HEAD \ + && autoreconf -fi \ + && export CPPFLAGS="-g -O0 -fno-omit-frame-pointer" \ + && export CFLAGS="-g -O0 -fno-omit-frame-pointer" \ + && export CXXFLAGS="-g -O0 -fno-omit-frame-pointer" \ + && ./configure \ + --disable-doxygen \ + --disable-pcsc \ + --prefix=/usr/local \ + --enable-libsctp \ + --enable-sanitize \ + && make -j8 \ + && make install \ + && make distclean && ldconfig + +ARG LIBOSMOABIS_BRANCH="master" +RUN git clone https://gerrit.osmocom.org/libosmo-abis +ADD https://gerrit.osmocom.org/plugins/gitiles/libosmo-abis/+/$LIBOSMOABIS_BRANCH?format=TEXT /tmp/commit-libosmoabis + +RUN cd libosmo-abis \ + && git fetch && git checkout -f -B $LIBOSMOABIS_BRANCH origin/$LIBOSMOABIS_BRANCH \ + && git rev-parse --abbrev-ref HEAD && git rev-parse HEAD \ + && autoreconf -fi \ + && export CPPFLAGS="-g -O0 -fno-omit-frame-pointer" \ + && export CFLAGS="-g -O0 -fno-omit-frame-pointer" \ + && export CXXFLAGS="-g -O0 -fno-omit-frame-pointer" \ + && ./configure \ + --disable-doxygen \ + --enable-libsctp \ + --prefix=/usr/local \ + --enable-sanitize \ + && make -j8 \ + && make install \ + && make distclean && ldconfig + +ARG LIBOSMONETIF_BRANCH="master" +RUN git clone https://gerrit.osmocom.org/libosmo-netif +ADD https://gerrit.osmocom.org/plugins/gitiles/libosmo-netif/+/$LIBOSMONETIF_BRANCH?format=TEXT /tmp/commit-libosmonetif + +RUN cd libosmo-netif \ + && git fetch && git checkout -f -B $LIBOSMONETIF_BRANCH origin/$LIBOSMONETIF_BRANCH \ + && git rev-parse --abbrev-ref HEAD && git rev-parse HEAD \ + && autoreconf -fi \ + && export CPPFLAGS="-g -O0 -fno-omit-frame-pointer" \ + && export CFLAGS="-g -O0 -fno-omit-frame-pointer" \ + && export CXXFLAGS="-g -O0 -fno-omit-frame-pointer" \ + && ./configure \ + --disable-doxygen \ + --enable-libsctp \ + --prefix=/usr/local \ + --enable-sanitize \ + && make -j8 \ + && make install \ + && make distclean && ldconfig + ARG OSMO_CBC_BRANCH="master" RUN git clone https://gerrit.osmocom.org/osmo-cbc.git @@ -37,7 +101,10 @@ RUN cd osmo-cbc && \ (git symbolic-ref -q HEAD && git reset --hard origin/$OSMO_CBC_BRANCH || exit 1); \ git rev-parse --abbrev-ref HEAD && git rev-parse HEAD && \ autoreconf -fi && \ - ./configure && \ + export CPPFLAGS="-g -O0 -fno-omit-frame-pointer" \ + && export CFLAGS="-g -O0 -fno-omit-frame-pointer" \ + && export CXXFLAGS="-g -O0 -fno-omit-frame-pointer" && \ + ./configure --enable-sanitize && \ make "-j$(nproc)" install && \ ldconfig diff --git a/osmo-epdg-latest/Dockerfile b/osmo-epdg-latest/Dockerfile new file mode 100644 index 0000000..10f7437 --- /dev/null +++ b/osmo-epdg-latest/Dockerfile @@ -0,0 +1,32 @@ +ARG USER +ARG DISTRO +ARG OSMOCOM_REPO_VERSION="latest" +FROM $USER/$DISTRO-erlang +# Arguments used after FROM must be specified again +ARG DISTRO + +WORKDIR /tmp + +# erlang repo is using build user +USER root +RUN case "$DISTRO" in \ + debian*) \ + apt-get update && \ + apt-get install -y --no-install-recommends \ + osmo-epdg && \ + apt-get clean \ + ;; \ + centos*) \ + dnf install -y \ + osmo-epdg \ + ;; \ + esac + +WORKDIR /data + +VOLUME /data +COPY osmo-epdg.config /data/osmo-epdg.config + +CMD ["/bin/sh", "-c", "ERL_FLAGS='-config /data/osmo-epdg.config' /usr/bin/osmo-epdg > /data/osmo-epdg.log 2>&1"] + +#EXPOSE diff --git a/osmo-epdg-latest/Makefile b/osmo-epdg-latest/Makefile new file mode 100644 index 0000000..8d0e10b --- /dev/null +++ b/osmo-epdg-latest/Makefile @@ -0,0 +1 @@ +include ../make/Makefile diff --git a/osmo-epdg-latest/osmo-epdg.config b/osmo-epdg-latest/osmo-epdg.config new file mode 100644 index 0000000..be49216 --- /dev/null +++ b/osmo-epdg-latest/osmo-epdg.config @@ -0,0 +1,2 @@ +[{osmo_epdg, [ +]}]. diff --git a/osmo-epdg-master/Dockerfile b/osmo-epdg-master/Dockerfile index cdef31e..a5e9b14 100644 --- a/osmo-epdg-master/Dockerfile +++ b/osmo-epdg-master/Dockerfile @@ -4,14 +4,6 @@ FROM $USER/$DISTRO-erlang # Arguments used after FROM must be specified again ARG DISTRO -# $distro-erlang switched to user build, but we need to install more stuff beforehand: -USER root -RUN apt-get update && \ - apt-get install -y --no-install-recommends \ - iproute2 && \ - apt-get clean -USER build - WORKDIR /tmp ARG OSMO_EPDG_BRANCH="master" diff --git a/osmo-gbproxy-master/Dockerfile b/osmo-gbproxy-master/Dockerfile index 484bb88..a895459 100644 --- a/osmo-gbproxy-master/Dockerfile +++ b/osmo-gbproxy-master/Dockerfile @@ -28,6 +28,56 @@ RUN case "$DISTRO" in \ WORKDIR /tmp +# Download, build and install libosmocore +ARG LIBOSMOCORE_BRANCH="master" +RUN git clone https://gerrit.osmocom.org/libosmocore +ADD https://gerrit.osmocom.org/plugins/gitiles/libosmocore/+/$LIBOSMOCORE_BRANCH /tmp/commit-libosmocore + +RUN cd libosmocore \ + && git fetch && git checkout -f -B $LIBOSMOCORE_BRANCH origin/$LIBOSMOCORE_BRANCH?format=TEXT \ + && git rev-parse --abbrev-ref HEAD && git rev-parse HEAD \ + && autoreconf -fi \ + && ./configure \ + --disable-doxygen \ + --disable-pcsc \ + --prefix=/usr/local \ + --enable-sanitize \ + && make -j5 \ + && make install \ + && make distclean && ldconfig + +ARG LIBOSMOABIS_BRANCH="master" +RUN git clone https://gerrit.osmocom.org/libosmo-abis +ADD https://gerrit.osmocom.org/plugins/gitiles/libosmo-abis/+/$LIBOSMOABIS_BRANCH?format=TEXT /tmp/commit-libosmoabis + +RUN cd libosmo-abis \ + && git fetch && git checkout -f -B $LIBOSMOABIS_BRANCH origin/$LIBOSMOABIS_BRANCH \ + && git rev-parse --abbrev-ref HEAD && git rev-parse HEAD \ + && autoreconf -fi \ + && ./configure \ + --disable-doxygen \ + --prefix=/usr/local \ + --enable-sanitize \ + && make -j5 \ + && make install \ + && make distclean && ldconfig + +ARG LIBOSMONETIF_BRANCH="master" +RUN git clone https://gerrit.osmocom.org/libosmo-netif +ADD https://gerrit.osmocom.org/plugins/gitiles/libosmo-netif/+/$LIBOSMONETIF_BRANCH?format=TEXT /tmp/commit-libosmonetif + +RUN cd libosmo-netif \ + && git fetch && git checkout -f -B $LIBOSMONETIF_BRANCH origin/$LIBOSMONETIF_BRANCH \ + && git rev-parse --abbrev-ref HEAD && git rev-parse HEAD \ + && autoreconf -fi \ + && ./configure \ + --disable-doxygen \ + --prefix=/usr/local \ + --enable-sanitize \ + && make -j8 \ + && make install \ + && make distclean && ldconfig + ARG OSMO_GBPROXY_BRANCH="master" RUN git clone https://gerrit.osmocom.org/osmo-gbproxy.git @@ -38,7 +88,7 @@ RUN cd osmo-gbproxy && \ (git symbolic-ref -q HEAD && git reset --hard origin/$OSMO_GBPROXY_BRANCH || exit 1); \ git rev-parse --abbrev-ref HEAD && git rev-parse HEAD && \ autoreconf -fi && \ - ./configure && \ + ./configure --enable-sanitize && \ make "-j$(nproc)" install && \ ldconfig diff --git a/osmo-ggsn-master/Dockerfile b/osmo-ggsn-master/Dockerfile index 7f505d0..2c5a91f 100644 --- a/osmo-ggsn-master/Dockerfile +++ b/osmo-ggsn-master/Dockerfile @@ -33,8 +33,35 @@ RUN case "$DISTRO" in \ ;; \ esac +RUN apt-get update && \ + apt-get upgrade -y && \ + DEBIAN_FRONTEND=noninteractive \ + apt-get install -y --no-install-recommends \ + gdb \ + libtalloc-dev \ + tcpdump && \ + apt-get clean + WORKDIR /tmp +# Download, build and install libosmocore +ARG LIBOSMOCORE_BRANCH="master" +RUN git clone https://gerrit.osmocom.org/libosmocore +ADD https://gerrit.osmocom.org/plugins/gitiles/libosmocore/+/$LIBOSMOCORE_BRANCH?format=TEXT /tmp/commit-libosmocore + +RUN cd libosmocore \ + && git fetch && git checkout -f -B $LIBOSMOCORE_BRANCH origin/$LIBOSMOCORE_BRANCH \ + && git rev-parse --abbrev-ref HEAD && git rev-parse HEAD \ + && autoreconf -fi \ + && ./configure \ + --disable-doxygen \ + --disable-pcsc \ + --prefix=/usr/local \ + --enable-sanitize \ + && make -j5 \ + && make install \ + && make distclean && ldconfig + ARG OSMO_GGSN_BRANCH="master" RUN git clone https://gerrit.osmocom.org/osmo-ggsn.git @@ -45,7 +72,7 @@ RUN cd osmo-ggsn && \ (git symbolic-ref -q HEAD && git reset --hard origin/$OSMO_GGSN_BRANCH || exit 1); \ git rev-parse --abbrev-ref HEAD && git rev-parse HEAD && \ autoreconf -fi && \ - ./configure --enable-gtp-linux && \ + ./configure --enable-gtp-linux --enable-sanitize && \ make "-j$(nproc)" install && \ ldconfig diff --git a/osmo-hnbgw-master/Dockerfile b/osmo-hnbgw-master/Dockerfile index f69a6b4..de830bd 100644 --- a/osmo-hnbgw-master/Dockerfile +++ b/osmo-hnbgw-master/Dockerfile @@ -6,6 +6,7 @@ ARG DISTRO RUN apt-get update && \ apt-get install -y --no-install-recommends \ + gdb \ libosmocore-dev \ libosmo-abis-dev \ libosmo-mgcp-client-dev \ @@ -16,11 +17,92 @@ RUN apt-get update && \ libosmo-hnbap-dev \ libasn1c-dev \ libosmo-pfcp-dev \ + libosmo-mgcp-client-dev \ && \ apt-get clean WORKDIR /tmp +# Download, build and install libosmocore +ARG LIBOSMOCORE_BRANCH="master" +RUN git clone https://gerrit.osmocom.org/libosmocore +ADD https://gerrit.osmocom.org/plugins/gitiles/libosmocore/+/$LIBOSMOCORE_BRANCH?format=TEXT /tmp/commit-libosmocore + +RUN cd libosmocore \ + && git fetch && git checkout -f -B $LIBOSMOCORE_BRANCH origin/$LIBOSMOCORE_BRANCH \ + && git rev-parse --abbrev-ref HEAD && git rev-parse HEAD \ + && autoreconf -fi \ + && ./configure \ + --disable-doxygen \ + --disable-pcsc \ + --prefix=/usr/local \ + --enable-sanitize \ + --enable-libsctp \ + && make -j5 \ + && make install \ + && make distclean && ldconfig + +ARG LIBOSMOABIS_BRANCH="master" +RUN git clone https://gerrit.osmocom.org/libosmo-abis +ADD https://gerrit.osmocom.org/plugins/gitiles/libosmo-abis/+/$LIBOSMOABIS_BRANCH?format=TEXT /tmp/commit-libosmoabis + +RUN cd libosmo-abis \ + && git fetch && git checkout -f -B $LIBOSMOABIS_BRANCH origin/$LIBOSMOABIS_BRANCH \ + && git rev-parse --abbrev-ref HEAD && git rev-parse HEAD \ + && autoreconf -fi \ + && ./configure \ + --disable-doxygen \ + --prefix=/usr/local \ + --enable-sanitize \ + && make -j5 \ + && make install \ + && make distclean && ldconfig + +ARG LIBOSMONETIF_BRANCH="master" +RUN git clone https://gerrit.osmocom.org/libosmo-netif +ADD https://gerrit.osmocom.org/plugins/gitiles/libosmo-netif/+/$LIBOSMONETIF_BRANCH?format=TEXT /tmp/commit-libosmonetif + +RUN cd libosmo-netif \ + && git fetch && git checkout -f -B $LIBOSMONETIF_BRANCH origin/$LIBOSMONETIF_BRANCH \ + && git rev-parse --abbrev-ref HEAD && git rev-parse HEAD \ + && autoreconf -fi \ + && ./configure \ + --disable-doxygen \ + --prefix=/usr/local \ + --enable-sanitize \ + --enable-libsctp \ + && make -j8 \ + && make install \ + && make distclean && ldconfig + +ARG OSMO_IUH_BRANCH="master" + +RUN git clone https://gerrit.osmocom.org/osmo-iuh.git +ADD https://gerrit.osmocom.org/plugins/gitiles/osmo-iuh/+/$OSMO_IUH_BRANCH?format=TEXT /tmp/commit-osmo-iuh + +RUN cd osmo-iuh && \ + git fetch && git checkout $OSMO_IUH_BRANCH && \ + (git symbolic-ref -q HEAD && git reset --hard origin/$OSMO_IUH_BRANCH || exit 1); \ + git rev-parse --abbrev-ref HEAD && git rev-parse HEAD && \ + autoreconf -fi && \ + ./configure && \ + make "-j$(nproc)" install && \ + ldconfig + +ARG OSMO_MGW_BRANCH="master" + +RUN git clone https://gerrit.osmocom.org/osmo-mgw.git +ADD https://gerrit.osmocom.org/plugins/gitiles/osmo-mgw/+/$OSMO_MGW_BRANCH?format=TEXT /tmp/commit-osmo-mgw + +RUN cd osmo-mgw && \ + git fetch && git checkout $OSMO_MGW_BRANCH && \ + (git symbolic-ref -q HEAD && git reset --hard origin/$OSMO_MGW_BRANCH || exit 1); \ + git rev-parse --abbrev-ref HEAD && git rev-parse HEAD && \ + autoreconf -fi && \ + ./configure && \ + make "-j$(nproc)" install && \ + ldconfig + ARG OSMO_HNBGW_BRANCH="master" RUN git clone https://gerrit.osmocom.org/osmo-hnbgw.git @@ -31,7 +113,7 @@ RUN cd osmo-hnbgw && \ (git symbolic-ref -q HEAD && git reset --hard origin/$OSMO_HNBGW_BRANCH || exit 1); \ git rev-parse --abbrev-ref HEAD && git rev-parse HEAD && \ autoreconf -fi && \ - ./configure --enable-pfcp && \ + ./configure --enable-pfcp --enable-sanitize && \ make "-j$(nproc)" install && \ ldconfig diff --git a/osmo-hnodeb-master/Dockerfile b/osmo-hnodeb-master/Dockerfile index ffdb639..4fd0f3e 100644 --- a/osmo-hnodeb-master/Dockerfile +++ b/osmo-hnodeb-master/Dockerfile @@ -15,6 +15,58 @@ RUN apt-get update && \ WORKDIR /tmp +# Download, build and install libosmocore +ARG LIBOSMOCORE_BRANCH="master" +RUN git clone https://gerrit.osmocom.org/libosmocore +ADD https://gerrit.osmocom.org/plugins/gitiles/libosmocore/+/$LIBOSMOCORE_BRANCH?format=TEXT /tmp/commit-libosmocore + +RUN cd libosmocore \ + && git fetch && git checkout -f -B $LIBOSMOCORE_BRANCH origin/$LIBOSMOCORE_BRANCH \ + && git rev-parse --abbrev-ref HEAD && git rev-parse HEAD \ + && autoreconf -fi \ + && ./configure \ + --disable-doxygen \ + --disable-pcsc \ + --prefix=/usr/local \ + --enable-sanitize \ + --enable-libsctp \ + && make -j5 \ + && make install \ + && make distclean && ldconfig + +ARG LIBOSMOABIS_BRANCH="master" +RUN git clone https://gerrit.osmocom.org/libosmo-abis +ADD https://gerrit.osmocom.org/plugins/gitiles/libosmo-abis/+/$LIBOSMOABIS_BRANCH?format=TEXT /tmp/commit-libosmoabis + +RUN cd libosmo-abis \ + && git fetch && git checkout -f -B $LIBOSMOABIS_BRANCH origin/$LIBOSMOABIS_BRANCH \ + && git rev-parse --abbrev-ref HEAD && git rev-parse HEAD \ + && autoreconf -fi \ + && ./configure \ + --disable-doxygen \ + --prefix=/usr/local \ + --enable-sanitize \ + && make -j5 \ + && make install \ + && make distclean && ldconfig + +ARG LIBOSMONETIF_BRANCH="master" +RUN git clone https://gerrit.osmocom.org/libosmo-netif +ADD https://gerrit.osmocom.org/plugins/gitiles/libosmo-netif/+/$LIBOSMONETIF_BRANCH?format=TEXT /tmp/commit-libosmonetif + +RUN cd libosmo-netif \ + && git fetch && git checkout -f -B $LIBOSMONETIF_BRANCH origin/$LIBOSMONETIF_BRANCH \ + && git rev-parse --abbrev-ref HEAD && git rev-parse HEAD \ + && autoreconf -fi \ + && ./configure \ + --disable-doxygen \ + --prefix=/usr/local \ + --enable-sanitize \ + --enable-libsctp \ + && make -j8 \ + && make install \ + && make distclean && ldconfig + ARG OSMO_IUH_BRANCH="master" RUN git clone https://gerrit.osmocom.org/osmo-iuh.git @@ -39,7 +91,7 @@ RUN cd osmo-hnodeb && \ (git symbolic-ref -q HEAD && git reset --hard origin/$OSMO_HNODEB_BRANCH || exit 1); \ git rev-parse --abbrev-ref HEAD && git rev-parse HEAD && \ autoreconf -fi && \ - ./configure && \ + ./configure --enable-sanitize && \ make "-j$(nproc)" install && \ ldconfig diff --git a/osmo-mgw-master/Dockerfile b/osmo-mgw-master/Dockerfile index 20b5b1a..1093ffb 100644 --- a/osmo-mgw-master/Dockerfile +++ b/osmo-mgw-master/Dockerfile @@ -8,6 +8,7 @@ RUN case "$DISTRO" in \ debian*) \ apt-get update && \ apt-get install -y --no-install-recommends \ + gdb \ libosmocore-dev \ libosmo-abis-dev \ libosmo-netif-dev \ @@ -29,6 +30,58 @@ RUN case "$DISTRO" in \ WORKDIR /tmp +# Download, build and install libosmocore +ARG LIBOSMOCORE_BRANCH="master" +RUN git clone https://gerrit.osmocom.org/libosmocore +ADD https://gerrit.osmocom.org/plugins/gitiles/libosmocore/+/$LIBOSMOCORE_BRANCH?format=TEXT /tmp/commit-libosmocore + +RUN cd libosmocore \ + && git fetch && git checkout -f -B $LIBOSMOCORE_BRANCH origin/$LIBOSMOCORE_BRANCH \ + && git rev-parse --abbrev-ref HEAD && git rev-parse HEAD \ + && autoreconf -fi \ + && ./configure \ + --disable-doxygen \ + --disable-pcsc \ + --prefix=/usr/local \ + --enable-sanitize \ + --enable-libsctp \ + && make -j5 \ + && make install \ + && make distclean && ldconfig + +ARG LIBOSMOABIS_BRANCH="master" +RUN git clone https://gerrit.osmocom.org/libosmo-abis +ADD https://gerrit.osmocom.org/plugins/gitiles/libosmo-abis/+/$LIBOSMOABIS_BRANCH?format=TEXT /tmp/commit-libosmoabis + +RUN cd libosmo-abis \ + && git fetch && git checkout -f -B $LIBOSMOABIS_BRANCH origin/$LIBOSMOABIS_BRANCH \ + && git rev-parse --abbrev-ref HEAD && git rev-parse HEAD \ + && autoreconf -fi \ + && ./configure \ + --disable-doxygen \ + --prefix=/usr/local \ + --enable-sanitize \ + && make -j5 \ + && make install \ + && make distclean && ldconfig + +ARG LIBOSMONETIF_BRANCH="master" +RUN git clone https://gerrit.osmocom.org/libosmo-netif +ADD https://gerrit.osmocom.org/plugins/gitiles/libosmo-netif/+/$LIBOSMONETIF_BRANCH?format=TEXT /tmp/commit-libosmonetif + +RUN cd libosmo-netif \ + && git fetch && git checkout -f -B $LIBOSMONETIF_BRANCH origin/$LIBOSMONETIF_BRANCH \ + && git rev-parse --abbrev-ref HEAD && git rev-parse HEAD \ + && autoreconf -fi \ + && ./configure \ + --disable-doxygen \ + --prefix=/usr/local \ + --enable-sanitize \ + --enable-libsctp \ + && make -j8 \ + && make install \ + && make distclean && ldconfig + ARG OSMO_MGW_BRANCH="master" RUN git clone https://gerrit.osmocom.org/osmo-mgw.git @@ -40,7 +93,10 @@ RUN cd osmo-mgw && \ (git symbolic-ref -q HEAD && git reset --hard origin/$OSMO_MGW_BRANCH || exit 1); \ git rev-parse --abbrev-ref HEAD && git rev-parse HEAD && \ autoreconf -fi && \ - ./configure && \ + export CPPFLAGS="-g -O0 -fno-omit-frame-pointer" && \ + export CFLAGS="-g -O0 -fno-omit-frame-pointer" && \ + export CXXFLAGS="-g -O0 -fno-omit-frame-pointer" && \ + ./configure --enable-sanitize && \ make "-j$(nproc)" install && \ ldconfig diff --git a/osmo-msc-master/Dockerfile b/osmo-msc-master/Dockerfile index 7a0362d..9ab5697 100644 --- a/osmo-msc-master/Dockerfile +++ b/osmo-msc-master/Dockerfile @@ -42,6 +42,85 @@ RUN case "$DISTRO" in \ WORKDIR /tmp +# Download, build and install libosmocore +ARG LIBOSMOCORE_BRANCH="master" +RUN git clone https://gerrit.osmocom.org/libosmocore +ADD https://gerrit.osmocom.org/plugins/gitiles/libosmocore/+/$LIBOSMOCORE_BRANCH?format=TEXT /tmp/commit-libosmocore + +RUN cd libosmocore \ + && git fetch && git checkout -f -B $LIBOSMOCORE_BRANCH origin/$LIBOSMOCORE_BRANCH \ + && git rev-parse --abbrev-ref HEAD && git rev-parse HEAD \ + && autoreconf -fi \ + && ./configure \ + --disable-doxygen \ + --disable-pcsc \ + --prefix=/usr/local \ + --enable-sanitize \ + && make -j5 \ + && make install \ + && make distclean && ldconfig + +ARG LIBOSMOABIS_BRANCH="master" +RUN git clone https://gerrit.osmocom.org/libosmo-abis +ADD https://gerrit.osmocom.org/plugins/gitiles/libosmo-abis/+/$LIBOSMOABIS_BRANCH?format=TEXT /tmp/commit-libosmoabis + +RUN cd libosmo-abis \ + && git fetch && git checkout -f -B $LIBOSMOABIS_BRANCH origin/$LIBOSMOABIS_BRANCH \ + && git rev-parse --abbrev-ref HEAD && git rev-parse HEAD \ + && autoreconf -fi \ + && ./configure \ + --disable-doxygen \ + --prefix=/usr/local \ + --enable-sanitize \ + && make -j5 \ + && make install \ + && make distclean && ldconfig + +ARG LIBOSMONETIF_BRANCH="master" +RUN git clone https://gerrit.osmocom.org/libosmo-netif +ADD https://gerrit.osmocom.org/plugins/gitiles/libosmo-netif/+/$LIBOSMONETIF_BRANCH?format=TEXT /tmp/commit-libosmonetif + +RUN cd libosmo-netif \ + && git fetch && git checkout -f -B $LIBOSMONETIF_BRANCH origin/$LIBOSMONETIF_BRANCH \ + && git rev-parse --abbrev-ref HEAD && git rev-parse HEAD \ + && autoreconf -fi \ + && ./configure \ + --disable-doxygen \ + --prefix=/usr/local \ + --enable-sanitize \ + && make -j8 \ + && make install \ + && make distclean && ldconfig + +ARG OSMO_STP_BRANCH="master" + +RUN git clone https://gerrit.osmocom.org/libosmo-sccp.git +ADD https://gerrit.osmocom.org/plugins/gitiles/libosmo-sccp/+/$OSMO_STP_BRANCH?format=TEXT /tmp/commit +RUN cd libosmo-sccp && \ + git fetch && git checkout $OSMO_STP_BRANCH && \ + (git symbolic-ref -q HEAD && git reset --hard origin/$OSMO_STP_BRANCH || exit 1); \ + git rev-parse --abbrev-ref HEAD && git rev-parse HEAD && \ + autoreconf -fi && \ + ./configure --enable-sanitize && \ + make "-j$(nproc)" install && \ + install examples/.libs/sccp_demo_user /usr/local/bin/ && \ + ldconfig + +ARG OSMO_MGW_BRANCH="master" + +RUN git clone https://gerrit.osmocom.org/osmo-mgw.git +ADD https://gerrit.osmocom.org/plugins/gitiles/osmo-mgw/+/$OSMO_MGW_BRANCH?format=TEXT /tmp/commit-osmo-mgw + + +RUN cd osmo-mgw && \ + git fetch && git checkout $OSMO_MGW_BRANCH && \ + (git symbolic-ref -q HEAD && git reset --hard origin/$OSMO_MGW_BRANCH || exit 1); \ + git rev-parse --abbrev-ref HEAD && git rev-parse HEAD && \ + autoreconf -fi && \ + ./configure && \ + make "-j$(nproc)" install && \ + ldconfig + ARG OSMO_MSC_BRANCH="master" RUN git clone https://gerrit.osmocom.org/osmo-msc.git @@ -52,7 +131,7 @@ RUN cd osmo-msc && \ (git symbolic-ref -q HEAD && git reset --hard origin/$OSMO_MSC_BRANCH || exit 1); \ git rev-parse --abbrev-ref HEAD && git rev-parse HEAD && \ autoreconf -fi && \ - ./configure --enable-smpp --enable-iu && \ + ./configure --enable-smpp --enable-iu --enable-sanitize && \ make "-j$(nproc)" install VOLUME /data diff --git a/osmo-pcu-master/Dockerfile b/osmo-pcu-master/Dockerfile index ac0fc1e..a108996 100644 --- a/osmo-pcu-master/Dockerfile +++ b/osmo-pcu-master/Dockerfile @@ -23,6 +23,25 @@ RUN case "$DISTRO" in \ WORKDIR /tmp +# Download, build and install libosmocore +ARG LIBOSMOCORE_BRANCH="master" +RUN git clone https://gerrit.osmocom.org/libosmocore +ADD https://gerrit.osmocom.org/plugins/gitiles/libosmocore/+/$LIBOSMOCORE_BRANCH?format=TEXT /tmp/commit-libosmocore + +RUN cd libosmocore \ + && git fetch && git checkout -f -B $LIBOSMOCORE_BRANCH origin/$LIBOSMOCORE_BRANCH \ + && git rev-parse --abbrev-ref HEAD && git rev-parse HEAD \ + && export CPPFLAGS="-g -O0 -fno-omit-frame-pointer" \ + && autoreconf -fi \ + && ./configure \ + --disable-doxygen \ + --disable-pcsc \ + --enable-force-io-select \ + --prefix=/usr/local --enable-sanitize \ + && make -j5 \ + && make install \ + && make distclean && ldconfig + ARG OSMO_PCU_BRANCH="master" RUN git clone https://gerrit.osmocom.org/osmo-pcu.git @@ -32,9 +51,10 @@ RUN cd osmo-pcu && \ git fetch && git checkout $OSMO_PCU_BRANCH && \ (git symbolic-ref -q HEAD && git reset --hard origin/$OSMO_PCU_BRANCH || exit 1); \ git rev-parse --abbrev-ref HEAD && git rev-parse HEAD && \ + export CPPFLAGS="-g -O0 -fno-omit-frame-pointer" && \ autoreconf -fi && \ - ./configure && \ - make "-j$(nproc)" install + ./configure --enable-sanitize && \ + make "-j$(nproc)" V=1 install VOLUME /data diff --git a/osmo-ran/jenkins.sh b/osmo-ran/jenkins.sh index 1b5d93a..120d2a0 100755 --- a/osmo-ran/jenkins.sh +++ b/osmo-ran/jenkins.sh @@ -9,6 +9,7 @@ docker_images_require \ "systemd" \ "osmo-ran$IMAGE_SUFFIX" +SUB4_PREFIX=${SUB4_PREFIX:-"172.18"} SUBNET=${SUBNET:-25} IPSUFFIX=200 NET_NAME="osmo-ran-subnet$SUBNET" @@ -20,7 +21,7 @@ mkdir $VOL_RAN_DIR/data mkdir $VOL_RAN_DIR/osmocom cp osmocom/* $VOL_RAN_DIR/osmocom/ -DOCKER_IN_IP="172.18.$SUBNET.$IPSUFFIX" +DOCKER_IN_IP="$SUB4_PREFIX.$SUBNET.$IPSUFFIX" SGSN_IP="${SGSN_IP:-192.168.30.1}" STP_IP="${STP_IP:-192.168.30.1}" TRX_IP="${TRX_IP:-192.168.30.100}" diff --git a/osmo-s1gw-master/Dockerfile b/osmo-s1gw-master/Dockerfile new file mode 100644 index 0000000..34028f8 --- /dev/null +++ b/osmo-s1gw-master/Dockerfile @@ -0,0 +1,24 @@ +ARG USER +ARG DISTRO +FROM $USER/$DISTRO-erlang +# Arguments used after FROM must be specified again +ARG DISTRO + +WORKDIR /tmp + +ARG OSMO_S1GW_BRANCH="master" + +RUN git clone https://gerrit.osmocom.org/erlang/osmo-s1gw.git +ADD https://gerrit.osmocom.org/plugins/gitiles/erlang/osmo-s1gw/+/$OSMO_S1GW_BRANCH?format=TEXT /tmp/commit-osmo-s1gw + +RUN cd osmo-s1gw && \ + git fetch && git checkout $OSMO_S1GW_BRANCH && \ + (git symbolic-ref -q HEAD && git reset --hard origin/$OSMO_S1GW_BRANCH || exit 1); \ + git rev-parse --abbrev-ref HEAD && git rev-parse HEAD && \ + make build + +VOLUME /data + +COPY osmo-s1gw.config /data/osmo-s1gw.config + +CMD ["/bin/sh", "-c", "ERL_FLAGS='-config /data/osmo-s1gw.config' /tmp/osmo-s1gw/_build/default/bin/osmo-s1gw > /data/osmo-s1gw.log 2>&1"] diff --git a/osmo-s1gw-master/Makefile b/osmo-s1gw-master/Makefile new file mode 100644 index 0000000..8d0e10b --- /dev/null +++ b/osmo-s1gw-master/Makefile @@ -0,0 +1 @@ +include ../make/Makefile diff --git a/osmo-s1gw-master/osmo-s1gw.config b/osmo-s1gw-master/osmo-s1gw.config new file mode 100644 index 0000000..ef48a29 --- /dev/null +++ b/osmo-s1gw-master/osmo-s1gw.config @@ -0,0 +1,2 @@ +[{osmo_s1gw, [ +]}]. diff --git a/osmo-sgsn-master/Dockerfile b/osmo-sgsn-master/Dockerfile index edd912f..e7fa861 100644 --- a/osmo-sgsn-master/Dockerfile +++ b/osmo-sgsn-master/Dockerfile @@ -10,11 +10,9 @@ RUN case "$DISTRO" in \ apt-get install -y --no-install-recommends \ libosmocore-dev \ libosmo-abis-dev \ + telnet \ libosmo-gsup-client-dev \ - libosmo-netif-dev \ libosmo-ranap-dev \ - libosmo-sccp-dev \ - libosmo-sigtran-dev \ libsmpp34-dev \ libgtp-dev \ libasn1c-dev && \ @@ -40,6 +38,82 @@ RUN case "$DISTRO" in \ WORKDIR /tmp +# Download, build and install libosmocore +ARG LIBOSMOCORE_BRANCH="master" +RUN git clone https://gerrit.osmocom.org/libosmocore +ADD https://gerrit.osmocom.org/plugins/gitiles/libosmocore/+/$LIBOSMOCORE_BRANCH?format=TEXT /tmp/commit-libosmocore + +RUN cd libosmocore \ + && git fetch && git checkout -f -B $LIBOSMOCORE_BRANCH origin/$LIBOSMOCORE_BRANCH \ + && git rev-parse --abbrev-ref HEAD && git rev-parse HEAD \ + && autoreconf -fi \ + && ./configure \ + --disable-doxygen \ + --disable-pcsc \ + --prefix=/usr/local \ + && make -j5 \ + && make install \ + && make distclean && ldconfig + +ARG LIBOSMOABIS_BRANCH="master" +RUN git clone https://gerrit.osmocom.org/libosmo-abis +ADD https://gerrit.osmocom.org/plugins/gitiles/libosmo-abis/+/$LIBOSMOABIS_BRANCH?format=TEXT /tmp/commit-libosmoabis + +RUN cd libosmo-abis \ + && git fetch && git checkout -f -B $LIBOSMOABIS_BRANCH origin/$LIBOSMOABIS_BRANCH \ + && git rev-parse --abbrev-ref HEAD && git rev-parse HEAD \ + && autoreconf -fi \ + && ./configure \ + --disable-doxygen \ + --prefix=/usr/local \ + && make -j5 \ + && make install \ + && make distclean && ldconfig + +ARG LIBOSMONETIF_BRANCH="master" +RUN git clone https://gerrit.osmocom.org/libosmo-netif +ADD https://gerrit.osmocom.org/plugins/gitiles/libosmo-netif/+/$LIBOSMONETIF_BRANCH?format=TEXT /tmp/commit-libosmonetif + +RUN cd libosmo-netif \ + && git fetch && git checkout -f -B $LIBOSMONETIF_BRANCH origin/$LIBOSMONETIF_BRANCH \ + && git rev-parse --abbrev-ref HEAD && git rev-parse HEAD \ + && autoreconf -fi \ + && ./configure \ + --disable-doxygen \ + --prefix=/usr/local \ + && make -j8 \ + && make install \ + && make distclean && ldconfig + +ARG OSMO_GGSN_BRANCH="master" +RUN git clone https://gerrit.osmocom.org/osmo-ggsn +ADD https://gerrit.osmocom.org/plugins/gitiles/osmo-ggsn/+/$OSMO_GGSN_BRANCH?format=TEXT /tmp/commit-osmo-ggsn + +RUN cd osmo-ggsn \ + && git fetch && git checkout -f -B $OSMO_GGSN_BRANCH origin/$OSMO_GGSN_BRANCH \ + && git rev-parse --abbrev-ref HEAD && git rev-parse HEAD \ + && autoreconf -fi \ + && ./configure \ + --disable-doxygen \ + --prefix=/usr/local \ + && make -j8 \ + && make install \ + && make distclean && ldconfig + +ARG OSMO_STP_BRANCH="master" + +RUN git clone https://gerrit.osmocom.org/libosmo-sccp.git +ADD https://gerrit.osmocom.org/plugins/gitiles/libosmo-sccp/+/$OSMO_STP_BRANCH?format=TEXT /tmp/commit +RUN cd libosmo-sccp && \ + git fetch && git checkout $OSMO_STP_BRANCH && \ + (git symbolic-ref -q HEAD && git reset --hard origin/$OSMO_STP_BRANCH || exit 1); \ + git rev-parse --abbrev-ref HEAD && git rev-parse HEAD && \ + autoreconf -fi && \ + ./configure && \ + make "-j$(nproc)" install && \ + install examples/.libs/sccp_demo_user /usr/local/bin/ && \ + ldconfig + ARG OSMO_SGSN_BRANCH="master" RUN git clone https://gerrit.osmocom.org/osmo-sgsn.git diff --git a/osmo-stp-master/Dockerfile b/osmo-stp-master/Dockerfile index 2e6ecd6..66c2cb6 100644 --- a/osmo-stp-master/Dockerfile +++ b/osmo-stp-master/Dockerfile @@ -9,7 +9,8 @@ RUN case "$DISTRO" in \ apt-get update && \ apt-get install -y --no-install-recommends \ libosmocore-dev \ - libosmo-netif-dev && \ + libosmo-netif-dev \ + telnet libosmo-abis-dev && \ apt-get clean \ ;; \ centos*) \ @@ -23,6 +24,53 @@ RUN case "$DISTRO" in \ WORKDIR /data +# Download, build and install libosmocore +ARG LIBOSMOCORE_BRANCH="master" +RUN git clone https://gerrit.osmocom.org/libosmocore +ADD https://gerrit.osmocom.org/plugins/gitiles/libosmocore/+/$LIBOSMOCORE_BRANCH?format=TEXT /tmp/commit-libosmocore + +RUN cd libosmocore \ + && git fetch && git checkout -f -B $LIBOSMOCORE_BRANCH origin/$LIBOSMOCORE_BRANCH \ + && git rev-parse --abbrev-ref HEAD && git rev-parse HEAD \ + && autoreconf -fi \ + && ./configure \ + --disable-doxygen \ + --disable-pcsc \ + --prefix=/usr/local \ + && make -j5 \ + && make install \ + && make distclean && ldconfig + +ARG LIBOSMOABIS_BRANCH="master" +RUN git clone https://gerrit.osmocom.org/libosmo-abis +ADD https://gerrit.osmocom.org/plugins/gitiles/libosmo-abis/+/$LIBOSMOABIS_BRANCH?format=TEXT /tmp/commit-libosmoabis + +RUN cd libosmo-abis \ + && git fetch && git checkout -f -B $LIBOSMOABIS_BRANCH origin/$LIBOSMOABIS_BRANCH \ + && git rev-parse --abbrev-ref HEAD && git rev-parse HEAD \ + && autoreconf -fi \ + && ./configure \ + --disable-doxygen \ + --prefix=/usr/local \ + && make -j5 \ + && make install \ + && make distclean && ldconfig + +ARG LIBOSMONETIF_BRANCH="master" +RUN git clone https://gerrit.osmocom.org/libosmo-netif +ADD https://gerrit.osmocom.org/plugins/gitiles/libosmo-netif/+/$LIBOSMONETIF_BRANCH?format=TEXT /tmp/commit-libosmonetif + +RUN cd libosmo-netif \ + && git fetch && git checkout -f -B $LIBOSMONETIF_BRANCH origin/$LIBOSMONETIF_BRANCH \ + && git rev-parse --abbrev-ref HEAD && git rev-parse HEAD \ + && autoreconf -fi \ + && ./configure \ + --disable-doxygen \ + --prefix=/usr/local \ + && make -j8 \ + && make install \ + && make distclean && ldconfig + ARG OSMO_STP_BRANCH="master" RUN git clone https://gerrit.osmocom.org/libosmo-sccp.git diff --git a/osmo-uecups-master/Dockerfile b/osmo-uecups-master/Dockerfile index 793fe6b..b632e18 100644 --- a/osmo-uecups-master/Dockerfile +++ b/osmo-uecups-master/Dockerfile @@ -12,11 +12,62 @@ RUN apt-get update && \ libosmo-netif-dev \ libsctp-dev \ iputils-ping \ + gdb \ strace && \ apt-get clean WORKDIR /tmp +# Download, build and install libosmocore +ARG LIBOSMOCORE_BRANCH="master" +RUN git clone https://gerrit.osmocom.org/libosmocore +ADD https://gerrit.osmocom.org/plugins/gitiles/libosmocore/+/$LIBOSMOCORE_BRANCH?format=TEXT /tmp/commit-libosmocore + +RUN cd libosmocore \ + && git fetch && git checkout -f -B $LIBOSMOCORE_BRANCH origin/$LIBOSMOCORE_BRANCH \ + && git rev-parse --abbrev-ref HEAD && git rev-parse HEAD \ + && autoreconf -fi \ + && export CPPFLAGS="-g -O0 -fno-omit-frame-pointer" \ + && export CFLAGS="-g -O0 -fno-omit-frame-pointer" \ + && export CXXFLAGS="-g -O0 -fno-omit-frame-pointer" \ + && ./configure \ + --disable-doxygen \ + --disable-pcsc \ + --prefix=/usr/local \ + && make -j8 \ + && make install \ + && make distclean && ldconfig + +ARG LIBOSMOABIS_BRANCH="master" +RUN git clone https://gerrit.osmocom.org/libosmo-abis +ADD https://gerrit.osmocom.org/plugins/gitiles/libosmo-abis/+/$LIBOSMOABIS_BRANCH?format=TEXT /tmp/commit-libosmoabis + +RUN cd libosmo-abis \ + && git fetch && git checkout -f -B $LIBOSMOABIS_BRANCH origin/$LIBOSMOABIS_BRANCH \ + && git rev-parse --abbrev-ref HEAD && git rev-parse HEAD \ + && autoreconf -fi \ + && ./configure \ + --disable-doxygen \ + --prefix=/usr/local \ + && make -j8 \ + && make install \ + && make distclean && ldconfig + +ARG LIBOSMONETIF_BRANCH="master" +RUN git clone https://gerrit.osmocom.org/libosmo-netif +ADD https://gerrit.osmocom.org/plugins/gitiles/libosmo-netif/+/$LIBOSMONETIF_BRANCH?format=TEXT /tmp/commit-libosmonetif + +RUN cd libosmo-netif \ + && git fetch && git checkout -f -B $LIBOSMONETIF_BRANCH origin/$LIBOSMONETIF_BRANCH \ + && git rev-parse --abbrev-ref HEAD && git rev-parse HEAD \ + && autoreconf -fi \ + && ./configure \ + --disable-doxygen \ + --prefix=/usr/local \ + && make -j8 \ + && make install \ + && make distclean && ldconfig + ARG OSMO_UECUPS_BRANCH="master" RUN git clone https://gerrit.osmocom.org/osmo-uecups.git @@ -27,6 +78,9 @@ RUN cd osmo-uecups && \ (git symbolic-ref -q HEAD && git reset --hard origin/$OSMO_UECUPS_BRANCH || exit 1); \ git rev-parse --abbrev-ref HEAD && git rev-parse HEAD && \ autoreconf -fi && \ + export CPPFLAGS="-g -O0 -fno-omit-frame-pointer" \ + && export CFLAGS="-g -O0 -fno-omit-frame-pointer" \ + && export CXXFLAGS="-g -O0 -fno-omit-frame-pointer" && \ ./configure && \ make "-j$(nproc)" install diff --git a/osmocom-bb-host-master/Dockerfile b/osmocom-bb-host-master/Dockerfile index efc9925..7ee010c 100644 --- a/osmocom-bb-host-master/Dockerfile +++ b/osmocom-bb-host-master/Dockerfile @@ -7,6 +7,7 @@ ARG OSMO_BB_BRANCH="master" RUN apt-get update && \ apt-get install -y --no-install-recommends \ + gdb \ libosmocore-dev && \ apt-get clean @@ -22,7 +23,10 @@ RUN cd osmocom-bb && \ RUN cd osmocom-bb/src/host/trxcon && \ autoreconf -fi && \ - ./configure && \ + export CPPFLAGS="-g -O0 -fno-omit-frame-pointer" && \ + export CFLAGS="-g -O0 -fno-omit-frame-pointer" && \ + export CXXFLAGS="-g -O0 -fno-omit-frame-pointer" && \ + ./configure --enable-sanitize && \ make "-j$(nproc)" install RUN cd osmocom-bb/src/host/virt_phy && \ diff --git a/scripts/kernel-test/smoke-test.sh b/scripts/kernel-test/smoke-test.sh index b0570dd..21a2a4f 100755 --- a/scripts/kernel-test/smoke-test.sh +++ b/scripts/kernel-test/smoke-test.sh @@ -3,7 +3,7 @@ LOG=/tmp/smoke_test.log -/kernel-test/run-qemu.sh SMOKE_TEST > "$LOG" 2>&1 || true +/kernel-test/run-qemu.sh SMOKE_TEST 2>&1 | tee "$LOG" || true if ! grep -q SMOKE_TEST_SUCCESS "$LOG"; then cat "$LOG" diff --git a/seccomp_profile.json b/seccomp_profile.json new file mode 100644 index 0000000..70a0b63 --- /dev/null +++ b/seccomp_profile.json @@ -0,0 +1,836 @@ +{ + "defaultAction": "SCMP_ACT_ERRNO", + "defaultErrnoRet": 1, + "archMap": [ + { + "architecture": "SCMP_ARCH_X86_64", + "subArchitectures": [ + "SCMP_ARCH_X86", + "SCMP_ARCH_X32" + ] + }, + { + "architecture": "SCMP_ARCH_AARCH64", + "subArchitectures": [ + "SCMP_ARCH_ARM" + ] + }, + { + "architecture": "SCMP_ARCH_MIPS64", + "subArchitectures": [ + "SCMP_ARCH_MIPS", + "SCMP_ARCH_MIPS64N32" + ] + }, + { + "architecture": "SCMP_ARCH_MIPS64N32", + "subArchitectures": [ + "SCMP_ARCH_MIPS", + "SCMP_ARCH_MIPS64" + ] + }, + { + "architecture": "SCMP_ARCH_MIPSEL64", + "subArchitectures": [ + "SCMP_ARCH_MIPSEL", + "SCMP_ARCH_MIPSEL64N32" + ] + }, + { + "architecture": "SCMP_ARCH_MIPSEL64N32", + "subArchitectures": [ + "SCMP_ARCH_MIPSEL", + "SCMP_ARCH_MIPSEL64" + ] + }, + { + "architecture": "SCMP_ARCH_S390X", + "subArchitectures": [ + "SCMP_ARCH_S390" + ] + }, + { + "architecture": "SCMP_ARCH_RISCV64", + "subArchitectures": null + } + ], + "syscalls": [ + { + "names": [ + "accept", + "accept4", + "access", + "adjtimex", + "alarm", + "bind", + "brk", + "cachestat", + "capget", + "capset", + "chdir", + "chmod", + "chown", + "chown32", + "clock_adjtime", + "clock_adjtime64", + "clock_getres", + "clock_getres_time64", + "clock_gettime", + "clock_gettime64", + "clock_nanosleep", + "clock_nanosleep_time64", + "close", + "close_range", + "connect", + "copy_file_range", + "creat", + "dup", + "dup2", + "dup3", + "epoll_create", + "epoll_create1", + "epoll_ctl", + "epoll_ctl_old", + "epoll_pwait", + "epoll_pwait2", + "epoll_wait", + "epoll_wait_old", + "eventfd", + "eventfd2", + "execve", + "execveat", + "exit", + "exit_group", + "faccessat", + "faccessat2", + "fadvise64", + "fadvise64_64", + "fallocate", + "fanotify_mark", + "fchdir", + "fchmod", + "fchmodat", + "fchmodat2", + "fchown", + "fchown32", + "fchownat", + "fcntl", + "fcntl64", + "fdatasync", + "fgetxattr", + "flistxattr", + "flock", + "fork", + "fremovexattr", + "fsetxattr", + "fstat", + "fstat64", + "fstatat64", + "fstatfs", + "fstatfs64", + "fsync", + "ftruncate", + "ftruncate64", + "futex", + "futex_requeue", + "futex_time64", + "futex_wait", + "futex_waitv", + "futex_wake", + "futimesat", + "getcpu", + "getcwd", + "getdents", + "getdents64", + "getegid", + "getegid32", + "geteuid", + "geteuid32", + "getgid", + "getgid32", + "getgroups", + "getgroups32", + "getitimer", + "getpeername", + "getpgid", + "getpgrp", + "getpid", + "getppid", + "getpriority", + "getrandom", + "getresgid", + "getresgid32", + "getresuid", + "getresuid32", + "getrlimit", + "get_robust_list", + "getrusage", + "getsid", + "getsockname", + "getsockopt", + "get_thread_area", + "gettid", + "gettimeofday", + "getuid", + "getuid32", + "getxattr", + "inotify_add_watch", + "inotify_init", + "inotify_init1", + "inotify_rm_watch", + "io_cancel", + "ioctl", + "io_destroy", + "io_getevents", + "io_pgetevents", + "io_pgetevents_time64", + "ioprio_get", + "ioprio_set", + "io_setup", + "io_submit", + "io_uring_enter", + "io_uring_register", + "io_uring_setup", + "ipc", + "kill", + "landlock_add_rule", + "landlock_create_ruleset", + "landlock_restrict_self", + "lchown", + "lchown32", + "lgetxattr", + "link", + "linkat", + "listen", + "listxattr", + "llistxattr", + "_llseek", + "lremovexattr", + "lseek", + "lsetxattr", + "lstat", + "lstat64", + "madvise", + "map_shadow_stack", + "membarrier", + "memfd_create", + "memfd_secret", + "mincore", + "mkdir", + "mkdirat", + "mknod", + "mknodat", + "mlock", + "mlock2", + "mlockall", + "mmap", + "mmap2", + "mprotect", + "mq_getsetattr", + "mq_notify", + "mq_open", + "mq_timedreceive", + "mq_timedreceive_time64", + "mq_timedsend", + "mq_timedsend_time64", + "mq_unlink", + "mremap", + "msgctl", + "msgget", + "msgrcv", + "msgsnd", + "msync", + "munlock", + "munlockall", + "munmap", + "name_to_handle_at", + "nanosleep", + "newfstatat", + "_newselect", + "open", + "openat", + "openat2", + "pause", + "pidfd_open", + "pidfd_send_signal", + "pipe", + "pipe2", + "pkey_alloc", + "pkey_free", + "pkey_mprotect", + "poll", + "ppoll", + "ppoll_time64", + "prctl", + "pread64", + "preadv", + "preadv2", + "prlimit64", + "process_mrelease", + "pselect6", + "pselect6_time64", + "pwrite64", + "pwritev", + "pwritev2", + "read", + "readahead", + "readlink", + "readlinkat", + "readv", + "recv", + "recvfrom", + "recvmmsg", + "recvmmsg_time64", + "recvmsg", + "remap_file_pages", + "removexattr", + "rename", + "renameat", + "renameat2", + "restart_syscall", + "rmdir", + "rseq", + "rt_sigaction", + "rt_sigpending", + "rt_sigprocmask", + "rt_sigqueueinfo", + "rt_sigreturn", + "rt_sigsuspend", + "rt_sigtimedwait", + "rt_sigtimedwait_time64", + "rt_tgsigqueueinfo", + "sched_getaffinity", + "sched_getattr", + "sched_getparam", + "sched_get_priority_max", + "sched_get_priority_min", + "sched_getscheduler", + "sched_rr_get_interval", + "sched_rr_get_interval_time64", + "sched_setaffinity", + "sched_setattr", + "sched_setparam", + "sched_setscheduler", + "sched_yield", + "seccomp", + "select", + "semctl", + "semget", + "semop", + "semtimedop", + "semtimedop_time64", + "send", + "sendfile", + "sendfile64", + "sendmmsg", + "sendmsg", + "sendto", + "setfsgid", + "setfsgid32", + "setfsuid", + "setfsuid32", + "setgid", + "setgid32", + "setgroups", + "setgroups32", + "setitimer", + "setpgid", + "setpriority", + "setregid", + "setregid32", + "setresgid", + "setresgid32", + "setresuid", + "setresuid32", + "setreuid", + "setreuid32", + "setrlimit", + "set_robust_list", + "setsid", + "setsockopt", + "set_thread_area", + "set_tid_address", + "setuid", + "setuid32", + "setxattr", + "shmat", + "shmctl", + "shmdt", + "shmget", + "shutdown", + "sigaltstack", + "signalfd", + "signalfd4", + "sigprocmask", + "sigreturn", + "socketcall", + "socketpair", + "splice", + "stat", + "stat64", + "statfs", + "statfs64", + "statx", + "symlink", + "symlinkat", + "sync", + "sync_file_range", + "syncfs", + "sysinfo", + "tee", + "tgkill", + "time", + "timer_create", + "timer_delete", + "timer_getoverrun", + "timer_gettime", + "timer_gettime64", + "timer_settime", + "timer_settime64", + "timerfd_create", + "timerfd_gettime", + "timerfd_gettime64", + "timerfd_settime", + "timerfd_settime64", + "times", + "tkill", + "truncate", + "truncate64", + "ugetrlimit", + "umask", + "uname", + "unlink", + "unlinkat", + "utime", + "utimensat", + "utimensat_time64", + "utimes", + "vfork", + "vmsplice", + "wait4", + "waitid", + "waitpid", + "write", + "writev" + ], + "action": "SCMP_ACT_ALLOW" + }, + { + "names": [ + "process_vm_readv", + "process_vm_writev", + "ptrace" + ], + "action": "SCMP_ACT_ALLOW", + "includes": { + "minKernel": "4.8" + } + }, + { + "names": [ + "socket" + ], + "action": "SCMP_ACT_ALLOW", + "args": [ + { + "index": 0, + "value": 40, + "op": "SCMP_CMP_NE" + } + ] + }, + { + "names": [ + "personality" + ], + "action": "SCMP_ACT_ALLOW", + "args": [ + { + "index": 0, + "value": 0, + "op": "SCMP_CMP_EQ" + } + ] + }, + { + "names": [ + "personality" + ], + "action": "SCMP_ACT_ALLOW", + "args": [ + { + "index": 0, + "value": 8, + "op": "SCMP_CMP_EQ" + } + ] + }, + { + "names": [ + "personality" + ], + "action": "SCMP_ACT_ALLOW", + "args": [ + { + "index": 0, + "value": 131072, + "op": "SCMP_CMP_EQ" + } + ] + }, + { + "names": [ + "personality" + ], + "action": "SCMP_ACT_ALLOW", + "args": [ + { + "index": 0, + "value": 131080, + "op": "SCMP_CMP_EQ" + } + ] + }, + { + "names": [ + "personality" + ], + "action": "SCMP_ACT_ALLOW", + "args": [ + { + "index": 0, + "value": 4294967295, + "op": "SCMP_CMP_EQ" + } + ] + }, + { + "names": [ + "sync_file_range2", + "swapcontext" + ], + "action": "SCMP_ACT_ALLOW", + "includes": { + "arches": [ + "ppc64le" + ] + } + }, + { + "names": [ + "arm_fadvise64_64", + "arm_sync_file_range", + "sync_file_range2", + "breakpoint", + "cacheflush", + "set_tls" + ], + "action": "SCMP_ACT_ALLOW", + "includes": { + "arches": [ + "arm", + "arm64" + ] + } + }, + { + "names": [ + "arch_prctl" + ], + "action": "SCMP_ACT_ALLOW", + "includes": { + "arches": [ + "amd64", + "x32" + ] + } + }, + { + "names": [ + "modify_ldt" + ], + "action": "SCMP_ACT_ALLOW", + "includes": { + "arches": [ + "amd64", + "x32", + "x86" + ] + } + }, + { + "names": [ + "s390_pci_mmio_read", + "s390_pci_mmio_write", + "s390_runtime_instr" + ], + "action": "SCMP_ACT_ALLOW", + "includes": { + "arches": [ + "s390", + "s390x" + ] + } + }, + { + "names": [ + "riscv_flush_icache" + ], + "action": "SCMP_ACT_ALLOW", + "includes": { + "arches": [ + "riscv64" + ] + } + }, + { + "names": [ + "open_by_handle_at" + ], + "action": "SCMP_ACT_ALLOW", + "includes": { + "caps": [ + "CAP_DAC_READ_SEARCH" + ] + } + }, + { + "names": [ + "bpf", + "clone", + "clone3", + "fanotify_init", + "fsconfig", + "fsmount", + "fsopen", + "fspick", + "lookup_dcookie", + "mount", + "mount_setattr", + "move_mount", + "open_tree", + "perf_event_open", + "quotactl", + "quotactl_fd", + "setdomainname", + "sethostname", + "setns", + "syslog", + "umount", + "umount2", + "unshare" + ], + "action": "SCMP_ACT_ALLOW", + "includes": { + "caps": [ + "CAP_SYS_ADMIN" + ] + } + }, + { + "names": [ + "clone" + ], + "action": "SCMP_ACT_ALLOW", + "args": [ + { + "index": 0, + "value": 2114060288, + "op": "SCMP_CMP_MASKED_EQ" + } + ], + "excludes": { + "caps": [ + "CAP_SYS_ADMIN" + ], + "arches": [ + "s390", + "s390x" + ] + } + }, + { + "names": [ + "clone" + ], + "action": "SCMP_ACT_ALLOW", + "args": [ + { + "index": 1, + "value": 2114060288, + "op": "SCMP_CMP_MASKED_EQ" + } + ], + "comment": "s390 parameter ordering for clone is different", + "includes": { + "arches": [ + "s390", + "s390x" + ] + }, + "excludes": { + "caps": [ + "CAP_SYS_ADMIN" + ] + } + }, + { + "names": [ + "clone3" + ], + "action": "SCMP_ACT_ERRNO", + "errnoRet": 38, + "excludes": { + "caps": [ + "CAP_SYS_ADMIN" + ] + } + }, + { + "names": [ + "reboot" + ], + "action": "SCMP_ACT_ALLOW", + "includes": { + "caps": [ + "CAP_SYS_BOOT" + ] + } + }, + { + "names": [ + "chroot" + ], + "action": "SCMP_ACT_ALLOW", + "includes": { + "caps": [ + "CAP_SYS_CHROOT" + ] + } + }, + { + "names": [ + "delete_module", + "init_module", + "finit_module" + ], + "action": "SCMP_ACT_ALLOW", + "includes": { + "caps": [ + "CAP_SYS_MODULE" + ] + } + }, + { + "names": [ + "acct" + ], + "action": "SCMP_ACT_ALLOW", + "includes": { + "caps": [ + "CAP_SYS_PACCT" + ] + } + }, + { + "names": [ + "kcmp", + "pidfd_getfd", + "process_madvise", + "process_vm_readv", + "process_vm_writev", + "ptrace" + ], + "action": "SCMP_ACT_ALLOW", + "includes": { + "caps": [ + "CAP_SYS_PTRACE" + ] + } + }, + { + "names": [ + "iopl", + "ioperm" + ], + "action": "SCMP_ACT_ALLOW", + "includes": { + "caps": [ + "CAP_SYS_RAWIO" + ] + } + }, + { + "names": [ + "settimeofday", + "stime", + "clock_settime", + "clock_settime64" + ], + "action": "SCMP_ACT_ALLOW", + "includes": { + "caps": [ + "CAP_SYS_TIME" + ] + } + }, + { + "names": [ + "vhangup" + ], + "action": "SCMP_ACT_ALLOW", + "includes": { + "caps": [ + "CAP_SYS_TTY_CONFIG" + ] + } + }, + { + "names": [ + "get_mempolicy", + "mbind", + "set_mempolicy", + "set_mempolicy_home_node" + ], + "action": "SCMP_ACT_ALLOW", + "includes": { + "caps": [ + "CAP_SYS_NICE" + ] + } + }, + { + "names": [ + "syslog" + ], + "action": "SCMP_ACT_ALLOW", + "includes": { + "caps": [ + "CAP_SYSLOG" + ] + } + }, + { + "names": [ + "bpf" + ], + "action": "SCMP_ACT_ALLOW", + "includes": { + "caps": [ + "CAP_BPF" + ] + } + }, + { + "names": [ + "perf_event_open" + ], + "action": "SCMP_ACT_ALLOW", + "includes": { + "caps": [ + "CAP_PERFMON" + ] + } + } + ] +} diff --git a/ttcn3-asterisk-ims-ue-test/Dockerfile b/ttcn3-asterisk-ims-ue-test/Dockerfile index 1a2f8aa..3f37803 100644 --- a/ttcn3-asterisk-ims-ue-test/Dockerfile +++ b/ttcn3-asterisk-ims-ue-test/Dockerfile @@ -8,6 +8,7 @@ RUN ttcn3-docker-prepare "$OSMO_TTCN3_BRANCH" asterisk VOLUME /data -COPY Asterisk_Tests.cfg /data/Asterisk_Tests.cfg +COPY ttcn3/Asterisk_Tests.cfg /data/Asterisk_Tests.cfg +COPY ttcn3/ttcn3.sh /data/ttcn3.sh CMD ttcn3-docker-run asterisk Asterisk_Tests diff --git a/ttcn3-asterisk-ims-ue-test/asterisk/asterisk.sh b/ttcn3-asterisk-ims-ue-test/asterisk/asterisk.sh index b31015f..4dbbe93 100755 --- a/ttcn3-asterisk-ims-ue-test/asterisk/asterisk.sh +++ b/ttcn3-asterisk-ims-ue-test/asterisk/asterisk.sh @@ -2,8 +2,15 @@ set +e set -x +if [[ -z "${DNS_IPADDR}" ]]; then + echo "env var DNS_IPADDR undefined!" + exit 1 +fi + ASTERISK_CFG_PATH="/etc/asterisk" +echo "nameserver $DNS_IPADDR" > /etc/resolv.conf + #rm -rf "${ASTERISK_CFG_PATH}" #mkdir -p "${ASTERISK_CFG_PATH}" @@ -16,4 +23,16 @@ cp /data/manager.conf "${ASTERISK_CFG_PATH}/" cp /data/logger.conf "${ASTERISK_CFG_PATH}/" cat /data/extensions.conf >>"${ASTERISK_CFG_PATH}/extensions.conf" +echo "Starting codec server..." +/usr/bin/cserver & + +SERVER_NAME="ims.mnc001.mcc238.3gppnetwork.org" +for i in $(seq 30); do + set -e + ping -q -w 3 -c 1 "$SERVER_NAME" && break + set +e + echo "[$i] DNS resolution $SERVER_NAME not ready, waiting..." + sleep 1 +done + /usr/sbin/asterisk -C "${ASTERISK_CFG_PATH}/asterisk.conf" -f -g -vvvvv -ddddd diff --git a/ttcn3-asterisk-ims-ue-test/asterisk/extensions.conf b/ttcn3-asterisk-ims-ue-test/asterisk/extensions.conf index 3c78a2d..e2ec574 100644 --- a/ttcn3-asterisk-ims-ue-test/asterisk/extensions.conf +++ b/ttcn3-asterisk-ims-ue-test/asterisk/extensions.conf @@ -1,7 +1,14 @@ -[get-valid-endpoints] +[globals] +; local SIP UA Channels (PJSIP/50X-*) using the IMS endpoint are put in this group. +; This group is used as a semaphore/mutex by using COUNT_GROUP() on it. +IMS_GROUP=ims_group +; Stores channel name of local SIP UA (PJSIP/50X-*) using the IMS service (in a call) +; This is used to figure out which local SIP UA can create extra calls due to having its other IMS calls on HOLD. +IMS_PEER=none +[get-valid-endpoints-500] +; usage: no arguments, returns DIALGROUP object of registered and valid 050x endpoints exten => s,1,Verbose(5, Entering get-valid-endpoints gosub.) - ; usage: no arguments, returns DIALGROUP object of registered and valid 050x endpoints same => n,Set(ENDPOINT_1_STATE=${DEVICE_STATE(PJSIP/0501)}) same => n,Set(ENDPOINT_2_STATE=${DEVICE_STATE(PJSIP/0502)}) same => n,Set(ENDPOINT_3_STATE=${DEVICE_STATE(PJSIP/0503)}) @@ -17,21 +24,85 @@ exten => s,1,Verbose(5, Entering get-valid-endpoints gosub.) same => n,ExecIf($[${ENDPOINT_4_EXPR} = 0]?Set(DIALGROUP(CALL_VALID_LIST,add)=PJSIP/0504)) same => n,Return(${DIALGROUP(CALL_VALID_LIST)}) + [from-phone] +; Local SIP UA calls 500, broadcast to all other available local SIP UAs: exten => 0500,1,Verbose(5,${EXTEN}: Call all registered pjsips from ${CALLERID(num)}) - same => n,Gosub(get-valid-endpoints,s,1()) + same => n,Gosub(get-valid-endpoints-500,s,1()) same => n,Set(DIALGROUP(CALL_EVERYONE_LIST)=${GOSUB_RETVAL}) same => n,Set(DIALGROUP(CALL_EVERYONE_LIST,del)=PJSIP/${CALLERID(num)}) ; remove the caller same => n,Dial(${DIALGROUP(CALL_EVERYONE_LIST)}) same => n,Hangup(16) +; Local SIP UA calls 50X, call the target local SIP UA: exten => _050X,1,Verbose(5,${EXTEN}: Call pjsip endpoint from ${CALLERID(num)}) same => n,Dial(PJSIP/${EXTEN}) same => n,Hangup(16) -exten => _X,1,Verbose(5,${EXTEN}: Call external number from ${CALLERID(num)}) - same => n,Dial(PJSIP/${EXTEN}@973171) +; MO Call SIP UA -> IMS: +exten => _X.!,1,Verbose(5,${EXTEN}: Call external number from ${CALLERID(num)}, IMS DEVICE_STATE=${DEVICE_STATE(PJSIP/volte_ims)}, IMS_PEER=${GLOBAL(IMS_PEER)}) + ; Allow only 1 MO call towards IMS, or extra ones if the same SIP UA has put previous call(s) on HOLD: + same => n,Set(GROUP()=${GLOBAL(IMS_GROUP)}) + same => n,Set(ALLOW_EXTRA_CALL=$[ $["${DEVICE_STATE(PJSIP/volte_ims)}" == "ONHOLD"] & $["${GLOBAL(IMS_PEER)}" == "PJSIP/${CALLERID(num)}"] ]) + same => n,GotoIf($[ $[ ${GROUP_COUNT(${GLOBAL(IMS_GROUP)})} > 1] & !${ALLOW_EXTRA_CALL} ]?999) + same => n,Set(GLOBAL(IMS_PEER)=PJSIP/${CALLERID(num)}) + same => n,Dial(PJSIP/${EXTEN}@volte_ims) + ; Channel is removed from GROUP() automatically when it is destroyed after the call finishes. + ; It's fine leaving IMS_PEER set since anyway it's only checked in the case where there's a call in place (GROUP_COUNT()>1), + ; so it will be set properly whenever an initial call enters the exclusion zone guarded by GROUP_COUNT(). same => n,Hangup(16) + ; Reject path: + same => 999,Verbose(1,${EXTEN}: VoLTE client already busy (${GROUP_COUNT(${GLOBAL(IMS_GROUP)})}, ${GLOBAL(IMS_PEER)}) rejecting call from SIP UA ${CALLERID(num)}) + same => n,Set(DIALSTATUS=CHANUNAVAIL) + + +[get-valid-endpoints-from-volte-ims] +; usage: no arguments, returns DIALGROUP object of registered and valid 050x endpoints +exten => s,1,Verbose(5, Entering get-valid-endpoints-500 gosub.) + same => n,Set(ENDPOINT_1_STATE=${DEVICE_STATE(PJSIP/0501)}) + same => n,Set(ENDPOINT_2_STATE=${DEVICE_STATE(PJSIP/0502)}) + same => n,Set(ENDPOINT_3_STATE=${DEVICE_STATE(PJSIP/0503)}) + same => n,Set(ENDPOINT_4_STATE=${DEVICE_STATE(PJSIP/0504)}) + same => n,Set(ENDPOINT_1_EXPR=$[$["${ENDPOINT_1_STATE}" = "NOT_INUSE"] | $["${ENDPOINT_1_STATE}" = "ONHOLD"]]) + same => n,Set(ENDPOINT_2_EXPR=$[$["${ENDPOINT_2_STATE}" = "NOT_INUSE"] | $["${ENDPOINT_2_STATE}" = "ONHOLD"]]) + same => n,Set(ENDPOINT_3_EXPR=$[$["${ENDPOINT_3_STATE}" = "NOT_INUSE"] | $["${ENDPOINT_3_STATE}" = "ONHOLD"]]) + same => n,Set(ENDPOINT_4_EXPR=$[$["${ENDPOINT_4_STATE}" = "NOT_INUSE"] | $["${ENDPOINT_4_STATE}" = "ONHOLD"]]) + same => n,Set(DIALGROUP(CALL_VALID_LIST)=) ; clear list + same => n,ExecIf($[${ENDPOINT_1_EXPR} != 0]?Set(DIALGROUP(CALL_VALID_LIST,add)=PJSIP/0501)) + same => n,ExecIf($[${ENDPOINT_2_EXPR} != 0]?Set(DIALGROUP(CALL_VALID_LIST,add)=PJSIP/0502)) + same => n,ExecIf($[${ENDPOINT_3_EXPR} != 0]?Set(DIALGROUP(CALL_VALID_LIST,add)=PJSIP/0503)) + same => n,ExecIf($[${ENDPOINT_4_EXPR} != 0]?Set(DIALGROUP(CALL_VALID_LIST,add)=PJSIP/0504)) + same => n,Return(${DIALGROUP(CALL_VALID_LIST)}) + +[volte-ims-call-established] +; no arguments, SUB to set global variable IMS_PEER to the Channel name of the SIP UA (501-504) using the IMS endpoint +; This SUB (Dial(U())) runs under the Channel context of the SIP UA who answered the MT call. +exten => s,1,Verbose(5, PJSIP/${CALLERID(num)}: Entering volte-ims-call-established gosub.) + same => n,Set(GLOBAL(IMS_PEER)=PJSIP/${CALLERID(num)}) + same => n,Return() + +[volte_ims] + +; MT Call IMS -> SIP UA: +exten => _X.!,1,Verbose(5,${EXTEN}: Call internal number from ${CALLERID(num)}, IMS DEVICE_STATE=${DEVICE_STATE(PJSIP/volte_ims)}, IMS_PEER=${GLOBAL(IMS_PEER)}) + ; If IMS endpoint is already in use, reject it (999): + same => n,Set(GROUP()=${GLOBAL(IMS_GROUP)}) + same => n,GotoIf($[${GROUP_COUNT(${GLOBAL(IMS_GROUP)})} > 1]?999) + ; Figure out SIP UAs to ring: + same => n,Gosub(get-valid-endpoints-from-volte-ims,s,1()) + same => n,Set(DIALGROUP(CALL_EVERYONE_LIST)=${GOSUB_RETVAL}) + ; Process call establishment: + same => n,WaitForPrecondition(10,2000) + ; OUTBOUND_GROUP var tells Dial() app to set the GROUP() of the newly created channel (501-504) instead of the calling channel (volte_ims). + ; This way IMS_GROUP always contains channels PJSIP/50X: + same => n,Set(OUTBOUND_GROUP=${GLOBAL(IMS_GROUP)}) + ; Once a SIP UA answers the call, volte-ims-call-established takes care of updating IMS_PEER with the new PJSIP/50X channel name: + same => n,Dial(${DIALGROUP(CALL_EVERYONE_LIST)},,U(volte-ims-call-established)) + ; Channel is removed from GROUP() automatically when it is destroyed after the call finishes. + same => n,Hangup(16) + ; Reject path: + same => 999,Verbose(1,${EXTEN}: VoLTE client already busy (${GROUP_COUNT(${GLOBAL(IMS_GROUP)})}, ${GLOBAL(IMS_PEER)}) rejecting call from IMS ${CALLERID(num)}) + same => n,Set(DIALSTATUS=BUSY) diff --git a/ttcn3-asterisk-ims-ue-test/asterisk/logger.conf b/ttcn3-asterisk-ims-ue-test/asterisk/logger.conf index 292e624..47a91b1 100644 --- a/ttcn3-asterisk-ims-ue-test/asterisk/logger.conf +++ b/ttcn3-asterisk-ims-ue-test/asterisk/logger.conf @@ -1,3 +1,6 @@ +[general] +dateformat = %F %T.%3q + [logfiles] ;messages = notice,warning,error ;console = verbose,notice,warning,error,debug,trace,dtmf diff --git a/ttcn3-asterisk-ims-ue-test/asterisk/manager.conf b/ttcn3-asterisk-ims-ue-test/asterisk/manager.conf index 67f7b02..a5cbe11 100644 --- a/ttcn3-asterisk-ims-ue-test/asterisk/manager.conf +++ b/ttcn3-asterisk-ims-ue-test/asterisk/manager.conf @@ -8,6 +8,6 @@ bindaddr = 172.18.11.10 [test_user] secret = 1234 ;deny=0.0.0.0/0.0.0.0 -permit=172.18.11.103/255.255.0.0 +permit=172.18.11.103/24 read = all,system,call,log,verbose,command,agent,user write = all,system,call,log,verbose,command,agent,user diff --git a/ttcn3-asterisk-ims-ue-test/asterisk/pjsip.conf b/ttcn3-asterisk-ims-ue-test/asterisk/pjsip.conf index 07f68ba..c1403b4 100644 --- a/ttcn3-asterisk-ims-ue-test/asterisk/pjsip.conf +++ b/ttcn3-asterisk-ims-ue-test/asterisk/pjsip.conf @@ -1,3 +1,6 @@ +[global] +allow_sending_180_after_183=yes + ;############ ; LOCAL SIP ;############ @@ -77,44 +80,58 @@ password=secret type=transport protocol=tcp bind=172.18.11.10:5060 -ims_port_c=5555 -ims_port_s=5060 +sec_port_c_min=5555 +sec_port_c_max=5559 +sec_port_s_min=5060 +sec_port_s_max=5069 +p_access_network_info=3GPP-E-UTRAN-FDD\; utran-cell-id-3gpp=2380100010000101 [volte_ims] type=registration transport=transport-tcp outbound_auth=volte_ims -server_uri=sip:172.18.11.103 -client_uri=sip:238010000090828@172.18.11.103 +server_uri=sip:ims.mnc001.mcc238.3gppnetwork.org +client_uri=sip:238010000090828@ims.mnc001.mcc238.3gppnetwork.org retry_interval=30 fatal_retry_interval=30 expiration=600000 -ims_aka=yes +volte=yes contact_user=volte_ims +imei=35876110-027790-0 endpoint=volte_ims line=yes +manual_register=yes [volte_ims] type=endpoint context=volte_ims disallow=all allow=vevs +transport=transport-tcp outbound_auth=volte_ims aors=volte_ims rewrite_contact=yes -from_user=238010000090828 -from_domain=172.18.11.103 +direct_media=no +volte=yes +100rel=peer_supported +moh_passthrough=yes [volte_ims] type=auth auth_type=ims_aka -username=238010000090828@172.18.11.103 -usim_ami=no +username=238010000090828@ims.mnc001.mcc238.3gppnetwork.org +usim_ami=yes usim_opc=775A1F887D2AD66F9719C2C79F847B50 usim_k=D534E07854B75E475C667A856AA31F9C usim_sqn=000000011000 [volte_ims] type=aor -contact=sip:238010000090828@172.18.11.103 +contact=sip:238010000090828@ims.mnc001.mcc238.3gppnetwork.org max_contacts=1 + +[volte_ims] +type=identify +endpoint=volte_ims +match=ims.mnc001.mcc238.3gppnetwork.org +;match=172.18.11.10 diff --git a/ttcn3-asterisk-ims-ue-test/dnsmasq/dnsmasq.conf b/ttcn3-asterisk-ims-ue-test/dnsmasq/dnsmasq.conf new file mode 100644 index 0000000..63a8566 --- /dev/null +++ b/ttcn3-asterisk-ims-ue-test/dnsmasq/dnsmasq.conf @@ -0,0 +1,15 @@ +#log all dns queries +log-queries +#dont use hosts nameservers +no-resolv +listen-address=::1,fd02:db8:11::200,127.0.0.1,172.18.11.200 + +# PCSCF IP! +host-record=ims.mnc001.mcc238.3gppnetwork.org,172.18.11.104 +srv-host=_sip._tcp.ims.mnc001.mcc238.3gppnetwork.org,ims.mnc001.mcc238.3gppnetwork.org,5060 +srv-host=_sip._udp.ims.mnc001.mcc238.3gppnetwork.org,ims.mnc001.mcc238.3gppnetwork.org,5060 + +#naptr-record= <name> ,<order>,<preference>,<flags>,<service>,<regexp>[,<replacement>] +#naptr-record=ims.mnc001.mcc238.3gppnetwork.org, 2, 0 ,s ,SIP+D2U ,"" ,_sip._udp.ims.mnc001.mcc238.3gppnetwork.org +naptr-record=ims.mnc001.mcc238.3gppnetwork.org,0,0,s,SIP+D2U,!(.*)!_sip._udp.\1! +naptr-record=ims.mnc001.mcc238.3gppnetwork.org,0,0,s,SIP+D2T,!(.*)!_sip._tcp.\1!
\ No newline at end of file diff --git a/ttcn3-asterisk-ims-ue-test/jenkins.sh b/ttcn3-asterisk-ims-ue-test/jenkins.sh index 98d27b8..0707cb9 100755 --- a/ttcn3-asterisk-ims-ue-test/jenkins.sh +++ b/ttcn3-asterisk-ims-ue-test/jenkins.sh @@ -1,48 +1,143 @@ #!/bin/sh +TEST_CONFIGS_ALL="ipv4 ipv6" +TEST_CONFIGS="${TEST_CONFIGS:-$TEST_CONFIGS_ALL}" + . ../jenkins-common.sh IMAGE_SUFFIX="${IMAGE_SUFFIX:-master}" docker_images_require \ "asterisk-$IMAGE_SUFFIX" \ - "ttcn3-asterisk-ims-ue-test" + "ttcn3-asterisk-ims-ue-test" \ + "dnsmasq" set_clean_up_trap set -e -mkdir $VOL_BASE_DIR/asterisk-ims-ue-tester -mkdir $VOL_BASE_DIR/asterisk-ims-ue-tester/unix -cp Asterisk_Tests.cfg $VOL_BASE_DIR/asterisk-ims-ue-tester/ -write_mp_osmo_repo "$VOL_BASE_DIR/asterisk-ims-ue-tester/Asterisk_Tests.cfg" +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"/asterisk-ims-ue-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 dnsmasq in background +start_dnsmasq() { + local test_config="$1" + echo Starting container with dnsmasq + docker run --rm \ + --cap-add=NET_ADMIN \ + $(docker_network_params $SUBNET $DNS_IP_SUFFIX) \ + --ulimit core=-1 \ + -v "$VOL_BASE_DIR/dnsmasq-${test_config}:/data" \ + --name ${BUILD_TAG}-dnsmasq -d \ + $DOCKER_ARGS \ + $REPO_USER/dnsmasq +} -mkdir $VOL_BASE_DIR/asterisk -cp asterisk/* $VOL_BASE_DIR/asterisk/ +# Start container with Asterisk in background +start_asterisk() { + local test_config="$1" + echo Starting container with Asterisk + docker run --rm \ + --cap-add=NET_ADMIN \ + --cap-add=SYS_RESOURCE \ + $(docker_network_params $SUBNET $ASTERISK_IP_SUFFIX) \ + -e "DNS_IPADDR=${DNS_IPADDR}" \ + --ulimit core=-1 \ + -v "$VOL_BASE_DIR/asterisk-${test_config}:/data" \ + --name "${BUILD_TAG}-asterisk" -d \ + $DOCKER_ARGS \ + "$REPO_USER/asterisk-$IMAGE_SUFFIX" \ + /bin/sh -c "/data/asterisk.sh >/data/asterisk.console.log 2>&1" +} + +# Start docker container with testsuite in foreground +start_testsuite() { + local test_config="$1" + echo Starting container with Asterisk testsuite + docker run --rm \ + --cap-add=NET_ADMIN \ + --cap-add=SYS_RESOURCE \ + $(docker_network_params $SUBNET $TTCN3_IP_SUFFIX) \ + --ulimit core=-1 \ + -e "TTCN3_PCAP_PATH=/data" \ + -e "EXTRA_IPADDR=${EXTRA_IPADDR}" \ + -e "ASTERISK_IPADDR=${ASTERISK_IPADDR}" \ + -v "$VOL_BASE_DIR/asterisk-ims-ue-tester-${test_config}:/data" \ + --name "${BUILD_TAG}-ttcn3-asterisk-ims-ue-test" \ + $DOCKER_ARGS \ + "$REPO_USER/ttcn3-asterisk-ims-ue-test" \ + /data/ttcn3.sh +} network_create -network_replace_subnet_in_configs - -echo Starting container with Asterisk -docker run --rm \ - --cap-add=NET_ADMIN \ - --cap-add=SYS_RESOURCE \ - $(docker_network_params $SUBNET 10) \ - --ulimit core=-1 \ - -v $VOL_BASE_DIR/asterisk:/data \ - --name ${BUILD_TAG}-asterisk -d \ - $DOCKER_ARGS \ - $REPO_USER/asterisk-$IMAGE_SUFFIX \ - /bin/sh -c "/data/asterisk.sh >/data/asterisk.console.log 2>&1" - -# Leave some time for asterisk to start: -sleep 3 - -echo Starting container with Asterisk testsuite -docker run --rm \ - --cap-add=NET_ADMIN \ - --cap-add=SYS_RESOURCE \ - $(docker_network_params $SUBNET 103) \ - --ulimit core=-1 \ - -e "TTCN3_PCAP_PATH=/data" \ - -v $VOL_BASE_DIR/asterisk-ims-ue-tester:/data \ - --name ${BUILD_TAG}-ttcn3-asterisk-ims-ue-test \ - $DOCKER_ARGS \ - $REPO_USER/ttcn3-asterisk-ims-ue-test + +for i in $TEST_CONFIGS; do + if ! test_config_enabled "$i"; then + continue + fi + + mkdir "${VOL_BASE_DIR}/dnsmasq-${i}" + cp dnsmasq/* "${VOL_BASE_DIR}/dnsmasq-${i}/" + + mkdir "${VOL_BASE_DIR}/asterisk-ims-ue-tester-${i}" + mkdir "${VOL_BASE_DIR}/asterisk-ims-ue-tester-${i}/unix" + cp "ttcn3/ttcn3.sh" "${VOL_BASE_DIR}/asterisk-ims-ue-tester-${i}/" + cp "ttcn3/Asterisk_Tests.cfg" "${VOL_BASE_DIR}/asterisk-ims-ue-tester-${i}/" + write_mp_osmo_repo "${VOL_BASE_DIR}/asterisk-ims-ue-tester-${i}/Asterisk_Tests.cfg" + + mkdir "$VOL_BASE_DIR/asterisk-${i}" + cp asterisk/* "$VOL_BASE_DIR/asterisk-${i}/" + + network_replace_subnet_in_configs + ASTERISK_IP_SUFFIX="10" + TTCN3_IP_SUFFIX="103" + IMSCORE_IP_SUFFIX="104" + DNS_IP_SUFFIX="200" + + if [ "$i" = "ipv4" ]; then + NETMASK_PREFIX="24" + SUBNET_IP_PREFIX="$SUB4_PREFIX.$SUBNET" + ASTERISK_IPADDR="${SUBNET_IP_PREFIX}.${ASTERISK_IP_SUFFIX}" + DNS_IPADDR="${SUBNET_IP_PREFIX}.${DNS_IP_SUFFIX}" + EXTRA_IPADDR="${SUBNET_IP_PREFIX}.${IMSCORE_IP_SUFFIX}/${NETMASK_PREFIX}" + elif [ "$i" = "ipv6" ]; then + NETMASK_PREFIX="64" + SUBNET_IP_PREFIX="$SUB6_PREFIX:$SUBNET" + ASTERISK_IPADDR="${SUBNET_IP_PREFIX}::${ASTERISK_IP_SUFFIX}" + DNS_IPADDR="${SUBNET_IP_PREFIX}::${DNS_IP_SUFFIX}" + EXTRA_IPADDR="${SUBNET_IP_PREFIX}::${IMSCORE_IP_SUFFIX}/${NETMASK_PREFIX}" + + # Replace IPv4 addresses with IPv6 ones: + REPLACE_V4_TO_V6_EXPR="s,${SUB4_PREFIX}\.${SUBNET}\.,${SUB6_PREFIX}:${SUBNET}::,g" + REPLACE_V4_TO_V6_PORT_EXPR="s,${SUB4_PREFIX}\.${SUBNET}\.${ASTERISK_IP_SUFFIX}:,[${ASTERISK_IPADDR}]:,g" + sed -i -E -e "${REPLACE_V4_TO_V6_EXPR}" "${VOL_BASE_DIR}/dnsmasq-${i}"/*.conf + sed -i -E -e "s,${SUB4_PREFIX}\.${SUBNET}\.${TTCN3_IP_SUFFIX}/24,${SUB6_PREFIX}:${SUBNET}::${TTCN3_IP_SUFFIX}/${NETMASK_PREFIX},g" "${VOL_BASE_DIR}/asterisk-${i}"/manager.conf + sed -i -E -e "s,${SUB4},${SUB6},g" "${VOL_BASE_DIR}/asterisk-${i}"/*.conf + sed -i -E -e "${REPLACE_V4_TO_V6_PORT_EXPR}" "${VOL_BASE_DIR}/asterisk-${i}"/*.conf + sed -i -E -e "${REPLACE_V4_TO_V6_EXPR}" "${VOL_BASE_DIR}/asterisk-${i}"/*.conf + sed -i -E -e "${REPLACE_V4_TO_V6_EXPR}" "${VOL_BASE_DIR}/asterisk-ims-ue-tester-${i}"/*.cfg + fi + + start_dnsmasq "$i" + start_asterisk "$i" + start_testsuite "$i" + + docker_kill_wait "$BUILD_TAG"-asterisk || true + docker_kill_wait "$BUILD_TAG"-dnsmasq || true + # For some reason we need to wait a bit until recreating dnsmasq docker, + # otherwise it says "container name X is already in use by container Y": + sleep 1 +done diff --git a/ttcn3-asterisk-ims-ue-test/Asterisk_Tests.cfg b/ttcn3-asterisk-ims-ue-test/ttcn3/Asterisk_Tests.cfg index d183cad..52cf985 100644 --- a/ttcn3-asterisk-ims-ue-test/Asterisk_Tests.cfg +++ b/ttcn3-asterisk-ims-ue-test/ttcn3/Asterisk_Tests.cfg @@ -9,7 +9,7 @@ Asterisk_Tests_LOCAL_SIP_EMU.SIP.default_local_address := "172.18.11.103" Asterisk_Tests_LOCAL_SIP_EMU.SIP.local_sip_port := "5061" Asterisk_Tests_LOCAL_SIP_EMU.SIP.default_dest_address := "172.18.11.10" Asterisk_Tests_LOCAL_SIP_EMU.SIP.default_dest_port := "5094" -Asterisk_Tests_IMS_SIP_EMU.SIP.default_local_address := "172.18.11.103" +Asterisk_Tests_IMS_SIP_EMU.SIP.default_local_address := "172.18.11.104" Asterisk_Tests_IMS_SIP_EMU.SIP.local_sip_port := "5060" # Disabled for Server mode: #Asterisk_Tests_IMS_SIP_EMU.SIP.default_dest_address := "172.18.11.10" @@ -20,9 +20,12 @@ Asterisk_Tests.mp_local_sip_host := "172.18.11.103" Asterisk_Tests.mp_remote_sip_host := "172.18.11.10" Asterisk_Tests.mp_local_sip_port := 5061 Asterisk_Tests.mp_remote_sip_port := 5094 -Asterisk_Tests.mp_local_ims_host := "172.18.11.103" +Asterisk_Tests.mp_local_ims_host := "172.18.11.104" Asterisk_Tests.mp_local_ims_port := 5060 +Asterisk_Tests.mp_ims_domain := "ims.mnc001.mcc238.3gppnetwork.org" Asterisk_Tests.mp_ims_imsi := "238010000090828" +Asterisk_Tests.mp_ims_imei := "35876110-027790-0" +Asterisk_Tests.mp_ami_local_host := "172.18.11.103" Asterisk_Tests.mp_ami_remote_host := "172.18.11.10" IMS_ConnectionHandler.mp_ipsec_setup_script_path := "/osmo-ttcn3-hacks/asterisk/IMS_ipsec_setup.sh" diff --git a/ttcn3-asterisk-ims-ue-test/ttcn3/ttcn3.sh b/ttcn3-asterisk-ims-ue-test/ttcn3/ttcn3.sh new file mode 100755 index 0000000..5787d1f --- /dev/null +++ b/ttcn3-asterisk-ims-ue-test/ttcn3/ttcn3.sh @@ -0,0 +1,25 @@ +#!/bin/bash +set +e +set -x + +if [[ -z "${EXTRA_IPADDR}" ]]; then + echo "env var EXTRA_IPADDR undefined!" + exit 1 +fi + +ip addr add "${EXTRA_IPADDR}" dev eth0 + +# https://bugzilla.redhat.com/show_bug.cgi?id=782042 +# IPv6 addresses may take an extra while to be available ('tentative' state): +while [ -n "$(ip -6 addr show tentative)" ]; do sleep 1; done + +# Wait for Asterisk to be ready, which in turn may be waiting for dnsmasq to be ready... +for i in $(seq 100); do + set -e + netcat -z -v "${ASTERISK_IPADDR}" 5038 && break + set +e + echo "[$i] Asterisk AMI ${ASTERISK_IPADDR} (port 5038) not ready, waiting..." + sleep 1 +done + +ttcn3-docker-run asterisk Asterisk_Tests diff --git a/ttcn3-bsc-test-vamos/jenkins.sh b/ttcn3-bsc-test-vamos/jenkins.sh index 219d813..e9a130d 100755 --- a/ttcn3-bsc-test-vamos/jenkins.sh +++ b/ttcn3-bsc-test-vamos/jenkins.sh @@ -59,7 +59,7 @@ for i in `seq 0 2`; do /bin/sh -c "/usr/local/bin/respawn.sh \ osmo-bts-omldummy \ $BTS_FEATURES \ - 172.18.$SUBNET.20 \ + $SUB4_PREFIX.$SUBNET.20 \ $((i + 1234)) \ 1 \ >>/data/osmo-bts-omldummy-${i}.log 2>&1" @@ -70,7 +70,7 @@ docker run --rm \ $(docker_network_params $SUBNET 203) \ --ulimit core=-1 \ -e "TTCN3_PCAP_PATH=/data" \ - -e "OSMO_SUT_HOST=172.18.$SUBNET.20" \ + -e "OSMO_SUT_HOST=$SUB4_PREFIX.$SUBNET.20" \ -e "OSMO_SUT_PORT=4242" \ -v $VOL_BASE_DIR/bsc-tester:/data \ --name ${BUILD_TAG}-ttcn3-bsc-test \ diff --git a/ttcn3-bsc-test/jenkins.sh b/ttcn3-bsc-test/jenkins.sh index 0a3128c..f0274ad 100755 --- a/ttcn3-bsc-test/jenkins.sh +++ b/ttcn3-bsc-test/jenkins.sh @@ -59,7 +59,7 @@ for i in "0 1" "1 1" "2 4"; do /bin/sh -c "/usr/local/bin/respawn.sh \ osmo-bts-omldummy \ $BTS_FEATURES \ - 172.18.$SUBNET.20 \ + $SUB4_PREFIX.$SUBNET.20 \ $(($1 + 1234)) \ $2 \ >>/data/osmo-bts-omldummy-$1.log 2>&1" @@ -74,7 +74,7 @@ docker run --rm \ $(docker_network_params $SUBNET 203) \ --ulimit core=-1 \ -e "TTCN3_PCAP_PATH=/data" \ - -e "OSMO_SUT_HOST=172.18.$SUBNET.20" \ + -e "OSMO_SUT_HOST=$SUB4_PREFIX.$SUBNET.20" \ -e "OSMO_SUT_PORT=4242" \ -v $VOL_BASE_DIR/bsc-tester:/data \ --name ${BUILD_TAG}-ttcn3-bsc-test \ diff --git a/ttcn3-bsc-test/osmo-bsc.cfg b/ttcn3-bsc-test/osmo-bsc.cfg index 7cd8e1d..ceea9c8 100644 --- a/ttcn3-bsc-test/osmo-bsc.cfg +++ b/ttcn3-bsc-test/osmo-bsc.cfg @@ -43,6 +43,7 @@ log stderr logging level lsua notice logging level lm3ua notice logging level lmgcp notice + logging level set-all debug ! stats interval 0 stats reporter statsd diff --git a/ttcn3-bsc-test/sccplite/BSC_Tests.cfg b/ttcn3-bsc-test/sccplite/BSC_Tests.cfg index 5103e2e..8b9ff84 100644 --- a/ttcn3-bsc-test/sccplite/BSC_Tests.cfg +++ b/ttcn3-bsc-test/sccplite/BSC_Tests.cfg @@ -31,3 +31,4 @@ BSC_Tests.mp_enable_lcs_tests := false; [EXECUTE] BSC_Tests.control +#BSC_Tests.TC_assignment_codec_amr_f diff --git a/ttcn3-bts-test/jenkins.sh b/ttcn3-bts-test/jenkins.sh index 38e3760..40c00ac 100755 --- a/ttcn3-bts-test/jenkins.sh +++ b/ttcn3-bts-test/jenkins.sh @@ -72,11 +72,11 @@ start_fake_trx() { --log-file-level DEBUG \ --log-file-time \ --log-level INFO \ - -R 172.18.$SUBNET.20 \ - -r 172.18.$SUBNET.22 \ - --trx TRX1@172.18.$SUBNET.20:5700/1 \ - --trx TRX2@172.18.$SUBNET.20:5700/2 \ - --trx TRX3@172.18.$SUBNET.20:5700/3 \ + -R $SUB4_PREFIX.$SUBNET.20 \ + -r $SUB4_PREFIX.$SUBNET.22 \ + --trx TRX1@$SUB4_PREFIX.$SUBNET.20:5700/1 \ + --trx TRX2@$SUB4_PREFIX.$SUBNET.20:5700/2 \ + --trx TRX3@$SUB4_PREFIX.$SUBNET.20:5700/3 \ >>/data/fake_trx.out 2>&1" } @@ -91,7 +91,7 @@ start_trxcon() { $DOCKER_ARGS \ $REPO_USER/osmocom-bb-host-master \ /bin/sh -c "trxcon \ - -i 172.18.$SUBNET.21 \ + -i $SUB4_PREFIX.$SUBNET.21 \ -s /data/unix/osmocom_l2 \ >>/data/trxcon.log 2>&1" } @@ -116,7 +116,7 @@ start_testsuite() { $(docker_network_params $SUBNET 10) \ --ulimit core=-1 \ -e "TTCN3_PCAP_PATH=/data" \ - -e "OSMO_SUT_HOST=172.18.$SUBNET.20" \ + -e "OSMO_SUT_HOST=$SUB4_PREFIX.$SUBNET.20" \ -e "OSMO_SUT_PORT=4241" \ -v $VOL_BASE_DIR/bts-tester-${variant}:/data \ -v $VOL_BASE_DIR/unix:/data/unix \ @@ -126,7 +126,7 @@ start_testsuite() { } set_pcuif_version() { - if image_suffix_is_2023q1; then + if osmo_repo_is_2023q1; then sed -i 's/PCUIF_Types.mp_pcuif_version := 12/PCUIF_Types.mp_pcuif_version := 10/g' $1 fi } diff --git a/ttcn3-bts-test/oml/BTS_Tests.cfg b/ttcn3-bts-test/oml/BTS_Tests.cfg index 1311336..b7f9403 100644 --- a/ttcn3-bts-test/oml/BTS_Tests.cfg +++ b/ttcn3-bts-test/oml/BTS_Tests.cfg @@ -24,4 +24,7 @@ PCUIF_Types.mp_pcuif_version := 12; [MAIN_CONTROLLER] [EXECUTE] -BTS_Tests_OML.control +#BTS_Tests_OML.control +#BTS_Tests_OML.TC_bts_opstart +#BTS_Tests_OML.TC_bts_opstart +BTS_Tests_OML.TC_ipa_osmo_pcu_anr_fwd diff --git a/ttcn3-cbc-test/CBC_Tests.cfg b/ttcn3-cbc-test/CBC_Tests.cfg index 6e7ab21..c32a8e9 100644 --- a/ttcn3-cbc-test/CBC_Tests.cfg +++ b/ttcn3-cbc-test/CBC_Tests.cfg @@ -16,3 +16,7 @@ CBC_Tests.mp_cbc_host := "172.18.27.20"; [EXECUTE] CBC_Tests.control +#CBC_Tests.TC_ecbe_create_delete_cgi +#CBC_Tests.TC_ecbe_create_delete_bsc_server +#CBC_Tests.TC_cell_failure_restart_active_bsc +#CBC_Tests.TC_cell_failure_restart_active_mme diff --git a/ttcn3-cbc-test/jenkins.sh b/ttcn3-cbc-test/jenkins.sh index 6026df0..7ce3ba8 100755 --- a/ttcn3-cbc-test/jenkins.sh +++ b/ttcn3-cbc-test/jenkins.sh @@ -26,14 +26,15 @@ docker run --rm \ -v $VOL_BASE_DIR/cbc:/data \ --name ${BUILD_TAG}-cbc -d \ $DOCKER_ARGS \ - $REPO_USER/osmo-cbc-$IMAGE_SUFFIX + $REPO_USER/osmo-cbc-$IMAGE_SUFFIX \ + /bin/sh -c "gdb -ex 'run' -ex 'bt' --arg osmo-cbc -c /data/osmo-cbc.cfg >/data/osmo-cbc.log 2>&1" echo Starting container with CBC testsuite docker run --rm \ $(docker_network_params $SUBNET 100) \ --ulimit core=-1 \ -e "TTCN3_PCAP_PATH=/data" \ - -e "OSMO_SUT_HOST=172.18.$SUBNET.20" \ + -e "OSMO_SUT_HOST=$SUB4_PREFIX.$SUBNET.20" \ -e "OSMO_SUT_PORT=4264" \ -v $VOL_BASE_DIR/cbc-tester:/data \ --name ${BUILD_TAG}-ttcn3-cbc-test \ diff --git a/ttcn3-epdg-test/epdg.sh b/ttcn3-epdg-test/epdg.sh index 2614bf9..3de913d 100755 --- a/ttcn3-epdg-test/epdg.sh +++ b/ttcn3-epdg-test/epdg.sh @@ -11,7 +11,11 @@ ip link add $UE_IFACE type dummy ip addr add $UE_ADDR dev $UE_IFACE ip link set $UE_IFACE up ip rule add from $UE_SUBNET table 45 -ERL_FLAGS='-config /data/osmo-epdg.config' /tmp/osmo-epdg/_build/default/bin/osmo-epdg & +if [ "$IMAGE_SUFFIX" = "latest" ]; then + ERL_FLAGS='-config /data/osmo-epdg.config' /usr/bin/osmo-epdg & +else + ERL_FLAGS='-config /data/osmo-epdg.config' /tmp/osmo-epdg/_build/default/bin/osmo-epdg & +fi MYPID=$! # We cannot set a route for the interface until it is created by osmo-epdg... diff --git a/ttcn3-epdg-test/jenkins.sh b/ttcn3-epdg-test/jenkins.sh index cdd3a5e..0b7edf5 100755 --- a/ttcn3-epdg-test/jenkins.sh +++ b/ttcn3-epdg-test/jenkins.sh @@ -28,6 +28,7 @@ echo Starting container with osmo-epdg docker run --rm \ $(docker_network_params $SUBNET 20) \ -u root \ + -e IMAGE_SUFFIX=$IMAGE_SUFFIX \ --ulimit core=-1 \ --cap-add=NET_ADMIN \ --device /dev/net/tun:/dev/net/tun \ diff --git a/ttcn3-gbproxy-test-fr/GBProxy_Tests.cfg b/ttcn3-gbproxy-test-fr/GBProxy_Tests.cfg index ce4623a..d03db07 100644 --- a/ttcn3-gbproxy-test-fr/GBProxy_Tests.cfg +++ b/ttcn3-gbproxy-test-fr/GBProxy_Tests.cfg @@ -150,3 +150,4 @@ GBProxy_Tests.mp_nsconfig_pcu := { [EXECUTE] GBProxy_Tests.control +#GBProxy_Tests.TC_BVC_bringup diff --git a/ttcn3-gbproxy-test-fr/jenkins.sh b/ttcn3-gbproxy-test-fr/jenkins.sh index 72dc4af..9d90129 100755 --- a/ttcn3-gbproxy-test-fr/jenkins.sh +++ b/ttcn3-gbproxy-test-fr/jenkins.sh @@ -61,7 +61,7 @@ docker run --rm \ $(docker_network_params $SUBNET 103) \ --ulimit core=-1 \ -e "TTCN3_PCAP_PATH=/data" \ - -e "OSMO_SUT_HOST=172.18.$SUBNET.10" \ + -e "OSMO_SUT_HOST=$SUB4_PREFIX.$SUBNET.10" \ -e "OSMO_SUT_PORT=4246" \ -e "WAIT_FOR_NETDEV=hdlc8" \ -v $VOL_BASE_DIR/gbproxy-tester:/data \ diff --git a/ttcn3-gbproxy-test/GBProxy_Tests.cfg b/ttcn3-gbproxy-test/GBProxy_Tests.cfg index e1d6573..16a2598 100644 --- a/ttcn3-gbproxy-test/GBProxy_Tests.cfg +++ b/ttcn3-gbproxy-test/GBProxy_Tests.cfg @@ -100,4 +100,5 @@ GBProxy_Tests.mp_nsconfig_pcu := { [MAIN_CONTROLLER] [EXECUTE] -GBProxy_Tests.control +#GBProxy_Tests.control +GBProxy_Tests.TC_rim_from_eutran diff --git a/ttcn3-gbproxy-test/jenkins.sh b/ttcn3-gbproxy-test/jenkins.sh index 861be39..c07f389 100755 --- a/ttcn3-gbproxy-test/jenkins.sh +++ b/ttcn3-gbproxy-test/jenkins.sh @@ -39,7 +39,7 @@ docker run --rm \ $(docker_network_params $SUBNET 103) \ --ulimit core=-1 \ -e "TTCN3_PCAP_PATH=/data" \ - -e "OSMO_SUT_HOST=172.18.$SUBNET.10" \ + -e "OSMO_SUT_HOST=$SUB4_PREFIX.$SUBNET.10" \ -e "OSMO_SUT_PORT=4246" \ -v $VOL_BASE_DIR/gbproxy-tester:/data \ --name ${BUILD_TAG}-ttcn3-gbproxy-test \ diff --git a/ttcn3-ggsn-test/jenkins-ogs.sh b/ttcn3-ggsn-test/jenkins-ogs.sh index 07952bc..1e73b0a 100755 --- a/ttcn3-ggsn-test/jenkins-ogs.sh +++ b/ttcn3-ggsn-test/jenkins-ogs.sh @@ -32,12 +32,13 @@ docker run --cap-add=NET_ADMIN \ --ulimit core=-1 \ -v $VOL_BASE_DIR/ggsn:/data \ --name ${BUILD_TAG}-ggsn-ogs-smf -d \ + --expose 9090 \ $DOCKER_ARGS \ $(docker_network_params $SUBNET 201) \ $REPO_USER/open5gs-$IMAGE_SUFFIX \ - /bin/sh -c "open5gs-smfd -c /data/open5gs-smf-$IMAGE_SUFFIX.yaml >/data/open5gs-smfd.out 2>&1" - #/bin/sh -c "gdb -ex 'handle SIG32 pass nostop noprint' -ex 'run' -ex 'bt' --arg open5gs-smfd -c /data/open5gs-smf-$IMAGE_SUFFIX.yaml >/data/open5gs-smfd.out 2>&1" - #/bin/sh -c "valgrind --tool=memcheck --leak-check=yes --show-reachable=yes --num-callers=20 --track-fds=yes open5gs-smfd -c /data/open5gs-smf-$IMAGE_SUFFIX.yaml >/data/open5gs-smfd.out 2>&1" + /bin/sh -c "gdb -ex 'handle SIG32 pass nostop noprint' -ex 'run' -ex 'bt' --arg open5gs-smfd -c /data/open5gs-smf-$IMAGE_SUFFIX.yaml >/data/open5gs-smfd.out 2>&1" + #/bin/sh -c "valgrind --tool=memcheck --leak-check=yes --show-reachable=yes --num-callers=20 --track-fds=yes open5gs-smfd -c /data/open5gs-smf.yaml >/data/open5gs-smfd.out 2>&1" +#/bin/sh -c "open5gs-smfd -c /data/open5gs-smf.yaml >/data/open5gs-smfd.out 2>&1" docker run --cap-add=NET_ADMIN \ --device /dev/net/tun:/dev/net/tun \ @@ -61,3 +62,8 @@ docker run --rm \ --name ${BUILD_TAG}-ggsn-test \ $DOCKER_ARGS \ $REPO_USER/ttcn3-ggsn-test + +# let some time to tcpdump upf.pcap to fill +sleep 5 +#echo "press a key" +#read diff --git a/ttcn3-ggsn-test/jenkins.sh b/ttcn3-ggsn-test/jenkins.sh index 7c9c7ac..b0282f4 100755 --- a/ttcn3-ggsn-test/jenkins.sh +++ b/ttcn3-ggsn-test/jenkins.sh @@ -61,13 +61,13 @@ start_ggsn() { -v "$KERNEL_TEST_DIR:/kernel-test:ro" -v "$CACHE_DIR:/cache" " - OSMO_SUT_HOST="172.18.$SUBNET.200" + OSMO_SUT_HOST="$SUB4_PREFIX.$SUBNET.200" else GGSN_DOCKER_ARGS=" $(docker_network_params $SUBNET 201) " - OSMO_SUT_HOST="172.18.$SUBNET.201" + OSMO_SUT_HOST="$SUB4_PREFIX.$SUBNET.201" fi docker run --rm \ --cap-add=NET_ADMIN \ @@ -79,7 +79,8 @@ start_ggsn() { $DOCKER_ARGS \ $GGSN_DOCKER_ARGS \ $REPO_USER/osmo-ggsn-$IMAGE_SUFFIX \ - /bin/sh -c "$GGSN_CMD >/data/osmo-ggsn.log 2>&1" + /bin/sh -c "gdb -ex 'run' -ex 'bt' --arg $GGSN_CMD >/data/osmo-ggsn.log 2>&1" +# /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" } @@ -109,11 +110,7 @@ else CONFIGS_DIR="osmo-ggsn" fi -for i in $TEST_CONFIGS_ALL; do - if ! test_config_enabled "$i"; then - continue - fi - +for i in $TEST_CONFIGS; do # 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. diff --git a/ttcn3-ggsn-test/ogs/GGSN_Tests.cfg b/ttcn3-ggsn-test/ogs/GGSN_Tests.cfg index da69999..a96797a 100644 --- a/ttcn3-ggsn-test/ogs/GGSN_Tests.cfg +++ b/ttcn3-ggsn-test/ogs/GGSN_Tests.cfg @@ -4,6 +4,8 @@ [LOGGING] *.JUnitLogger.testsuite_name := "GGSN_Tests" +*.FileMask := LOG_ALL | TTCN_DEBUG | TTCN_MATCHING | MATCHING |MATCHING_PROBLEM +FileMask := LOG_ALL | TTCN_DEBUG | TTCN_MATCHING | MATCHING | DEBUG_ENCDEC; [TESTPORT_PARAMETERS] *.GGSNVTY.CTRL_HOSTNAME := "172.18.3.201" @@ -21,4 +23,15 @@ GGSN_Tests.m_ggsn_ip6_dns1 := "fd02:db8:3::222" GGSN_Tests.m_ggsn_impl := GGSN_IMPL_OPEN5GS [EXECUTE] -GGSN_Tests.control +#GGSN_Tests.control +#GGSN_Tests.TC_pdp4_act_deact_gtpu_access +#GGSN_Tests.TC_pdp4_act_deact +#GGSN_Tests.TC_pdp4_act_deact_ipcp +#GGSN_Tests.TC_act_deact_retrans_duplicate +#GGSN_Tests.TC_pdp46_act_deact_gtpu_access_wrong_ll_saddr_ipv6 +#GGSN_Tests.TC_pdp46_act_deact_gtpu_access_wrong_ll_saddr_ipv6 +#GGSN_Tests.TC_pdp4_act_update_teid +#GGSN_Tests.TC_act_deact_retrans_duplicate +#GGSN_Tests.TC_gy_charging_cc_time +#GGSN_Tests.TC_lots_of_concurrent_pdp_ctx +GGSN_Tests.TC_gy_charging_volume_quota_threshold diff --git a/ttcn3-ggsn-test/ogs/upfd-setup.sh b/ttcn3-ggsn-test/ogs/upfd-setup.sh index b185ac0..376293f 100755 --- a/ttcn3-ggsn-test/ogs/upfd-setup.sh +++ b/ttcn3-ggsn-test/ogs/upfd-setup.sh @@ -23,6 +23,8 @@ add_addr "ogstun6" "2001:780:44:2000:0:0:0:1/56" add_addr "ogstun46" "176.16.32.1/20" add_addr "ogstun46" "2001:780:44:2100:0:0:0:1/56" +#echo "0" > /proc/sys/net/ipv6/conf/ogstun4/accept_ra + ip link set ogstun4 up ip link set ogstun6 up ip link set ogstun46 up diff --git a/ttcn3-ggsn-test/ogs/upfd.sh b/ttcn3-ggsn-test/ogs/upfd.sh index 9089701..0841ff8 100755 --- a/ttcn3-ggsn-test/ogs/upfd.sh +++ b/ttcn3-ggsn-test/ogs/upfd.sh @@ -2,7 +2,22 @@ set -e set -x /data/upfd-setup.sh +tcpdump -i any -vvv -w /data/upfd.pcap & upfd_bin="$(command -v open5gs-upfd)" # so_bindtodevice cfg requires CAP_NET_RAW: setcap cap_net_raw+ep "$upfd_bin" su - osmocom -c "$upfd_bin $*" + +# Wait for up to 2 seconds if we keep receiving traffinc from packet dumper, +# otherwise we might lose last packets from test. +i=0 +prev_count=-1 +count=$(stat --format="%s" "/data/upfd.pcap") +while [ $count -gt $prev_count ] && [ $i -lt 2 ] +do + echo "Waiting for packet dumper to finish... $i (prev_count=$prev_count, count=$count)" + sleep 1 + prev_count=$count + count=$(stat --format="%s" "/data/upfd.pcap") + i=$((i+1)) +done diff --git a/ttcn3-ggsn-test/osmo-ggsn-kernel/v4_only/osmo-ggsn.cfg b/ttcn3-ggsn-test/osmo-ggsn-kernel/v4_only/osmo-ggsn.cfg index d8b67a2..f2fdfab 100644 --- a/ttcn3-ggsn-test/osmo-ggsn-kernel/v4_only/osmo-ggsn.cfg +++ b/ttcn3-ggsn-test/osmo-ggsn-kernel/v4_only/osmo-ggsn.cfg @@ -25,6 +25,9 @@ line vty ggsn ggsn0 gtp state-dir /tmp gtp bind-ip 172.18.3.201 + timer gtp T3 1 + timer gtp T1003 2 + timer gtp X3 2 apn internet gtpu-mode kernel-gtp tun-device tun4 diff --git a/ttcn3-ggsn-test/osmo-ggsn-kernel/v4v6_only/osmo-ggsn.cfg b/ttcn3-ggsn-test/osmo-ggsn-kernel/v4v6_only/osmo-ggsn.cfg index c3f32f7..c605691 100644 --- a/ttcn3-ggsn-test/osmo-ggsn-kernel/v4v6_only/osmo-ggsn.cfg +++ b/ttcn3-ggsn-test/osmo-ggsn-kernel/v4v6_only/osmo-ggsn.cfg @@ -25,6 +25,9 @@ line vty ggsn ggsn0 gtp state-dir /tmp gtp bind-ip 172.18.3.201 + timer gtp T3 1 + timer gtp T1003 2 + timer gtp X3 2 apn inet46 gtpu-mode kernel-gtp tun-device tun46 diff --git a/ttcn3-ggsn-test/osmo-ggsn-kernel/v6_only/osmo-ggsn.cfg b/ttcn3-ggsn-test/osmo-ggsn-kernel/v6_only/osmo-ggsn.cfg index 9de035f..a54bcdf 100644 --- a/ttcn3-ggsn-test/osmo-ggsn-kernel/v6_only/osmo-ggsn.cfg +++ b/ttcn3-ggsn-test/osmo-ggsn-kernel/v6_only/osmo-ggsn.cfg @@ -25,6 +25,9 @@ line vty ggsn ggsn0 gtp state-dir /tmp gtp bind-ip 172.18.3.201 + timer gtp T3 1 + timer gtp T1003 2 + timer gtp X3 2 apn inet6 gtpu-mode kernel-gtp tun-device tun6 diff --git a/ttcn3-ggsn-test/ttcn3/all/GGSN_Tests.cfg b/ttcn3-ggsn-test/ttcn3/all/GGSN_Tests.cfg index f715d9f..ef2fd65 100644 --- a/ttcn3-ggsn-test/ttcn3/all/GGSN_Tests.cfg +++ b/ttcn3-ggsn-test/ttcn3/all/GGSN_Tests.cfg @@ -28,3 +28,9 @@ GGSN_Tests.m_ggsn_conf := GGSN_CONF_ALL [EXECUTE] GGSN_Tests.control +#GGSN_Tests.TC_pdp4_act_update_teic +#GGSN_Tests.TC_pdp4_act_update_teid +#GGSN_Tests.TC_pdp46_act_deact_apn4 +#GGSN_Tests.TC_pdp4_act_deact_gtpu_access +#GGSN_Tests.TC_lots_of_concurrent_pdp_ctx +#GGSN_Tests.TC_addr_pool_exhaustion diff --git a/ttcn3-hlr-test/jenkins.sh b/ttcn3-hlr-test/jenkins.sh index 66d102e..c716add 100755 --- a/ttcn3-hlr-test/jenkins.sh +++ b/ttcn3-hlr-test/jenkins.sh @@ -34,7 +34,7 @@ docker run --rm \ $(docker_network_params $SUBNET 103) \ --ulimit core=-1 \ -e "TTCN3_PCAP_PATH=/data" \ - -e "OSMO_SUT_HOST=172.18.$SUBNET.20" \ + -e "OSMO_SUT_HOST=$SUB4_PREFIX.$SUBNET.20" \ -e "OSMO_SUT_PORT=4258" \ -v $VOL_BASE_DIR/hlr-tester:/data \ --name ${BUILD_TAG}-ttcn3-hlr-test \ diff --git a/ttcn3-hnbgw-test/HNBGW_Tests.cfg b/ttcn3-hnbgw-test/HNBGW_Tests.cfg index a23f3c1..d264d42 100644 --- a/ttcn3-hnbgw-test/HNBGW_Tests.cfg +++ b/ttcn3-hnbgw-test/HNBGW_Tests.cfg @@ -118,3 +118,4 @@ HNBGW_Tests.mp_hnbgw_timer_x31 := 5; [EXECUTE] HNBGW_Tests.control +#HNBGW_Tests.TC_hnb_register_duplicate_reuse_sctp_assoc diff --git a/ttcn3-hnbgw-test/jenkins.sh b/ttcn3-hnbgw-test/jenkins.sh index 21647ed..d886378 100755 --- a/ttcn3-hnbgw-test/jenkins.sh +++ b/ttcn3-hnbgw-test/jenkins.sh @@ -67,7 +67,7 @@ run_tests() { $(docker_network_params $SUBNET 203) \ --ulimit core=-1 \ -e "TTCN3_PCAP_PATH=/data" \ - -e "OSMO_SUT_HOST=172.18.$SUBNET.20" \ + -e "OSMO_SUT_HOST=$SUB4_PREFIX.$SUBNET.20" \ -e "OSMO_SUT_PORT=4261" \ -v $base_dir/hnbgw-tester:/data \ -v $base_dir/unix:/data/unix \ diff --git a/ttcn3-hnodeb-test/HNB_Tests.cfg b/ttcn3-hnodeb-test/HNB_Tests.cfg index 677e12b..71d1cea 100644 --- a/ttcn3-hnodeb-test/HNB_Tests.cfg +++ b/ttcn3-hnodeb-test/HNB_Tests.cfg @@ -4,10 +4,18 @@ [LOGGING] *.JUnitLogger.testsuite_name := "HNB_Tests" +FileMask := LOG_ALL | TTCN_MATCHING | TTCN_DEBUG [TESTPORT_PARAMETERS] *.HNBVTY.CTRL_HOSTNAME := "172.18.33.20"; *.STATSVTY.CTRL_HOSTNAME := "172.18.33.20"; +*.IPL4.debug := "YES"; +*.Iuh.debug := "YES"; +system.SCTP_PORT.debug := "yes"; +system.SCTP_SimpleClientPort.debug := "yes" +system.SCTP_SimpleServerPort.debug := "yes" +system.SCTP_ClientPort.debug := "yes" +system.SCTP_ServerPort.debug := "yes" [MODULE_PARAMETERS] HNB_Tests.mp_hnodeb_ip := "172.18.33.20"; @@ -18,3 +26,10 @@ HNB_Tests.mp_hnbllif_sk_path := "/data/unix/ll_sock"; [EXECUTE] HNB_Tests.control +#HNB_Tests.TC_hnb_register_request_accept +#HNB_Tests.TC_hnb_register_request_reject +#HNB_Tests.TC_ps_mo_gtp_ping_pong +#HNB_Tests.TC_ps_mo_gtp_ping_pong +#HNB_Tests.TC_paging +#HNB_Tests.TC_cs_mo_call_audio_v0 +#HNB_Tests.TC_cs_mo_call diff --git a/ttcn3-hnodeb-test/jenkins.sh b/ttcn3-hnodeb-test/jenkins.sh index cdc47b0..d3ae816 100755 --- a/ttcn3-hnodeb-test/jenkins.sh +++ b/ttcn3-hnodeb-test/jenkins.sh @@ -38,7 +38,7 @@ docker run --rm \ $(docker_network_params $SUBNET 203) \ --ulimit core=-1 \ -e "TTCN3_PCAP_PATH=/data" \ - -e "OSMO_SUT_HOST=172.18.$SUBNET.20" \ + -e "OSMO_SUT_HOST=$SUB4_PREFIX.$SUBNET.20" \ -e "OSMO_SUT_PORT=4273" \ -v $VOL_BASE_DIR/hnodeb-tester:/data \ -v $VOL_BASE_DIR/unix:/data/unix \ diff --git a/ttcn3-hnodeb-test/osmo-hnodeb.cfg b/ttcn3-hnodeb-test/osmo-hnodeb.cfg index 7d24700..621aa57 100644 --- a/ttcn3-hnodeb-test/osmo-hnodeb.cfg +++ b/ttcn3-hnodeb-test/osmo-hnodeb.cfg @@ -7,6 +7,7 @@ log stderr logging filter all 1 logging color 1 logging print category 1 + logging print category-hex 0 logging timestamp 1 logging print extended-timestamp 1 logging level set-all debug diff --git a/ttcn3-hss-test-ogs/jenkins.sh b/ttcn3-hss-test-ogs/jenkins.sh index eb60835..d8932aa 100755 --- a/ttcn3-hss-test-ogs/jenkins.sh +++ b/ttcn3-hss-test-ogs/jenkins.sh @@ -24,7 +24,7 @@ cp ogs/freediameter.conf $VOL_BASE_DIR/hss/ network_create network_replace_subnet_in_configs -MONGOD_ADDR="172.18.$SUBNET.103" +MONGOD_ADDR="$SUB4_PREFIX.$SUBNET.103" DBCTL="open5gs-dbctl --db_uri=mongodb://$MONGOD_ADDR/open5gs" # start container with mongod in background diff --git a/ttcn3-mgw-test/MGCP_Test.cfg b/ttcn3-mgw-test/MGCP_Test.cfg index 5a9d9e6..00dd436 100644 --- a/ttcn3-mgw-test/MGCP_Test.cfg +++ b/ttcn3-mgw-test/MGCP_Test.cfg @@ -19,3 +19,32 @@ mp_num_endpoints := 300; [EXECUTE] MGCP_Test.control +#MGCP_Test.TC_crcx +#MGCP_Test.TC_crcx_mdcx_ip4 +#MGCP_Test.TC_crcx_mdcx_ip6 +#MGCP_Test.TC_two_crcx_mdcx_and_rtp +#MGCP_Test.TC_two_crcx_mdcx_and_rtp_ipv4_ipv6 +#MGCP_Test.TC_crcx_osmux_257 + +#MGCP_Test.TC_crcx_osmux_fixed_twice +#MGCP_Test.TC_one_crcx_receive_only_osmux +#MGCP_Test.TC_one_crcx_loopback_osmux +#MGCP_Test.TC_two_crcx_and_rtp_osmux +#MGCP_Test.TC_two_crcx_and_rtp_osmux_bidir +#MGCP_Test.TC_two_crcx_mdcx_and_rtp_osmux_wildcard +#MGCP_Test.TC_two_crcx_mdcx_and_rtp_osmux_fixed +#MGCP_Test.TC_two_crcx_and_rtp_osmux_bidir_ipv6 +#MGCP_Test.TC_two_crcx_and_rtp_osmux_bidir_ipv4_ipv6 +#MGCP_Test.TC_two_crcx_and_rtp_osmux_bidir_ipv6_ipv4 +#MGCP_Test.TC_two_crcx_mdcx_and_rtp_osmux_ipv6 +#MGCP_Test.TC_two_crcx_mdcx_and_rtp_osmux_ipv4_ipv6 +#MGCP_Test.TC_two_crcx_mdcx_and_rtp_osmux_ipv6_ipv4 + +#MGCP_Test.TC_two_crcx_and_rtp_osmux_bidir +#MGCP_Test.TC_two_crcx_and_rtp_osmux_bidir_amr_bwe +#MGCP_Test.TC_two_crcx_and_rtp_osmux_bidir_ipv4_ipv6 +#MGCP_Test.TC_two_crcx_and_rtp_osmux_bidir_ipv6 +#MGCP_Test.TC_two_crcx_mdcx_and_rtp_osmux_ipv4_ipv6 +#MGCP_Test.TC_two_crcx_mdcx_and_rtp_osmux_ipv6 +#MGCP_Test.TC_two_crcx_mdcx_and_rtp_osmux_wildcard +#MGCP_Test.TC_two_crcx_mdcx_and_rtp_osmux_wildcard diff --git a/ttcn3-mgw-test/jenkins.sh b/ttcn3-mgw-test/jenkins.sh index 5395fa3..9cb7f31 100755 --- a/ttcn3-mgw-test/jenkins.sh +++ b/ttcn3-mgw-test/jenkins.sh @@ -26,7 +26,8 @@ docker run --rm \ -v $VOL_BASE_DIR/mgw:/data \ --name ${BUILD_TAG}-mgw -d \ $DOCKER_ARGS \ - $REPO_USER/osmo-mgw-$IMAGE_SUFFIX + $REPO_USER/osmo-mgw-$IMAGE_SUFFIX \ + /bin/sh -c "gdb -ex 'run' -ex 'bt' --arg osmo-mgw -c /data/osmo-mgw.cfg >/data/osmo-mgw.log 2>&1" # start docker container with testsuite in foreground docker run --rm \ @@ -34,7 +35,7 @@ docker run --rm \ --ulimit core=-1 \ -v $VOL_BASE_DIR/mgw-tester:/data \ -e "TTCN3_PCAP_PATH=/data" \ - -e "OSMO_SUT_HOST=172.18.$SUBNET.180" \ + -e "OSMO_SUT_HOST=$SUB4_PREFIX.$SUBNET.180" \ -e "OSMO_SUT_PORT=4243" \ --name ${BUILD_TAG}-ttcn3-mgw-test \ $DOCKER_ARGS \ diff --git a/ttcn3-msc-test/jenkins.sh b/ttcn3-msc-test/jenkins.sh index 6a0f3d5..46844d5 100755 --- a/ttcn3-msc-test/jenkins.sh +++ b/ttcn3-msc-test/jenkins.sh @@ -51,7 +51,7 @@ docker run --rm \ $(docker_network_params $SUBNET 103) \ --ulimit core=-1 \ -e "TTCN3_PCAP_PATH=/data" \ - -e "OSMO_SUT_HOST=172.18.$SUBNET.10" \ + -e "OSMO_SUT_HOST=$SUB4_PREFIX.$SUBNET.10" \ -e "OSMO_SUT_PORT=4254" \ -v $VOL_BASE_DIR/msc-tester:/data \ -v $VOL_BASE_DIR/unix:/data/unix \ diff --git a/ttcn3-pcu-test/PCU_Tests.cfg b/ttcn3-pcu-test/PCU_Tests.cfg index 8404f79..d26ac3f 100644 --- a/ttcn3-pcu-test/PCU_Tests.cfg +++ b/ttcn3-pcu-test/PCU_Tests.cfg @@ -41,4 +41,25 @@ PCUIF_Types.mp_pcuif_version := 12 [EXECUTE] PCU_Tests.control -PCU_Tests_NS.control +#PCU_Tests_NS.control +#PCU_Tests.TC_anr_dl_tbf_success +#PCU_Tests.TC_anr_dl_tbf_success_si2_partial +#PCU_Tests.TC_anr_dl_tbf_success_si2_partial_multi_measorder +#PCU_Tests.TC_anr_dl_tbf_finished +#PCU_Tests.TC_nacc_outbound_success + +#PCU_Tests.TC_ta_ptcch_idle +#PCU_Tests.TC_n3105_max_t3195 +#PCU_Tests.TC_pdch_energy_saving +#PCU_Tests.TC_mo_ping_pong_with_ul_racap +#PCU_Tests.TC_ul_tbf_reestablish_with_pkt_dl_ack_nack +#PCU_Tests.TC_ul_tbf_finished_pkt_dl_ass_pch +#PCU_Tests.TC_ul_tbf_1phase_while_dl_ass_pch + +#PCU_Tests.TC_cs_max_dl +#PCU_Tests.TC_dl_flow_more_blocks +#PCU_Tests.TC_mt_ping_pong +#PCU_Tests.TC_mt_ping_pong_with_dl_racap +#PCU_Tests.TC_paging_cs_from_sgsn_sign_ptmsi +#PCU_Tests.TC_paging_cs_from_sgsn_sign +#PCU_Tests.TC_paging_cs_from_sgsn_ptp diff --git a/ttcn3-pcu-test/jenkins-sns.sh b/ttcn3-pcu-test/jenkins-sns.sh index c42ad18..4f55612 100755 --- a/ttcn3-pcu-test/jenkins-sns.sh +++ b/ttcn3-pcu-test/jenkins-sns.sh @@ -10,7 +10,7 @@ set_clean_up_trap set -e set_pcuif_version() { - if image_suffix_is_2023q1; then + if osmo_repo_is_2023q1; then sed -i 's/PCUIF_Types.mp_pcuif_version := 12/PCUIF_Types.mp_pcuif_version := 10/g' $1 fi } diff --git a/ttcn3-pcu-test/jenkins.sh b/ttcn3-pcu-test/jenkins.sh index f92a08e..6147a73 100755 --- a/ttcn3-pcu-test/jenkins.sh +++ b/ttcn3-pcu-test/jenkins.sh @@ -10,7 +10,7 @@ set_clean_up_trap set -e set_pcuif_version() { - if image_suffix_is_2023q1; then + if osmo_repo_is_2023q1; then sed -i 's/PCUIF_Types.mp_pcuif_version := 12/PCUIF_Types.mp_pcuif_version := 10/g' $1 fi } @@ -46,7 +46,7 @@ docker run --rm \ $(docker_network_params $SUBNET 10) \ --ulimit core=-1 \ -e "TTCN3_PCAP_PATH=/data" \ - -e "OSMO_SUT_HOST=172.18.$SUBNET.101" \ + -e "OSMO_SUT_HOST=$SUB4_PREFIX.$SUBNET.101" \ -e "OSMO_SUT_PORT=4240" \ -v $VOL_BASE_DIR/pcu-tester:/data \ -v $VOL_BASE_DIR/unix:/data/unix \ diff --git a/ttcn3-pcu-test/sns/PCU_Tests.cfg b/ttcn3-pcu-test/sns/PCU_Tests.cfg index 2b11462..3da0a29 100644 --- a/ttcn3-pcu-test/sns/PCU_Tests.cfg +++ b/ttcn3-pcu-test/sns/PCU_Tests.cfg @@ -64,4 +64,7 @@ PCUIF_Types.mp_pcuif_version := 12 [MAIN_CONTROLLER] [EXECUTE] -PCU_Tests_SNS.control +#PCU_Tests_SNS.control +PCU_Tests_SNS.TC_sns_del +PCU_Tests_SNS.TC_sns_chg_weight +PCU_Tests_SNS.TC_pcuif_rach diff --git a/ttcn3-pgw-test/PGW_Tests.cfg b/ttcn3-pgw-test/PGW_Tests.cfg index 5d3ff45..58ae6df 100644 --- a/ttcn3-pgw-test/PGW_Tests.cfg +++ b/ttcn3-pgw-test/PGW_Tests.cfg @@ -23,4 +23,4 @@ GTPv2_Emulation.mp_uecups_host := "172.18.18.20" [MAIN_CONTROLLER] [EXECUTE] -PGW_Tests.control +PGW_Tests.control
\ No newline at end of file diff --git a/ttcn3-pgw-test/jenkins.sh b/ttcn3-pgw-test/jenkins.sh index 3e10a13..7de97c7 100755 --- a/ttcn3-pgw-test/jenkins.sh +++ b/ttcn3-pgw-test/jenkins.sh @@ -59,10 +59,10 @@ docker run --cap-add=NET_ADMIN \ --name ${BUILD_TAG}-smf -d \ $DOCKER_ARGS \ $REPO_USER/open5gs-$IMAGE_SUFFIX \ - /bin/sh -c "open5gs-smfd -c /data/open5gs-smf-$IMAGE_SUFFIX.yaml >/data/open5gs-smfd.out 2>&1" - #/bin/sh -c "gdb -ex 'handle SIG32 pass nostop noprint' -ex 'run' -ex 'bt' --arg open5gs-smfd -c /data/open5gs-smf-$IMAGE_SUFFIX.yaml >/data/open5gs-smfd.out 2>&1" + /bin/sh -c "gdb -ex 'handle SIG32 pass nostop noprint' -ex 'run' -ex 'bt' --arg open5gs-smfd -c /data/open5gs-smf-$IMAGE_SUFFIX.yaml >/data/open5gs-smfd.out 2>&1" +# /bin/sh -c "open5gs-smfd -c /data/open5gs-smf.yaml >/data/open5gs-smfd.out 2>&1" -# start container with osmo-ugcups-daemon in background; SYS_ADMIN required for CLONE_NEWNS +# start container with osmo-uecups-daemon in background; SYS_ADMIN required for CLONE_NEWNS docker run --cap-add=NET_ADMIN --cap-add=SYS_ADMIN \ --device /dev/net/tun:/dev/net/tun \ --sysctl net.ipv6.conf.all.disable_ipv6=0 \ @@ -71,10 +71,12 @@ docker run --cap-add=NET_ADMIN --cap-add=SYS_ADMIN \ --ulimit core=-1 \ -v $VOL_BASE_DIR/osmo-uecups:/data \ -e "WORKDIR=/data" \ + -e "ASAN_OPTIONS=print_stacktrace=1:abort_on_error=1:fast_unwind_on_fatal=1" \ --name ${BUILD_TAG}-uecups -d \ $DOCKER_ARGS \ $REPO_USER/osmo-uecups-$IMAGE_SUFFIX \ - /bin/sh -c "osmo-uecups-daemon -c /data/osmo-uecups-daemon.cfg >/data/osmo-uecups-daemon.log 2>&1" + /bin/sh -c "gdb -ex 'handle SIG32 pass nostop noprint' -ex 'run' -ex 'bt' --arg osmo-uecups-daemon -c /data/osmo-uecups-daemon.cfg >/data/osmo-uecups-daemon.log 2>&1" +# /bin/sh -c "osmo-uecups-daemon -c /data/osmo-uecups-daemon.cfg >/data/osmo-uecups-daemon.log 2>&1" # start docker container with testsuite in foreground docker run --rm \ diff --git a/ttcn3-remsim-test/jenkins.sh b/ttcn3-remsim-test/jenkins.sh index 158a352..281b00d 100755 --- a/ttcn3-remsim-test/jenkins.sh +++ b/ttcn3-remsim-test/jenkins.sh @@ -32,7 +32,7 @@ start_bankd() { $REPO_USER/osmo-remsim-$IMAGE_SUFFIX \ /bin/sh -c "pcscd; \ osmo-remsim-bankd \ - -i 172.18.$SUBNET.10 \ + -i $SUB4_PREFIX.$SUBNET.10 \ >/data/osmo-remsim-bankd.log 2>&1" } diff --git a/ttcn3-s1gw-test/Dockerfile b/ttcn3-s1gw-test/Dockerfile new file mode 100644 index 0000000..296cd02 --- /dev/null +++ b/ttcn3-s1gw-test/Dockerfile @@ -0,0 +1,14 @@ +ARG REGISTRY +ARG USER +FROM $REGISTRY/$USER/debian-bookworm-titan + +ARG OSMO_TTCN3_BRANCH="master" + +ADD https://gerrit.osmocom.org/plugins/gitiles/osmo-ttcn3-hacks/+/$OSMO_TTCN3_BRANCH?format=TEXT /tmp/commit +RUN ttcn3-docker-prepare "$OSMO_TTCN3_BRANCH" s1gw + +VOLUME /data + +COPY S1GW_Tests.cfg /data/S1GW_Tests.cfg + +CMD ttcn3-docker-run s1gw S1GW_Tests diff --git a/ttcn3-s1gw-test/Makefile b/ttcn3-s1gw-test/Makefile new file mode 100644 index 0000000..8d0e10b --- /dev/null +++ b/ttcn3-s1gw-test/Makefile @@ -0,0 +1 @@ +include ../make/Makefile diff --git a/ttcn3-s1gw-test/S1GW_Tests.cfg b/ttcn3-s1gw-test/S1GW_Tests.cfg new file mode 100644 index 0000000..a81c95e --- /dev/null +++ b/ttcn3-s1gw-test/S1GW_Tests.cfg @@ -0,0 +1,17 @@ +[ORDERED_INCLUDE] +"/osmo-ttcn3-hacks/Common.cfg" +"/osmo-ttcn3-hacks/s1gw/S1GW_Tests.default" + +[LOGGING] + +[TESTPORT_PARAMETERS] + +[MODULE_PARAMETERS] +S1GW_Tests.mp_s1gw_enb_ip := "172.18.10.200"; +S1GW_Tests.mp_s1gw_mme_ip := "172.18.10.100"; +S1GW_Tests.mp_mme_bind_ip := "172.18.10.101"; + +[MAIN_CONTROLLER] + +[EXECUTE] +S1GW_Tests.control diff --git a/ttcn3-s1gw-test/jenkins.sh b/ttcn3-s1gw-test/jenkins.sh new file mode 100755 index 0000000..f00987d --- /dev/null +++ b/ttcn3-s1gw-test/jenkins.sh @@ -0,0 +1,47 @@ +#!/bin/sh + +. ../jenkins-common.sh +IMAGE_SUFFIX="${IMAGE_SUFFIX:-master}" +docker_images_require \ + "osmo-s1gw-$IMAGE_SUFFIX" \ + "ttcn3-s1gw-test" + +set_clean_up_trap +set -e + +mkdir $VOL_BASE_DIR/s1gw-tester +cp S1GW_Tests.cfg $VOL_BASE_DIR/s1gw-tester/ +write_mp_osmo_repo "$VOL_BASE_DIR/s1gw-tester/S1GW_Tests.cfg" + +mkdir $VOL_BASE_DIR/s1gw +cp s1gw.sh $VOL_BASE_DIR/s1gw/ +cp osmo-s1gw.config $VOL_BASE_DIR/s1gw/ + +network_create +network_replace_subnet_in_configs + +echo "Starting container with osmo-s1gw" +docker run --rm \ + $(docker_network_params $SUBNET 100) \ + --user=root \ + --ulimit core=-1 \ + --cap-add=NET_ADMIN \ + -e "ERL_FLAGS=-config /data/osmo-s1gw.config" \ + -v $VOL_BASE_DIR/s1gw:/data \ + --name ${BUILD_TAG}-s1gw -d \ + $DOCKER_ARGS \ + $REPO_USER/osmo-s1gw-$IMAGE_SUFFIX \ + /bin/sh -c "/data/s1gw.sh > /data/osmo-s1gw.log 2>&1" + +# Give some time to osmo-s1gw to be fully started; it's a bit slow... +sleep 2 + +echo "Starting container with the S1GW testsuite" +docker run --rm \ + $(docker_network_params $SUBNET 101) \ + --ulimit core=-1 \ + -e "TTCN3_PCAP_PATH=/data" \ + -v $VOL_BASE_DIR/s1gw-tester:/data \ + --name ${BUILD_TAG}-ttcn3-s1gw-test \ + $DOCKER_ARGS \ + $REPO_USER/ttcn3-s1gw-test diff --git a/ttcn3-s1gw-test/osmo-s1gw.config b/ttcn3-s1gw-test/osmo-s1gw.config new file mode 100644 index 0000000..b621ef9 --- /dev/null +++ b/ttcn3-s1gw-test/osmo-s1gw.config @@ -0,0 +1,35 @@ +%% -*- erlang -*- + +[%% ================================================================================ + %% application config + %% + %% eNB S1GW + %% +-----+ +----------------+ + %% | ... | --> | s1gw_bind_addr | MME + %% +-----+ +----------------+ +-----------------+ + %% | mme_loc_addr | --> | mme_rem_addr | + %% +----------------+ +-----------------+ + %% ================================================================================ + {osmo_s1gw, + [{s1gw_bind_addr, "172.18.10.200"}, %% S1GW bind address for incoming eNB connections + {mme_loc_addr, "172.18.10.100"}, %% local address for outgoing connections to the MME + {mme_rem_addr, "172.18.10.101"} %% remote address for outgoing connections to the MME + ]}, + %% ================================================================================ + %% kernel config + %% ================================================================================ + {kernel, + [{logger_level, debug}, + {logger, + [{handler, default, logger_std_h, + #{level => debug, + formatter => {logger_formatter, + #{template => [time, " ", + "[", level, "]", + {pid, [" ", pid, ""], ""}, + {prefix, [" ", prefix, " ::"], ""}, + " ", msg, + {mfa, [" (", mfa, ":", line, ")"], ""}, + "\n"]}}}}]}]}]. + +%% vim:set ts=2 sw=2 et: diff --git a/ttcn3-s1gw-test/s1gw.sh b/ttcn3-s1gw-test/s1gw.sh new file mode 100755 index 0000000..e212aa2 --- /dev/null +++ b/ttcn3-s1gw-test/s1gw.sh @@ -0,0 +1,8 @@ +#!/bin/sh -ex + +# the subnet prefix is to be modified by network_replace_subnet_in_configs() +ip addr add 172.18.10.100/24 dev eth0 || true # primary address already set by docker_network_params() +ip addr add 172.18.10.200/24 dev eth0 # secondary address for eNB -> S1GW connections + +# drop the root privileges and finally start osmo-s1gw +su build -c "/tmp/osmo-s1gw/_build/default/bin/osmo-s1gw" diff --git a/ttcn3-sccp-test/jenkins.sh b/ttcn3-sccp-test/jenkins.sh index 7eadd5d..03a630c 100755 --- a/ttcn3-sccp-test/jenkins.sh +++ b/ttcn3-sccp-test/jenkins.sh @@ -29,8 +29,8 @@ docker run --rm \ $DOCKER_ARGS \ $REPO_USER/osmo-stp-master \ /bin/sh -c "sccp_demo_user \ - -l 172.18.$SUBNET.200 \ - -r 172.18.$SUBNET.203 \ + -l $SUB4_PREFIX.$SUBNET.200 \ + -r $SUB4_PREFIX.$SUBNET.203 \ -C /data/sccp_demo_user.cfg \ >>/data/sccp_demo_user.log 2>&1" diff --git a/ttcn3-sgsn-test/SGSN_Tests.cfg b/ttcn3-sgsn-test/SGSN_Tests.cfg index d3d1ee7..40694ee 100644 --- a/ttcn3-sgsn-test/SGSN_Tests.cfg +++ b/ttcn3-sgsn-test/SGSN_Tests.cfg @@ -61,7 +61,7 @@ SGSN_Tests.mp_nsconfig := { } SGSN_Tests.mp_ranap_cfg := { { - sctp_addr := { 23908, "172.18.8.103", 2905, "172.18.8.200" } + sctp_addr := { 23908, "172.18.8.104", 2905, "172.18.8.200" } } } SGSN_Tests.mp_hlr_ip := "172.18.8.103" diff --git a/ttcn3-sgsn-test/jenkins.sh b/ttcn3-sgsn-test/jenkins.sh index 9238096..b047d80 100755 --- a/ttcn3-sgsn-test/jenkins.sh +++ b/ttcn3-sgsn-test/jenkins.sh @@ -11,6 +11,7 @@ set_clean_up_trap set -e mkdir $VOL_BASE_DIR/sgsn-tester +cp "ttcn3.sh" "$VOL_BASE_DIR/sgsn-tester/" cp SGSN_Tests.cfg $VOL_BASE_DIR/sgsn-tester/ write_mp_osmo_repo "$VOL_BASE_DIR/sgsn-tester/SGSN_Tests.cfg" @@ -24,6 +25,7 @@ mkdir $VOL_BASE_DIR/unix network_create network_replace_subnet_in_configs +TTCN3_RAN_IPADDR="$SUB4_PREFIX.$SUBNET.104" echo Starting container with STP docker run --rm \ @@ -46,12 +48,15 @@ docker run --rm \ echo Starting container with SGSN testsuite docker run --rm \ + --cap-add=NET_ADMIN \ $(docker_network_params $SUBNET 103) \ --ulimit core=-1 \ -e "TTCN3_PCAP_PATH=/data" \ - -e "OSMO_SUT_HOST=172.18.$SUBNET.10" \ + -e "OSMO_SUT_HOST=$SUB4_PREFIX.$SUBNET.10" \ -e "OSMO_SUT_PORT=4245" \ + -e "EXTRA_IPADDR=${TTCN3_RAN_IPADDR}" \ -v $VOL_BASE_DIR/sgsn-tester:/data \ --name ${BUILD_TAG}-ttcn3-sgsn-test \ $DOCKER_ARGS \ - $REPO_USER/ttcn3-sgsn-test + $REPO_USER/ttcn3-sgsn-test \ + /data/ttcn3.sh diff --git a/ttcn3-sgsn-test/osmo-stp.cfg b/ttcn3-sgsn-test/osmo-stp.cfg index f1b6f49..3a7d0ab 100644 --- a/ttcn3-sgsn-test/osmo-stp.cfg +++ b/ttcn3-sgsn-test/osmo-stp.cfg @@ -22,8 +22,8 @@ cs7 instance 0 asp virt-rnc0-0 23908 2905 m3ua local-ip 172.18.8.200 local-ip fd02:db8:8::200 - remote-ip 172.18.8.103 - remote-ip fd02:db8:8::103 + remote-ip 172.18.8.104 + remote-ip fd02:db8:8::104 role sg sctp-role server as virt-rnc0 m3ua diff --git a/ttcn3-sgsn-test/ttcn3.sh b/ttcn3-sgsn-test/ttcn3.sh new file mode 100755 index 0000000..9100bfa --- /dev/null +++ b/ttcn3-sgsn-test/ttcn3.sh @@ -0,0 +1,16 @@ +#!/bin/bash +set +e +set -x + +if [[ -z "${EXTRA_IPADDR}" ]]; then + echo "env var EXTRA_IPADDR undefined!" + exit 1 +fi + +ip addr add "${EXTRA_IPADDR}" dev eth0 + +# https://bugzilla.redhat.com/show_bug.cgi?id=782042 +# IPv6 addresses may take an extra while to be available ('tentative' state): +while [ -n "$(ip -6 addr show tentative)" ]; do sleep 1; done + +ttcn3-docker-run sgsn SGSN_Tests diff --git a/ttcn3-sip-test/SIP_Tests.cfg b/ttcn3-sip-test/SIP_Tests.cfg index 2904e76..a720a76 100644 --- a/ttcn3-sip-test/SIP_Tests.cfg +++ b/ttcn3-sip-test/SIP_Tests.cfg @@ -18,3 +18,7 @@ SIP_Tests.mp_mncc := "/data/unix/mncc" [EXECUTE] SIP_Tests.control +#SIP_Tests.TC_mo_success_rel_gsm +#SIP_Tests.TC_mt_success_rel_sip +#SIP_Tests.TC_mt_success_rel_gsm_ipv6 +#SIP_Tests.TC_mt_success_rel_sip diff --git a/ttcn3-sip-test/jenkins.sh b/ttcn3-sip-test/jenkins.sh index 5ccbdf5..6558875 100755 --- a/ttcn3-sip-test/jenkins.sh +++ b/ttcn3-sip-test/jenkins.sh @@ -39,7 +39,7 @@ docker run --rm \ $(docker_network_params $SUBNET 103) \ --ulimit core=-1 \ -e "TTCN3_PCAP_PATH=/data" \ - -e "OSMO_SUT_HOST=172.18.$SUBNET.10" \ + -e "OSMO_SUT_HOST=$SUB4_PREFIX.$SUBNET.10" \ -e "OSMO_SUT_PORT=4256" \ -v $VOL_BASE_DIR/sip-tester:/data \ -v $VOL_BASE_DIR/unix:/data/unix \ diff --git a/ttcn3-smlc-test/jenkins.sh b/ttcn3-smlc-test/jenkins.sh index ab284b3..5bcdcbe 100755 --- a/ttcn3-smlc-test/jenkins.sh +++ b/ttcn3-smlc-test/jenkins.sh @@ -47,7 +47,7 @@ docker run --rm \ $(docker_network_params $SUBNET 203) \ --ulimit core=-1 \ -e "TTCN3_PCAP_PATH=/data" \ - -e "OSMO_SUT_HOST=172.18.$SUBNET.20" \ + -e "OSMO_SUT_HOST=$SUB4_PREFIX.$SUBNET.20" \ -e "OSMO_SUT_PORT=4271" \ -v $VOL_BASE_DIR/smlc-tester:/data \ --name ${BUILD_TAG}-ttcn3-smlc-test \ diff --git a/ttcn3-stp-test/STP_Tests.cfg b/ttcn3-stp-test/STP_Tests.cfg index 15baf7e..e324dac 100644 --- a/ttcn3-stp-test/STP_Tests.cfg +++ b/ttcn3-stp-test/STP_Tests.cfg @@ -21,3 +21,4 @@ STP_Tests_M3UA.mp_local_m3ua_ip := { "172.18.19.203", "fd02:db8:19::203" }; STP_Tests_M3UA.control STP_Tests_IPA.control STP_Tests.control +#STP_Tests.TC_m3ua_to_ipa diff --git a/ttcn3-stp-test/jenkins.sh b/ttcn3-stp-test/jenkins.sh index 4f90a4d..35393e3 100755 --- a/ttcn3-stp-test/jenkins.sh +++ b/ttcn3-stp-test/jenkins.sh @@ -16,13 +16,6 @@ write_mp_osmo_repo "$VOL_BASE_DIR/stp-tester/STP_Tests.cfg" mkdir $VOL_BASE_DIR/stp cp osmo-stp.cfg $VOL_BASE_DIR/stp/ -# XXX: M3UA-over-TCP is not supported by osmo-stp <= 1.8.1 -if image_suffix_is_master; then - osmo-config-merge ./osmo-stp.cfg \ - ./osmo-stp-tcp.confmerge \ - > "$VOL_BASE_DIR/stp/osmo-stp.cfg" -fi - network_create network_replace_subnet_in_configs @@ -40,7 +33,7 @@ docker run --rm \ $(docker_network_params $SUBNET 203) \ --ulimit core=-1 \ -e "TTCN3_PCAP_PATH=/data" \ - -e "OSMO_SUT_HOST=172.18.$SUBNET.200" \ + -e "OSMO_SUT_HOST=$SUB4_PREFIX.$SUBNET.200" \ -e "OSMO_SUT_PORT=4239" \ -v $VOL_BASE_DIR/stp-tester:/data \ --name ${BUILD_TAG}-ttcn3-stp-test \ diff --git a/ttcn3-stp-test/osmo-stp-tcp.confmerge b/ttcn3-stp-test/osmo-stp-tcp.confmerge deleted file mode 100644 index 8772c35..0000000 --- a/ttcn3-stp-test/osmo-stp-tcp.confmerge +++ /dev/null @@ -1,28 +0,0 @@ -cs7 instance 0 - asp asp-sender-tcp 9999 2905 m3ua tcp - local-ip 172.18.19.200 - local-ip fd02:db8:19::200 - remote-ip 172.18.19.203 - remote-ip fd02:db8:19::203 - role sg - transport-role server - asp asp-client0-tcp 10002 2906 m3ua tcp - local-ip 172.18.19.200 - local-ip fd02:db8:19::200 - remote-ip 172.18.19.203 - remote-ip fd02:db8:19::203 - role asp - transport-role client - as as-sender-tcp m3ua - asp asp-sender-tcp - routing-key 1123 123 - as as-client-tcp m3ua - routing-key 1155 155 - asp asp-client0-tcp - route-table system - update route 123 16777215 linkset as-sender-tcp - update route 155 16777215 linkset as-client-tcp - listen m3ua 2905 tcp - local-ip 172.18.19.200 - local-ip fd02:db8:19::200 - accept-asp-connections dynamic-permitted diff --git a/ttcn3-stp-test/osmo-stp.cfg b/ttcn3-stp-test/osmo-stp.cfg index 28e2363..16181c2 100644 --- a/ttcn3-stp-test/osmo-stp.cfg +++ b/ttcn3-stp-test/osmo-stp.cfg @@ -21,6 +21,33 @@ line vty ! cs7 instance 0 point-code format 24 + asp asp-sender-tcp 9999 2905 m3ua tcp + local-ip 172.18.19.200 + local-ip fd02:db8:19::200 + remote-ip 172.18.19.203 + remote-ip fd02:db8:19::203 + role sg + transport-role server + asp asp-client0-tcp 10002 2906 m3ua tcp + local-ip 172.18.19.200 + local-ip fd02:db8:19::200 + remote-ip 172.18.19.203 + remote-ip fd02:db8:19::203 + role asp + transport-role client + as as-sender-tcp m3ua + asp asp-sender-tcp + routing-key 1123 123 + as as-client-tcp m3ua + routing-key 1155 155 + asp asp-client0-tcp + route-table system + update route 123 16777215 linkset as-sender-tcp + update route 155 16777215 linkset as-client-tcp + listen m3ua 2905 tcp + local-ip 172.18.19.200 + local-ip fd02:db8:19::200 + accept-asp-connections dynamic-permitted ! !M3UA AS/ASP: ! diff --git a/ttcn3-upf-test/jenkins.sh b/ttcn3-upf-test/jenkins.sh index 8bb19e2..47b892c 100755 --- a/ttcn3-upf-test/jenkins.sh +++ b/ttcn3-upf-test/jenkins.sh @@ -33,7 +33,7 @@ docker run --rm \ $(docker_network_params $SUBNET 203) \ --ulimit core=-1 \ -e "TTCN3_PCAP_PATH=/data" \ - -e "OSMO_SUT_HOST=172.18.$SUBNET.20" \ + -e "OSMO_SUT_HOST=$SUB4_PREFIX.$SUBNET.20" \ -e "OSMO_SUT_PORT=4275" \ -v $VOL_BASE_DIR/upf-tester:/data \ --name ${BUILD_TAG}-ttcn3-upf-test \ |