blob: 1e013460bfc4ba728388c0b8f28bd24c1619393b [file] [log] [blame]
Václav Kubernátd1beedc2020-09-07 12:09:05 +02001set -eux
Václav Kubernátd1beedc2020-09-07 12:09:05 +02002
3if [[ $(dirname "$(dirname "$(realpath "$SYSREPO_REPOSITORY_PATH")")") != "@CMAKE_CURRENT_BINARY_DIR@" ]]; then
4 echo "\$SYSREPO_REPOSITORY_PATH is not inside the build dir! Aborting. ($SYSREPO_REPOSITORY_PATH)"
5 exit 1
6fi
7
8if [[ -z "$SYSREPO_SHM_PREFIX" ]]; then
9 echo '$SYSREPO_SHM_PREFIX is empty! Aborting.'
10 exit 1
11fi
12
13rm -rf "$SYSREPO_REPOSITORY_PATH"
14rm -rf "/dev/shm/$SYSREPO_SHM_PREFIX"*
15cp -r "@SYSREPO_SR_REPO_PATH@" "$SYSREPO_REPOSITORY_PATH"
16
17SYSREPOCTL="@SYSREPOCTL_EXECUTABLE@"
18SYSREPOCFG="@SYSREPOCFG_EXECUTABLE@"
19
20MODULE="$1"
21YANG_DIR=$(dirname "$1")
22shift
23
Václav Kubernát5e1bb4a2022-04-07 01:19:19 +020024# Uninstall the module
25"$SYSREPOCTL" --uninstall "$(basename "$MODULE" ".yang")" -v3 || true
26
Václav Kubernátd1beedc2020-09-07 12:09:05 +020027# Install the module
Václav Kubernátcfdb9222021-07-07 22:36:24 +020028"$SYSREPOCTL" --search-dirs "$YANG_DIR" --install "$MODULE" -v3
Václav Kubernátd1beedc2020-09-07 12:09:05 +020029
30BACKEND="$1"
31shift
32if [[ "$BACKEND" = "netconf" ]]; then
Václav Kubernáta1b52a02021-11-25 03:57:05 +010033 # Kill previous instances of Netopeer2 that are associated with this test. These can appear when you run tests and
34 # press CTRL-C before let the cleanup tests run.
35 pkill -f "${SYSREPO_SHM_PREFIX}_netopeer2-server" || true
36
Václav Kubernátd1beedc2020-09-07 12:09:05 +020037 NETOPEER2="@NETOPEER2_EXECUTABLE@"
38 # Setup netopeer config
39 "$SYSREPOCFG" --import --datastore=running --format=xml --module=ietf-netconf-server <<< ""
40
41 # Disable nacm
42 for datastore in startup running; do
43 "$SYSREPOCFG" --import="@CMAKE_CURRENT_SOURCE_DIR@/tests/disable-nacm.xml" --datastore="$datastore" --format=xml --module=ietf-netconf-acm
44 done
45
Václav Kubernát634e24a2020-11-19 01:20:27 +010046 # I need to run netopeer in the foreground, because I want to get its standard outputs. However, ctest doesn't like
47 # when child processes don't exit and always waits fot them. The `setsid` command runs a program in a separate
48 # session and also forks, which means it becomes invisible to ctest. I want the name of the process to be
49 # recognizable. For that `exec -a` can be used. Unfortunately `exec` is shell-builtin, so I need to run bash instead
50 # of running `exec` directly. Finally, I redirect its stdout and stderr to a file.
Jan Kundrát805d02c2020-11-13 20:20:44 +010051 NETOPEER_PIDFILE="@CMAKE_CURRENT_BINARY_DIR@/test_netopeer_files/$SYSREPO_SHM_PREFIX.pid"
Václav Kubernát634e24a2020-11-19 01:20:27 +010052 setsid -f \
Jan Kundrát805d02c2020-11-13 20:20:44 +010053 bash -c "exec -a '${SYSREPO_SHM_PREFIX}_netopeer2-server' '$NETOPEER2' -d -v2 '-U$NETOPEER_SOCKET' -p'$NETOPEER_PIDFILE'" \
Václav Kubernát634e24a2020-11-19 01:20:27 +010054 < /dev/null &> "@CMAKE_CURRENT_BINARY_DIR@/test_netopeer_outputs/$SYSREPO_SHM_PREFIX.out"
Václav Kubernátd1beedc2020-09-07 12:09:05 +020055 sleep 5
56fi