sqlitenow_oversqlite
Dart Oversqlite runtime support for SQLiteNow generated sync metadata.
The package includes local sync metadata, lifecycle client state, HTTP protocol handshake, push, pull, snapshot rebuild, conflict resolution, and realserver conformance coverage for the Oversqlite protocol.
Use this package together with generated Dart code from sqlitenow_cli
when the database config sets oversqlite: true.
Run normal package coverage with:
flutter test packages/sqlitenow_oversqlite
Run live realserver conformance after starting
go-oversync/examples/nethttp_server:
OVERSQLITE_REALSERVER_TESTS=true flutter test packages/sqlitenow_oversqlite/test/realserver_conformance_test.dart
Run the opt-in heavy realserver stress suite with:
OVERSQLITE_REALSERVER_TESTS=true OVERSQLITE_REALSERVER_HEAVY=true flutter test packages/sqlitenow_oversqlite/test/realserver_heavy_test.dart
Set OVERSQLITE_REAL_SERVER_SMOKE_BASE_URL to override the default
http://localhost:8080.
Heavy Realserver Parity
The Dart heavy suite targets behavior parity with the KMP realserver *Heavy
wrappers, not a one-to-one copy of every KMP platform wrapper.
| KMP heavy behavior group | Dart heavy coverage |
|---|---|
| Multi-chunk push, pull, committed replay, and snapshot retrieval | Covered by small chunks and interleaved same-user writers converge and stale follower pruned under load rebuilds from snapshot with intentionally small upload and download limits. Dart uses downloadLimit for snapshot chunk fetch size. |
| Long-horizon writer/follower convergence | Covered by repeated writer/follower rounds in the interleaved writer and stale follower tests. |
| Long-horizon divergent writer convergence | Covered by repeated client-wins conflict rounds after prior bundles. |
| Stale follower after history pruning | Covered through the retained-floor test endpoint and snapshot rebuild convergence. |
| Repeated conflict convergence | Covered by repeated ClientWinsResolver conflicts after prior committed bundles. |
| Source recovery or source retirement | Covered after several committed bundles, including old-source rejection and follow-up sync through the replacement source. |
| Same-user multi-device convergence | Covered by two Dart writers plus an observer converging through the same user scope. |
| Shared connection or concurrent local usage stress | Covered by concurrent reads while a shared Dart database catches up through live pulls. Dart does not expose the KMP alias-star generated query surface, so that exact generated-query shape is not applicable. |
| Rich schema, typed rows, BLOB, cascade, and FK topology stress | Follow-up gap for Dart generated rich-schema realserver fixtures. The current Dart heavy suite uses the manual business subset schema already used by normal Dart realserver conformance. |