Skip to content

[LiveObjects] Enable UTS integration test suites (17/17 objects tier passing) - #2235

Open
sacOO7 wants to merge 1 commit into
feature/liveobjects-implementationfrom
feature/liveobjects-uts-integration-tests
Open

[LiveObjects] Enable UTS integration test suites (17/17 objects tier passing)#2235
sacOO7 wants to merge 1 commit into
feature/liveobjects-implementationfrom
feature/liveobjects-uts-integration-tests

Conversation

@sacOO7

@sacOO7 sacOO7 commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

Summary

This PR enables the UTS integration test suites for LiveObjects, originally translated from the UTS integration specs in #2226. When that PR was authored, the path-based API was a compile-only skeleton, so its suites carried a .disabled("Compile-only until the implementation lands") trait. The implementation has now landed on the base branch (feature/liveobjects-implementation), and these tests run — and pass — exactly as originally written, with zero test adaptations.

Results

All suites verified against the real (nonprod) Ably sandbox:

Tier Suite Result Wall time
Standard ObjectsSyncTests 4/4 ✅ ~83s
Standard ObjectsLifecycleTests 6/6 ✅ ~132s
Standard ObjectsGcTests 2/2 ✅ ~54s
Proxy ObjectsFaultsTests 5/5 ✅ ~53s
Rest HistoryTests / PresenceTests / PublishTests 27/27 ✅ (1 documented skip) ~280s

Each @Test runs both JSON and msgpack protocol variants. The proxy tier self-provisions the uts-proxy binary (checksum-verified GitHub release download).

What's included

  • Test/UTS/integration/standard/objects/ — the sync, lifecycle, and GC suites plus their helpers (ObjectsIntegrationHelpers, ObjectsRestProvisioning).
  • Test/UTS/integration/proxy/objects/ — the fault-injection suite (ObjectsFaultsTests: sync interruption, buffering across faults, detach/reattach, publish-ack loss).
  • Test/UTS/integration/standard/rest/ — the History/Presence/Publish suites from the same source PR.
  • Package.swift — adds the AblyLiveObjects dependency to the UTS test target (required by the objects suites).
  • Test/UTS/deviations.md — appended records: the RSL1l1 skip gate and the application record for this test-enablement pass.
  • .claude/skills/uts-to-swift/ — skill routing updated so future objects UTS ports land in the correct targets (unit → LiveObjects/Tests/AblyLiveObjectsTests/UTS/; integration/proxy → Test/UTS/integration/…), plus the refreshed objects mapping reference.

Relationship to the base branch

These tests are the acceptance evidence for the implementation work on feature/liveobjects-implementation. Three defects they exposed were fixed there (not here — this PR contains no library source changes):

  1. Engine deinit on the internal queue tripped a dispatch precondition (SIGTRAP during ARC-driven teardown).
  2. get() did not implicitly attach the channel (RTL33b) — every integration spec's setup relies on it.
  3. siteCode was never delivered to channels created after CONNECTED, silently disabling RTO20 local echo.

The suites in this PR now pass with those fixes in place, unmodified from their spec translations.

Notes for reviewers

  • The integration specs live at uts/objects/integration/ in the specification repo; the test bodies are line-by-line translations (deviations, where unavoidable, are recorded in Test/UTS/deviations.md).
  • Suggested CI budget if these are wired into a workflow: ~300s for the three standard suites, ~60s for the proxy suite. They need sandbox network access and (proxy tier) permission to download the uts-proxy release binary.
  • Run locally with swift test --filter ObjectsSyncTests (etc.) from the repo root, after git submodule update --init --recursive.

…t tiers)

Applies the UTS integration test suites translated in #2226, now runnable
against the completed LiveObjects implementation. The compile-only
.disabled traits are removed; all suites pass against the Ably sandbox
exactly as originally written (17/17 objects-tier + 27/27 rest-tier):

- standard/objects: sync, lifecycle, and GC suites + helpers
- proxy/objects: fault-injection suite (self-provisioning uts-proxy)
- standard/rest: History/Presence/Publish suites
- Package.swift: AblyLiveObjects dependency for the UTS target
- deviations.md records and uts-to-swift skill routing updates
@coderabbitai

coderabbitai Bot commented Jul 31, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@sacOO7, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 50 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: e79f1be9-08fb-407f-af60-1df7bd952514

📥 Commits

Reviewing files that changed from the base of the PR and between 0d2cd22 and 811ce1b.

📒 Files selected for processing (13)
  • .claude/skills/uts-to-swift/SKILL.md
  • .claude/skills/uts-to-swift/references/objects-mapping.md
  • Package.swift
  • Test/UTS/deviations.md
  • Test/UTS/integration/proxy/objects/ObjectsFaultsTests.swift
  • Test/UTS/integration/standard/objects/ObjectsGcTests.swift
  • Test/UTS/integration/standard/objects/ObjectsLifecycleTests.swift
  • Test/UTS/integration/standard/objects/ObjectsSyncTests.swift
  • Test/UTS/integration/standard/objects/helpers/ObjectsIntegrationHelpers.swift
  • Test/UTS/integration/standard/objects/helpers/ObjectsRestProvisioning.swift
  • Test/UTS/integration/standard/rest/HistoryTests.swift
  • Test/UTS/integration/standard/rest/PresenceTests.swift
  • Test/UTS/integration/standard/rest/PublishTests.swift

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant