mirror of
https://github.com/hanzoai/datastore.git
synced 2026-09-26 13:55:07 +00:00
50 lines
1.5 KiB
JavaScript
50 lines
1.5 KiB
JavaScript
import { assert } from 'https://cdn.jsdelivr.net/npm/chai/chai.js';
|
|
|
|
import { EventSimulator } from '../EventSimulator.js';
|
|
import { MergeTree } from '../MergeTree.js';
|
|
import { MergeTreeInserter } from '../MergeTreeInserter.js';
|
|
|
|
export async function testMergeTreeInserter()
|
|
{
|
|
function* testInserter1(mt)
|
|
{
|
|
yield {type: 'insert', bytes: 1};
|
|
}
|
|
|
|
function* testInserter2(mt)
|
|
{
|
|
yield {type: 'insert', bytes: 42};
|
|
yield {type: 'insert', bytes: 42};
|
|
yield {type: 'insert', bytes: 42};
|
|
yield {type: 'sleep', delay: 1.5};
|
|
yield {type: 'insert', bytes: 13};
|
|
yield {type: 'insert', bytes: 13};
|
|
yield {type: 'sleep', delay: 10};
|
|
yield {type: 'insert', bytes: 666};
|
|
}
|
|
|
|
function* testInserter3(mt)
|
|
{
|
|
for (let i = 1; i < 5; i++)
|
|
{
|
|
yield {type: 'sleep', delay: 1};
|
|
yield {type: 'insert', bytes: i};
|
|
}
|
|
}
|
|
|
|
const sim = new EventSimulator();
|
|
const mt = new MergeTree();
|
|
const inserter1 = new MergeTreeInserter(sim, mt, testInserter1());
|
|
const inserter2 = new MergeTreeInserter(sim, mt, testInserter2());
|
|
const inserter3 = new MergeTreeInserter(sim, mt, testInserter3());
|
|
|
|
await inserter1.start();
|
|
await inserter2.start();
|
|
await inserter3.start();
|
|
await sim.run();
|
|
|
|
assert.deepEqual(mt.parts.map(d => d.bytes), [1, 42, 42, 42, 1, 13, 13, 2, 3, 4, 666]);
|
|
|
|
console.log('Test 1 passed: MergeTreeInserter');
|
|
}
|