Telemetry module tracking requests using http module.
Inheritance: ITelemetryModule
        /// <summary>
        /// Initializes a new instance of the <see cref="ApplicationInsightsHttpModule"/> class.
        /// </summary>
        public ApplicationInsightsHttpModule()
        {
            try
            {
                // The call initializes TelemetryConfiguration that will create and Intialize modules
                TelemetryConfiguration configuration = TelemetryConfiguration.Active;

                foreach (var module in TelemetryModules.Instance.Modules)
                {
                    if (module is RequestTrackingTelemetryModule)
                    {
                        this.requestModule = (RequestTrackingTelemetryModule)module;
                    }
                    else
                    {
                        if (module is ExceptionTrackingTelemetryModule)
                        {
                            this.exceptionModule = (ExceptionTrackingTelemetryModule)module;
                        }
                    }
                }
            }
            catch (Exception exc)
            {
                this.isEnabled = false;
                WebEventSource.Log.WebModuleInitializationExceptionEvent(exc.ToInvariantString());
            }
        }
 public void NeedProcessRequestReturnsFalseOnNullHttpContext()
 {
     var module = new RequestTrackingTelemetryModule();
     {
         Assert.False(module.NeedProcessRequest(null));
     }
 }
 public void NeedProcessRequestReturnsFalseOnNullHttpContext()
 {
     var module = new RequestTrackingTelemetryModule();
     {
         Assert.False(module.NeedProcessRequest(null));
     }
 }
Esempio n. 4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ApplicationInsightsHttpModule"/> class.
 /// </summary>
 public ApplicationInsightsHttpModule()
 {
     try
     {
         // The call initializes TelemetryConfiguration that will create and Intialize modules
         TelemetryConfiguration configuration = TelemetryConfiguration.Active;
         foreach (var module in TelemetryModules.Instance.Modules)
         {
             if (module is RequestTrackingTelemetryModule)
             {
                 this.requestModule = (RequestTrackingTelemetryModule)module;
             }
             else
             {
                 if (module is ExceptionTrackingTelemetryModule)
                 {
                     this.exceptionModule = (ExceptionTrackingTelemetryModule)module;
                 }
             }
         }
     }
     catch (Exception exc)
     {
         this.isEnabled = false;
         WebEventSource.Log.WebModuleInitializationExceptionEvent(exc.ToInvariantString());
     }
 }
        private RequestTrackingTelemetryModule RequestTrackingTelemetryModuleFactory(TelemetryConfiguration config = null)
        {
            var module = new RequestTrackingTelemetryModule();

            module.OverrideCorrelationIdLookupHelper(this.correlationIdLookupHelper);
            module.Initialize(config ?? this.CreateDefaultConfig(HttpModuleHelper.GetFakeHttpContext()));
            return(module);
        }
        private RequestTrackingTelemetryModule RequestTrackingTelemetryModuleFactory()
        {
            var module = new RequestTrackingTelemetryModule();

            module.OverrideCorrelationIdLookupHelper(this.correlationIdLookupHelper);

            return(module);
        }
Esempio n. 7
0
        private RequestTrackingTelemetryModule RequestTrackingTelemetryModuleFactory(TelemetryConfiguration config = null)
        {
            var module = new RequestTrackingTelemetryModule()
            {
                EnableChildRequestTrackingSuppression = false
            };

            module.Initialize(config ?? this.CreateDefaultConfig(HttpModuleHelper.GetFakeHttpContext()));
            return(module);
        }
        public void OnEndCreatesRequestTelemetryIfBeginWasNotCalled()
        {
            var context = HttpModuleHelper.GetFakeHttpContext();

            var module = new RequestTrackingTelemetryModule();

            module.Initialize(TelemetryConfiguration.CreateDefault());
            module.OnEndRequest(context);

            Assert.NotNull(context.GetRequestTelemetry());
        }
        public void OnEndSetsDurationToZeroIfBeginWasNotCalled()
        {
            var context = HttpModuleHelper.GetFakeHttpContext();

            var module = new RequestTrackingTelemetryModule();

            module.Initialize(TelemetryConfiguration.CreateDefault());
            module.OnEndRequest(context);

            Assert.Equal(0, context.GetRequestTelemetry().Duration.Ticks);
        }
Esempio n. 10
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ApplicationInsightsHttpModule"/> class.
        /// </summary>
        public ApplicationInsightsHttpModule()
        {
            try
            {
                // The call initializes TelemetryConfiguration that will create and Intialize modules
                TelemetryConfiguration configuration = TelemetryConfiguration.Active;
                foreach (var module in TelemetryModules.Instance.Modules)
                {
                    if (module is RequestTrackingTelemetryModule)
                    {
                        this.requestModule = (RequestTrackingTelemetryModule)module;
                    }
                    else
                    {
                        if (module is ExceptionTrackingTelemetryModule)
                        {
                            this.exceptionModule = (ExceptionTrackingTelemetryModule)module;
                        }
                    }
                }

                // We use reflection here because 'AddOnSendingHeaders' is only available post .net framework 4.5.2. Hence we call it if we can find it.
                // Not using reflection would result in MissingMethodException when 4.5 or 4.5.1 is present.
                this.addOnSendingHeadersMethod       = typeof(HttpResponse).GetMethod("AddOnSendingHeaders");
                this.addOnSendingHeadersMethodExists = this.addOnSendingHeadersMethod != null;

                if (this.addOnSendingHeadersMethodExists)
                {
                    this.addOnSendingHeadersMethodParam = new Action <HttpContext>((httpContext) =>
                    {
                        try
                        {
                            if (this.requestModule != null)
                            {
                                this.requestModule.AddTargetHashForResponseHeader(httpContext);
                            }
                        }
                        catch (Exception ex)
                        {
                            WebEventSource.Log.AddTargetHeaderFailedWarning(ex.ToInvariantString());
                        }
                    });
                    this.addOnSendingHeadersMethodParams = new object[] { this.addOnSendingHeadersMethodParam };
#if !NET40
                    this.openDelegateForInvokingAddOnSendingHeadersMethod = this.CreateOpenDelegate(this.addOnSendingHeadersMethod);
#endif
                }
            }
            catch (Exception exc)
            {
                this.isEnabled = false;
                WebEventSource.Log.WebModuleInitializationExceptionEvent(exc.ToInvariantString());
            }
        }
        public void OnEndSetsUrl()
        {
            var context = HttpModuleHelper.GetFakeHttpContext();

            var module = new RequestTrackingTelemetryModule();

            module.Initialize(TelemetryConfiguration.CreateDefault());
            module.OnBeginRequest(context);
            module.OnEndRequest(context);

            Assert.Equal(context.Request.Url, context.GetRequestTelemetry().Url);
        }
        public void RequestIdIsAvailableAfterOnBegin()
        {
            var context          = HttpModuleHelper.GetFakeHttpContext();
            var requestTelemetry = context.CreateRequestTelemetryPrivate();

            var module = new RequestTrackingTelemetryModule();

            module.Initialize(TelemetryConfiguration.CreateDefault());
            module.OnBeginRequest(context);

            Assert.True(!string.IsNullOrEmpty(requestTelemetry.Id));
        }
        public void OnEndSetsDurationToPositiveValue()
        {
            var context = HttpModuleHelper.GetFakeHttpContext();

            var module = new RequestTrackingTelemetryModule();

            module.Initialize(TelemetryConfiguration.CreateDefault());
            module.OnBeginRequest(context);
            module.OnEndRequest(context);

            Assert.True(context.GetRequestTelemetry().Duration.TotalMilliseconds >= 0);
        }
        public void SdkVersionHasCorrectFormat()
        {
            string expectedVersion = SdkVersionHelper.GetExpectedSdkVersion(typeof(RequestTrackingTelemetryModule), prefix: "web:");

            var context = HttpModuleHelper.GetFakeHttpContext();

            var module = new RequestTrackingTelemetryModule();

            module.Initialize(TelemetryConfiguration.CreateDefault());
            module.OnBeginRequest(context);
            module.OnEndRequest(context);

            Assert.Equal(expectedVersion, context.GetRequestTelemetry().Context.GetInternalContext().SdkVersion);
        }
        public void OnBeginRequestSetsTimeIfItWasNotAssignedBefore()
        {
            var context          = HttpModuleHelper.GetFakeHttpContext();
            var requestTelemetry = context.CreateRequestTelemetryPrivate();

            requestTelemetry.Timestamp = default(DateTimeOffset);

            var module = new RequestTrackingTelemetryModule();

            module.Initialize(TelemetryConfiguration.CreateDefault());
            module.OnBeginRequest(context);

            Assert.NotEqual(default(DateTimeOffset), requestTelemetry.Timestamp);
        }
        public void OnEndSetsResponseCode()
        {
            var context = HttpModuleHelper.GetFakeHttpContext();

            context.Response.StatusCode = 401;

            var module = new RequestTrackingTelemetryModule();

            module.Initialize(TelemetryConfiguration.CreateDefault());
            module.OnBeginRequest(context);
            module.OnEndRequest(context);

            Assert.Equal("401", context.GetRequestTelemetry().ResponseCode);
        }
        public void NeedProcessRequestReturnsTrueForNon200()
        {
            var context = HttpModuleHelper.GetFakeHttpContext();
            context.Response.StatusCode = 500;
            context.Handler = new System.Web.Handlers.AssemblyResourceLoader();

            var requestTelemetry = context.CreateRequestTelemetryPrivate();
            requestTelemetry.Start();

            var module = new RequestTrackingTelemetryModule();
            var configuration = TelemetryConfiguration.CreateDefault();
            module.Initialize(configuration);

            Assert.True(module.NeedProcessRequest(context));
        }
        public void OnEndDoesNotOverrideUrl()
        {
            var context = HttpModuleHelper.GetFakeHttpContext();

            var module = new RequestTrackingTelemetryModule();

            module.Initialize(TelemetryConfiguration.CreateDefault());
            module.OnBeginRequest(context);
            var requestTelemetry = context.GetRequestTelemetry();

            requestTelemetry.Url = new Uri("http://test/");

            module.OnEndRequest(context);

            Assert.Equal("http://test/", requestTelemetry.Url.OriginalString);
        }
        public void OnBeginRequestDoesNotSetTimeIfItWasAssignedBefore()
        {
            var startTime = DateTimeOffset.UtcNow;

            var context          = HttpModuleHelper.GetFakeHttpContext();
            var requestTelemetry = context.CreateRequestTelemetryPrivate();

            requestTelemetry.Timestamp = startTime;

            var module = new RequestTrackingTelemetryModule();

            module.Initialize(TelemetryConfiguration.CreateDefault());
            module.OnBeginRequest(context);

            Assert.Equal(startTime, requestTelemetry.Timestamp);
        }
        public void NeedProcessRequestReturnsFalseForCustomHandler()
        {
            var context = HttpModuleHelper.GetFakeHttpContext();
            context.Response.StatusCode = 200;
            context.Handler = new FakeHttpHandler();

            var requestTelemetry = context.CreateRequestTelemetryPrivate();
            requestTelemetry.Start();

            var module = new RequestTrackingTelemetryModule();
            module.Handlers.Add("Microsoft.ApplicationInsights.Web.RequestTrackingTelemetryModuleTest+FakeHttpHandler");
            var configuration = TelemetryConfiguration.CreateDefault();
            module.Initialize(configuration);

            Assert.False(module.NeedProcessRequest(context));
        }
        public void NeedProcessRequestReturnsTrueForNon200()
        {
            var context = HttpModuleHelper.GetFakeHttpContext();

            context.Response.StatusCode = 500;
            context.Handler             = new System.Web.Handlers.AssemblyResourceLoader();

            var requestTelemetry = context.CreateRequestTelemetryPrivate();

            requestTelemetry.Start();

            var module        = new RequestTrackingTelemetryModule();
            var configuration = TelemetryConfiguration.CreateDefault();

            module.Initialize(configuration);

            Assert.True(module.NeedProcessRequest(context));
        }
        public void NeedProcessRequestReturnsTrueForUnknownHandler()
        {
            var context = HttpModuleHelper.GetFakeHttpContext();

            context.Response.StatusCode = 200;
            context.Handler             = new FakeHttpHandler();

            var requestTelemetry = context.CreateRequestTelemetryPrivate();

            requestTelemetry.Start();

            using (var module = new RequestTrackingTelemetryModule())
            {
                var configuration = TelemetryConfiguration.CreateDefault();
                module.Initialize(configuration);

                Assert.IsTrue(module.NeedProcessRequest(context));
            }
        }
        public void OnEndDoesNotOverrideResponseCode()
        {
            var context = HttpModuleHelper.GetFakeHttpContext();

            context.Response.StatusCode = 300;

            var module = new RequestTrackingTelemetryModule();

            module.Initialize(TelemetryConfiguration.CreateDefault());

            module.OnBeginRequest(context);
            var requestTelemetry = context.GetRequestTelemetry();

            requestTelemetry.ResponseCode = "Test";

            module.OnEndRequest(context);

            Assert.Equal("Test", requestTelemetry.ResponseCode);
        }
        public void OnEndTracksRequest()
        {
            var sendItems            = new List <ITelemetry>();
            var stubTelemetryChannel = new StubTelemetryChannel {
                OnSend = item => sendItems.Add(item)
            };
            var configuration = new TelemetryConfiguration
            {
                InstrumentationKey = Guid.NewGuid().ToString(),
                TelemetryChannel   = stubTelemetryChannel
            };

            var module = new RequestTrackingTelemetryModule();

            module.Initialize(configuration);
            module.OnBeginRequest(null);
            module.OnEndRequest(null);

            Assert.Equal(1, sendItems.Count);
        }
        public void NeedProcessRequestReturnsFalseForCustomHandler()
        {
            var context = HttpModuleHelper.GetFakeHttpContext();

            context.Response.StatusCode = 200;
            context.Handler             = new FakeHttpHandler();

            var requestTelemetry = context.CreateRequestTelemetryPrivate();

            requestTelemetry.Start();

            var module = new RequestTrackingTelemetryModule();

            module.Handlers.Add("Microsoft.ApplicationInsights.Web.RequestTrackingTelemetryModuleTest+FakeHttpHandler");
            var configuration = TelemetryConfiguration.CreateDefault();

            module.Initialize(configuration);

            Assert.False(module.NeedProcessRequest(context));
        }
Esempio n. 26
0
        public void OnEndAddsSourceFieldForRequestWithSourceIkey()
        {
            string hashedIkey = "vwuSMCFBLdIHSdeEXvFnmiXPO5ilQRqw9kO/SE5ino4=";

            Dictionary <string, string> headers = new Dictionary <string, string>();

            headers.Add(RequestResponseHeaders.SourceInstrumentationKeyHeader, hashedIkey);

            var context = HttpModuleHelper.GetFakeHttpContext(headers);

            var module = new RequestTrackingTelemetryModule();
            var config = TelemetryConfiguration.CreateDefault();

            config.InstrumentationKey = Guid.NewGuid().ToString();
            module.Initialize(config);
            module.OnBeginRequest(context);
            module.OnEndRequest(context);

            Assert.Equal(hashedIkey, context.GetRequestTelemetry().Source);
        }
Esempio n. 27
0
        private RequestTrackingTelemetryModule RequestTrackingTelemetryModuleFactory(TelemetryConfiguration config = null, bool enableW3CTracing = false)
        {
            var module = new RequestTrackingTelemetryModule()
            {
                EnableChildRequestTrackingSuppression = false,
                EnableW3CHeadersExtraction            = enableW3CTracing
            };

            if (config == null)
            {
                config = this.CreateDefaultConfig(HttpModuleHelper.GetFakeHttpContext());
            }

            if (enableW3CTracing)
            {
                config.TelemetryInitializers.Add(new W3COperationCorrelationTelemetryInitializer());
            }

            module.Initialize(config);

            return(module);
        }
Esempio n. 28
0
        public void OnEndDoesNotAddSourceFieldForRequestForSameComponent()
        {
            string instrumentationKey = "b3eb14d6-bb32-4542-9b93-473cd94aaedf";

            // Here is the equivalent generated IKey Hash
            string hashedIkey = "o05HMrc4Og8W1Jyy60JPDPxxQy3bOKyuaj6HudZHTjE=";

            Dictionary <string, string> headers = new Dictionary <string, string>();

            headers.Add(RequestResponseHeaders.SourceInstrumentationKeyHeader, hashedIkey);

            var context = HttpModuleHelper.GetFakeHttpContext(headers);

            var module = new RequestTrackingTelemetryModule();
            var config = TelemetryConfiguration.CreateDefault();

            config.InstrumentationKey = instrumentationKey;
            module.Initialize(config);
            module.OnBeginRequest(context);
            module.OnEndRequest(context);

            Assert.True(string.IsNullOrEmpty(context.GetRequestTelemetry().Source));
        }
        /// <summary>
        /// Initializes the telemetry module.
        /// </summary>
        /// <param name="configuration">Telemetry configuration to use for initialization.</param>
        public void Initialize(TelemetryConfiguration configuration)
        {
            try
            {
                foreach (var module in TelemetryModules.Instance.Modules)
                {
                    if (module is RequestTrackingTelemetryModule requestTrackingModule)
                    {
                        this.requestModule = requestTrackingModule;
                    }
                    else if (module is ExceptionTrackingTelemetryModule exceptionTracingModule)
                    {
                        this.exceptionModule = exceptionTracingModule;
                    }
                }
            }
            catch (Exception exc)
            {
                this.isEnabled = false;
                WebEventSource.Log.WebModuleInitializationExceptionEvent(exc.ToInvariantString());
            }

            this.allListenerSubscription = DiagnosticListener.AllListeners.Subscribe(this);
        }
Esempio n. 30
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ApplicationInsightsHttpModule"/> class.
        /// </summary>
        public ApplicationInsightsHttpModule()
        {
            try
            {
                // The call initializes TelemetryConfiguration that will create and Initialize modules
                TelemetryConfiguration configuration = TelemetryConfiguration.Active;
                foreach (var module in TelemetryModules.Instance.Modules)
                {
                    if (module is RequestTrackingTelemetryModule telemetryModule)
                    {
                        this.requestModule = telemetryModule;
                    }
                }

                if (AddOnSendingHeadersMethodExists)
                {
                    this.addOnSendingHeadersMethodParam = (httpContext) =>
                    {
                        try
                        {
                            this.requestModule?.AddTargetHashForResponseHeader(httpContext);
                        }
                        catch (Exception ex)
                        {
                            WebEventSource.Log.AddTargetHeaderFailedWarning(ex.ToInvariantString());
                        }
                    };
                    this.addOnSendingHeadersMethodParams = new object[] { this.addOnSendingHeadersMethodParam };
                }
            }
            catch (Exception exc)
            {
                this.isEnabled = false;
                WebEventSource.Log.WebModuleInitializationExceptionEvent(exc.ToInvariantString());
            }
        }
        public void OnBeginRequestSetsTimeIfItWasNotAssignedBefore()
        {
            var context = HttpModuleHelper.GetFakeHttpContext();
            var requestTelemetry = context.CreateRequestTelemetryPrivate();
            requestTelemetry.Timestamp = default(DateTimeOffset);

            var module = new RequestTrackingTelemetryModule();
            module.Initialize(TelemetryConfiguration.CreateDefault());
            module.OnBeginRequest(context);

            Assert.NotEqual(default(DateTimeOffset), requestTelemetry.Timestamp);
        }
        public void OnEndAddsSourceFieldForRequestWithSourceIkey()
        {
            string hashedIkey = "vwuSMCFBLdIHSdeEXvFnmiXPO5ilQRqw9kO/SE5ino4=";

            Dictionary<string, string> headers = new Dictionary<string, string>();
            headers.Add(RequestResponseHeaders.SourceInstrumentationKeyHeader, hashedIkey);

            var context = HttpModuleHelper.GetFakeHttpContext(headers);

            var module = new RequestTrackingTelemetryModule();
            module.Initialize(TelemetryConfiguration.CreateDefault());
            module.OnBeginRequest(context);
            module.OnEndRequest(context);

            Assert.Equal(hashedIkey, context.GetRequestTelemetry().Source);
        }
        public void OnEndCreatesRequestTelemetryIfBeginWasNotCalled()
        {
            var context = HttpModuleHelper.GetFakeHttpContext();

            var module = new RequestTrackingTelemetryModule();
            module.Initialize(TelemetryConfiguration.CreateDefault());
            module.OnEndRequest(context);

            Assert.NotNull(context.GetRequestTelemetry());
        }
        public void OnEndSetsResponseCode()
        {
            var context = HttpModuleHelper.GetFakeHttpContext();
            context.Response.StatusCode = 401;

            var module = new RequestTrackingTelemetryModule();
            module.Initialize(TelemetryConfiguration.CreateDefault());
            module.OnBeginRequest(context);
            module.OnEndRequest(context);

            Assert.Equal("401", context.GetRequestTelemetry().ResponseCode);
        }
        public void OnEndSetsDurationToZeroIfBeginWasNotCalled()
        {
            var context = HttpModuleHelper.GetFakeHttpContext();

            var module = new RequestTrackingTelemetryModule();
            module.Initialize(TelemetryConfiguration.CreateDefault());
            module.OnEndRequest(context);

            Assert.Equal(0, context.GetRequestTelemetry().Duration.Ticks);
        }
        public void OnEndDoesNotOverrideResponseCode()
        {
            var context = HttpModuleHelper.GetFakeHttpContext();
            context.Response.StatusCode = 300;

            var module = new RequestTrackingTelemetryModule();
            module.Initialize(TelemetryConfiguration.CreateDefault());

            module.OnBeginRequest(context);
            var requestTelemetry = context.GetRequestTelemetry();
            requestTelemetry.ResponseCode = "Test";

            module.OnEndRequest(context);

            Assert.Equal("Test", requestTelemetry.ResponseCode);
        }
        public void OnEndDoesNotOverrideUrl()
        {
            var context = HttpModuleHelper.GetFakeHttpContext();

            var module = new RequestTrackingTelemetryModule();
            module.Initialize(TelemetryConfiguration.CreateDefault());
            module.OnBeginRequest(context);
            var requestTelemetry = context.GetRequestTelemetry();
            requestTelemetry.Url = new Uri("http://test/");

            module.OnEndRequest(context);

            Assert.Equal("http://test/", requestTelemetry.Url.OriginalString);
        }
        public void RequestIdIsAvailableAfterOnBegin()
        {
            var context = HttpModuleHelper.GetFakeHttpContext();
            var requestTelemetry = context.CreateRequestTelemetryPrivate();

            var module = new RequestTrackingTelemetryModule();

            module.Initialize(TelemetryConfiguration.CreateDefault());
            module.OnBeginRequest(context);

            Assert.True(!string.IsNullOrEmpty(requestTelemetry.Id));
        }
        public void OnBeginRequestDoesNotSetTimeIfItWasAssignedBefore()
        {
            var startTime = DateTimeOffset.UtcNow;

            var context = HttpModuleHelper.GetFakeHttpContext();
            var requestTelemetry = context.CreateRequestTelemetryPrivate();
            requestTelemetry.Timestamp = startTime;

            var module = new RequestTrackingTelemetryModule();
            module.Initialize(TelemetryConfiguration.CreateDefault());
            module.OnBeginRequest(context);

            Assert.Equal(startTime, requestTelemetry.Timestamp);
        }
        public void NeedProcessRequestReturnsTrueForUnknownHandler()
        {
            var context = HttpModuleHelper.GetFakeHttpContext();
            context.Response.StatusCode = 200;
            context.Handler = new FakeHttpHandler();

            var requestTelemetry = context.CreateRequestTelemetryPrivate();
            requestTelemetry.Start();

            using (var module = new RequestTrackingTelemetryModule())
            {
                var configuration = TelemetryConfiguration.CreateDefault();
                module.Initialize(configuration);

                Assert.IsTrue(module.NeedProcessRequest(context));
            }
        }
        public void OnEndTracksRequest()
        {
            var sendItems = new List<ITelemetry>();
            var stubTelemetryChannel = new StubTelemetryChannel { OnSend = item => sendItems.Add(item) };
            var configuration = new TelemetryConfiguration
            {
                InstrumentationKey = Guid.NewGuid().ToString(),
                TelemetryChannel = stubTelemetryChannel
            };

            var module = new RequestTrackingTelemetryModule();
            module.Initialize(configuration);
            module.OnBeginRequest(null);
            module.OnEndRequest(null);

            Assert.Equal(1, sendItems.Count);
        }
 public AspNetEventObserver(RequestTrackingTelemetryModule requestModule, ExceptionTrackingTelemetryModule exceptionModule)
 {
     this.requestModule   = requestModule;
     this.exceptionModule = exceptionModule;
 }
        public void OnEndSetsUrl()
        {
            var context = HttpModuleHelper.GetFakeHttpContext();

            var module = new RequestTrackingTelemetryModule();
            module.Initialize(TelemetryConfiguration.CreateDefault());
            module.OnBeginRequest(context);
            module.OnEndRequest(context);

            Assert.Equal(context.Request.Url, context.GetRequestTelemetry().Url);
        }
        public void OnEndSetsDurationToPositiveValue()
        {
            var context = HttpModuleHelper.GetFakeHttpContext();

            var module = new RequestTrackingTelemetryModule();
            module.Initialize(TelemetryConfiguration.CreateDefault());
            module.OnBeginRequest(context);
            module.OnEndRequest(context);

            Assert.True(context.GetRequestTelemetry().Duration.TotalMilliseconds >= 0);
        }
        public void SdkVersionHasCorrectFormat()
        {
            string expectedVersion = SdkVersionHelper.GetExpectedSdkVersion(typeof(RequestTrackingTelemetryModule), prefix: "web:");

            var context = HttpModuleHelper.GetFakeHttpContext();

            var module = new RequestTrackingTelemetryModule();
            module.Initialize(TelemetryConfiguration.CreateDefault());
            module.OnBeginRequest(context);
            module.OnEndRequest(context);

            Assert.Equal(expectedVersion, context.GetRequestTelemetry().Context.GetInternalContext().SdkVersion);
        }