You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The unit surface is well covered (99% of the hand-written code after #73), but several end-to-end / integration scenarios have no coverage. The in-process gRPC harness (tests/_grpc_fakes.py + tests/test_grpc_harness.py) is strong for the data family, but the gaps below close real risk that line coverage doesn't reflect. Surfaced by a test-gap review.
Gaps to close
auth and notifier families have zero E2E coverage._grpc_fakes.py only wires CollectionManagement, AggregateManagement, InsertManagement; endpoints for auth/notifier point at the same address but no auth/notifier RPC is ever driven over the wire. Add a fake authoriser servicer and drive at least one cf.auth.* flow (e.g. api-key generate) end-to-end.
No full write-lifecycle over the wire. There's no delete/update fake servicer, so append → update → read and delete → read-empty are never exercised end-to-end. The _id-preservation-for-round-trip contract is asserted only against LocalMock, never a real channel.
No concurrency test. The fake server runs an 8-worker pool and GrpcTransport.channel_for guards channel creation with a lock, but no test issues concurrent RPCs through a single Clappform instance to prove the channel cache/lock is correct under contention.
No real multi-cluster E2E. Multi-cluster is only tested with two LocalMocks (docs snippets). Stand up two FakeClusters on two ports, drive two clients (or with_location across genuinely different clusters), and assert no cross-tenant/cross-cluster leakage of data or metadata over real channels.
No streaming backpressure / large-payload / cancellation coverage. The fake yields one small row per chunk; the 64 MiB channel limits are never approached, and no test abandons a stream early to verify RPC/channel teardown.
Broaden the contract smoke test.tests/test_contract_smoke.py hits a single RPC (client.collection.get_all). Since the in-process fakes mirror the client's own assumptions and can't catch client/server drift, adding one streaming data read and one auth RPC against staging would materially increase drift detection in the proto-sync workflow.
Summary
The unit surface is well covered (99% of the hand-written code after #73), but several end-to-end / integration scenarios have no coverage. The in-process gRPC harness (
tests/_grpc_fakes.py+tests/test_grpc_harness.py) is strong for thedatafamily, but the gaps below close real risk that line coverage doesn't reflect. Surfaced by a test-gap review.Gaps to close
authandnotifierfamilies have zero E2E coverage._grpc_fakes.pyonly wiresCollectionManagement,AggregateManagement,InsertManagement; endpoints for auth/notifier point at the same address but no auth/notifier RPC is ever driven over the wire. Add a fake authoriser servicer and drive at least onecf.auth.*flow (e.g. api-key generate) end-to-end.No full write-lifecycle over the wire. There's no delete/update fake servicer, so
append → update → readanddelete → read-emptyare never exercised end-to-end. The_id-preservation-for-round-trip contract is asserted only againstLocalMock, never a real channel.No concurrency test. The fake server runs an 8-worker pool and
GrpcTransport.channel_forguards channel creation with a lock, but no test issues concurrent RPCs through a singleClappforminstance to prove the channel cache/lock is correct under contention.No real multi-cluster E2E. Multi-cluster is only tested with two
LocalMocks (docs snippets). Stand up twoFakeClusters on two ports, drive two clients (orwith_locationacross genuinely different clusters), and assert no cross-tenant/cross-cluster leakage of data or metadata over real channels.No streaming backpressure / large-payload / cancellation coverage. The fake yields one small row per chunk; the 64 MiB channel limits are never approached, and no test abandons a stream early to verify RPC/channel teardown.
Broaden the contract smoke test.
tests/test_contract_smoke.pyhits a single RPC (client.collection.get_all). Since the in-process fakes mirror the client's own assumptions and can't catch client/server drift, adding one streamingdataread and oneauthRPC against staging would materially increase drift detection in the proto-sync workflow.Notes
_client.py:196,dataframes.py:173,_local_mock.py) are intentional/defensive and out of scope here.