Skip to content

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

Open
beekld wants to merge 1 commit into
mainfrom
beeklimt/SDK-2369
Open

feat: Add Big Segments support to the server contract-test service#554
beekld wants to merge 1 commit into
mainfrom
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 against the C++ server SDK.

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

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

Note

Low Risk
Changes are confined to contract-test harness code and JSON protocol types; production SDK behavior is unchanged aside from using existing Big Segments APIs.

Overview
Enables the shared contract-test harness to run its Big Segments suite against the C++ server SDK by wiring harness-driven store callbacks into client configuration and exposing store health via the existing command protocol.

The contract-tests data model gains ConfigBigSegmentsParams (callback URI plus optional cache/poll/stale tuning) on ConfigParams, a BigSegmentStoreStatusResponse type, and a new getBigSegmentStoreStatus command. ContractTestBigSegmentStore implements IBigSegmentStore with synchronous HTTP POSTs to the harness for /getMembership and /getMetadata, analogous to hook callbacks but blocking because lookups must return values. EntityManager maps the bigSegments config block to BigSegmentsBuilder and the shared store instance; ClientEntity handles the new command via Client::BigSegmentStoreStatus(). The service advertises the big-segments capability and builds the new store source into server-tests.

Reviewed by Cursor Bugbot for commit 410f7e6. Bugbot is set up for automated code reviews on this repo. Configure here.

@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
@beekld beekld force-pushed the beeklimt/SDK-2368 branch from 5836643 to d9c101f Compare June 15, 2026 23:21
@beekld beekld force-pushed the beeklimt/SDK-2369 branch from 2ac1d30 to dd3d569 Compare June 15, 2026 23:21
@beekld beekld force-pushed the beeklimt/SDK-2368 branch from d9c101f to 8ff748b Compare June 15, 2026 23:25
@beekld beekld force-pushed the beeklimt/SDK-2369 branch from dd3d569 to 9bdf697 Compare June 15, 2026 23:25
@beekld beekld force-pushed the beeklimt/SDK-2368 branch from 8ff748b to 11902fa Compare June 16, 2026 18:29
@beekld beekld force-pushed the beeklimt/SDK-2369 branch from 9bdf697 to c36597c Compare June 16, 2026 18:29
Base automatically changed from beeklimt/SDK-2368 to main June 16, 2026 19:06
@beekld beekld force-pushed the beeklimt/SDK-2369 branch from c36597c to 410f7e6 Compare June 16, 2026 19:33
@beekld beekld marked this pull request as ready for review June 16, 2026 19:35
@beekld beekld requested a review from a team as a code owner June 16, 2026 19:35
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