From f253957f974aa29bfad22c0d8d8c423d4a996614 Mon Sep 17 00:00:00 2001 From: Martine Lenders Date: Wed, 1 Sep 2021 11:54:14 +0200 Subject: [PATCH 1/3] tests/gnrc_dhcpv6_client: dynamically adapt Kea config for >=1.7.10 --- tests/gnrc_dhcpv6_client/dhcpv6_server.sh | 43 ++++++++++++++++++- .../{tests-as-root => tests}/01-run.py | 0 2 files changed, 41 insertions(+), 2 deletions(-) rename tests/gnrc_dhcpv6_client/{tests-as-root => tests}/01-run.py (100%) diff --git a/tests/gnrc_dhcpv6_client/dhcpv6_server.sh b/tests/gnrc_dhcpv6_client/dhcpv6_server.sh index 5a1e95691b..c0bc3a17a3 100755 --- a/tests/gnrc_dhcpv6_client/dhcpv6_server.sh +++ b/tests/gnrc_dhcpv6_client/dhcpv6_server.sh @@ -16,10 +16,49 @@ if ! command -v kea-dhcp6; then exit 1 fi +_sem_ver() { + major=$(echo "$1" | cut -d. -f1 | sed -e 's/^0\+//' -e 's/^$/0/') + minor=$(echo "$1" | cut -d. -f2 | sed -e 's/^0\+//' -e 's/^$/0/') + patch=$(echo "$1" | cut -d. -f3 | sed -e 's/^0\+//' -e 's/^$/0/') + echo "$(( major << 32 | minor << 8 | patch ))" +} + +_kea_version_lesser_1_7_10() { + test "$(_sem_ver "$(kea-dhcp6 -v)")" -lt "$(_sem_ver "1.7.10")" + return $? +} + _dhcpv6_server() { + TMPDIR="$(mktemp -u | xargs dirname)/${APPLICATION}_kea" + + # only used `mktemp` with dry-run above to get temp directory name, so we + # still need to create the directory + mkdir -p "${TMPDIR}" + if _kea_version_lesser_1_7_10; then + config=$2 + else + # Top-level "Logging" config is not supported by Kea >=1.7.10, so move + # that config to Dhcp6 map, see + # https://kea.readthedocs.io/en/kea-1.7.10/arm/config.html#json-syntax + config="${TMPDIR}/kea-dhcp6.config" + convert_json="$(cat < Date: Wed, 1 Sep 2021 11:54:51 +0200 Subject: [PATCH 2/3] tests/gnrc_dhcpv6_client: remove sudo requirement --- tests/gnrc_dhcpv6_client/dhcpv6_server.sh | 8 ++------ tests/gnrc_dhcpv6_client/kea-dhcp6.conf | 4 +++- .../{tests => tests-with-config}/01-run.py | 0 3 files changed, 5 insertions(+), 7 deletions(-) rename tests/gnrc_dhcpv6_client/{tests => tests-with-config}/01-run.py (100%) diff --git a/tests/gnrc_dhcpv6_client/dhcpv6_server.sh b/tests/gnrc_dhcpv6_client/dhcpv6_server.sh index c0bc3a17a3..6e1b735906 100755 --- a/tests/gnrc_dhcpv6_client/dhcpv6_server.sh +++ b/tests/gnrc_dhcpv6_client/dhcpv6_server.sh @@ -6,11 +6,6 @@ # Distributed under terms of the MIT license. # -if [ "$EUID" -ne 0 ]; then - echo -e "\033[31;1mRequire root since kea uses some PID and Lock files in /var\033[0m" >&2 - exit 1 -fi - if ! command -v kea-dhcp6; then echo -e "\033[31;1mCommand kea-dhcp6 required\033[0m" >&2 exit 1 @@ -56,7 +51,8 @@ EOF python3 -c "$convert_json" fi sleep 1 # sleep to let TAP become active - KEA_PIDFILE_DIR=${TMPDIR} KEA_LOCKFILE_DIR=${TMPDIR} \ + cd "$TMPDIR" || exit 1 + KEA_PIDFILE_DIR=. KEA_LOCKFILE_DIR=. \ kea-dhcp6 -p "$1" -c "$config" } diff --git a/tests/gnrc_dhcpv6_client/kea-dhcp6.conf b/tests/gnrc_dhcpv6_client/kea-dhcp6.conf index b42eade5bd..ebe7d9215e 100644 --- a/tests/gnrc_dhcpv6_client/kea-dhcp6.conf +++ b/tests/gnrc_dhcpv6_client/kea-dhcp6.conf @@ -4,8 +4,10 @@ "interfaces-config": { "interfaces": [ "tapbr0" ] }, + "data-directory": ".", "lease-database": { - "type": "memfile" + "type": "memfile", + "name": "kea-dhcp6.leases.csv" }, "expired-leases-processing": { "reclaim-timer-wait-time": 10, diff --git a/tests/gnrc_dhcpv6_client/tests/01-run.py b/tests/gnrc_dhcpv6_client/tests-with-config/01-run.py similarity index 100% rename from tests/gnrc_dhcpv6_client/tests/01-run.py rename to tests/gnrc_dhcpv6_client/tests-with-config/01-run.py From 73af1528036a6cd248c2b3d0b7ee5254b1336892 Mon Sep 17 00:00:00 2001 From: Martine Lenders Date: Wed, 1 Sep 2021 16:14:58 +0200 Subject: [PATCH 3/3] tests/gnrc_dhcpv6_client: bail out of sub-shell after server started --- tests/gnrc_dhcpv6_client/dhcpv6_server.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/gnrc_dhcpv6_client/dhcpv6_server.sh b/tests/gnrc_dhcpv6_client/dhcpv6_server.sh index 6e1b735906..57b7f76e90 100755 --- a/tests/gnrc_dhcpv6_client/dhcpv6_server.sh +++ b/tests/gnrc_dhcpv6_client/dhcpv6_server.sh @@ -53,7 +53,7 @@ EOF sleep 1 # sleep to let TAP become active cd "$TMPDIR" || exit 1 KEA_PIDFILE_DIR=. KEA_LOCKFILE_DIR=. \ - kea-dhcp6 -p "$1" -c "$config" + kea-dhcp6 -p "$1" -c "$config" & } # no need to kill from external, kea handles double instances gracefully