stoptesting.sh raw

   1  #!/bin/bash
   2  set -euo pipefail
   3  
   4  # stoptesting.sh - Stop local testing relay and smesh dev server.
   5  #
   6  # Usage:
   7  #   scripts/stoptesting.sh          # stop processes, keep data
   8  #   scripts/stoptesting.sh --clean  # stop processes and remove all test data
   9  
  10  TESTDIR="/tmp/orly-localtest"
  11  PIDDIR="$TESTDIR/pids"
  12  CLEAN=false
  13  
  14  if [[ "${1:-}" == "--clean" ]]; then
  15      CLEAN=true
  16  fi
  17  
  18  stopped=0
  19  
  20  # Stop relay
  21  if [[ -f "$PIDDIR/relay.pid" ]]; then
  22      RELAY_PID=$(cat "$PIDDIR/relay.pid")
  23      if kill -0 "$RELAY_PID" 2>/dev/null; then
  24          echo "Stopping relay (PID $RELAY_PID)..."
  25          kill -- -"$RELAY_PID" 2>/dev/null || kill "$RELAY_PID" 2>/dev/null || true
  26          for i in $(seq 1 10); do
  27              if ! kill -0 "$RELAY_PID" 2>/dev/null; then
  28                  break
  29              fi
  30              sleep 0.5
  31          done
  32          if kill -0 "$RELAY_PID" 2>/dev/null; then
  33              kill -9 -- -"$RELAY_PID" 2>/dev/null || kill -9 "$RELAY_PID" 2>/dev/null || true
  34          fi
  35          echo "Relay stopped"
  36          stopped=$((stopped + 1))
  37      else
  38          echo "Relay process $RELAY_PID not running (stale PID file)"
  39      fi
  40      rm -f "$PIDDIR/relay.pid"
  41  fi
  42  
  43  # Stop smesh
  44  if [[ -f "$PIDDIR/smesh.pid" ]]; then
  45      SMESH_PID=$(cat "$PIDDIR/smesh.pid")
  46      if kill -0 "$SMESH_PID" 2>/dev/null; then
  47          echo "Stopping smesh (PID $SMESH_PID)..."
  48          kill -- -"$SMESH_PID" 2>/dev/null || kill "$SMESH_PID" 2>/dev/null || true
  49          for i in $(seq 1 5); do
  50              if ! kill -0 "$SMESH_PID" 2>/dev/null; then
  51                  break
  52              fi
  53              sleep 0.5
  54          done
  55          if kill -0 "$SMESH_PID" 2>/dev/null; then
  56              kill -9 -- -"$SMESH_PID" 2>/dev/null || kill -9 "$SMESH_PID" 2>/dev/null || true
  57          fi
  58          echo "Smesh stopped"
  59          stopped=$((stopped + 1))
  60      else
  61          echo "Smesh process $SMESH_PID not running (stale PID file)"
  62      fi
  63      rm -f "$PIDDIR/smesh.pid"
  64  fi
  65  
  66  if [[ $stopped -eq 0 ]]; then
  67      echo "No running processes found"
  68  fi
  69  
  70  if [[ "$CLEAN" == true ]]; then
  71      echo "Removing test data: $TESTDIR"
  72      rm -rf "$TESTDIR"
  73      echo "Clean complete"
  74  else
  75      # Clean up empty pids dir
  76      rmdir "$PIDDIR" 2>/dev/null || true
  77  fi
  78  
  79  echo "Local testing stopped"
  80