Rework datastore tests
Sysrepo now supports parallelized tests. Use the new environmental
variables to implement this in netconf-cli. All of the tests now get
their own clean environment:
- Fresh repository and separate shm prefix. These get cleaned before and
after tests. The only thing that gets left are some empty directories.
- Its own model to test on.
- Separate Netopeer2 daemon: only for netconf tests - that means no
`sleep 5` for sysrepo-only tests. So no useless waiting. Wow! The daemon
also runs with its argv[0] changed to something recognizable for
`pkill`. That means that if Netopeer2 crashes for some reason, pkill
will notify me.
Side note: These changes somehow changed some of the linking, so hopefully I got
those right.
Change-Id: Ib0e582ef03fc559b24203af8afb2a295a6318ca9
diff --git a/tests/cleanup_datastore.bash.in b/tests/cleanup_datastore.bash.in
new file mode 100755
index 0000000..66df88c
--- /dev/null
+++ b/tests/cleanup_datastore.bash.in
@@ -0,0 +1,25 @@
+set -eux
+
+if [[ $(dirname "$(dirname "$(realpath "$SYSREPO_REPOSITORY_PATH")")") != "@CMAKE_CURRENT_BINARY_DIR@" ]]; then
+ echo "\$SYSREPO_REPOSITORY_PATH is not inside the build dir! Aborting. ($SYSREPO_REPOSITORY_PATH)"
+ exit 1
+fi
+
+if [[ -z "$SYSREPO_SHM_PREFIX" ]]; then
+ echo '$SYSREPO_SHM_PREFIX is empty! Aborting.'
+ exit 1
+fi
+
+BACKEND="$1"
+shift
+if [[ "$BACKEND" = "netconf" ]]; then
+ # The `-f` argument is neccessary so that pkill matches the whole command
+ # line, including stuff set by `exec -a`. Otherwise it matches the name in
+ # /proc/{pid}/stat and that is usually limited to 15 characters, so
+ # netopeer2-server appears as netopeer2-serve
+ pkill -f "${SYSREPO_SHM_PREFIX}_netopeer2-server"
+ rm "$NETOPEER_SOCKET"
+fi
+
+rm -r "$SYSREPO_REPOSITORY_PATH"
+rm "/dev/shm/$SYSREPO_SHM_PREFIX"*