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"*