Skip to content

feat: Update contract tests to support multiple synchronizers and initializers#222

Merged
kinyoklion merged 2 commits intomainfrom
devin/1770417348-multiple-synchronizers-initializers
Feb 9, 2026
Merged

feat: Update contract tests to support multiple synchronizers and initializers#222
kinyoklion merged 2 commits intomainfrom
devin/1770417348-multiple-synchronizers-initializers

Conversation

@devin-ai-integration
Copy link
Contributor

@devin-ai-integration devin-ai-integration bot commented Feb 6, 2026

BEGIN_COMMIT_OVERRIDE
chore: Update contract tests to support multiple synchronizers and initializers
END_COMMIT_OVERRIDE

Requirements

  • I have added test coverage for new or changed functionality
  • I have followed the repository's pull request submission guidelines
  • I have validated my changes against all supported platform versions

Related issues

Related to sdk-test-harness commit: launchdarkly/sdk-test-harness@01a245c

Describe the solution you've provided

Updates the contract test implementation to match the sdk-test-harness changes that add support for multiple synchronizers (more than 2) for testing fallback scenarios.

Contract test model changes:

  • Changed SdkConfigDataSystemParams.Synchronizers from SdkConfigSynchronizersParams (with Primary/Secondary properties) to SdkConfigDataSynchronizerParams[] (array)
  • Removed the SdkConfigSynchronizersParams class
  • Renamed SdkConfigSynchronizerParams to SdkConfigDataSynchronizerParams for consistency
  • Updated SdkClientEntity.BuildSdkConfig to iterate over the synchronizers array

CI config change:

  • Pinned FDv2 contract tests to use the v3.0.0-alpha.3 tag of sdk-test-harness instead of the feat/fdv2 branch

Human review checklist

  • Verify v3.0.0-alpha.3 tag exists in sdk-test-harness and is compatible with the array-based synchronizer format used here
  • Verify the FDv1 fallback synchronizer selection logic is correct — it now picks the first polling synchronizer found in the array, or falls back to the first synchronizer if none have polling configured
  • Confirm the JSON serialization matches what the test harness sends (property names are auto-camelCased)

Describe alternatives you've considered

Could have kept backward compatibility by supporting both the old Primary/Secondary structure and the new array format, but this would add unnecessary complexity since the test harness has moved to the array-based approach.

Additional context

This is a contract test and CI config change only — no changes to the SDK itself.


Note

Medium Risk
Moderate risk due to a breaking change in the contract-test config model (Synchronizers shape) and updated fallback-selection behavior that could alter FDv2/FDv1 test execution, though it is confined to test/CI code.

Overview
Updates the contract test data-system configuration model to support multiple synchronizers by changing SdkConfigDataSystemParams.Synchronizers from a Primary/Secondary object to an array of SdkConfigDataSynchronizerParams (and removing/renaming the old types).

Adjusts SdkClientEntity.BuildSdkConfig to build all provided synchronizers, and changes FDv1 fallback selection to pick the first polling synchronizer found (otherwise the first synchronizer). CI’s FDv2 contract test action is also updated to run sdk-test-harness from the pinned v3.0.0-alpha.3 tag instead of the feat/fdv2 branch.

Written by Cursor Bugbot for commit 349d410. This will update automatically on new commits. Configure here.

…tializers

Update the contract test implementation to use array-based synchronizers
instead of Primary/Secondary structure to match the sdk-test-harness
changes that add support for multiple synchronizers.

Changes:
- Change SdkConfigDataSystemParams.Synchronizers from SdkConfigSynchronizersParams
  to SdkConfigDataSynchronizerParams[] (array)
- Remove SdkConfigSynchronizersParams class (Primary/Secondary structure)
- Rename SdkConfigSynchronizerParams to SdkConfigDataSynchronizerParams
- Update SdkClientEntity to iterate over synchronizers array

Co-Authored-By: rlamb@launchdarkly.com <rlamb@launchdarkly.com>
@devin-ai-integration
Copy link
Contributor Author

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment and CI monitoring

@devin-ai-integration devin-ai-integration bot added the devin-pr PR was created by Devin AI label Feb 6, 2026
@kinyoklion kinyoklion marked this pull request as ready for review February 6, 2026 23:09
@kinyoklion kinyoklion requested a review from a team as a code owner February 6, 2026 23:09
Replace feat/fdv2 branch reference with v3.0.0-alpha.3 tag for
the sdk-test-harness used in FDv2 contract tests.

Co-Authored-By: rlamb@launchdarkly.com <rlamb@launchdarkly.com>
@tanderson-ld tanderson-ld self-requested a review February 9, 2026 18:02
@kinyoklion kinyoklion merged commit 5b308b5 into main Feb 9, 2026
29 of 31 checks passed
@kinyoklion kinyoklion deleted the devin/1770417348-multiple-synchronizers-initializers branch February 9, 2026 18:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

devin-pr PR was created by Devin AI

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants