adjust tests

This commit is contained in:
Nikita Sivukhin
2025-11-12 16:15:54 +04:00
parent 54cb7758ef
commit 41d7d5af49
3 changed files with 40 additions and 2 deletions

View File

@@ -13,7 +13,7 @@ function cleanup(path) {
try { unlinkSync(`${path}-wal-revert`) } catch (e) { }
}
test('partial sync', async () => {
test('partial sync (prefix bootstrap strategy)', async () => {
{
const db = await connect({
path: ':memory:',
@@ -47,6 +47,43 @@ test('partial sync', async () => {
expect((await db.stats()).networkReceivedBytes).toBeGreaterThanOrEqual(2000 * 1024);
})
test('partial sync (query bootstrap strategy)', async () => {
{
const db = await connect({
path: ':memory:',
url: process.env.VITE_TURSO_DB_URL,
longPollTimeoutMs: 100,
});
await db.exec("CREATE TABLE IF NOT EXISTS partial_keyed(key INTEGER PRIMARY KEY, value BLOB)");
await db.exec("DELETE FROM partial_keyed");
await db.exec("INSERT INTO partial_keyed SELECT value, randomblob(1024) FROM generate_series(1, 2000)");
await db.push();
await db.close();
}
const db = await connect({
path: ':memory:',
url: process.env.VITE_TURSO_DB_URL,
longPollTimeoutMs: 100,
partialBootstrapStrategy: { kind: 'query', query: 'SELECT * FROM partial_keyed WHERE key = 1000' },
});
// we must sync only few pages
expect((await db.stats()).networkReceivedBytes).toBeLessThanOrEqual(10 * (4096 + 128));
// select of one record shouldn't increase amount of received data by a lot
expect(await db.prepare("SELECT length(value) as length FROM partial_keyed LIMIT 1").all()).toEqual([{ length: 1024 }]);
expect((await db.stats()).networkReceivedBytes).toBeLessThanOrEqual(10 * (4096 + 128));
await db.prepare("INSERT INTO partial_keyed VALUES (-1, -1)").run();
const n1 = await db.stats();
// same as bootstrap query - we shouldn't bring any more pages
expect(await db.prepare("SELECT length(value) as length FROM partial_keyed WHERE key = 1000").all()).toEqual([{ length: 1024 }]);
const n2 = await db.stats();
expect(n1.networkReceivedBytes).toEqual(n2.networkReceivedBytes);
})
test('concurrent-actions-consistency', async () => {
{
const db = await connect({

View File

@@ -57,7 +57,7 @@ class Database extends DatabasePromise {
partialBoostrapStrategy = { type: "Prefix", length: opts.partialBootstrapStrategy.length };
break;
case "query":
partialBoostrapStrategy = { type: "Query", length: opts.partialBootstrapStrategy.query };
partialBoostrapStrategy = { type: "Query", query: opts.partialBootstrapStrategy.query };
break;
}
}