1
0
Эх сурвалжийг харах

Fix companion lifecycle test ownership metadata

Drew Ritter 3 сар өмнө
parent
commit
5eea0d09d7

+ 11 - 0
tests/brainstorm-server/stop-server.test.sh

@@ -27,6 +27,15 @@ trap cleanup EXIT
 
 
 track_dir() { DIRS+=("$1"); }
 track_dir() { DIRS+=("$1"); }
 track_pid() { PIDS+=("$1"); }
 track_pid() { PIDS+=("$1"); }
+untrack_pid() {
+  local remove="$1"
+  local kept=()
+  local pid
+  for pid in "${PIDS[@]}"; do
+    [[ "$pid" == "$remove" ]] || kept+=("$pid")
+  done
+  PIDS=("${kept[@]}")
+}
 new_server_id() {
 new_server_id() {
   printf 'testid%026d\n' "$RANDOM"
   printf 'testid%026d\n' "$RANDOM"
 }
 }
@@ -67,6 +76,8 @@ sleep 0.3
 if kill -0 "$SRV" 2>/dev/null; then
 if kill -0 "$SRV" 2>/dev/null; then
   bad "real brainstorm server still running after stop" "$OUT"
   bad "real brainstorm server still running after stop" "$OUT"
 else
 else
+  wait "$SRV" 2>/dev/null || true
+  untrack_pid "$SRV"
   case "$OUT" in
   case "$OUT" in
     *stopped*) ok "real brainstorm server with matching instance id is stopped" ;;
     *stopped*) ok "real brainstorm server with matching instance id is stopped" ;;
     *) bad "server stopped but status was not 'stopped'" "$OUT" ;;
     *) bad "server stopped but status was not 'stopped'" "$OUT" ;;

+ 11 - 2
tests/brainstorm-server/windows-lifecycle.test.sh

@@ -335,14 +335,17 @@ echo ""
 echo "--- Clean Shutdown ---"
 echo "--- Clean Shutdown ---"
 
 
 mkdir -p "$TEST_DIR/stop-test/state"
 mkdir -p "$TEST_DIR/stop-test/state"
+STOP_TEST_ID="$(printf 'windowsstop%021d\n' "$RANDOM")"
+printf '%s\n' "$STOP_TEST_ID" > "$TEST_DIR/stop-test/state/server-instance-id"
 
 
 BRAINSTORM_DIR="$TEST_DIR/stop-test" \
 BRAINSTORM_DIR="$TEST_DIR/stop-test" \
 BRAINSTORM_HOST="127.0.0.1" \
 BRAINSTORM_HOST="127.0.0.1" \
 BRAINSTORM_URL_HOST="localhost" \
 BRAINSTORM_URL_HOST="localhost" \
 BRAINSTORM_OWNER_PID="" \
 BRAINSTORM_OWNER_PID="" \
 BRAINSTORM_PORT=$((49152 + RANDOM % 16383)) \
 BRAINSTORM_PORT=$((49152 + RANDOM % 16383)) \
-  node "$SERVER_SCRIPT" > "$TEST_DIR/stop-test/.server.log" 2>&1 &
+  node "$SERVER_SCRIPT" "--brainstorm-server-id=$STOP_TEST_ID" > "$TEST_DIR/stop-test/.server.log" 2>&1 &
 STOP_TEST_PID=$!
 STOP_TEST_PID=$!
+disown "$STOP_TEST_PID" 2>/dev/null || true
 echo "$STOP_TEST_PID" > "$TEST_DIR/stop-test/state/server.pid"
 echo "$STOP_TEST_PID" > "$TEST_DIR/stop-test/state/server.pid"
 
 
 if ! wait_for_server_info "$TEST_DIR/stop-test"; then
 if ! wait_for_server_info "$TEST_DIR/stop-test"; then
@@ -351,7 +354,13 @@ if ! wait_for_server_info "$TEST_DIR/stop-test"; then
   STOP_TEST_PID=""
   STOP_TEST_PID=""
 else
 else
   bash "$STOP_SCRIPT" "$TEST_DIR/stop-test" >/dev/null 2>&1 || true
   bash "$STOP_SCRIPT" "$TEST_DIR/stop-test" >/dev/null 2>&1 || true
-  sleep 1
+  for _ in $(seq 1 10); do
+    if ! kill -0 "$STOP_TEST_PID" 2>/dev/null; then
+      wait "$STOP_TEST_PID" 2>/dev/null || true
+      break
+    fi
+    sleep 0.1
+  done
 
 
   if ! kill -0 "$STOP_TEST_PID" 2>/dev/null; then
   if ! kill -0 "$STOP_TEST_PID" 2>/dev/null; then
     pass "stop-server.sh cleanly stops the server"
     pass "stop-server.sh cleanly stops the server"