public void SubmitsTraces(bool enableCallTarget) { SetCallTargetSettings(enableCallTarget); int expectedSpanCount = 25; const string expectedOperationName = "http.request"; const string expectedServiceName = "Samples.WebRequest.NetFramework20-http-client"; int agentPort = TcpPortProvider.GetOpenPort(); int httpPort = TcpPortProvider.GetOpenPort(); Output.WriteLine($"Assigning port {agentPort} for the agentPort."); Output.WriteLine($"Assigning port {httpPort} for the httpPort."); using (var agent = new MockTracerAgent(agentPort)) using (ProcessResult processResult = RunSampleAndWaitForExit(agent.Port, arguments: $"Port={httpPort}")) { Assert.True(processResult.ExitCode >= 0, $"Process exited with code {processResult.ExitCode}"); var spans = agent.WaitForSpans(expectedSpanCount, operationName: expectedOperationName); Assert.Equal(expectedSpanCount, spans.Count); foreach (var span in spans) { Assert.Equal(expectedOperationName, span.Name); Assert.Equal(expectedServiceName, span.Service); Assert.Equal(SpanTypes.Http, span.Type); Assert.Equal("WebRequest", span.Tags[Tags.InstrumentationName]); Assert.False(span.Tags?.ContainsKey(Tags.Version), "External service span should not have service version tag."); } PropagationTestHelpers.AssertPropagationEnabled(spans.First(), processResult); } }
public void HttpClient_SubmitsTraces(bool enableCallTarget, InstrumentationOptions instrumentation, bool enableSocketsHandler) { ConfigureInstrumentation(enableCallTarget, instrumentation, enableSocketsHandler); var expectedAsyncCount = CalculateExpectedAsyncSpans(instrumentation, enableCallTarget); var expectedSyncCount = CalculateExpectedSyncSpans(instrumentation); var expectedSpanCount = expectedAsyncCount + expectedSyncCount; const string expectedOperationName = "http.request"; const string expectedServiceName = "Samples.HttpMessageHandler-http-client"; int agentPort = TcpPortProvider.GetOpenPort(); int httpPort = TcpPortProvider.GetOpenPort(); Output.WriteLine($"Assigning port {agentPort} for the agentPort."); Output.WriteLine($"Assigning port {httpPort} for the httpPort."); using (var agent = new MockTracerAgent(agentPort)) using (ProcessResult processResult = RunSampleAndWaitForExit(agent.Port, arguments: $"Port={httpPort}")) { Assert.True(processResult.ExitCode >= 0, $"Process exited with code {processResult.ExitCode}"); var spans = agent.WaitForSpans(expectedSpanCount, operationName: expectedOperationName); Assert.Equal(expectedSpanCount, spans.Count); foreach (var span in spans) { Assert.Equal(expectedOperationName, span.Name); Assert.Equal(expectedServiceName, span.Service); Assert.Equal(SpanTypes.Http, span.Type); Assert.Equal("HttpMessageHandler", span.Tags[Tags.InstrumentationName]); Assert.False(span.Tags?.ContainsKey(Tags.Version), "External service span should not have service version tag."); if (span.Tags[Tags.HttpStatusCode] == "502") { Assert.Equal(1, span.Error); } } PropagationTestHelpers.AssertPropagationEnabled(spans.First(), processResult); } }
public void SubmitsTraces(bool enableCallTarget) { SetCallTargetSettings(enableCallTarget); int expectedSpanCount = EnvironmentHelper.IsCoreClr() ? 71 : 27; // .NET Framework automatic instrumentation doesn't cover Async / TaskAsync operations var ignoreAsync = EnvironmentHelper.IsCoreClr() ? string.Empty : "IgnoreAsync "; const string expectedOperationName = "http.request"; const string expectedServiceName = "Samples.WebRequest-http-client"; int agentPort = TcpPortProvider.GetOpenPort(); int httpPort = TcpPortProvider.GetOpenPort(); Output.WriteLine($"Assigning port {agentPort} for the agentPort."); Output.WriteLine($"Assigning port {httpPort} for the httpPort."); using (var agent = new MockTracerAgent(agentPort)) using (ProcessResult processResult = RunSampleAndWaitForExit(agent.Port, arguments: $"{ignoreAsync}Port={httpPort}")) { Assert.True(processResult.ExitCode >= 0, $"Process exited with code {processResult.ExitCode}"); var spans = agent.WaitForSpans(expectedSpanCount, operationName: expectedOperationName); Assert.Equal(expectedSpanCount, spans.Count); foreach (var span in spans) { Assert.Equal(expectedOperationName, span.Name); Assert.Equal(expectedServiceName, span.Service); Assert.Equal(SpanTypes.Http, span.Type); Assert.True(string.Equals(span.Tags[Tags.InstrumentationName], "WebRequest") || string.Equals(span.Tags[Tags.InstrumentationName], "HttpMessageHandler")); Assert.False(span.Tags?.ContainsKey(Tags.Version), "External service span should not have service version tag."); } PropagationTestHelpers.AssertPropagationEnabled(spans.First(), processResult); } }