Skip to content

feat: Add Big Segments support to the server contract-test service#554

Draft
beekld wants to merge 1 commit into
beeklimt/SDK-2368from
beeklimt/SDK-2369
Draft

feat: Add Big Segments support to the server contract-test service#554
beekld wants to merge 1 commit into
beeklimt/SDK-2368from
beeklimt/SDK-2369

Conversation

@beekld

@beekld beekld commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Add Big Segments support to the server contract-test service

Lets the shared contract-test harness run its Big Segments suite (evaluation,
membership caching, status polling, error handling) against the C++ server SDK.
Builds on #552.

What's in

  • ContractTestBigSegmentStore: an IBigSegmentStore that delegates
    getMembership/getMetadata to the harness over HTTP (synchronous
    request/response, mirroring ContractTestHook's callback wiring).
  • A bigSegments config block in the contract-tests data model ->
    ConfigBuilder::BigSegments(...) in the entity manager.
  • The getBigSegmentStoreStatus command -> Client::BigSegmentStoreStatus().
  • big-segments added to the advertised capabilities.

No SDK changes here -- bigSegmentsStatus already serializes into the evaluation
reason, so it flows through the existing evaluate path.

Design notes

  • The store does each lookup on its own short-lived io_context rather than the
    SDK executor, so a synchronous callback can't deadlock the SDK's single io
    thread during a metadata poll. A non-200 from the harness maps to a store
    error; lastUpToDate of 0 maps to "never synchronized".
  • This mirrors how the Java SDK covers Big Segments end-to-end. The store
    implementations themselves are tested against real Redis/DynamoDB at the
    source-library level separately.

Testing

  • The harness Big Segments suite passes against the built service (40 ran,
    13 skipped, 0 failed).
  • server-tests builds and advertises big-segments.
  • Full server-sdk unit suite green.

@beekld beekld force-pushed the beeklimt/SDK-2368 branch from 53139f4 to 5836643 Compare June 12, 2026 19:09
@beekld beekld force-pushed the beeklimt/SDK-2369 branch from 30a59b0 to 2ac1d30 Compare June 12, 2026 19:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant