public void QuickPulseTelemetryProcessorFiltersOutDependencyCallsToDefaultQuickPulseServiceEndpointInIdleMode()
        {
            // ARRANGE
            var simpleTelemetryProcessorSpy = new SimpleTelemetryProcessorSpy();
            var telemetryProcessor          = new QuickPulseTelemetryProcessor(simpleTelemetryProcessorSpy);

            // ACT
            telemetryProcessor.Process(new DependencyTelemetry()
            {
                Name = "http://microsoft.ru"
            });
            telemetryProcessor.Process(new DependencyTelemetry()
            {
                Name = "http://rt.services.visualstudio.com/blabla"
            });
            telemetryProcessor.Process(new DependencyTelemetry()
            {
                Name = "https://bing.com"
            });

            // ASSERT
            Assert.AreEqual(2, simpleTelemetryProcessorSpy.ReceivedCalls);
            Assert.AreEqual("http://microsoft.ru", (simpleTelemetryProcessorSpy.ReceivedItems[0] as DependencyTelemetry).Name);
            Assert.AreEqual("https://bing.com", (simpleTelemetryProcessorSpy.ReceivedItems[1] as DependencyTelemetry).Name);
        }
        public void ProcessCallsNextIfRequestFailed()
        {
            HttpContext.Current = HttpModuleHelper.GetFakeHttpContextForFailedRequest();

            var spy = new SimpleTelemetryProcessorSpy();

            var source = new HandlerTelemetryProcessor(spy);

            source.Process(new RequestTelemetry());

            Assert.AreEqual(1, spy.ReceivedCalls);
        }
        public void ProcessCallsNextIfHttpContextIsNull()
        {
            HttpContext.Current = null;

            var spy = new SimpleTelemetryProcessorSpy();

            var source = new HandlerTelemetryProcessor(spy);

            source.Process(new RequestTelemetry());

            Assert.AreEqual(1, spy.ReceivedCalls);
        }
        public void ProcessCallsNextIfSuccessfulRequestUserAgentIsNotFiltered()
        {
            HttpContext.Current = HttpModuleHelper.GetFakeHttpContext(new Dictionary <string, string> {
                { "User-Agent", "a" }
            });

            var spy = new SimpleTelemetryProcessorSpy();

            var source = new UserAgentTelemetryProcessor(spy);

            source.Process(new RequestTelemetry());

            Assert.AreEqual(1, spy.ReceivedCalls);
        }
        public void QuickPulseTelemetryProcessorCallsNext()
        {
            // ARRANGE
            var spy = new SimpleTelemetryProcessorSpy();
            var telemetryProcessor = new QuickPulseTelemetryProcessor(spy);

            // ACT
            telemetryProcessor.Process(new RequestTelemetry()
            {
                Context = { InstrumentationKey = "some ikey" }
            });

            // ASSERT
            Assert.AreEqual(1, spy.ReceivedCalls);
        }
        public void QuickPulseTelemetryProcessorRegistersWithModule()
        {
            // ARRANGE
            var module = new QuickPulseTelemetryModule(null, null, null, null, null);

            TelemetryModules.Instance.Modules.Add(module);

            // ACT
            var spy = new SimpleTelemetryProcessorSpy();
            var telemetryProcessor = new QuickPulseTelemetryProcessor(spy);

            telemetryProcessor.Initialize(new TelemetryConfiguration());

            // ASSERT
            Assert.AreEqual(telemetryProcessor, QuickPulseTestHelper.GetTelemetryProcessors(module).Single());
        }
        public void UserAgentIsNotFilteredIfItIsNullAndWhitespaceSpecified()
        {
            HttpContext.Current = HttpModuleHelper.GetFakeHttpContext(new Dictionary <string, string> {
                { "User-Agent", null }
            });

            var spy = new SimpleTelemetryProcessorSpy();

            var source = new UserAgentTelemetryProcessor(spy);

            source.UserAgents.Add(new FilterRequest {
                Value = "\n "
            });

            source.Process(new RequestTelemetry());

            Assert.AreEqual(1, spy.ReceivedCalls);
        }
        public void UserAgentIsFilteredIfItIsEmptyAndEmptyExplictlySpecified()
        {
            HttpContext.Current = HttpModuleHelper.GetFakeHttpContext(new Dictionary <string, string> {
                { "User-Agent", string.Empty }
            });

            var spy = new SimpleTelemetryProcessorSpy();

            var source = new UserAgentTelemetryProcessor(spy);

            source.UserAgents.Add(new FilterRequest {
                Value = string.Empty
            });

            source.Process(new RequestTelemetry());

            Assert.AreEqual(0, spy.ReceivedCalls);
        }
        public void ProcessReturnsIfSuccessfulRequestHandlerIsFilteredByDefault()
        {
            HttpContext.Current = HttpModuleHelper.GetFakeHttpContext(new Dictionary <string, string> {
                { "User-Agent", "a" }
            });
            HttpContext.Current.Handler = new AssemblyResourceLoader();

            var spy = new SimpleTelemetryProcessorSpy();

            var source = new HandlerTelemetryProcessor(spy);

            source.Handlers.Add(new FilterRequest {
                Value = "System.Web.Handlers.AssemblyResourceLoader"
            });

            source.Process(new RequestTelemetry());

            Assert.AreEqual(0, spy.ReceivedCalls);
        }
        public void ProcessCallsNextIfSuccessfulRequestHandlerIsNotFiltered()
        {
            HttpContext.Current = HttpModuleHelper.GetFakeHttpContext(new Dictionary <string, string> {
                { "User-Agent", "a" }
            });
            HttpContext.Current.Handler = new AssemblyResourceLoader();

            var spy = new SimpleTelemetryProcessorSpy();

            var source = new HandlerTelemetryProcessor(spy);

            source.Handlers.Add(new FilterRequest {
                Value = "Microsoft.ApplicationInsights.Web.RequestTrackingTelemetryModuleTest+FakeHttpHandler"
            });

            source.Process(new RequestTelemetry());

            Assert.AreEqual(1, spy.ReceivedCalls);
        }
        public void QuickPulseTelemetryProcessorFiltersOutDependencyCallsToQuickPulseServiceDuringCollection()
        {
            // ARRANGE
            var accumulatorManager          = new QuickPulseDataAccumulatorManager();
            var simpleTelemetryProcessorSpy = new SimpleTelemetryProcessorSpy();
            var telemetryProcessor          = new QuickPulseTelemetryProcessor(simpleTelemetryProcessorSpy);
            var config = new TelemetryConfiguration()
            {
                InstrumentationKey = "some ikey"
            };

            ((IQuickPulseTelemetryProcessor)telemetryProcessor).StartCollection(
                accumulatorManager,
                new Uri("https://qps.cloudapp.net/endpoint.svc"),
                config);

            // ACT
            telemetryProcessor.Process(
                new DependencyTelemetry()
            {
                Name = "http://microsoft.ru", Context = { InstrumentationKey = config.InstrumentationKey }
            });
            telemetryProcessor.Process(
                new DependencyTelemetry()
            {
                Name = "http://qps.cloudapp.net/blabla", Context = { InstrumentationKey = config.InstrumentationKey }
            });
            telemetryProcessor.Process(
                new DependencyTelemetry()
            {
                Name = "https://bing.com", Context = { InstrumentationKey = config.InstrumentationKey }
            });

            // ASSERT
            Assert.AreEqual(2, simpleTelemetryProcessorSpy.ReceivedCalls);
            Assert.AreEqual("http://microsoft.ru", (simpleTelemetryProcessorSpy.ReceivedItems[0] as DependencyTelemetry).Name);
            Assert.AreEqual("https://bing.com", (simpleTelemetryProcessorSpy.ReceivedItems[1] as DependencyTelemetry).Name);
            Assert.AreEqual(2, accumulatorManager.CurrentDataAccumulator.AIDependencyCallCount);
        }