| 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 |
| |
| rm -rf "$SYSREPO_REPOSITORY_PATH" |
| rm -rf "/dev/shm/$SYSREPO_SHM_PREFIX"* |
| cp -r "@SYSREPO_SR_REPO_PATH@" "$SYSREPO_REPOSITORY_PATH" |
| |
| SYSREPOCTL="@SYSREPOCTL_EXECUTABLE@" |
| SYSREPOCFG="@SYSREPOCFG_EXECUTABLE@" |
| |
| MODULE="$1" |
| YANG_DIR=$(dirname "$1") |
| shift |
| |
| # Uninstall the module |
| "$SYSREPOCTL" --uninstall "$(basename "$MODULE" ".yang")" -v3 || true |
| |
| # Install the module |
| "$SYSREPOCTL" --search-dirs "$YANG_DIR" --install "$MODULE" -v3 |
| |
| BACKEND="$1" |
| shift |
| if [[ "$BACKEND" = "netconf" ]]; then |
| # Kill previous instances of Netopeer2 that are associated with this test. These can appear when you run tests and |
| # press CTRL-C before let the cleanup tests run. |
| pkill -f "${SYSREPO_SHM_PREFIX}_netopeer2-server" || true |
| |
| NETOPEER2="@NETOPEER2_EXECUTABLE@" |
| # Setup netopeer config |
| "$SYSREPOCFG" --import --datastore=running --format=xml --module=ietf-netconf-server <<< "" |
| |
| # Disable nacm |
| for datastore in startup running; do |
| "$SYSREPOCFG" --import="@CMAKE_CURRENT_SOURCE_DIR@/tests/disable-nacm.xml" --datastore="$datastore" --format=xml --module=ietf-netconf-acm |
| done |
| |
| # I need to run netopeer in the foreground, because I want to get its standard outputs. However, ctest doesn't like |
| # when child processes don't exit and always waits fot them. The `setsid` command runs a program in a separate |
| # session and also forks, which means it becomes invisible to ctest. I want the name of the process to be |
| # recognizable. For that `exec -a` can be used. Unfortunately `exec` is shell-builtin, so I need to run bash instead |
| # of running `exec` directly. Finally, I redirect its stdout and stderr to a file. |
| NETOPEER_PIDFILE="@CMAKE_CURRENT_BINARY_DIR@/test_netopeer_files/$SYSREPO_SHM_PREFIX.pid" |
| setsid -f \ |
| bash -c "exec -a '${SYSREPO_SHM_PREFIX}_netopeer2-server' '$NETOPEER2' -d -v2 '-U$NETOPEER_SOCKET' -p'$NETOPEER_PIDFILE'" \ |
| < /dev/null &> "@CMAKE_CURRENT_BINARY_DIR@/test_netopeer_outputs/$SYSREPO_SHM_PREFIX.out" |
| sleep 5 |
| fi |