[NetCoreFact] //see: https://github.com/elastic/apm-agent-dotnet/issues/516 public async Task HttpCallWithRegisteredListener() { var mockPayloadSender = new MockPayloadSender(); var agent = new ApmAgent(new TestAgentComponents(payloadSender: mockPayloadSender)); var subscriber = new HttpDiagnosticsSubscriber(); using (var localServer = LocalServer.Create()) using (agent.Subscribe(subscriber)) { var url = localServer.Uri; await agent.Tracer.CaptureTransaction("TestTransaction", "TestType", async t => { Thread.Sleep(5); var httpClient = new HttpClient(); try { await httpClient.GetAsync(url); } catch (Exception e) { t.CaptureException(e); } }); mockPayloadSender.WaitForTransactions(); mockPayloadSender.Transactions.Should().NotBeEmpty(); mockPayloadSender.WaitForSpans(); mockPayloadSender.SpansOnFirstTransaction.Should().NotBeEmpty(); mockPayloadSender.SpansOnFirstTransaction[0].Context.Http.Should().NotBeNull(); mockPayloadSender.SpansOnFirstTransaction[0].Context.Http.Url.Should().Be(url); } }
public async Task HttpCallWithRegisteredListener() { var mockPayloadSender = new MockPayloadSender(); var agent = new ApmAgent(new TestAgentComponents(payloadSender: mockPayloadSender)); var subscriber = new HttpDiagnosticsSubscriber(); using (var localServer = new LocalServer()) using (agent.Subscribe(subscriber)) { var url = localServer.Uri; await agent.Tracer.CaptureTransaction("TestTransaction", "TestType", async t => { Thread.Sleep(5); var httpClient = new HttpClient(); try { await httpClient.GetAsync(url); } catch (Exception e) { t.CaptureException(e); } }); Assert.NotEmpty(mockPayloadSender.Payloads[0].Transactions); Assert.NotEmpty(mockPayloadSender.SpansOnFirstTransaction); Assert.NotNull(mockPayloadSender.SpansOnFirstTransaction[0].Context.Http); Assert.Equal(url, mockPayloadSender.SpansOnFirstTransaction[0].Context.Http.Url); } }
public async Task SubscribeUnsubscribe() { var mockPayloadSender = new MockPayloadSender(); var agent = new ApmAgent(new TestAgentComponents(payloadSender: mockPayloadSender)); var subscriber = new HttpDiagnosticsSubscriber(); using (var localServer = LocalServer.Create()) { var url = localServer.Uri; using (agent.Subscribe(subscriber)) //subscribe { await agent.Tracer.CaptureTransaction("TestTransaction", "TestType", async t => { Thread.Sleep(5); var httpClient = new HttpClient(); try { await httpClient.GetAsync(url); } catch (Exception e) { t.CaptureException(e); } }); } //and then unsubscribe mockPayloadSender.WaitForAny(); mockPayloadSender.Clear(); await agent.Tracer.CaptureTransaction("TestTransaction", "TestType", async t => { Thread.Sleep(5); var httpClient = new HttpClient(); try { await httpClient.GetAsync(url); } catch (Exception e) { t.CaptureException(e); } }); mockPayloadSender.WaitForTransactions(); mockPayloadSender.FirstTransaction.Should().NotBeNull(); mockPayloadSender.SignalEndSpans(); mockPayloadSender.WaitForSpans(); mockPayloadSender.SpansOnFirstTransaction.Should().BeEmpty(); } }
public async Task SubscribeUnsubscribe() { var mockPayloadSender = new MockPayloadSender(); var agent = new ApmAgent(new TestAgentComponents(payloadSender: mockPayloadSender)); var subscriber = new HttpDiagnosticsSubscriber(); using (var localServer = new LocalServer()) { var url = localServer.Uri; using (agent.Subscribe(subscriber)) //subscribe { await agent.Tracer.CaptureTransaction("TestTransaction", "TestType", async t => { Thread.Sleep(5); var httpClient = new HttpClient(); try { await httpClient.GetAsync(url); } catch (Exception e) { t.CaptureException(e); } }); } //and then unsubscribe mockPayloadSender.Payloads.Clear(); await agent.Tracer.CaptureTransaction("TestTransaction", "TestType", async t => { Thread.Sleep(5); var httpClient = new HttpClient(); try { await httpClient.GetAsync(url); } catch (Exception e) { t.CaptureException(e); } }); Assert.NotNull(mockPayloadSender.Payloads[0].Transactions[0]); Assert.Empty(mockPayloadSender.SpansOnFirstTransaction); } }