Skip to content

Commit 033b4bb

Browse files
committed
sentinel: add multicast publisher worker with e2e tests
Add standalone multicast publisher sentinel that automatically detects IBRL validators and creates multicast publisher users on-chain. Includes e2e test infrastructure with validator-metadata-service-mock container.
1 parent 44d16f2 commit 033b4bb

29 files changed

+2244
-28
lines changed

.github/workflows/e2e.yml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ on:
33
push:
44
branches: [ main, 'hotfix/**' ]
55
pull_request:
6-
branches: [ main, 'hotfix/**' ]
76

87
concurrency:
98
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
@@ -25,6 +24,8 @@ env:
2524
DZ_CLIENT_IMAGE: ghcr.io/malbeclabs/dz-e2e/client:${{ github.sha }}
2625
DZ_DEVICE_HEALTH_ORACLE_IMAGE: ghcr.io/malbeclabs/dz-e2e/device-health-oracle:${{ github.sha }}
2726
DZ_GEOPROBE_IMAGE: ghcr.io/malbeclabs/dz-e2e/geoprobe:${{ github.sha }}
27+
DZ_SENTINEL_IMAGE: ghcr.io/malbeclabs/dz-e2e/sentinel:${{ github.sha }}
28+
DZ_VALIDATOR_METADATA_SERVICE_MOCK_IMAGE: ghcr.io/malbeclabs/dz-e2e/validator-metadata-service-mock:${{ github.sha }}
2829

2930
jobs:
3031
setup:
@@ -63,6 +64,8 @@ jobs:
6364
docker push ${{ env.DZ_IMAGE_REPO }}/client:${{ env.DZ_IMAGE_TAG }}
6465
docker push ${{ env.DZ_IMAGE_REPO }}/device-health-oracle:${{ env.DZ_IMAGE_TAG }}
6566
docker push ${{ env.DZ_IMAGE_REPO }}/geoprobe:${{ env.DZ_IMAGE_TAG }}
67+
docker push ${{ env.DZ_IMAGE_REPO }}/sentinel:${{ env.DZ_IMAGE_TAG }}
68+
docker push ${{ env.DZ_IMAGE_REPO }}/validator-metadata-service-mock:${{ env.DZ_IMAGE_TAG }}
6669
- name: Discover tests and distribute across shards
6770
id: shard
6871
working-directory: e2e/
@@ -176,6 +179,8 @@ jobs:
176179
pull_with_retry ${{ env.DZ_IMAGE_REPO }}/client:${{ env.DZ_IMAGE_TAG }}
177180
pull_with_retry ${{ env.DZ_IMAGE_REPO }}/device-health-oracle:${{ env.DZ_IMAGE_TAG }}
178181
pull_with_retry ${{ env.DZ_IMAGE_REPO }}/geoprobe:${{ env.DZ_IMAGE_TAG }}
182+
pull_with_retry ${{ env.DZ_IMAGE_REPO }}/sentinel:${{ env.DZ_IMAGE_TAG }}
183+
pull_with_retry ${{ env.DZ_IMAGE_REPO }}/validator-metadata-service-mock:${{ env.DZ_IMAGE_TAG }}
179184
pull_with_retry quay.io/prometheus/prometheus:v2.54.1
180185
pull_with_retry public.ecr.aws/influxdb/influxdb:1.8
181186
- name: test

.github/workflows/flow_schema_migrations.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ on:
77
pull_request:
88
paths:
99
- "telemetry/flow-enricher/clickhouse/**"
10-
branches: [ main, 'hotfix/**' ]
1110

1211
jobs:
1312
validate:

.github/workflows/go.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ on:
33
push:
44
branches: [ main, 'hotfix/**' ]
55
pull_request:
6-
branches: [ main, 'hotfix/**' ]
76

87
jobs:
98
go-build:

.github/workflows/release.pipeline.validation.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ on:
44
push:
55
branches: [ main, 'hotfix/**' ]
66
pull_request:
7-
branches: [ main, 'hotfix/**' ]
87

98
permissions:
109
contents: write

.github/workflows/rust.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ on:
33
push:
44
branches: [ main, 'hotfix/**' ]
55
pull_request:
6-
branches: [ main, 'hotfix/**' ]
76

87
jobs:
98
rust-build:

.github/workflows/sdk.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ on:
33
push:
44
branches: [ main, 'hotfix/**' ]
55
pull_request:
6-
branches: [ main, 'hotfix/**' ]
76

87
jobs:
98
sdk-version-check:

.github/workflows/shreds-e2e.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ on:
33
push:
44
branches: [main, 'hotfix/**']
55
pull_request:
6-
branches: [main, 'hotfix/**']
76

87
concurrency:
98
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ All notable changes to this project will be documented in this file.
1313
- Reset SIGPIPE to SIG_DFL at the start of main() in all 3 CLI binaries (doublezero, doublezero-geolocation, doublezero-admin) so the process exits silently like standard CLI tools
1414
- Support `--type outbound-icmp` in geolocation `user add-target`, `remove-target`, and `get` commands
1515
- Add sentinel admin commands to find and create multicast publishers for IBRL validators
16+
- Sentinel
17+
- Add standalone multicast publisher sentinel that automatically detects IBRL validators and creates multicast publisher users on-chain
1618
- SDK
1719
- Add Go SDK for shred subscription program with read-only account deserialization (epoch state, seat assignments, pricing, settlement, validator client rewards), PDA derivation helpers, RPC fetchers, compatibility tests, and a fetch example CLI
1820
- Add `GeoLocationTargetTypeOutboundIcmp` to Go geolocation SDK with deserialization and round-trip test support

Cargo.lock

Lines changed: 46 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ ipnetwork = "0"
6868
libc = "0"
6969
log = "0"
7070
metrics = "0"
71+
metrics-exporter-prometheus = "0"
7172
metrics-util = "0"
7273
mockall = "0"
7374
reqwest = "0"
@@ -93,6 +94,10 @@ tabled = "0"
9394
temp-env = "0"
9495
tempfile = "3"
9596
thiserror = "2"
97+
tokio-util = "0"
98+
tracing = "0"
99+
tracing-subscriber = { version = "0", default-features = true, features = ["env-filter", "fmt", "registry"] }
100+
url = "2"
96101
strum = "0.26"
97102
strum_macros = "0.26"
98103
tokio = { version = "1", default-features = false, features = [

0 commit comments

Comments
 (0)