Skip to content

Commit 0c20088

Browse files
committed
test: use edge-node local network and some minor improvements in services detection
1 parent d1e5520 commit 0c20088

File tree

1 file changed

+62
-21
lines changed

1 file changed

+62
-21
lines changed

setup-test-network.sh

Lines changed: 62 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -169,11 +169,11 @@ cd contrib/
169169

170170
# Clone local-network repo if it doesn't exist
171171
if [ ! -d "local-network" ]; then
172-
git clone https://github.com/semiotic-ai/local-network.git
172+
# git clone https://github.com/semiotic-ai/local-network.git
173+
git clone https://github.com/edgeandnode/local-network.git
173174
cd local-network
174175
# Checkout to the horizon branch
175-
# git checkout suchapalaver/test/horizon
176-
git checkout semiotic/horizon_upgrade
176+
git checkout horizon
177177
cd ..
178178
fi
179179

@@ -212,6 +212,42 @@ if [ -z "$code" ] || [ "$code" == "0x" ]; then
212212
exit 1
213213
fi
214214
echo "Controller contract verified."
215+
216+
# Ensure HorizonStaking is deployed before proceeding (agent needs it at startup)
217+
staking_address=$(jq -r '."1337".HorizonStaking.address' horizon.json)
218+
echo "Checking HorizonStaking contract at $staking_address"
219+
220+
# Retry a few times in case chain is still settling
221+
for i in {1..30}; do
222+
code=$(docker exec chain cast code $staking_address --rpc-url http://localhost:8545 2>/dev/null || true)
223+
if [ -n "$code" ] && [ "$code" != "0x" ]; then
224+
echo "HorizonStaking contract verified."
225+
break
226+
fi
227+
echo "HorizonStaking not deployed yet (attempt $i/30), waiting..."
228+
sleep 2
229+
done
230+
231+
# If still no code, force a redeploy of graph-contracts and re-verify
232+
if [ -z "$code" ] || [ "$code" = "0x" ]; then
233+
echo "HorizonStaking has no code; forcing graph-contracts redeploy..."
234+
# Keep files as files (avoid bind mount turning into a directory)
235+
echo "{}" >horizon.json
236+
echo "{}" >subgraph-service.json
237+
docker compose up -d --no-deps --force-recreate graph-contracts
238+
# Wait for contracts to be deployed
239+
interruptible_wait 300 'docker ps -a | grep graph-contracts | grep -q "Exited (0)"' "Waiting for contracts to be deployed (redeploy)"
240+
241+
# Re-check the (possibly updated) staking address and code
242+
staking_address=$(jq -r '."1337".HorizonStaking.address' horizon.json)
243+
echo "Re-checking HorizonStaking contract at $staking_address"
244+
code=$(docker exec chain cast code $staking_address --rpc-url http://localhost:8545 2>/dev/null || true)
245+
if [ -z "$code" ] || [ "$code" = "0x" ]; then
246+
echo "ERROR: HorizonStaking still has no code after redeploy. Check 'docker logs graph-contracts'."
247+
exit 1
248+
fi
249+
echo "HorizonStaking contract verified after redeploy."
250+
fi
215251
echo "Contract deployment successful."
216252

217253
docker compose up -d tap-contracts
@@ -224,43 +260,47 @@ interruptible_wait 300 'docker ps | grep block-oracle | grep -q healthy' "Waitin
224260

225261
# export INDEXER_AGENT_SOURCE_ROOT=/home/neithanmo/Documents/Work/Semiotic/indexer-rs/indexer-src
226262
# If INDEXER_AGENT_SOURCE_ROOT is set, use dev override; otherwise start only indexer-agent
263+
# export INDEXER_AGENT_SOURCE_ROOT=/home/neithanmo/Documents/Work/Semiotic/indexer-rs/indexer-agent
227264
if [[ -n "${INDEXER_AGENT_SOURCE_ROOT:-}" ]]; then
228-
echo "***********INDEXER_AGENT_SOURCE_ROOT set; using dev override for indexer-agent...************"
229-
docker compose up -d indexer-agent
230-
265+
echo "INDEXER_AGENT_SOURCE_ROOT set; using dev override for indexer-agent."
266+
docker compose -f docker-compose.yaml -f overrides/indexer-agent-dev/indexer-agent-dev.yaml up -d
231267
else
232-
echo "***** Starting indexer-agent from image... *****"
268+
echo "Starting indexer-agent from oficial release"
233269
docker compose up -d indexer-agent
234270
fi
235271

236272
echo "Waiting for indexer-agent to be healthy..."
237273
# timeout 300 bash -c 'until docker ps | grep indexer-agent | grep -q healthy; do sleep 5; done'
238274
interruptible_wait 300 'docker ps | grep indexer-agent | grep -q healthy' "Waiting for indexer-agent to be healthy"
239275

276+
# Ensure indexer-agent DB migrations completed (denylist tables must exist)
277+
echo "Waiting for indexer-agent DB migrations (denylist tables) ..."
278+
# Use double-quoted outer string to avoid single-quote escaping issues in SQL
279+
interruptible_wait 180 "docker exec postgres psql -U postgres -d indexer_components_1 -tAc \"SELECT to_regclass('public.scalar_tap_denylist')\" | grep -q scalar_tap_denylist" "Waiting for scalar_tap_denylist table"
280+
interruptible_wait 180 "docker exec postgres psql -U postgres -d indexer_components_1 -tAc \"SELECT to_regclass('public.tap_horizon_denylist')\" | grep -q tap_horizon_denylist" "Waiting for tap_horizon_denylist table"
281+
240282
echo "Starting subgraph deployment..."
241283
docker compose up --build -d subgraph-deploy
242-
sleep 10 # Give time for subgraphs to deploy
284+
# Wait for subgraph-deploy job to complete successfully, mirroring docker-compose depends_on
285+
interruptible_wait 600 'docker ps -a | grep subgraph-deploy | grep -q "Exited (0)"' "Waiting for subgraph-deploy to complete successfully"
243286

244287
echo "Starting TAP services..."
288+
289+
# Ensure Redpanda is running before starting services that depend on it
290+
echo "Ensuring redpanda is running..."
291+
docker compose up -d redpanda
292+
echo "Waiting for redpanda to be healthy..."
293+
interruptible_wait 300 'docker ps | grep redpanda | grep -q healthy' "Waiting for redpanda to be healthy"
294+
245295
echo "Starting tap-aggregator..."
246296
docker compose up -d tap-aggregator
247297
sleep 10
248298

249-
# tap-escrow-manager requires subgraph-deploy
299+
# tap-escrow-manager requires subgraph-deploy and redpanda
250300
echo "Starting tap-escrow-manager..."
251301
docker compose up -d tap-escrow-manager
252-
# timeout 90 bash -c 'until docker ps --filter "name=^tap-escrow-manager$" --format "{{.Names}}" | grep -q "^tap-escrow-manager$"; do echo "Waiting for tap-escrow-manager container to appear..."; sleep 5; done'
253302
interruptible_wait 90 'docker ps --filter "name=^tap-escrow-manager$" --format "{{.Names}}" | grep -q "^tap-escrow-manager$"' "Waiting for tap-escrow-manager container to appear"
254303

255-
# Start redpanda if it's not already started (required for gateway)
256-
if ! docker ps | grep -q redpanda; then
257-
echo "Starting redpanda..."
258-
docker compose up -d redpanda
259-
echo "Waiting for redpanda to be healthy..."
260-
# timeout 300 bash -c 'until docker ps | grep redpanda | grep -q healthy; do sleep 5; done'
261-
interruptible_wait 300 'docker ps | grep redpanda | grep -q healthy' "Waiting for redpanda to be healthy"
262-
fi
263-
264304
# Get the network name used by local-network
265305
NETWORK_NAME=$(docker inspect graph-node --format='{{range $net,$v := .NetworkSettings.Networks}}{{$net}}{{end}}')
266306
echo "Local-network is using Docker network: $NETWORK_NAME"
@@ -298,7 +338,7 @@ fi
298338

299339
# Run the custom services using the override file
300340
docker compose -f docker-compose.yml -f docker-compose.override.yml up --build -d
301-
rm docker-compose.override.yml
341+
302342

303343
# Wait for indexer-service and tap-agent to be healthy with better timeouts
304344
echo "Waiting for indexer-service to be healthy..."
@@ -345,7 +385,7 @@ fi
345385
# Gateway now generates config with increased max_lag_seconds in gateway/run.sh
346386
# -v "$(pwd)/local-network/tap-contracts.json":/opt/tap-contracts.json:ro \
347387
docker run -d --name gateway \
348-
--network local-network_default \
388+
--network "$NETWORK_NAME" \
349389
-p 7700:7700 \
350390
-v "$(pwd)/local-network/horizon.json":/opt/horizon.json:ro \
351391
-v "$(pwd)/local-network/tap-contracts.json":/opt/contracts.json:ro \
@@ -376,6 +416,7 @@ interruptible_wait 100 'curl -f http://localhost:7700/ > /dev/null 2>&1' "Waitin
376416
# Build and start indexer-cli for integration testing (last container)
377417
echo "Building and starting indexer-cli container for integration testing..."
378418
docker compose -f docker-compose.yml -f docker-compose.override.yml up --build -d indexer-cli
419+
rm -f docker-compose.override.yml
379420

380421
# Wait for indexer-cli to be ready
381422
echo "Waiting for indexer-cli to be ready..."

0 commit comments

Comments
 (0)