Skip to content

feat: Add the flag-overrides capability to the contract test service - #225

Draft
kinyoklion wants to merge 1 commit into
rlamb/overrides-java-file-override-sourcefrom
rlamb/overrides-java-contract-tests
Draft

kinyoklion wants to merge 1 commit into
rlamb/overrides-java-file-override-sourcefrom
rlamb/overrides-java-contract-tests

Conversation

@kinyoklion

@kinyoklion kinyoklion commented Sep 25, 2026 •

Copy link
Copy Markdown
Member

Summary

The contract test service now advertises the flag-overrides capability and accepts the overrides object in the SDK configuration, as the test harness service specification describes: filePaths (required), duplicateKeysHandling (fail or ignore), changeDetection (polling or watching), and pollIntervalMs. The block configures FileOverrides.source() on the data system builder. An overrides block without a dataSystem block is rejected, because the override source is an option of the FDv2 data system.

The service also reads its listening port from the PORT environment variable when set, which the Makefile already passes, so several test services can run side by side on one machine. The default stays 8000.

This PR depends on the file-based override source (rlamb/overrides-java-file-override-source) and is based on that branch; retarget it to feat/overrides once that branch merges.

The existing file data source keeps its current behavior; this change does not touch its code paths.

SDK-3246


Note

Overview
The Java server SDK contract test service now supports the flag-overrides harness capability so cross-SDK tests can drive file-based flag overrides.

Create-instance config accepts an optional overrides block (filePaths, duplicateKeysHandling, changeDetection, pollIntervalMs), mapped to FileOverrides.source() on the FDv2 data system builder. overrides without dataSystem is rejected with a clear error, since overrides are a data-system option only.

The service advertises flag-overrides in its status capabilities. It also honors the PORT environment variable for the HTTP listen port (default 8000), so multiple contract-test services can run on one machine.

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

@kinyoklion
kinyoklion force-pushed the rlamb/overrides-java-file-override-source branch from bc2e4a9 to 657a598 Compare September 28, 2026 21:04
@kinyoklion
kinyoklion force-pushed the rlamb/overrides-java-contract-tests branch from 5069a69 to dd3942a Compare September 28, 2026 21:04
@kinyoklion
kinyoklion force-pushed the rlamb/overrides-java-file-override-source branch from 657a598 to 5be8948 Compare October 1, 2026 23:44
@kinyoklion
kinyoklion force-pushed the rlamb/overrides-java-contract-tests branch from dd3942a to 56efaf2 Compare October 1, 2026 23:44
@kinyoklion
kinyoklion force-pushed the rlamb/overrides-java-file-override-source branch from 5be8948 to 9992774 Compare October 3, 2026 00:58
@kinyoklion
kinyoklion force-pushed the rlamb/overrides-java-contract-tests branch from 56efaf2 to c355fd9 Compare October 3, 2026 00:58
@kinyoklion

Copy link
Copy Markdown
Member Author

bugbot review

@cursor cursor Bot 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.

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit c355fd9. Configure here.

The contract test service advertises the flag-overrides capability and
accepts the overrides object in the SDK configuration: filePaths,
duplicateKeysHandling, changeDetection, and pollIntervalMs. The block
configures FileOverrides.source() on the data system builder. An
overrides block without a dataSystem block is rejected, because the
override source is an option of the FDv2 data system.

The service reads its listening port from the PORT environment variable
when set, which the Makefile already passes, so several test services
can run side by side. The default stays 8000.
@kinyoklion
kinyoklion force-pushed the rlamb/overrides-java-file-override-source branch from 9992774 to 1728c29 Compare October 3, 2026 01:43
@kinyoklion
kinyoklion force-pushed the rlamb/overrides-java-contract-tests branch from c355fd9 to 310a4a1 Compare October 3, 2026 01:43

This branch has not been deployed

No deployments
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