aboutsummaryrefslogtreecommitdiffstats
path: root/tests/test_helpers.sh
diff options
context:
space:
mode:
authorThomas Vanbesien <tvanbesi@proton.me>2026-02-19 00:01:18 +0100
committerThomas Vanbesien <tvanbesi@proton.me>2026-02-19 00:01:18 +0100
commitf3648fefe040152bb1676d651ebf7d836cb8ac9e (patch)
treea656270416167c3a15e61f937c27093a7fb05bf0 /tests/test_helpers.sh
parent965db7e3243aecb02f7f57b4fe8dabe9ad50a697 (diff)
downloadBobinkCOpcUa-f3648fefe040152bb1676d651ebf7d836cb8ac9e.tar.gz
BobinkCOpcUa-f3648fefe040152bb1676d651ebf7d836cb8ac9e.zip
Refactor: reduce duplication and tighten helpers
- Remove redundant applicationUri log in print_application_description - Use UA_SECURITY_POLICY_NONE_URI macro instead of hardcoded string - Extract _s_register_with_lds / _s_deregister_from_lds helpers - Rename signal handler param 'sign' to 'sig' for consistency - Add INT_MIN/INT_MAX bounds check to config_require_int - Extract shared test helpers into tests/test_helpers.sh
Diffstat (limited to 'tests/test_helpers.sh')
-rw-r--r--tests/test_helpers.sh56
1 files changed, 56 insertions, 0 deletions
diff --git a/tests/test_helpers.sh b/tests/test_helpers.sh
new file mode 100644
index 0000000..a9d420c
--- /dev/null
+++ b/tests/test_helpers.sh
@@ -0,0 +1,56 @@
+#!/usr/bin/env bash
+# ---------------------------------------------------------------
+# Shared helpers for OPC UA discovery integration tests.
+#
+# Source this file from test scripts:
+# source "$(dirname "$0")/test_helpers.sh"
+# ---------------------------------------------------------------
+
+FAILURES=0
+
+# Waits up to 5 seconds for a process to listen on a TCP port.
+# Exits immediately if the process dies before the port opens.
+#
+# wait_for_port <port> <pid> <label>
+wait_for_port() {
+ local port="$1" pid="$2" label="$3" i=0
+ while [ $i -lt 50 ]; do
+ if ! kill -0 "$pid" 2>/dev/null; then
+ echo "FAIL: $label exited prematurely"
+ exit 1
+ fi
+ if ss -tlnp 2>/dev/null | grep -q ":${port} "; then
+ return 0
+ fi
+ sleep 0.1
+ i=$((i + 1))
+ done
+ echo "FAIL: $label did not listen on port $port within 5 s"
+ exit 1
+}
+
+# Records a PASS/FAIL result. Increments FAILURES on failure.
+#
+# check <label> <exit-code>
+check() {
+ local label="$1" result="$2"
+ if [ "$result" -eq 0 ]; then
+ echo "PASS: $label"
+ else
+ echo "FAIL: $label"
+ FAILURES=$((FAILURES + 1))
+ fi
+}
+
+# Asserts that the given TCP ports are not already in use.
+# Exits immediately if any port is occupied.
+#
+# assert_ports_free <port> [port...]
+assert_ports_free() {
+ for port in "$@"; do
+ if ss -tlnp 2>/dev/null | grep -q ":${port} "; then
+ echo "FAIL: port $port is already in use"
+ exit 1
+ fi
+ done
+}