performanceTests function

void performanceTests(
  1. FutureOr<QueryExecutor> createExecutor(), {
  2. FutureOr<void> close(
    1. QueryExecutor
    )?,
})

Implementation

void performanceTests(FutureOr<QueryExecutor> Function() createExecutor,
    {FutureOr<void> Function(QueryExecutor)? close}) {
  QueryExecutor? executor;

  //int _sampleSize = 1000;

  int concurrency = 200;

  // Generate a random number between 1 and 10000
  int genRandomId() {
    var rand = Random();
    return rand.nextInt(10000) + 1;
  }

  setUp(() async {
    print("Run setup");
    executor = await createExecutor();

    /*
    for (var i = 0; i < _sampleSize; i++) {
      var query = WorldQuery();
      query.values.randomNumber = _genRandomId();
      var world = (await query.insert(executor!)).value;
    }

    for (var i = 0; i < _sampleSize; i++) {
      var query = FortuneQuery();
      query.values.message = "message ${_genRandomId()}";
      var fortune = (await query.insert(executor!)).value;
    }
    */
  });

  tearDown(() => close!(executor!));

  test('select all concurrency', () async {
    var stopwatch = Stopwatch();
    stopwatch.start();

    // Fire and forget
    for (var i = 0; i < concurrency; i++) {
      FortuneQuery().get(executor!);
    }

    print("Loop time elapsed: ${stopwatch.elapsed.inMilliseconds}");

    var result = await FortuneQuery().get(executor!);

    print("Final Time elapsed: ${stopwatch.elapsed.inMilliseconds}");
    stopwatch.stop();

    expect(result, isNotNull);
  });

  test('select one concurrency', () async {
    var stopwatch = Stopwatch();
    stopwatch.start();

    var id = genRandomId();
    var query = WorldQuery()..where?.id.equals(id);
    var result = await query.get(executor!);

    print("Time elapsed: ${stopwatch.elapsed.inMilliseconds}");
    stopwatch.stop();

    expect(result, isNotNull);
  });

  test('update concurrency', () async {
    var stopwatch = Stopwatch();
    stopwatch.start();

    var id = genRandomId();
    var query = WorldQuery()..where?.id.equals(id);
    var result = await query.get(executor!);

    print("Time elapsed: ${stopwatch.elapsed.inMilliseconds}");
    stopwatch.stop();

    expect(result, isNotNull);
  });
}