osmith has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/38344?usp=email )


Change subject: ggsn: testenv: support running osmo-ggsn in QEMU
......................................................................

ggsn: testenv: support running osmo-ggsn in QEMU

Change-Id: I3f9db4325d5928c809cc99bc82d9cb82bf9e71eb
---
A ggsn_tests/osmo-ggsn/run.sh
M ggsn_tests/osmo-ggsn/testenv.sh
M ggsn_tests/testenv_osmo_ggsn_all.cfg
M ggsn_tests/testenv_osmo_ggsn_v4_only.cfg
M ggsn_tests/testenv_osmo_ggsn_v4v6_only.cfg
M ggsn_tests/testenv_osmo_ggsn_v6_only.cfg
6 files changed, 73 insertions(+), 6 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks 
refs/changes/44/38344/1

diff --git a/ggsn_tests/osmo-ggsn/run.sh b/ggsn_tests/osmo-ggsn/run.sh
new file mode 100755
index 0000000..6cbe10b
--- /dev/null
+++ b/ggsn_tests/osmo-ggsn/run.sh
@@ -0,0 +1,39 @@
+#!/bin/sh -ex
+if [ -z "$TESTENV_QEMU_KERNEL" ]; then
+       exec osmo-ggsn "$@"
+fi
+
+build_initrd() {
+       qemu_initrd_init
+
+       qemu_initrd_add_mod \
+               gtp \
+               tun
+
+       qemu_initrd_add_bin \
+               osmo-ggsn
+
+       qemu_initrd_add_file \
+               osmo-ggsn.cfg
+
+       # Enable dynamic_debug
+       qemu_initrd_add_cmd \
+               "mount -t debugfs none /sys/kernel/debug || true" \
+               "echo -n 'module gtp +p' > 
/sys/kernel/debug/dynamic_debug/control || true"
+
+       qemu_initrd_add_cmd \
+               "ip addr add 172.18.3.202/24 brd 172.18.3.255 dev eth0" \
+               "ip route add default via 172.18.3.1 dev eth0" \
+               "sysctl net.ipv4.ip_forward=1" \
+               "osmo-ggsn"
+
+       qemu_initrd_finish
+}
+
+. qemu_functions.sh
+
+if ! build_initrd >build_initrd.log 2>&1; then
+       qemu_initrd_exit_error "build_initrd.log"
+fi
+
+qemu_run
diff --git a/ggsn_tests/osmo-ggsn/testenv.sh b/ggsn_tests/osmo-ggsn/testenv.sh
index 439ed7b..52a0d1f 100755
--- a/ggsn_tests/osmo-ggsn/testenv.sh
+++ b/ggsn_tests/osmo-ggsn/testenv.sh
@@ -22,11 +22,24 @@
        esac
 }

+check_usage_qemu() {
+       if [ -n "$TESTENV_QEMU_KERNEL" ] && [ "$CONFIG" = "all" ]; then
+               set +x
+               echo "ERROR: '--config osmo_ggsn_all' uses multiple APNs, which 
is currently not supported with kernel" \
+                       "gtp-u! (OS#6106)"
+               exit 1
+       fi
+}
+
 adjust_osmo_ggsn_config() {
        osmo-config-merge \
                osmo-ggsn/osmo-ggsn.src.cfg \
                osmo-ggsn/osmo-ggsn-"$CONFIG".confmerge \
                > osmo-ggsn.cfg
+
+       if [ -n "$TESTENV_QEMU_KERNEL" ]; then
+               sed -i "s/gtpu-mode tun/gtpu-mode kernel-gtp/" osmo-ggsn.cfg
+       fi
 }

 adjust_ttcn3_config() {
@@ -37,7 +50,9 @@
 }

 setcap_osmo_ggsn() {
-       sudo setcap CAP_NET_ADMIN=+eip $(which osmo-ggsn)
+       if [ -z "$TESTENV_QEMU_KERNEL" ]; then
+               sudo setcap CAP_NET_ADMIN=+eip $(which osmo-ggsn)
+       fi
 }

 rename_junit_xml_classname() {
@@ -52,10 +67,15 @@
 # Add a bridge reachable through the GTP tunnel that can answer ICMP
 # pings (for e.g. TC_pdp4_act_deact_gtpu_access). The bridge is also used to
 # connect the SUT when it runs in QEMU.
-EXTRA_IPS="172.18.3.202 fd02:db8:3::20" add_remove_testenv0_bridge.sh
+if [ -n "$TESTENV_QEMU_KERNEL" ]; then
+       add_remove_testenv0_bridge.sh
+else
+       EXTRA_IPS="172.18.3.202 fd02:db8:3::20" add_remove_testenv0_bridge.sh
+fi

 case "$TESTENV_CLEAN_REASON" in
        prepare)
+               check_usage_qemu
                adjust_osmo_ggsn_config
                adjust_ttcn3_config
                setcap_osmo_ggsn
diff --git a/ggsn_tests/testenv_osmo_ggsn_all.cfg 
b/ggsn_tests/testenv_osmo_ggsn_all.cfg
index ca82fe1..3b7e1cf 100644
--- a/ggsn_tests/testenv_osmo_ggsn_all.cfg
+++ b/ggsn_tests/testenv_osmo_ggsn_all.cfg
@@ -3,7 +3,9 @@
 config=GGSN_Tests.cfg

 [ggsn]
-program=osmo-ggsn
+qemu=optional
+program=osmo-ggsn/run.sh
+setup=qemu_wait.sh
 make=osmo-ggsn
 package=osmo-ggsn libosmocore-utils
 copy=osmo-ggsn
diff --git a/ggsn_tests/testenv_osmo_ggsn_v4_only.cfg 
b/ggsn_tests/testenv_osmo_ggsn_v4_only.cfg
index 881e9e8..f897964 100644
--- a/ggsn_tests/testenv_osmo_ggsn_v4_only.cfg
+++ b/ggsn_tests/testenv_osmo_ggsn_v4_only.cfg
@@ -3,7 +3,9 @@
 config=GGSN_Tests.cfg

 [ggsn]
-program=osmo-ggsn
+qemu=optional
+program=osmo-ggsn/run.sh
+setup=qemu_wait.sh
 make=osmo-ggsn
 package=osmo-ggsn libosmocore-utils
 copy=osmo-ggsn
diff --git a/ggsn_tests/testenv_osmo_ggsn_v4v6_only.cfg 
b/ggsn_tests/testenv_osmo_ggsn_v4v6_only.cfg
index 2ff3292..9bc02a5 100644
--- a/ggsn_tests/testenv_osmo_ggsn_v4v6_only.cfg
+++ b/ggsn_tests/testenv_osmo_ggsn_v4v6_only.cfg
@@ -3,7 +3,9 @@
 config=GGSN_Tests.cfg

 [ggsn]
-program=osmo-ggsn
+qemu=optional
+program=osmo-ggsn/run.sh
+setup=qemu_wait.sh
 make=osmo-ggsn
 package=osmo-ggsn libosmocore-utils
 copy=osmo-ggsn
diff --git a/ggsn_tests/testenv_osmo_ggsn_v6_only.cfg 
b/ggsn_tests/testenv_osmo_ggsn_v6_only.cfg
index 4569874..32f7f96 100644
--- a/ggsn_tests/testenv_osmo_ggsn_v6_only.cfg
+++ b/ggsn_tests/testenv_osmo_ggsn_v6_only.cfg
@@ -3,7 +3,9 @@
 config=GGSN_Tests.cfg

 [ggsn]
-program=osmo-ggsn
+qemu=optional
+program=osmo-ggsn/run.sh
+setup=qemu_wait.sh
 make=osmo-ggsn
 package=osmo-ggsn libosmocore-utils
 copy=osmo-ggsn

--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/38344?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings?usp=email

Gerrit-MessageType: newchange
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I3f9db4325d5928c809cc99bc82d9cb82bf9e71eb
Gerrit-Change-Number: 38344
Gerrit-PatchSet: 1
Gerrit-Owner: osmith <[email protected]>

Reply via email to