osmith has submitted this change. (
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/40453?usp=email )
Change subject: pgw: initial testenv.cfg
......................................................................
pgw: initial testenv.cfg
All tests are passing with this config.
Related: OS#6494
Change-Id: I0f14ce56859c3303b2f6af57d7ab5722e0cbe8e0
---
M _testenv/data/podman/Dockerfile
M _testenv/testenv/podman.py
M pgw/PGW_Tests.cfg
A pgw/freediameter.conf
A pgw/open5gs-nrf.yaml
A pgw/open5gs-smf.yaml
A pgw/open5gs-upf.yaml
A pgw/osmo-uecups-daemon.cfg
A pgw/testenv.cfg
A pgw/testenv.sh
10 files changed, 310 insertions(+), 0 deletions(-)
Approvals:
Jenkins Builder: Verified
laforge: Looks good to me, but someone else must approve
pespin: Looks good to me, approved
diff --git a/_testenv/data/podman/Dockerfile b/_testenv/data/podman/Dockerfile
index 84aa0db..3c241dc 100644
--- a/_testenv/data/podman/Dockerfile
+++ b/_testenv/data/podman/Dockerfile
@@ -55,6 +55,7 @@
libmnl-dev \
libmongoc-dev \
libnghttp2-dev \
+ libnl-route-3-dev \
libortp-dev \
libpcap-dev \
libpcsclite-dev \
diff --git a/_testenv/testenv/podman.py b/_testenv/testenv/podman.py
index 5099a95..77a728f 100644
--- a/_testenv/testenv/podman.py
+++ b/_testenv/testenv/podman.py
@@ -231,6 +231,7 @@
f"--security-opt=seccomp={seccomp}",
"--cap-add=NET_ADMIN", # for dumpcap, tun devices, osmo-pcap-client
"--cap-add=NET_RAW", # for dumpcap, osmo-pcap-client
+ "--cap-add=SYS_ADMIN", # for osmo-uecups-daemon (CLONE_NEWNET)
"--device=/dev/net/tun", # for e.g. ggsn_tests
"--volume",
f"{apt_dir_var_cache}:/var/cache/apt",
diff --git a/pgw/PGW_Tests.cfg b/pgw/PGW_Tests.cfg
index a259c32..ce3076b 100644
--- a/pgw/PGW_Tests.cfg
+++ b/pgw/PGW_Tests.cfg
@@ -11,6 +11,16 @@
[TESTPORT_PARAMETERS]
[MODULE_PARAMETERS]
+PGW_Tests.mp_pgw_hostname := "127.0.0.4"
+PGW_Tests.mp_local_hostname_c := "127.0.0.202"
+PGW_Tests.mp_local_hostname_u := "127.0.0.20"
+PGW_Tests.mp_run_prog_log_path := "./run_prog"
+PGW_Tests.mp_run_prog_as_user := "osmocom" # testenv.sh sets this to $USER
+PGW_Tests.mp_ping_hostname := "10.45.0.1"
+PGW_Tests.mp_pcrf_local_ip:= "127.0.0.202"
+PGW_Tests.mp_ocs_local_ip:= "127.0.0.202"
+PGW_Tests.mp_aaa_local_ip:= "127.0.0.202"
+GTPv2_Emulation.mp_uecups_host := "127.0.0.20"
[MAIN_CONTROLLER]
diff --git a/pgw/freediameter.conf b/pgw/freediameter.conf
new file mode 100644
index 0000000..266f894
--- /dev/null
+++ b/pgw/freediameter.conf
@@ -0,0 +1,20 @@
+# See
https://github.com/open5gs/freeDiameter/blob/main/doc/freediameter.conf.sam…
+
+Identity = "smf.localdomain";
+Realm = "localdomain";
+Port = 3868;
+SecPort = 0;
+ListenOn = "127.0.0.4";
+NoRelay;
+
+LoadExtension = "dbg_msg_dumps.fdx" : "0x8888";
+LoadExtension = "dict_rfc5777.fdx";
+LoadExtension = "dict_mip6i.fdx";
+LoadExtension = "dict_nasreq.fdx";
+LoadExtension = "dict_nas_mipv6.fdx";
+LoadExtension = "dict_dcca.fdx";
+LoadExtension = "dict_dcca_3gpp.fdx";
+
+ConnectPeer = "pcrf.localdomain" { ConnectTo = "127.0.0.202"; No_TLS;
TcTimer = 2; };
+ConnectPeer = "ocs.localdomain" { ConnectTo = "127.0.0.202"; Port =
3869; No_TLS; TcTimer = 2; };
+ConnectPeer = "aaa.localdomain" { ConnectTo = "127.0.0.202"; Port =
3870; No_TLS; TcTimer = 2; };
diff --git a/pgw/open5gs-nrf.yaml b/pgw/open5gs-nrf.yaml
new file mode 100644
index 0000000..0979be0
--- /dev/null
+++ b/pgw/open5gs-nrf.yaml
@@ -0,0 +1,40 @@
+# See
https://github.com/open5gs/open5gs/blob/main/configs/open5gs/nrf.yaml.in
+
+db_uri: mongodb://localhost/open5gs
+
+logger:
+ level: info
+
+global:
+ max:
+ ue: 1024
+
+sbi:
+ server:
+ no_tls: true
+ cacert: /etc/open5gs/tls/ca.crt
+ key: /etc/open5gs/tls/nrf.key
+ cert: /etc/open5gs/tls/nrf.crt
+ client:
+ no_tls: true
+ cacert: /etc/open5gs/tls/ca.crt
+ key: /etc/open5gs/tls/nrf.key
+ cert: /etc/open5gs/tls/nrf.crt
+
+nrf:
+ sbi:
+ server:
+ - address: 127.0.0.10
+ port: 7777
+
+scp:
+ sbi:
+ - addr: 127.0.1.10
+ port: 7777
+
+
+parameter:
+
+max:
+
+time:
diff --git a/pgw/open5gs-smf.yaml b/pgw/open5gs-smf.yaml
new file mode 100644
index 0000000..49ec84b
--- /dev/null
+++ b/pgw/open5gs-smf.yaml
@@ -0,0 +1,72 @@
+# See
https://github.com/open5gs/open5gs/blob/main/configs/open5gs/smf.yaml.in
+
+logger:
+ level: info
+
+global:
+ max:
+ ue: 1024
+
+sbi:
+ server:
+ no_tls: true
+ cacert: /etc/open5gs/tls/ca.crt
+ key: /etc/open5gs/tls/smf.key
+ cert: /etc/open5gs/tls/smf.crt
+ client:
+ no_tls: true
+ cacert: /etc/open5gs/tls/ca.crt
+ key: /etc/open5gs/tls/smf.key
+ cert: /etc/open5gs/tls/smf.crt
+
+smf:
+ sbi:
+ server:
+ - address: 127.0.0.4
+ port: 7777
+ client:
+ nrf:
+ - uri:
http://127.0.0.10:7777
+ scp:
+ - uri:
http://127.0.1.10:7777
+ pfcp:
+ server:
+ - address: 127.0.0.4
+ client:
+ upf:
+ - address: 127.0.0.7
+ gtpc:
+ server:
+ - address: 127.0.0.4
+ gtpu:
+ server:
+ - address: 127.0.0.4
+ metrics:
+ server:
+ - address: 127.0.0.4
+ port: 9090
+ session:
+ - subnet: 10.45.0.0/16
+ gateway: 10.45.0.1
+ dnn: internet
+ - subnet: cafe::/64
+ gateway: cafe::1
+ dnn: internet
+ dns:
+ - 8.8.8.8
+ - 8.8.4.4
+ - 2001:4860:4860::8888
+ - 2001:4860:4860::8844
+ mtu: 1400
+ p-cscf:
+ - 127.0.0.7
+ - fd02:db8:18::7
+ ctf:
+ enabled: auto
+ freeDiameter: freediameter.conf
+
+parameter:
+
+max:
+
+time:
diff --git a/pgw/open5gs-upf.yaml b/pgw/open5gs-upf.yaml
new file mode 100644
index 0000000..e65914e
--- /dev/null
+++ b/pgw/open5gs-upf.yaml
@@ -0,0 +1,34 @@
+# See
https://github.com/open5gs/open5gs/blob/main/configs/open5gs/upf.yaml.in
+
+logger:
+ level: info
+
+global:
+ max:
+ ue: 1024
+
+upf:
+ pfcp:
+ server:
+ - address: 127.0.0.7
+ client:
+ smf:
+ - address: 127.0.0.4
+ gtpu:
+ server:
+ - address: 127.0.0.7
+ session:
+ - subnet: 10.45.0.0/16
+ gateway: 10.45.0.1
+ dnn: internet
+ dev: ogstun46
+ - subnet: cafe::/64
+ gateway: cafe::1
+ dnn: internet
+ dev: ogstun46
+
+parameter:
+
+max:
+
+time:
diff --git a/pgw/osmo-uecups-daemon.cfg b/pgw/osmo-uecups-daemon.cfg
new file mode 100644
index 0000000..5a1eafc
--- /dev/null
+++ b/pgw/osmo-uecups-daemon.cfg
@@ -0,0 +1,17 @@
+log gsmtap 127.0.0.202
+ logging level set-all debug
+ logging filter all 1
+log stderr
+ logging filter all 1
+ logging print extended-timestamp 1
+ logging print file basename last
+ logging print category-hex 0
+ logging print category 1
+ logging print level 1
+ logging timestamp 1
+ logging color 1
+ logging level set-all info
+line vty
+ bind 127.0.0.20
+uecups
+ local-ip 127.0.0.20
diff --git a/pgw/testenv.cfg b/pgw/testenv.cfg
new file mode 100644
index 0000000..e2a40e2
--- /dev/null
+++ b/pgw/testenv.cfg
@@ -0,0 +1,32 @@
+[testsuite]
+titan_min=9.0.0
+program=PGW_Tests
+config=PGW_Tests.cfg
+clean=testenv.sh
+
+[nrf]
+program=open5gs-nrfd -c open5gs-nrf.yaml
+make=open5gs
+package=open5gs-nrf
+copy=open5gs-nrf.yaml
+
+[upf]
+program=open5gs-upfd -c open5gs-upf.yaml
+make=open5gs
+package=open5gs-upf
+copy=open5gs-upf.yaml
+
+[smf]
+program=open5gs-smfd -c open5gs-smf.yaml
+make=open5gs
+package=open5gs-smf
+copy=open5gs-smf.yaml freediameter.conf
+
+[uecups-daemon]
+# Programs started by osmo-uecups-daemo log to this dir
+prepare=mkdir run_prog
+# Must run as root for writing to /var/run/netns/
+program=sudo $(which osmo-uecups-daemon)
+make=osmo-uecups
+package=osmo-uecups
+copy=osmo-uecups-daemon.cfg
diff --git a/pgw/testenv.sh b/pgw/testenv.sh
new file mode 100755
index 0000000..2abf999
--- /dev/null
+++ b/pgw/testenv.sh
@@ -0,0 +1,83 @@
+#!/bin/sh -ex
+
+check_usage() {
+ if [ -z "$TESTENV_CLEAN_REASON" ]; then
+ set +x
+ echo "Do not run this script manually."
+ echo "Run 'testenv.py run pgw' instead."
+ exit 1
+ fi
+}
+
+adjust_ttcn3_config() {
+ local as_user="${USER:-root}"
+ sed -i "s/^PGW_Tests.mp_run_prog_as_user := .*/PGW_Tests.mp_run_prog_as_user :=
\"$as_user\"/" \
+ PGW_Tests.cfg
+}
+
+run_setcap() {
+ sudo setcap "CAP_NET_ADMIN=+eip" "$(which open5gs-upfd)"
+ sudo setcap "CAP_NET_ADMIN=+eip" "$(which open5gs-smfd)"
+ sudo setcap "CAP_NET_ADMIN,CAP_SYS_ADMIN=+eip" "$(which
osmo-uecups-daemon)"
+}
+
+add_tun() {
+ local name="$1"
+ if ! grep "$name" /proc/net/dev > /dev/null; then
+ sudo ip tuntap add name $name mode tun
+ fi
+}
+
+add_addr() {
+ local name="$1"
+ local addr="$2"
+
+ sudo ip addr add "$addr" dev "$name"
+}
+
+add_tun_all() {
+ add_tun "ogstun4"
+ add_tun "ogstun6"
+ add_tun "ogstun46"
+
+ add_addr "ogstun46" "10.45.0.1/16"
+ add_addr "ogstun46" "cafe::1/64"
+
+ sudo ip link set ogstun4 up
+ sudo ip link set ogstun6 up
+ sudo ip link set ogstun46 up
+}
+
+del_tun() {
+ local name="$1"
+
+ if ip link ls dev "$name" >/dev/null 2>&1; then
+ sudo ip link set "$name" down
+ sudo ip link del "$name"
+ fi
+}
+
+del_tun_all() {
+ del_tun "ogstun4"
+ del_tun "ogstun6"
+ del_tun "ogstun46"
+}
+
+check_usage
+
+case "$TESTENV_CLEAN_REASON" in
+ prepare)
+ run_setcap
+ adjust_ttcn3_config
+ del_tun_all
+ add_tun_all
+ ;;
+ crashed|finished)
+ del_tun_all
+ ;;
+ *)
+ set +x
+ echo "ERROR: unexpected TESTENV_CLEAN_REASON: $TESTENV_CLEAN_REASON"
+ exit 1
+ ;;
+esac
--
To view, visit
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/40453?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I0f14ce56859c3303b2f6af57d7ab5722e0cbe8e0
Gerrit-Change-Number: 40453
Gerrit-PatchSet: 2
Gerrit-Owner: osmith <osmith(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>