From 8dcc436aaa373b4e502a34ffd981522972cd89ac Mon Sep 17 00:00:00 2001 From: Brian Picciano Date: Tue, 5 Sep 2023 23:14:40 +0200 Subject: [PATCH] Refactor tests some more, use shared across all of them --- go/cmd/entrypoint/bootstrap_util.go | 7 +- tests/cases/admin/01-create-network.sh | 35 +------- tests/cases/admin/02-create-bootstrap.sh | 12 +-- tests/cases/garage/00-cli.sh | 4 +- tests/cases/garage/01-mc.sh | 4 +- tests/entrypoint.sh | 31 +++++-- tests/utils/cleanup-single-node-cluster.sh | 14 ---- tests/utils/register-cleanup.sh | 3 + tests/utils/shared-daemon-env.sh | 11 +++ .../utils/with-1-data-1-empty-node-cluster.sh | 81 +++++++++++++++++++ tests/utils/with-single-node-cluster.sh | 48 ----------- 11 files changed, 134 insertions(+), 116 deletions(-) delete mode 100644 tests/utils/cleanup-single-node-cluster.sh create mode 100644 tests/utils/register-cleanup.sh create mode 100644 tests/utils/shared-daemon-env.sh create mode 100644 tests/utils/with-1-data-1-empty-node-cluster.sh delete mode 100644 tests/utils/with-single-node-cluster.sh diff --git a/go/cmd/entrypoint/bootstrap_util.go b/go/cmd/entrypoint/bootstrap_util.go index ca17dde..34f5633 100644 --- a/go/cmd/entrypoint/bootstrap_util.go +++ b/go/cmd/entrypoint/bootstrap_util.go @@ -1,10 +1,10 @@ package main import ( - "isle/bootstrap" "errors" "fmt" "io/fs" + "isle/bootstrap" "os" "path/filepath" ) @@ -15,7 +15,10 @@ func loadHostBootstrap() (bootstrap.Bootstrap, error) { hostBootstrap, err := bootstrap.FromFile(dataDirPath) if errors.Is(err, fs.ErrNotExist) { - return bootstrap.Bootstrap{}, errors.New("%q not found, has the daemon ever been run?") + return bootstrap.Bootstrap{}, fmt.Errorf( + "%q not found, has the daemon ever been run?", + dataDirPath, + ) } else if err != nil { return bootstrap.Bootstrap{}, fmt.Errorf("loading %q: %w", dataDirPath, err) diff --git a/tests/cases/admin/01-create-network.sh b/tests/cases/admin/01-create-network.sh index 28a0f4d..de41177 100644 --- a/tests/cases/admin/01-create-network.sh +++ b/tests/cases/admin/01-create-network.sh @@ -1,34 +1,5 @@ -# shellcheck source=../utils/with-tmp-for-case.sh -source "$UTILS"/with-tmp-for-case.sh - -mkdir a -mkdir b -mkdir c - -cat >daemon.yml < admin.yml +# shellcheck source=../../utils/with-1-data-1-empty-node-cluster.sh +source "$UTILS"/with-1-data-1-empty-node-cluster.sh [ "$(cat a/meta/isle/rpc_port)" = "3900" ] [ "$(cat b/meta/isle/rpc_port)" = "3910" ] @@ -36,7 +7,7 @@ isle admin create-network \ [ "$(yq "$bs" +bs="$secondus_bootstrap" # set in with-1-data-1-empty-node-cluster.sh [ "$(yq <"$bs" '.admin_creation_params')" = "$(yq > "$ROOT_TMPDIR/cleanup-pids" diff --git a/tests/utils/shared-daemon-env.sh b/tests/utils/shared-daemon-env.sh new file mode 100644 index 0000000..48b412a --- /dev/null +++ b/tests/utils/shared-daemon-env.sh @@ -0,0 +1,11 @@ +set -e + +base="$1" + +TMPDIR="$ROOT_TMPDIR/$base" +XDG_RUNTIME_DIR="$TMPDIR/.run" +XDG_DATA_HOME="$TMPDIR/.data" + +mkdir -p "$TMPDIR" "$XDG_RUNTIME_DIR" "$XDG_DATA_HOME" + +echo "export TMPDIR='$TMPDIR' XDG_RUNTIME_DIR='$XDG_RUNTIME_DIR' XDG_DATA_HOME='$XDG_DATA_HOME'" diff --git a/tests/utils/with-1-data-1-empty-node-cluster.sh b/tests/utils/with-1-data-1-empty-node-cluster.sh new file mode 100644 index 0000000..24efd92 --- /dev/null +++ b/tests/utils/with-1-data-1-empty-node-cluster.sh @@ -0,0 +1,81 @@ +set -e + +base="shared/1-data-1-empty" +primus_base="$base/primus" +secondus_base="$base/secondus" + +# Even if it's already intialized, we want to put the caller in primus' +# environment +eval "$($SHELL "$UTILS/shared-daemon-env.sh" "$primus_base")" +cd "$TMPDIR" + +secondus_bootstrap="$(pwd)/secondus-bootstrap.yml" + +if [ ! -d "$XDG_RUNTIME_DIR/isle" ]; then + echo "Initializing shared single node cluster" + + mkdir a + mkdir b + mkdir c + + cat >daemon.yml < admin.yml + + isle daemon --config-path daemon.yml >daemon.log 2>&1 & + pid="$!" + echo "Waiting for primus daemon (process $pid) to initialize" + + while ! isle hosts list >/dev/null; do sleep 1; done + + $SHELL "$UTILS/register-cleanup.sh" "$pid" "1-data-1-empty-node-cluster/primus" + + echo "Creating secondus bootstrap" + isle admin create-bootstrap \ + --admin-path admin.yml \ + --hostname secondus \ + --ip 10.6.9.2 \ + > "$secondus_bootstrap" + + ( + eval "$($SHELL "$UTILS/shared-daemon-env.sh" "$secondus_base")" + cd "$TMPDIR" + + cat >daemon.yml <daemon.log 2>&1 & + pid="$!" + echo "Waiting for secondus daemon (process $!) to initialize" + + while ! isle hosts list >/dev/null; do sleep 1; done + + $SHELL "$UTILS/register-cleanup.sh" "$pid" "1-data-1-empty-node-cluster/secondus" + ) +fi diff --git a/tests/utils/with-single-node-cluster.sh b/tests/utils/with-single-node-cluster.sh deleted file mode 100644 index 1d38f78..0000000 --- a/tests/utils/with-single-node-cluster.sh +++ /dev/null @@ -1,48 +0,0 @@ -set -e - -TMPDIR="$TMPDIR/shared/single-node.tmp" -XDG_RUNTIME_DIR="$TMPDIR/.run" -XDG_DATA_HOME="$TMPDIR/.data" - -mkdir -p "$TMPDIR" "$XDG_RUNTIME_DIR" "$XDG_DATA_HOME" - -cd "$TMPDIR" - -if [ ! -d "$XDG_RUNTIME_DIR/isle" ]; then - echo "Initializing shared single node cluster" - - mkdir a - mkdir b - mkdir c - - cat >daemon.yml < admin.yml - - isle daemon --config-path daemon.yml >daemon.log 2>&1 & - echo "Waiting for daemon (process $!) to initialize" - - while ! isle hosts list >/dev/null; do sleep 1; done -fi