import 'package:benchmark_harness/benchmark_harness.dart'; import 'package:benchmark_cherrypick/di_adapters/di_adapter.dart'; import 'package:benchmark_cherrypick/scenarios/universal_chain_module.dart'; import 'package:benchmark_cherrypick/scenarios/universal_service.dart'; import 'package:benchmark_cherrypick/scenarios/di_universal_registration.dart'; class UniversalChainAsyncBenchmark extends AsyncBenchmarkBase { final DIAdapter di; final int chainCount; final int nestingDepth; final UniversalBindingMode mode; UniversalChainAsyncBenchmark( this.di, { this.chainCount = 1, this.nestingDepth = 3, this.mode = UniversalBindingMode.asyncStrategy, }) : super('UniversalAsync: asyncChain/$mode CD=$chainCount/$nestingDepth'); @override Future setup() async { di.setupDependencies(getUniversalRegistration( di, chainCount: chainCount, nestingDepth: nestingDepth, bindingMode: mode, scenario: UniversalScenario.asyncChain, )); await di.waitForAsyncReady(); } @override Future teardown() async { di.teardown(); } @override Future run() async { final serviceName = '${chainCount}_$nestingDepth'; await di.resolveAsync(named: serviceName); } }