Ejemplo n.º 1
0
        public async Task TestDependencyCollectionWithW3CHeadersWithState()
        {
            using (var module = new DependencyTrackingTelemetryModule())
            {
                module.EnableW3CHeadersInjection = true;
                this.config.TelemetryInitializers.Add(new W3COperationCorrelationTelemetryInitializer());
                module.Initialize(this.config);

                var parent = new Activity("parent")
                             .Start()
                             .GenerateW3CContext();

                parent.SetTracestate("some=state");

                var url     = new Uri(localhostUrl);
                var request = new HttpRequestMessage(HttpMethod.Get, url);
                using (new LocalServer(localhostUrl))
                {
                    await new HttpClient().SendAsync(request);
                }

                // DiagnosticSource Response event is fired after SendAsync returns on netcoreapp1.*
                // let's wait until dependency is collected
                Assert.IsTrue(SpinWait.SpinUntil(() => this.sentTelemetry != null, TimeSpan.FromSeconds(1)));

                parent.Stop();

                var traceState = HttpHeadersUtilities.GetHeaderValues(request.Headers, W3CConstants.TraceStateHeader).First();
                Assert.AreEqual($"{W3CConstants.AzureTracestateNamespace}={expectedAppId},some=state", traceState);
            }
        }
Ejemplo n.º 2
0
        public void GetHeaderValuesWithMatchingHeader()
        {
            HttpHeaders headers = CreateHeaders();

            headers.Add("MOCK_HEADER_NAME", "MOCK_HEADER_VALUE");
            EnumerableAssert.AreEqual(new[] { "MOCK_HEADER_VALUE" }, HttpHeadersUtilities.GetHeaderValues(headers, "MOCK_HEADER_NAME"));
        }
Ejemplo n.º 3
0
        public void SetHeaderKeyValueWithMultipleMatchingHeaderNamesAndMultipleMatchingKeyNames()
        {
            HttpHeaders headers = CreateHeaders();

            headers.Add("HEADER_NAME", "A=a");
            headers.Add("HEADER_NAME", "B=b");
            headers.Add("HEADER_NAME", "C=c1");
            headers.Add("HEADER_NAME", "C=c2");
            HttpHeadersUtilities.SetHeaderKeyValue(headers, "HEADER_NAME", "C", "c3");
            EnumerableAssert.AreEqual(new[] { "A=a", "B=b", "C=c3" }, HttpHeadersUtilities.GetHeaderValues(headers, "HEADER_NAME"));
        }
Ejemplo n.º 4
0
        public void SetHeaderKeyValueWithMultipleMatchingHeaderNamesButOnlyOneMatchingKeyName()
        {
            HttpHeaders headers = CreateHeaders();

            headers.Add("HEADER_NAME", "A=a1");
            headers.Add("HEADER_NAME", "B=b1");
            headers.Add("HEADER_NAME", "C=c1");
            HttpHeadersUtilities.SetHeaderKeyValue(headers, "HEADER_NAME", "B", "b2");
            EnumerableAssert.AreEqual(new[] { "A=a1", "C=c1", "B=b2" }, HttpHeadersUtilities.GetHeaderValues(headers, "HEADER_NAME"));
            Assert.IsTrue(HttpHeadersUtilities.ContainsHeaderKeyValue(headers, "HEADER_NAME", "B"));
        }
Ejemplo n.º 5
0
        public void GetHeaderValuesShouldReturnHeader()
        {
            IHeaderDictionary headerDictionary = new HeaderDictionary(
                new Dictionary <string, StringValues>()
            {
                { "HeaderName", new StringValues("app=id") },
                { "NoizyName", new StringValues("noizy=noizy-id") }
            });

            IEnumerable <string> headerValues = HttpHeadersUtilities.GetHeaderValues(headerDictionary, "HeaderName");

            Assert.NotNull(headerValues);
            Assert.True(headerValues.Count() == 1);
            Assert.Equal("app=id", headerValues.First());
        }
 private static IEnumerable <string> GetRequestHeaderValues(HttpRequestMessage request, string headerName)
 {
     return(HttpHeadersUtilities.GetHeaderValues(request.Headers, headerName));
 }
Ejemplo n.º 7
0
        public void GetHeaderValuesWithEmptyHeaders()
        {
            HttpHeaders headers = CreateHeaders();

            EnumerableAssert.AreEqual(Enumerable.Empty <string>(), HttpHeadersUtilities.GetHeaderValues(headers, "MOCK_HEADER_NAME"));
        }
Ejemplo n.º 8
0
 public void GetHeaderValuesWithNullHeaders()
 {
     EnumerableAssert.AreEqual(Enumerable.Empty <string>(), HttpHeadersUtilities.GetHeaderValues(null, "MOCK_HEADER_NAME"));
 }