localtesting.sh raw

   1  #!/bin/bash
   2  set -euo pipefail
   3  
   4  # localtesting.sh - Start a local ORLY relay + smesh dev server for testing.
   5  #
   6  # Requires:
   7  #   SUPERUSER - your npub (used for ORLY_ADMINS and ORLY_OWNERS)
   8  #   SMESH_SRC - (optional) path to smesh source, defaults to ~/src/smesh
   9  #
  10  # Runs relay on ws://localhost:3334 and smesh on http://localhost:5173
  11  
  12  TESTDIR="/tmp/orly-localtest"
  13  PIDDIR="$TESTDIR/pids"
  14  DATADIR="$TESTDIR/data"
  15  LOGDIR="$TESTDIR/logs"
  16  BINARY="$TESTDIR/orly"
  17  SCRIPTDIR="$(cd "$(dirname "$0")" && pwd)"
  18  REPODIR="$(cd "$SCRIPTDIR/.." && pwd)"
  19  SMESH_SRC="${SMESH_SRC:-$HOME/src/smesh}"
  20  
  21  if [[ -z "${SUPERUSER:-}" ]]; then
  22      echo "error: SUPERUSER environment variable not set"
  23      echo "Set it to your npub, e.g.:"
  24      echo "  export SUPERUSER=npub1..."
  25      exit 1
  26  fi
  27  
  28  if [[ ! -d "$SMESH_SRC" ]]; then
  29      echo "error: smesh source not found at $SMESH_SRC"
  30      echo "Set SMESH_SRC to the correct path"
  31      exit 1
  32  fi
  33  
  34  # Check for existing instance
  35  if [[ -f "$PIDDIR/relay.pid" ]]; then
  36      pid=$(cat "$PIDDIR/relay.pid")
  37      if kill -0 "$pid" 2>/dev/null; then
  38          echo "error: local testing already running (relay PID $pid)"
  39          echo "Run scripts/stoptesting.sh first, or scripts/updatetesting.sh to rebuild"
  40          exit 1
  41      fi
  42  fi
  43  
  44  mkdir -p "$PIDDIR" "$DATADIR" "$LOGDIR"
  45  
  46  # Build relay
  47  echo "Building relay..."
  48  cd "$REPODIR"
  49  CGO_ENABLED=0 go build -o "$BINARY" ./cmd/orly
  50  echo "Relay built: $BINARY"
  51  
  52  # Start relay launcher in background
  53  echo "Starting relay..."
  54  ORLY_DATA_DIR="$DATADIR" \
  55  ORLY_PORT=3334 \
  56  ORLY_LISTEN=127.0.0.1 \
  57  ORLY_LOG_LEVEL=info \
  58  ORLY_ADMINS="$SUPERUSER" \
  59  ORLY_OWNERS="$SUPERUSER" \
  60  ORLY_AUTH_REQUIRED=false \
  61  ORLY_AUTH_TO_WRITE=false \
  62  ORLY_LAUNCHER_DB_DRIVER=badger \
  63  ORLY_LAUNCHER_DB_LISTEN=127.0.0.1:50061 \
  64  ORLY_LAUNCHER_ACL_ENABLED=true \
  65  ORLY_LAUNCHER_ACL_LISTEN=127.0.0.1:50062 \
  66  ORLY_LAUNCHER_ACL_READY_TIMEOUT=600s \
  67  ORLY_ACL_MODE=follows \
  68  ORLY_DB_TYPE=grpc \
  69  ORLY_GRPC_SERVER=127.0.0.1:50061 \
  70  ORLY_ACL_TYPE=grpc \
  71  ORLY_GRPC_ACL=127.0.0.1:50062 \
  72  ORLY_NEGENTROPY_ENABLED=false \
  73  ORLY_LAUNCHER_SYNC_NEGENTROPY_ENABLED=false \
  74  ORLY_FOLLOW_LIST_FREQUENCY=1h \
  75  ORLY_DB_BLOCK_CACHE_MB=256 \
  76  ORLY_DB_INDEX_CACHE_MB=128 \
  77  ORLY_QUERY_CACHE_DISABLED=false \
  78  ORLY_QUERY_CACHE_SIZE_MB=64 \
  79  ORLY_SERIAL_CACHE_PUBKEYS=50000 \
  80  ORLY_SERIAL_CACHE_EVENT_IDS=200000 \
  81  ORLY_GC_ENABLED=false \
  82  ORLY_MAX_CONN_PER_IP=50 \
  83  ORLY_QUERY_RESULT_LIMIT=256 \
  84  ORLY_WEB_DISABLE=false \
  85  "$BINARY" launcher > "$LOGDIR/relay.log" 2>&1 &
  86  
  87  RELAY_PID=$!
  88  echo "$RELAY_PID" > "$PIDDIR/relay.pid"
  89  echo "Relay launcher started (PID $RELAY_PID), logs: $LOGDIR/relay.log"
  90  
  91  # Start smesh dev server in background
  92  echo "Starting smesh dev server..."
  93  cd "$SMESH_SRC"
  94  bun run dev > "$LOGDIR/smesh.log" 2>&1 &
  95  
  96  SMESH_PID=$!
  97  echo "$SMESH_PID" > "$PIDDIR/smesh.pid"
  98  echo "Smesh dev server started (PID $SMESH_PID), logs: $LOGDIR/smesh.log"
  99  
 100  # Wait for relay to be ready
 101  echo -n "Waiting for relay..."
 102  for i in $(seq 1 30); do
 103      if curl -s -o /dev/null http://127.0.0.1:3334 2>/dev/null; then
 104          echo " ready"
 105          break
 106      fi
 107      if ! kill -0 "$RELAY_PID" 2>/dev/null; then
 108          echo " failed (process exited)"
 109          echo "Check logs: $LOGDIR/relay.log"
 110          exit 1
 111      fi
 112      echo -n "."
 113      sleep 1
 114  done
 115  
 116  echo ""
 117  echo "Local testing environment running:"
 118  echo "  Relay:  ws://localhost:3334"
 119  echo "  Smesh:  http://localhost:5173"
 120  echo "  Owner:  $SUPERUSER"
 121  echo "  Data:   $DATADIR"
 122  echo "  Logs:   $LOGDIR/"
 123  echo ""
 124  echo "Commands:"
 125  echo "  scripts/updatetesting.sh  - rebuild and restart relay"
 126  echo "  scripts/stoptesting.sh    - stop everything"
 127