public StubbedDiagnosticEventsCollector(ReceivedEventsAccumulator directSourceResultAccumulator, ReceivedEventsAccumulator stubbedSourceResultAccumulator) { _directSourceResultAccumulator = directSourceResultAccumulator; _stubbedSourceResultAccumulator = stubbedSourceResultAccumulator; DiagnosticSourceAssembly.SubscribeDynamicInvokerInitializedListener(OnDynamicDiagnosticSourceInvokerInitialized); }
public async Task Run() { ConsoleWrite.LineLine($"Starting {this.GetType().Name}.{nameof(Run)}."); Random rnd = new Random(); DiagnosticSourceAssembly.SubscribeDynamicInvokerInitializedListener(OnDynamicDiagnosticSourceInvokerInitialized, rnd); { ConsoleWrite.LineLine($"Kicking off the DS magic."); bool prevInit = DiagnosticSourceAssembly.IsInitialized; bool nowInit = DiagnosticSourceAssembly.EnsureInitialized(); ConsoleWrite.Line($"DiagnosticSourceAssembly-magic status: prevInit={prevInit}, nowInit={nowInit}."); } int currIteration = CurrentIteration; while (currIteration < _maxInterations) { WriteIfEnabled(_diagnosticSource, currIteration); if (currIteration == _phaseOneIterations) { PhaseOneCompletedEvent.Set(); } int sleepMillis = rnd.Next(MaxSleepMillis); if (sleepMillis == 0) { ; } else if (sleepMillis == 1) { Thread.Yield(); } else { await Task.Delay(sleepMillis - 2); } currIteration = Interlocked.Increment(ref _currentIteration); } ConsoleWrite.Line(); ConsoleWrite.Line($"Finishing {this.GetType().Name}.{nameof(Run)}."); Dispose(_diagnosticSource); ConsoleWrite.Line($"Finished {this.GetType().Name}.{nameof(Run)}."); }