Skip to content

Add getEvents differential tests - #982

Merged
cjonas9 merged 5 commits into
feature/full-historyfrom
getEvents-differential-test
Sep 21, 2026
Merged

cjonas9 merged 5 commits into
feature/full-historyfrom
getEvents-differential-test

Conversation

@cjonas9

@cjonas9 cjonas9 commented Sep 8, 2026 •

Copy link
Copy Markdown
Contributor

What

This PR adds the getEvents differential suite for #978, stacked on migrate-getEvents-views. It's the getEvents counterpart of #976 and reuses the machinery that 976 factored into differential_test.go. The bulk of the change here is purely additive.

get_events_differential_test.go freezes the pre-view path test-locally (the SDK's GetEventsRequest.Matches, which will be removed/deprecated) and asserts that it and the view path produce byte-identical GetEventsResponse JSON across three swept dimensions:

  • Corpus: LCM V1/V2, TransactionMeta V3/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.
  • Filters: a 31-case table covering every wildcard form, alone, combined and OR'd, each pinned to match all, some or none of the corpus so no case is vacuous.
  • Requests: both formats, page limits, explicit cursors, cursor chains and 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 newTestDB in get_events_test.go was totally redundant with methods.NewTestDB and was thus removed and replaced with the global variant.

Why

#978 replaces getEvents' in-memory matcher (SDK Matches on decoded events, ScVal.Equals per topic) with store.MatchesAnyFilterView (byte comparison on view slices) and re-renders EventInfo from 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

@github-actions

github-actions Bot commented Sep 9, 2026 •

Copy link
Copy Markdown
Contributor

🧪 Performance Evaluation Test #5

Commit: c8067bca0ccb (getEvents-differential-test)
Run: https://github.com/stellar/stellar-rpc/actions/runs/34574463064

✅ Apply-load ingestion — verdict: ok

📈 Ingest load test — c8067bc

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

@cjonas9
cjonas9 force-pushed the getEvents-differential-test branch from 57bfb69 to 9ed2d0f Compare September 9, 2026 17:19
@cjonas9
cjonas9 force-pushed the getEvents-differential-test branch 2 times, most recently from c8067bc to 9ed0bc9 Compare September 11, 2026 17:40
@cjonas9
cjonas9 force-pushed the getEvents-differential-test branch from 9ed0bc9 to 00a0dfc Compare September 11, 2026 20:07
@cjonas9
cjonas9 force-pushed the getEvents-differential-test branch from 00a0dfc to 3f2a787 Compare September 11, 2026 20:09
@cjonas9
cjonas9 force-pushed the getEvents-differential-test branch from 3f2a787 to 9956dfa Compare September 11, 2026 22:11
@cjonas9
cjonas9 force-pushed the getEvents-differential-test branch from 9956dfa to 18fb93d Compare September 14, 2026 15:49
@cjonas9
cjonas9 force-pushed the getEvents-differential-test branch from 18fb93d to 944562d Compare September 14, 2026 17:03
@cjonas9
cjonas9 force-pushed the getEvents-differential-test branch 2 times, most recently from bcbf78e to ee5d5cd Compare September 14, 2026 17:47
@cjonas9
cjonas9 force-pushed the getEvents-differential-test branch from ee5d5cd to b375125 Compare September 14, 2026 22:44
Base automatically changed from migrate-getEvents-views to feature/full-history September 17, 2026 22:10
@cjonas9
cjonas9 force-pushed the getEvents-differential-test branch from 75fb031 to a8121f6 Compare September 17, 2026 22:10
@cjonas9
cjonas9 removed this pull request from stack #963 September 18, 2026 20:16
cjonas9 and others added 5 commits September 18, 2026 17:12
…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>
@cjonas9
cjonas9 force-pushed the getEvents-differential-test branch from a8121f6 to 5e66095 Compare September 18, 2026 21:23
@cjonas9
cjonas9 added this pull request to stack #1030 September 18, 2026 22:08
@cjonas9
cjonas9 marked this pull request as ready for review September 18, 2026 22:43
Copilot AI balanced review requested due to automatic review settings September 18, 2026 22:43
@cjonas9 cjonas9 added this to the platform sprint 76 milestone Sep 18, 2026
@cjonas9 cjonas9 moved this from To Do to Needs Review in Platform Scrum Sep 18, 2026

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 ScVal types.
  • 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.

@cjonas9
cjonas9 removed this pull request from stack #1030 September 18, 2026 22:51
@cjonas9
cjonas9 added this pull request to stack #1031 September 18, 2026 22:52
@cjonas9
cjonas9 merged commit 4cf5a65 into feature/full-history Sep 21, 2026
19 checks passed
@cjonas9
cjonas9 deleted the getEvents-differential-test branch September 21, 2026 15:25
@github-project-automation github-project-automation Bot moved this from Needs Review to Done in Platform Scrum Sep 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

Adopt XDR views: add differential test suites for ensuring byte-equal JSON responses

3 participants