round method

Future<void> round()

One round: a batch, optional removals, tags, six queries.

Implementation

Future<void> round() async {
  final round = _round++;
  final batch = scenario.batch();
  final referenceStored = await reference.writeEntries(batch);
  final storeStored = await store.writeEntries(batch);
  _compare('round $round, writeEntries', expected: _stored(referenceStored), actual: _stored(storeStored));

  if (scenario.removeBefore() case final time?) {
    await reference.removeBefore(time);
    await store.removeBefore(time);
  }
  if (scenario.retainNewest() case final count?) {
    await reference.retainNewest(count);
    await store.retainNewest(count);
  }

  _compare('round $round, queryTags', expected: await reference.queryTags(), actual: await store.queryTags());
  for (var i = 0; i < 6; i++) {
    final query = scenario.query();
    _compare(
      'round $round, $query',
      expected: _stored(await _allPages(reference, query, 'reference')),
      actual: _stored(await _allPages(store, query, 'store')),
    );
  }
}