internal static IOptionsMonitor <OmexActivityListenerOptions> CreateOptionsMonitor() { OmexActivityListenerOptions options = new OmexActivityListenerOptions(); Mock <IOptionsMonitor <OmexActivityListenerOptions> > optionsMock = new Mock <IOptionsMonitor <OmexActivityListenerOptions> >(); optionsMock.Setup(m => m.CurrentValue).Returns(options); return(optionsMock.Object); }
public async Task ActivityListeners_ControlsActivityCreation() { Mock <IActivityStartObserver> mockStartObserver = new(); Mock <IActivityStopObserver> mockStopObserver = new(); IOptionsMonitor <OmexActivityListenerOptions>?optionsMonitor = DefaultActivityListenerConfiguratorTests.CreateOptionsMonitor(); OmexActivityListenerOptions options = optionsMonitor.CurrentValue; options.ShouldListenTo = true; options.Sample = ActivitySamplingResult.AllDataAndRecorded; options.SampleUsingParentId = ActivitySamplingResult.AllDataAndRecorded; ActivityListenerInitializerService service = new( new IActivityStartObserver[] { mockStartObserver.Object }, new IActivityStopObserver[] { mockStopObserver.Object }, new DefaultActivityListenerConfigurator(optionsMonitor)); ActivitySource source = new(nameof(ActivityListeners_ControlsActivityCreation)); Assert.IsNull(source.StartActivity("ActivityBeforeStart")); await service.StartAsync(CancellationToken.None); AssertActivityReporting(source.StartActivity("ActivityDuringRun"), mockStartObserver, mockStopObserver); options.Sample = ActivitySamplingResult.None; Assert.IsNull(source.StartActivity("ActivityWhenConfigDisabled")); options.Sample = ActivitySamplingResult.AllDataAndRecorded; AssertActivityReporting(source.StartActivity("ActivityWhenConfigEnable"), mockStartObserver, mockStopObserver); // check that Activity from Diagnostic listener also captured using (DiagnosticListener listener = new(nameof(ActivityListeners_ControlsActivityCreation))) { Activity activity = new("DiagnosticsListenerActivity"); listener.StartActivity(activity, null); mockStartObserver.Verify(s => s.OnStart(activity, null), Times.Once); mockStartObserver.Reset(); listener.StopActivity(activity, null); mockStopObserver.Verify(s => s.OnStop(activity, null), Times.Once); mockStopObserver.Reset(); } await service.StopAsync(CancellationToken.None); Assert.IsNull(source.StartActivity("ActivityAfterStop")); }