public void Calling_before_after_or_replace_1000_000_times_takes_less_than_60_milliseconds()
        {
            var before = Before <E3> .Insert <E2>().CreateSingleAggregateInstanceHandlingMigrator();

            var replace = Replace <E3> .With <E2>().CreateSingleAggregateInstanceHandlingMigrator();

            var after = After <E3> .Insert <E2>().CreateSingleAggregateInstanceHandlingMigrator();

            var @event        = new E2();
            var eventModifier = new EventModifier(@event, _ => { });

            var numberOfEventsToInspect = 1000000;
            var maxtime = TestEnvironmentPerformance.AdjustRuntime(60.Milliseconds(), boost: 12.0);

            TimeAsserter.Execute(
                maxTotal: maxtime,
                description: $"{nameof(before)}",
                iterations: numberOfEventsToInspect,
                action: () => before.MigrateEvent(@event, @eventModifier));
            TimeAsserter.Execute(
                maxTotal: maxtime,
                description: $"{nameof(replace)}",
                iterations: numberOfEventsToInspect,
                action: () => replace.MigrateEvent(@event, @eventModifier));
            TimeAsserter.Execute(
                maxTotal: maxtime,
                description: $"{nameof(after)}",
                iterations: numberOfEventsToInspect,
                action: () => after.MigrateEvent(@event, @eventModifier));
        }
        public void With_four_migrations_mutation_that_all_actually_changes_things_migration_takes_less_than_15_milliseconds()
        {
            var eventMigrations = Seq.Create <IEventMigration>(
                Before <E2> .Insert <E3>(),
                Before <E4> .Insert <E5>(),
                Before <E6> .Insert <E7>(),
                Before <E8> .Insert <E9>()
                ).ToArray();

            var maxAverage = TestEnvironmentPerformance.AdjustRuntime(15.Milliseconds(), boost: 2);

            TimeAsserter.Execute(
                maxTotal: maxAverage,
                description: "load aggregate in isolated scope",
                maxTries: 10,
                timeFormat: "ss\\.fff",
                action: () => { SingleAggregateInstanceEventStreamMutator.MutateCompleteAggregateHistory(eventMigrations, _history); });
        }