public void LockedTracerInstanceSwap() { var tracerOne = TracerHelper.Create(); var tracerTwo = new LockedTracer(); TracerRestorerAttribute.SetTracer(tracerOne); Tracer.Instance.Should().Be(tracerOne); Tracer.Instance.TracerManager.Should().Be(tracerOne.TracerManager); TracerRestorerAttribute.SetTracer(null); Tracer.Instance.Should().BeNull(); // Set the locked tracer TracerRestorerAttribute.SetTracer(tracerTwo); Tracer.Instance.Should().Be(tracerTwo); Tracer.Instance.TracerManager.Should().Be(tracerTwo.TracerManager); // We test the locked tracer cannot be replaced. #pragma warning disable CS0618 // Setter isn't actually obsolete, just should be internal Assert.Throws <InvalidOperationException>(() => Tracer.Instance = tracerOne); Assert.Throws <InvalidOperationException>(() => Tracer.Instance = null); Assert.Throws <InvalidOperationException>(() => TracerManager.ReplaceGlobalManager(null, TracerManagerFactory.Instance)); Assert.Throws <InvalidOperationException>(() => TracerManager.ReplaceGlobalManager(null, new CITracerManagerFactory(CIVisibility.Settings))); }
public async Task <string> CompleteDiagnosticObserverTest() { TracerRestorerAttribute.SetTracer(GetTracer()); var builder = new WebHostBuilder() .UseStartup <Startup>(); var testServer = new TestServer(builder); var client = testServer.CreateClient(); var tracer = GetTracer(); var observers = new List <DiagnosticObserver> { new AspNetCoreDiagnosticObserver(tracer, security: null) }; string retValue = null; using (var diagnosticManager = new DiagnosticManager(observers)) { diagnosticManager.Start(); DiagnosticManager.Instance = diagnosticManager; retValue = await client.GetStringAsync("/Home"); try { await client.GetStringAsync("/Home/error"); } catch { } DiagnosticManager.Instance = null; } return(retValue); }
public void NormalTracerInstanceSwap() { var tracerOne = TracerHelper.Create(); var tracerTwo = TracerHelper.Create(); TracerRestorerAttribute.SetTracer(tracerOne); Tracer.Instance.Should().Be(tracerOne); Tracer.Instance.TracerManager.Should().Be(tracerOne.TracerManager); TracerRestorerAttribute.SetTracer(tracerTwo); Tracer.Instance.Should().Be(tracerTwo); Tracer.Instance.TracerManager.Should().Be(tracerTwo.TracerManager); TracerRestorerAttribute.SetTracer(null); Tracer.Instance.Should().BeNull(); }