Add getEvents differential tests - #982
Conversation
d7037b4 to
57bfb69
Compare
🧪 Performance Evaluation Test #5Commit: ✅ Apply-load ingestion — verdict: ok📈 Ingest load test —
|
| Profile | Ledgers | ms/ledger | p50 / p95 / p99 ms | max ms |
|---|---|---|---|---|
| load-test-ledgers-v27-oz | 1000 | 1194.811 | 1112.476 / 1632.723 / 1915.051 | 2850.235 |
| load-test-ledgers-v27-sac | 1000 | 1096.138 | 1106.189 / 1179.468 / 1235.346 | 1343.392 |
| load-test-ledgers-v27-soroswap | 1000 | 789.095 | 800.099 / 865.422 / 930.404 | 1385.138 |
| Metric | Value |
|---|---|
| Ledgers replayed | 3000 |
| Initial DB ledger count | 120960 |
| Throughput | 0.94 ledgers/sec |
| Elapsed wall-clock | 3190.351s |
| Ingest busy-time | 3080.044s (96.5% utilization) |
| Per-ledger p50 / p95 / p99 | 1049.263 / 1416.589 / 1731.563 ms |
| Golden DB fetch+decompress | 2386s |
| stellar-core | v27.0.0 |
| Workflow run | #34574463064-1 |
✅ Backfill ingestion — verdict: ok
⏳ Backfill ingestion — c8067bca0ccb
| Metric | Value |
|---|---|
| Ledgers ingested | 120960 ([64255680 -> 64376639]) |
| Retention window | 120960 |
| Wall-clock (total) | 3h5m20s |
| Ingest phase | 2h34m26s |
| Bulk-load finalize phase | 30m54s |
| Ledgers/sec (ingest) | 13.1 |
✅ Endpoint load test — verdict: ok
🎯 Endpoint load test — c8067bca0ccb
Serial blast per endpoint (ramp-up 1m, duration 3m, error kill switch 75%, blaster aadc1a17595f) against the backfilled RPC (ledgers [64256383, 64377342], handoff wait 1036s).
| Endpoint | Target RPS | Requests | Errors | p50 (ms) | p95 (ms) | p99 (ms) | p99.9 (ms) |
|---|---|---|---|---|---|---|---|
| getEvents | 75 | 11223 | 2 (0.0%) | 1.3 | 11.6 | 84.4 | 1393.7 |
| getFeeStats | 250 | 37492 | 0 (0.0%) | 1.0 | 1.1 | 71.7 | 142.7 |
| getHealth | 250 | 37493 | 0 (0.0%) | 0.9 | 1.1 | 83.8 | 143.1 |
| getLatestLedger | 15 | 2242 | 0 (0.0%) | 120.3 | 192.8 | 263.2 | 336.9 |
| getLedgers (limit=5) | 3 | 442 | 0 (0.0%) | 667.1 | 1779.7 | 2445.3 | 2644.0 |
| getNetwork | 100 | 14975 | 0 (0.0%) | 43.5 | 301.6 | 734.2 | 861.2 |
| getTransaction | 75 | 11225 | 0 (0.0%) | 7.0 | 12.8 | 67.9 | 150.5 |
| getTransactions (limit=200) | 10 | 1474 | 0 (0.0%) | 109.4 | 437.8 | 497.4 | 602.1 |
| getVersionInfo | 100 | 14754 | 0 (0.0%) | 122.8 | 1708.0 | 2029.6 | 2119.7 |
getEvents results extended
| Endpoint | Target RPS | Requests | Errors | p50 (ms) | p95 (ms) | p99 (ms) | p99.9 (ms) |
|---|---|---|---|---|---|---|---|
| getEvents/catch-up | 3 | 440 | 0 (0.0%) | 5.5 | 35.4 | 121.7 | 161.5 |
| getEvents/deep-pager | 17.25 | 2564 | 0 (0.0%) | 1.2 | 38.6 | 117.7 | 1145.9 |
| getEvents/deep-scan | 2.25 | 296 | 0 (0.0%) | 1.2 | 8.3 | 16.5 | 97.5 |
| getEvents/firehose | 1.5 | 206 | 0 (0.0%) | 1.2 | 5.0 | 8.2 | 148.6 |
| getEvents/head-poll | 36 | 5375 | 0 (0.0%) | 1.3 | 7.3 | 46.9 | 131.7 |
| getEvents/tail-poll | 9 | 1410 | 2 (0.1%) | 1.2 | 1.7 | 554.0 | 10002.4 |
| getEvents/transfer-watcher | 6 | 932 | 0 (0.0%) | 8.8 | 14.6 | 56.0 | 115.6 |
✅ Go endpoint benchmarks — verdict: ok
Baseline v28.0.1 (273f19e4fcb1) vs candidate c8067bca0ccb — -benchmem -count=10, both refs sequentially on one box; rpcv2 excluded.
benchstat: baseline vs candidate
goos: linux
goarch: amd64
pkg: github.com/stellar/stellar-rpc/cmd/stellar-rpc/internal/db
cpu: Intel(R) Xeon(R) Platinum 8124M CPU @ 3.00GHz
│ baseline.txt │
│ sec/op │
GetLedgerRange-8 947.5n ± 2%
BatchGetLedgers-8 739.1µ ± 3%
geomean 26.46µ
│ baseline.txt │
│ B/op │
GetLedgerRange-8 16.00 ± 0%
BatchGetLedgers-8 520.8Ki ± 0%
geomean 2.853Ki
│ baseline.txt │
│ allocs/op │
GetLedgerRange-8 4.000 ± 0%
BatchGetLedgers-8 2.314k ± 0%
geomean 96.21
pkg: github.com/stellar/stellar-rpc/cmd/stellar-rpc/internal/feewindow
│ baseline.txt │
│ sec/op │
ComputeFeeDistribution/computeFeeDistribution-8 9.306µ ± 1%
ComputeFeeDistribution/alternativeComputeFeeDistribution-8 215.1µ ± 2%
geomean 44.74µ
│ baseline.txt │
│ B/op │
ComputeFeeDistribution/computeFeeDistribution-8 0.000 ± 0%
ComputeFeeDistribution/alternativeComputeFeeDistribution-8 565.4Ki ± 0%
geomean ¹
¹ summaries must be >0 to compute geomean
│ baseline.txt │
│ allocs/op │
ComputeFeeDistribution/computeFeeDistribution-8 0.000 ± 0%
ComputeFeeDistribution/alternativeComputeFeeDistribution-8 30.00 ± 0%
geomean ¹
¹ summaries must be >0 to compute geomean
pkg: github.com/stellar/stellar-rpc/cmd/stellar-rpc/internal/methods
│ baseline.txt │ candidate.txt │
│ sec/op │ sec/op vs base │
GetEventsTopicFilters-8 2.570m ± 1% 2.275m ± 1% -11.47% (p=0.000 n=10)
GetEvents-8 158.5µ ± ∞ ¹ 130.4µ ± ∞ ¹ ~ (p=1.000 n=1) ²
GetLedgers-8 1330.6µ ± ∞ ¹ 866.7µ ± ∞ ¹ ~ (p=1.000 n=1) ²
JSONTransactions/JSON_format-8 7.698µ ± 0% 14.369µ ± 1% +86.66% (p=0.000 n=10)
JSONTransactions/XDR_format-8 2.560µ ± 0% 7.946µ ± 1% +210.37% (p=0.000 n=10)
GetProtocolVersion-8 42.66µ ± ∞ ¹ 38.40µ ± ∞ ¹ ~ (p=1.000 n=1) ²
geomean 87.72µ 102.0µ +16.30%
¹ need >= 6 samples for confidence interval at level 0.95
² need >= 4 samples to detect a difference at alpha level 0.05
│ baseline.txt │ candidate.txt │
│ B/op │ B/op vs base │
GetEventsTopicFilters-8 190.44Ki ± 0% 99.53Ki ± 0% -47.73% (p=0.000 n=10)
GetEvents-8 43.16Ki ± ∞ ¹ 32.34Ki ± ∞ ¹ ~ (p=1.000 n=1) ²
GetLedgers-8 1402.2Ki ± ∞ ¹ 910.4Ki ± ∞ ¹ ~ (p=1.000 n=1) ²
JSONTransactions/JSON_format-8 2.000Ki ± 0% 5.438Ki ± 0% +171.88% (p=0.000 n=10)
JSONTransactions/XDR_format-8 1.336Ki ± 0% 4.781Ki ± 0% +257.89% (p=0.000 n=10)
GetProtocolVersion-8 7.908Ki ± ∞ ¹ 7.690Ki ± ∞ ¹ ~ (p=1.000 n=1) ²
geomean 24.99Ki 28.93Ki +15.76%
¹ need >= 6 samples for confidence interval at level 0.95
² need >= 4 samples to detect a difference at alpha level 0.05
│ baseline.txt │ candidate.txt │
│ allocs/op │ allocs/op vs base │
GetEventsTopicFilters-8 1521.0 ± 0% 774.0 ± 0% -49.11% (p=0.000 n=10)
GetEvents-8 621.0 ± ∞ ¹ 474.0 ± ∞ ¹ ~ (p=1.000 n=1) ²
GetLedgers-8 4.723k ± ∞ ¹ 2.710k ± ∞ ¹ ~ (p=1.000 n=1) ²
JSONTransactions/JSON_format-8 25.00 ± 0% 49.00 ± 0% +96.00% (p=0.000 n=10)
JSONTransactions/XDR_format-8 23.00 ± 0% 47.00 ± 0% +104.35% (p=0.000 n=10)
GetProtocolVersion-8 122.0 ± ∞ ¹ 119.0 ± ∞ ¹ ~ (p=1.000 n=1) ²
geomean 260.6 254.6 -2.28%
¹ need >= 6 samples for confidence interval at level 0.95
² need >= 4 samples to detect a difference at alpha level 0.05
pkg: github.com/stellar/stellar-rpc/cmd/stellar-rpc/internal/preflight
│ baseline.txt │ candidate.txt │
│ sec/op │ sec/op vs base │
GetPreflight-8 803.8µ ± 1% 805.3µ ± 1% ~ (p=0.315 n=10)
│ baseline.txt │ candidate.txt │
│ B/op │ B/op vs base │
GetPreflight-8 52.10Ki ± 0% 52.10Ki ± 0% ~ (p=1.000 n=10)
│ baseline.txt │ candidate.txt │
│ allocs/op │ allocs/op vs base │
GetPreflight-8 290.0 ± 0% 290.0 ± 0% ~ (p=1.000 n=10)
pkg: github.com/stellar/stellar-rpc/cmd/stellar-rpc/internal/rpcv1/sqlitedb
│ candidate.txt │
│ sec/op │
GetLedgerRange-8 955.1n ± 2%
BatchGetLedgers-8 281.5µ ± 1%
OldestLedgerRangeLookup/512KiB-8 173.6µ ± 1%
OldestLedgerRangeLookup/2MiB-8 597.2µ ± 1%
OldestLedgerRangeLookup/4MiB-8 1.243m ± 6%
geomean 128.2µ
│ candidate.txt │
│ B/op │
GetLedgerRange-8 16.00 ± 0%
BatchGetLedgers-8 288.5Ki ± 0%
OldestLedgerRangeLookup/512KiB-8 7.503Ki ± 0%
OldestLedgerRangeLookup/2MiB-8 7.503Ki ± 0%
OldestLedgerRangeLookup/4MiB-8 7.503Ki ± 0%
geomean 4.528Ki
│ candidate.txt │
│ allocs/op │
GetLedgerRange-8 4.000 ± 0%
BatchGetLedgers-8 1.319k ± 0%
OldestLedgerRangeLookup/512KiB-8 93.00 ± 0%
OldestLedgerRangeLookup/2MiB-8 93.00 ± 0%
OldestLedgerRangeLookup/4MiB-8 93.00 ± 0%
geomean 84.24
pkg: github.com/stellar/stellar-rpc/cmd/stellar-rpc/internal/store
│ candidate.txt │
│ sec/op │
ComputeFeeDistribution/alternativeComputeFeeDistribution-8 210.1µ ± 2%
ComputeFeeDistribution/ComputeFeeDistribution-8 9.547µ ± 0%
geomean 44.78µ
│ candidate.txt │
│ B/op │
ComputeFeeDistribution/alternativeComputeFeeDistribution-8 565.4Ki ± 0%
ComputeFeeDistribution/ComputeFeeDistribution-8 0.000 ± 0%
geomean ¹
¹ summaries must be >0 to compute geomean
│ candidate.txt │
│ allocs/op │
ComputeFeeDistribution/alternativeComputeFeeDistribution-8 30.00 ± 0%
ComputeFeeDistribution/ComputeFeeDistribution-8 0.000 ± 0%
geomean ¹
¹ summaries must be >0 to compute geomean
Raw benchmark logs (s3://stellar-rpc-ci-load-test/runs/34574463064/go-bench/): baseline.txt, benchstat.txt, candidate.txt
Performance Evaluation Test #4
🧪 Performance Evaluation Test #4
Commit: 79190e1fbf57 (getEvents-differential-test)
Run: https://github.com/stellar/stellar-rpc/actions/runs/34540551845
✅ Apply-load ingestion — verdict: ok
📈 Ingest load test — 79190e1
| Profile | Ledgers | ms/ledger | p50 / p95 / p99 ms | max ms |
|---|---|---|---|---|
| load-test-ledgers-v27-oz | 1000 | 1196.813 | 1114.603 / 1625.473 / 1911.671 | 3378.367 |
| load-test-ledgers-v27-sac | 1000 | 1097.372 | 1108.114 / 1181.347 / 1239.351 | 1302.640 |
| load-test-ledgers-v27-soroswap | 1000 | 790.768 | 801.758 / 867.567 / 921.459 | 1030.707 |
| Metric | Value |
|---|---|
| Ledgers replayed | 3000 |
| Initial DB ledger count | 120960 |
| Throughput | 0.94 ledgers/sec |
| Elapsed wall-clock | 3190.216s |
| Ingest busy-time | 3084.953s (96.7% utilization) |
| Per-ledger p50 / p95 / p99 | 1050.866 / 1417.640 / 1729.349 ms |
| Golden DB fetch+decompress | 2422s |
| stellar-core | v27.0.0 |
| Workflow run | #34540551845-1 |
✅ Backfill ingestion — verdict: ok
⏳ Backfill ingestion — 79190e1fbf57
| Metric | Value |
|---|---|
| Ledgers ingested | 120960 ([64250176 -> 64371135]) |
| Retention window | 120960 |
| Wall-clock (total) | 3h2m30s |
| Ingest phase | 2h32m16s |
| Bulk-load finalize phase | 30m15s |
| Ledgers/sec (ingest) | 13.2 |
✅ Endpoint load test — verdict: ok
🎯 Endpoint load test — 79190e1fbf57
Serial blast per endpoint (ramp-up 1m, duration 3m, error kill switch 75%, blaster aadc1a17595f) against the backfilled RPC (ledgers [64250935, 64371894], handoff wait 1276s).
| Endpoint | Target RPS | Requests | Errors | p50 (ms) | p95 (ms) | p99 (ms) | p99.9 (ms) |
|---|---|---|---|---|---|---|---|
| getEvents | 75 | 11220 | 4 (0.0%) | 0.7 | 8.9 | 72.5 | 1711.1 |
| getFeeStats | 250 | 37493 | 0 (0.0%) | 0.4 | 0.5 | 72.2 | 138.8 |
| getHealth | 250 | 37493 | 0 (0.0%) | 0.4 | 0.5 | 60.0 | 140.0 |
| getLatestLedger | 15 | 2245 | 0 (0.0%) | 92.3 | 118.2 | 176.3 | 226.7 |
| getLedgers (limit=5) | 3 | 439 | 0 (0.0%) | 615.9 | 1697.8 | 2020.4 | 2689.0 |
| getNetwork | 100 | 14751 | 0 (0.0%) | 21.7 | 1563.6 | 2160.6 | 2238.5 |
| getTransaction | 75 | 11224 | 0 (0.0%) | 6.2 | 16.0 | 63.0 | 130.0 |
| getTransactions (limit=200) | 10 | 1475 | 0 (0.0%) | 88.7 | 376.1 | 442.6 | 586.8 |
| getVersionInfo | 100 | 14875 | 0 (0.0%) | 19.6 | 46.8 | 141.3 | 214.5 |
getEvents results extended
| Endpoint | Target RPS | Requests | Errors | p50 (ms) | p95 (ms) | p99 (ms) | p99.9 (ms) |
|---|---|---|---|---|---|---|---|
| getEvents/catch-up | 3 | 502 | 0 (0.0%) | 4.6 | 27.1 | 71.1 | 138.4 |
| getEvents/deep-pager | 17.25 | 2560 | 1 (0.0%) | 0.6 | 40.3 | 171.3 | 1453.1 |
| getEvents/deep-scan | 2.25 | 334 | 0 (0.0%) | 0.6 | 7.5 | 19.6 | 93.1 |
| getEvents/firehose | 1.5 | 219 | 0 (0.0%) | 0.6 | 4.2 | 8.6 | 68.4 |
| getEvents/head-poll | 36 | 5335 | 0 (0.0%) | 0.7 | 5.9 | 13.1 | 101.8 |
| getEvents/tail-poll | 9 | 1364 | 3 (0.2%) | 0.6 | 2.4 | 754.7 | 10002.4 |
| getEvents/transfer-watcher | 6 | 906 | 0 (0.0%) | 6.3 | 10.7 | 18.3 | 90.4 |
✅ Go endpoint benchmarks — verdict: ok
Baseline v28.0.1 (273f19e4fcb1) vs candidate 79190e1fbf57 — -benchmem -count=10, both refs sequentially on one box; rpcv2 excluded.
benchstat: baseline vs candidate
goos: linux
goarch: amd64
pkg: github.com/stellar/stellar-rpc/cmd/stellar-rpc/internal/db
cpu: Intel(R) Xeon(R) Platinum 8124M CPU @ 3.00GHz
│ baseline.txt │
│ sec/op │
GetLedgerRange-8 949.7n ± 1%
BatchGetLedgers-8 743.9µ ± 1%
geomean 26.58µ
│ baseline.txt │
│ B/op │
GetLedgerRange-8 16.00 ± 0%
BatchGetLedgers-8 520.8Ki ± 0%
geomean 2.853Ki
│ baseline.txt │
│ allocs/op │
GetLedgerRange-8 4.000 ± 0%
BatchGetLedgers-8 2.314k ± 0%
geomean 96.21
pkg: github.com/stellar/stellar-rpc/cmd/stellar-rpc/internal/feewindow
│ baseline.txt │
│ sec/op │
ComputeFeeDistribution/computeFeeDistribution-8 9.290µ ± 0%
ComputeFeeDistribution/alternativeComputeFeeDistribution-8 216.2µ ± 4%
geomean 44.81µ
│ baseline.txt │
│ B/op │
ComputeFeeDistribution/computeFeeDistribution-8 0.000 ± 0%
ComputeFeeDistribution/alternativeComputeFeeDistribution-8 565.4Ki ± 0%
geomean ¹
¹ summaries must be >0 to compute geomean
│ baseline.txt │
│ allocs/op │
ComputeFeeDistribution/computeFeeDistribution-8 0.000 ± 0%
ComputeFeeDistribution/alternativeComputeFeeDistribution-8 30.00 ± 0%
geomean ¹
¹ summaries must be >0 to compute geomean
pkg: github.com/stellar/stellar-rpc/cmd/stellar-rpc/internal/methods
│ baseline.txt │ candidate.txt │
│ sec/op │ sec/op vs base │
GetEventsTopicFilters-8 2.537m ± 1% 2.349m ± 0% -7.41% (p=0.000 n=10)
GetEvents-8 149.5µ ± ∞ ¹ 127.9µ ± ∞ ¹ ~ (p=1.000 n=1) ²
GetLedgers-8 1264.2µ ± ∞ ¹ 857.1µ ± ∞ ¹ ~ (p=1.000 n=1) ²
JSONTransactions/JSON_format-8 7.634µ ± 0% 14.147µ ± 1% +85.32% (p=0.000 n=10)
JSONTransactions/XDR_format-8 2.522µ ± 1% 7.747µ ± 2% +207.10% (p=0.000 n=10)
GetProtocolVersion-8 40.70µ ± ∞ ¹ 37.08µ ± ∞ ¹ ~ (p=1.000 n=1) ²
geomean 84.95µ 100.8µ +18.61%
¹ need >= 6 samples for confidence interval at level 0.95
² need >= 4 samples to detect a difference at alpha level 0.05
│ baseline.txt │ candidate.txt │
│ B/op │ B/op vs base │
GetEventsTopicFilters-8 190.29Ki ± 0% 99.54Ki ± 0% -47.69% (p=0.000 n=10)
GetEvents-8 43.16Ki ± ∞ ¹ 32.34Ki ± ∞ ¹ ~ (p=1.000 n=1) ²
GetLedgers-8 1402.2Ki ± ∞ ¹ 910.4Ki ± ∞ ¹ ~ (p=1.000 n=1) ²
JSONTransactions/JSON_format-8 2.000Ki ± 0% 5.438Ki ± 0% +171.88% (p=0.000 n=10)
JSONTransactions/XDR_format-8 1.336Ki ± 0% 4.781Ki ± 0% +257.89% (p=0.000 n=10)
GetProtocolVersion-8 7.904Ki ± ∞ ¹ 7.689Ki ± ∞ ¹ ~ (p=1.000 n=1) ²
geomean 24.98Ki 28.93Ki +15.78%
¹ need >= 6 samples for confidence interval at level 0.95
² need >= 4 samples to detect a difference at alpha level 0.05
│ baseline.txt │ candidate.txt │
│ allocs/op │ allocs/op vs base │
GetEventsTopicFilters-8 1519.5 ± 0% 774.0 ± 0% -49.06% (p=0.000 n=10)
GetEvents-8 621.0 ± ∞ ¹ 474.0 ± ∞ ¹ ~ (p=1.000 n=1) ²
GetLedgers-8 4.723k ± ∞ ¹ 2.710k ± ∞ ¹ ~ (p=1.000 n=1) ²
JSONTransactions/JSON_format-8 25.00 ± 0% 49.00 ± 0% +96.00% (p=0.000 n=10)
JSONTransactions/XDR_format-8 23.00 ± 0% 47.00 ± 0% +104.35% (p=0.000 n=10)
GetProtocolVersion-8 122.0 ± ∞ ¹ 119.0 ± ∞ ¹ ~ (p=1.000 n=1) ²
geomean 260.5 254.6 -2.27%
¹ need >= 6 samples for confidence interval at level 0.95
² need >= 4 samples to detect a difference at alpha level 0.05
pkg: github.com/stellar/stellar-rpc/cmd/stellar-rpc/internal/preflight
│ baseline.txt │ candidate.txt │
│ sec/op │ sec/op vs base │
GetPreflight-8 794.7µ ± 1% 793.9µ ± 0% ~ (p=0.353 n=10)
│ baseline.txt │ candidate.txt │
│ B/op │ B/op vs base │
GetPreflight-8 52.10Ki ± 0% 52.10Ki ± 0% ~ (p=0.577 n=10)
│ baseline.txt │ candidate.txt │
│ allocs/op │ allocs/op vs base │
GetPreflight-8 290.0 ± 0% 290.0 ± 0% ~ (p=1.000 n=10)
pkg: github.com/stellar/stellar-rpc/cmd/stellar-rpc/internal/rpcv1/sqlitedb
│ candidate.txt │
│ sec/op │
GetLedgerRange-8 933.3n ± 1%
BatchGetLedgers-8 277.4µ ± 2%
OldestLedgerRangeLookup/512KiB-8 175.9µ ± 2%
OldestLedgerRangeLookup/2MiB-8 591.0µ ± 2%
OldestLedgerRangeLookup/4MiB-8 1.175m ± 1%
geomean 125.9µ
│ candidate.txt │
│ B/op │
GetLedgerRange-8 16.00 ± 0%
BatchGetLedgers-8 288.5Ki ± 0%
OldestLedgerRangeLookup/512KiB-8 7.503Ki ± 0%
OldestLedgerRangeLookup/2MiB-8 7.503Ki ± 0%
OldestLedgerRangeLookup/4MiB-8 7.503Ki ± 0%
geomean 4.528Ki
│ candidate.txt │
│ allocs/op │
GetLedgerRange-8 4.000 ± 0%
BatchGetLedgers-8 1.319k ± 0%
OldestLedgerRangeLookup/512KiB-8 93.00 ± 0%
OldestLedgerRangeLookup/2MiB-8 93.00 ± 0%
OldestLedgerRangeLookup/4MiB-8 93.00 ± 0%
geomean 84.25
pkg: github.com/stellar/stellar-rpc/cmd/stellar-rpc/internal/store
│ candidate.txt │
│ sec/op │
ComputeFeeDistribution/alternativeComputeFeeDistribution-8 208.0µ ± 2%
ComputeFeeDistribution/ComputeFeeDistribution-8 9.376µ ± 0%
geomean 44.16µ
│ candidate.txt │
│ B/op │
ComputeFeeDistribution/alternativeComputeFeeDistribution-8 565.4Ki ± 0%
ComputeFeeDistribution/ComputeFeeDistribution-8 0.000 ± 0%
geomean ¹
¹ summaries must be >0 to compute geomean
│ candidate.txt │
│ allocs/op │
ComputeFeeDistribution/alternativeComputeFeeDistribution-8 30.00 ± 0%
ComputeFeeDistribution/ComputeFeeDistribution-8 0.000 ± 0%
geomean ¹
¹ summaries must be >0 to compute geomean
Raw benchmark logs (s3://stellar-rpc-ci-load-test/runs/34540551845/go-bench/): baseline.txt, benchstat.txt, candidate.txt
57bfb69 to
9ed2d0f
Compare
c8067bc to
9ed0bc9
Compare
9ed0bc9 to
00a0dfc
Compare
00a0dfc to
3f2a787
Compare
3f2a787 to
9956dfa
Compare
9956dfa to
18fb93d
Compare
18fb93d to
944562d
Compare
bcbf78e to
ee5d5cd
Compare
ee5d5cd to
b375125
Compare
75fb031 to
a8121f6
Compare
…rtSameError The assertSame/assertSameError split merged up from add-differential-test-suite made assertSame reject a reference-side error; the cursors one ledger past the corpus are exactly the error-parity case. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
a8121f6 to
5e66095
Compare
There was a problem hiding this comment.
Copilot review overview
🟢 Approval recommended
The additive tests comprehensively exercise the migration while preserving established differential-test conventions.
Review effort: Balanced
Findings: None
What changed in this PR
Adds comprehensive byte-level differential coverage for the RPCv1 getEvents XDR-view migration.
Changes:
- Adds frozen legacy matcher/renderer comparisons across event, filter, pagination, cursor, and format variants.
- Expands shared differential fixture builders for additional
ScValtypes. - Consolidates SQLite test setup around
NewTestDB.
| File | Description |
|---|---|
get_events_differential_test.go |
Adds the differential suite and corpus. |
differential_test.go |
Adds reusable event-value fixture helpers. |
get_events_test.go |
Removes redundant database setup helper. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
What
This PR adds the
getEventsdifferential suite for #978, stacked onmigrate-getEvents-views. It's thegetEventscounterpart of #976 and reuses the machinery that 976 factored intodifferential_test.go. The bulk of the change here is purely additive.get_events_differential_test.gofreezes the pre-view path test-locally (the SDK'sGetEventsRequest.Matches, which will be removed/deprecated) and asserts that it and the view path produce byte-identicalGetEventsResponseJSON across three swept dimensions:TransactionMetaV3/V4, contract/system/diagnostic events, topic counts 0–4 and every topic value shape, transaction-level event stages, failed transactions, contract-less events, empty and event-less ledgers.endLedger.There's 8 total
func TestGetEvents...tests, but because of the enumeration, the above amounts to ~3100 subtests.This is not the same as
rpcv2/eventsapi/v1_parity_test.go, which compares the v1 handler against the v2-native shim for semantic equality. This suite compares the old and new backend of the same handler, and it does so for byte-equality rather than semantic equality.Minor: the local function
newTestDBinget_events_test.gowas totally redundant withmethods.NewTestDBand was thus removed and replaced with the global variant.Why
#978 replaces
getEvents' in-memory matcher (SDKMatcheson decoded events,ScVal.Equalsper topic) withstore.MatchesAnyFilterView(byte comparison on view slices) and re-rendersEventInfofrom view accessors instead of the decoded struct. Both are wire-visible, and the existing tests pin only a handful of shapes. The differential validates the migration exhaustively and keeps #978 focused on the read-path change.Known Limitations
N/A