From 34846d0aebe38047eb500550656bf5719ddbd4bd Mon Sep 17 00:00:00 2001 From: SimiHunjan Date: Wed, 15 Apr 2026 12:35:57 -0700 Subject: [PATCH 01/11] Update GitHub Actions workflow for Java example Updated the GitHub Actions workflow to use Ubuntu as the runner and modified environment variables for the mirror node. Replaced Node.js setup with Homebrew installation and updated the Solo CLI installation method. Signed-off-by: SimiHunjan --- .github/workflows/examples.yml | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml index 1d5e7294..cb68f7ea 100644 --- a/.github/workflows/examples.yml +++ b/.github/workflows/examples.yml @@ -16,15 +16,15 @@ permissions: jobs: run-java-example: - runs-on: hashgraph-docs-linux-medium + runs-on: ubuntu-latest permissions: contents: write pull-requests: write env: HEDERA_NETWORK: local - MIRROR_NODE_URL: http://localhost:8080/api/v1 - MIRROR_HEALTH_URL: http://localhost:8080/health + MIRROR_NODE_URL: http://localhost:8081/api/v1 + MIRROR_HEALTH_URL: http://localhost:8081/health MIRROR_HEALTH_TRIES: "180" MIRROR_HEALTH_INTERVAL: "2" STATUS_DIR: .github/example-status @@ -58,27 +58,26 @@ jobs: verbosity: 3 wait: 120s - - name: Set up Node.js - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 - with: - node-version: 22.12.0 + - name: Install Homebrew + run: + set -euo pipefail + NONINTERACTIVE=1 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" + echo "/home/linuxbrew/.linuxbrew/bin" >> "$GITHUB_PATH" + echo "/home/linuxbrew/.linuxbrew/sbin" >> "$GITHUB_PATH" + eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" + brew --version - name: Install Solo CLI run: | set -euo pipefail - npm install -g @hashgraph/solo + eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" + brew install hiero-ledger/tools/solo solo --version - kind --version - name: Deploy Solo - env: - SOLO_CLUSTER_NAME: solo - SOLO_NAMESPACE: solo - SOLO_CLUSTER_SETUP_NAMESPACE: solo-cluster - SOLO_DEPLOYMENT: solo-deployment - run: | + run: set -euo pipefail - kind create cluster -n "${SOLO_CLUSTER_NAME}" + eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" solo one-shot single deploy | tee solo-deploy.log - name: Wait for Mirror Node data (/network/nodes) From 2df98c1bfdbecc4f50efdcfd4f86f18c9c189e77 Mon Sep 17 00:00:00 2001 From: SimiHunjan Date: Wed, 15 Apr 2026 12:45:31 -0700 Subject: [PATCH 02/11] Update mirror node URLs in GitHub Actions workflow Signed-off-by: SimiHunjan --- .github/workflows/examples.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml index cb68f7ea..264be681 100644 --- a/.github/workflows/examples.yml +++ b/.github/workflows/examples.yml @@ -23,8 +23,8 @@ jobs: env: HEDERA_NETWORK: local - MIRROR_NODE_URL: http://localhost:8081/api/v1 - MIRROR_HEALTH_URL: http://localhost:8081/health + MIRROR_NODE_URL: http://localhost:38081/api/v1 + MIRROR_HEALTH_URL: http://localhost:38081/health MIRROR_HEALTH_TRIES: "180" MIRROR_HEALTH_INTERVAL: "2" STATUS_DIR: .github/example-status From be957da196c9a9851ac3655bd72f532274577755 Mon Sep 17 00:00:00 2001 From: SimiHunjan Date: Thu, 16 Apr 2026 16:06:21 -0700 Subject: [PATCH 03/11] update workflow update workflow Signed-off-by: SimiHunjan --- .github/workflows/examples.yml | 118 ++++++++------------------------- 1 file changed, 27 insertions(+), 91 deletions(-) diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml index 264be681..3ed0b572 100644 --- a/.github/workflows/examples.yml +++ b/.github/workflows/examples.yml @@ -80,106 +80,42 @@ jobs: eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" solo one-shot single deploy | tee solo-deploy.log - - name: Wait for Mirror Node data (/network/nodes) - env: - API_BASE: ${{ env.MIRROR_NODE_URL }} - TRIES: "180" - INTERVAL: "2" + - name: Get all service ports + run: | + echo "=== SERVICES ===" + kubectl get svc -A + echo "=== SERVICES (detailed ports) ===" + kubectl get svc -A -o json | jq -r ' + .items[] | + "\(.metadata.namespace)/\(.metadata.name) -> " + + (.spec.ports[] | "\(.name // "no-name"):\(.port)")' + + - name: Verify Mirror Node REST API shell: bash run: | set -euo pipefail + sudo apt-get update -y + sudo apt-get install -y jq - # Tools - if ! command -v jq >/dev/null; then sudo apt-get update -y && sudo apt-get install -y jq >/dev/null; fi - if ! command -v timeout >/dev/null; then sudo apt-get update -y && sudo apt-get install -y coreutils >/dev/null; fi - - base_api="${API_BASE%/}" - host="$(echo "$base_api" | awk -F[/:] '{print $4}')" - port="$(echo "$base_api" | awk -F[/:] '{print $5}')" - - echo "Waiting for TCP ${host}:${port}…" - for i in $(seq 1 60); do - if (echo >/dev/tcp/"$host"/"$port") >/dev/null 2>&1; then - echo "✅ Port ${port} is accepting connections" - break - fi - echo "⏳ TCP not ready (try $i/60)…" - sleep 1 - done + url="${MIRROR_NODE_URL}/network/nodes?limit=1" - probe_nodes="${base_api}/network/nodes?limit=1" - echo "Probing Mirror REST for data at: ${probe_nodes}" - - # First ensure 200s… - for i in $(seq 1 "${TRIES}"); do - code="$(curl -m 3 --connect-timeout 2 -sS -o /dev/null -w '%{http_code}' "$probe_nodes" || true)" + echo "Waiting for ${url} ..." + for i in $(seq 1 180); do + code="$(curl -s -o response.json -w '%{http_code}' "$url" || true)" if [ "$code" = "200" ]; then - echo "✅ HTTP 200 from Mirror REST" - break - fi - echo "⏳ Mirror REST not 200 yet (try $i/${TRIES})… (code=$code)" - sleep "${INTERVAL}" - done - - if [ "${code:-}" != "200" ]; then - echo "❌ Mirror REST never returned 200 for ${probe_nodes}" - curl -m 3 --connect-timeout 2 -sS -v "$probe_nodes" || true - exit 1 - fi - - for i in $(seq 1 "${TRIES}"); do - body="$(curl -fsS "$probe_nodes" || true)" - count="$(echo "$body" | jq -r '.nodes | length' 2>/dev/null || echo "0")" - - if [ "$count" -ge 1 ]; then - echo "✅ Mirror REST returned ${count} node(s)" - echo "Sample response:" - echo "$body" | jq '{nodes: (.nodes | .[:1])}' -C - ready=1 - break - fi - - echo "⏳ Mirror REST returned empty/invalid data (try $i/${TRIES})…" - sleep "${INTERVAL}" - done - - if [ "${ready:-0}" -ne 1 ]; then - echo "❌ Mirror REST never produced non-empty nodes list at ${probe_nodes}" - echo "Last payload (truncated to 500 chars):" - echo "$body" | head -c 500 || true - exit 1 - fi - - # ---- Probe account balance for the provided ACCOUNT_ID ---- - if [ -z "${ACCOUNT_ID:-}" ]; then - echo "⚠️ ACCOUNT_ID not provided; skipping balance check." - exit 0 - fi - - echo "Checking balance for ACCOUNT_ID=${ACCOUNT_ID}" - - # 1) Snapshot endpoint (works on public testnet; may be empty on local) - bal_url="${base_api}/balances?account.id=${ACCOUNT_ID}&limit=1" - echo "Trying snapshot endpoint: ${bal_url}" - - snapshot_ok=0 - tinybars="" - for i in $(seq 1 "${TRIES}"); do - resp="$(curl -fsS "$bal_url" || true)" - tb="$(echo "$resp" | jq -r '.balances[0].balance // empty' 2>/dev/null || true)" - if [ -n "$tb" ]; then - tinybars="$tb" - snapshot_ok=1 - break + count="$(jq '.nodes | length' response.json 2>/dev/null || echo 0)" + if [ "$count" -ge 1 ]; then + echo "REST API response:" + cat response.json | jq . + exit 0 + fi fi - echo "⏳ /balances has no snapshot yet (try $i/${TRIES})…" - sleep "${INTERVAL}" + echo "Attempt $i/180: not ready yet" + sleep 2 done - if [ "$snapshot_ok" -eq 1 ]; then - echo "✅ Mirror /balances returned a snapshot balance: ${tinybars} tinybars" - exit 0 - fi + echo "Mirror Node API never became ready" + exit 1 - name: Set up JDK 21 uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4.7.1 From 459bf006665e79e758d3d10ba0aa2b6e26e1a756 Mon Sep 17 00:00:00 2001 From: SimiHunjan Date: Thu, 16 Apr 2026 16:17:04 -0700 Subject: [PATCH 04/11] Change mirror URL in java-status.md Updated the mirror URL for the Java examples runner. Signed-off-by: SimiHunjan --- .github/example-status/java-status.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/example-status/java-status.md b/.github/example-status/java-status.md index b89d5ed2..f5ea0ee6 100644 --- a/.github/example-status/java-status.md +++ b/.github/example-status/java-status.md @@ -6,7 +6,7 @@ === Java Examples Runner === Timestamp (UTC): 2026-03-03 22:14:19Z Network: local -Mirror: http://localhost:8080/api/v1 +Mirror: http://localhost:38081/api/v1 ▶️ Running all examples… From dd149d385c70e22efc78c099bf64e498a94de7b6 Mon Sep 17 00:00:00 2001 From: SimiHunjan Date: Thu, 16 Apr 2026 16:18:19 -0700 Subject: [PATCH 05/11] Update mirrorNode URL for CreateTokenDemo Signed-off-by: SimiHunjan --- .github/examples/java/CreateTokenDemo.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/examples/java/CreateTokenDemo.java b/.github/examples/java/CreateTokenDemo.java index 5ff7b384..207e2cda 100644 --- a/.github/examples/java/CreateTokenDemo.java +++ b/.github/examples/java/CreateTokenDemo.java @@ -11,7 +11,7 @@ public static void main(String[] args ) throws Exception { String network = System.getenv().getOrDefault("HEDERA_NETWORK", "local"); // "local" for Solo String mirrorNode = System.getenv().getOrDefault( "MIRROR_NODE_URL", - "http://localhost:8080/api/v1" + "http://localhost:38081/api/v1" ); if (operatorId == null || operatorKey == null) { From e81eed7ee1b0044fef92360637fcc68df6bd80c0 Mon Sep 17 00:00:00 2001 From: SimiHunjan Date: Thu, 16 Apr 2026 16:19:01 -0700 Subject: [PATCH 06/11] Update mirror node URL in CreateTopicDemo.java Signed-off-by: SimiHunjan --- .github/examples/java/CreateTopicDemo.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/examples/java/CreateTopicDemo.java b/.github/examples/java/CreateTopicDemo.java index 7d075e20..47766cb6 100644 --- a/.github/examples/java/CreateTopicDemo.java +++ b/.github/examples/java/CreateTopicDemo.java @@ -11,7 +11,7 @@ public static void main(String[] args ) throws Exception { String network = System.getenv().getOrDefault("HEDERA_NETWORK", "local"); String mirrorNode = System.getenv().getOrDefault( "MIRROR_NODE_URL", - "http://localhost:8080/api/v1" + "http://localhost:38081/api/v1" ); if (operatorId == null || operatorKey == null) { From 81236a6befef591beb798575f447d756e84a3310 Mon Sep 17 00:00:00 2001 From: SimiHunjan Date: Thu, 16 Apr 2026 16:22:48 -0700 Subject: [PATCH 07/11] Remove service ports retrieval step from workflow Removed the step to get all service ports from the workflow. Signed-off-by: SimiHunjan --- .github/workflows/examples.yml | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml index 3ed0b572..55386657 100644 --- a/.github/workflows/examples.yml +++ b/.github/workflows/examples.yml @@ -80,16 +80,6 @@ jobs: eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" solo one-shot single deploy | tee solo-deploy.log - - name: Get all service ports - run: | - echo "=== SERVICES ===" - kubectl get svc -A - echo "=== SERVICES (detailed ports) ===" - kubectl get svc -A -o json | jq -r ' - .items[] | - "\(.metadata.namespace)/\(.metadata.name) -> " + - (.spec.ports[] | "\(.name // "no-name"):\(.port)")' - - name: Verify Mirror Node REST API shell: bash run: | From 79ec10abdd36b33229e7f9619666d5d9b7ab0766 Mon Sep 17 00:00:00 2001 From: SimiHunjan Date: Thu, 16 Apr 2026 16:33:02 -0700 Subject: [PATCH 08/11] Update Homebrew installation and deployment commands Signed-off-by: SimiHunjan --- .github/workflows/examples.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml index 55386657..0c59ff33 100644 --- a/.github/workflows/examples.yml +++ b/.github/workflows/examples.yml @@ -59,7 +59,7 @@ jobs: wait: 120s - name: Install Homebrew - run: + run: | set -euo pipefail NONINTERACTIVE=1 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" echo "/home/linuxbrew/.linuxbrew/bin" >> "$GITHUB_PATH" @@ -75,7 +75,7 @@ jobs: solo --version - name: Deploy Solo - run: + run: | set -euo pipefail eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" solo one-shot single deploy | tee solo-deploy.log @@ -87,7 +87,7 @@ jobs: sudo apt-get update -y sudo apt-get install -y jq - url="${MIRROR_NODE_URL}/network/nodes?limit=1" + url="http://localhost:38081/api/v1/tranactions" echo "Waiting for ${url} ..." for i in $(seq 1 180); do From a53ebff81008feef72485505eba33d0989baee58 Mon Sep 17 00:00:00 2001 From: SimiHunjan Date: Thu, 16 Apr 2026 16:35:26 -0700 Subject: [PATCH 09/11] Fix typo in API endpoint URL in examples.yml Signed-off-by: SimiHunjan --- .github/workflows/examples.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml index 0c59ff33..1ac36887 100644 --- a/.github/workflows/examples.yml +++ b/.github/workflows/examples.yml @@ -87,7 +87,7 @@ jobs: sudo apt-get update -y sudo apt-get install -y jq - url="http://localhost:38081/api/v1/tranactions" + url="http://localhost:38081/api/v1/transactions" echo "Waiting for ${url} ..." for i in $(seq 1 180); do From 9657056e06f99c777d7c8d71a813fdbe58ddd411 Mon Sep 17 00:00:00 2001 From: SimiHunjan Date: Thu, 16 Apr 2026 16:48:05 -0700 Subject: [PATCH 10/11] Modify API verification to count transactions Updated the verification script to check transaction count instead of node count. Signed-off-by: SimiHunjan --- .github/workflows/examples.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml index 1ac36887..9e39df44 100644 --- a/.github/workflows/examples.yml +++ b/.github/workflows/examples.yml @@ -84,16 +84,13 @@ jobs: shell: bash run: | set -euo pipefail - sudo apt-get update -y - sudo apt-get install -y jq - url="http://localhost:38081/api/v1/transactions" echo "Waiting for ${url} ..." for i in $(seq 1 180); do code="$(curl -s -o response.json -w '%{http_code}' "$url" || true)" if [ "$code" = "200" ]; then - count="$(jq '.nodes | length' response.json 2>/dev/null || echo 0)" + count="$(jq '.transactions | length' response.json 2>/dev/null || echo 0)" if [ "$count" -ge 1 ]; then echo "REST API response:" cat response.json | jq . From e2388077225d1022e94287c35de947593ce0cd26 Mon Sep 17 00:00:00 2001 From: SimiHunjan Date: Wed, 6 May 2026 11:06:08 -0700 Subject: [PATCH 11/11] Change runner for Java example workflow Signed-off-by: SimiHunjan --- .github/workflows/examples.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml index 9e39df44..50219adb 100644 --- a/.github/workflows/examples.yml +++ b/.github/workflows/examples.yml @@ -16,7 +16,7 @@ permissions: jobs: run-java-example: - runs-on: ubuntu-latest + runs-on: hashgraph-docs-linux-medium permissions: contents: write pull-requests: write