Exemple #1
0
        public static void PrepareUnitTestDataStore()
        {
            try {
                WebDriverFactory.Container.Resolve <StartSeChromeCommand>();
            }
            catch {
                CommonCmdletBase.ModuleAlreadyLoaded = false;
            }

            if (!CommonCmdletBase.ModuleAlreadyLoaded)
            {
                WebDriverFactory.AutofacModule = new FakeWebDriverModule();

                WebDriverFactory.Init();

                CommonCmdletBase.ModuleAlreadyLoaded = true;
            }

            CurrentData.InitUnconditional();

            PSCmdletBase.UnitTestMode = true;

            if (0 < UnitTestOutput.Count)
            {
                UnitTestOutput.Clear();
            }

            IWebDriver webDriver = new FakeWebDriver();

            CurrentData.CurrentWebDriver = webDriver;
        }
Exemple #2
0
        public void AddsMetadataToMetricTelemetry()
        {
            UnitTestOutput unitTestOutput = null;
            DateTimeOffset now            = DateTimeOffset.Now;

            using (var pipeline = DiagnosticPipelineFactory.CreatePipeline(diagnosticPipelineConfiguration_.Value))
            {
                unitTestOutput = pipeline.Sinks.First().Output as UnitTestOutput;

                TelemetryConfiguration      telemetryConfiguration = GetAppInsightsTestTelemetryConfiguration();
                EventFlowTelemetryProcessor efTelemetryProcessor   = telemetryConfiguration.DefaultTelemetrySink.TelemetryProcessors.OfType <EventFlowTelemetryProcessor>().First();
                efTelemetryProcessor.Pipeline = pipeline;

                TelemetryClient client = new TelemetryClient(telemetryConfiguration);

                MetricTelemetry metric = new MetricTelemetry("rps", 223.7d);
                metric.Timestamp = now;
                client.TrackMetric(metric);
            }

            Assert.Equal(1, unitTestOutput.EventCount);
            Assert.True(unitTestOutput.CapturedEvents.TryDequeue(out EventData eventData));
            Assert.Equal(now, eventData.Timestamp);

            Assert.True(eventData.TryGetMetadata(MetricData.MetricMetadataKind, out IReadOnlyCollection <EventMetadata> eventMetadata));
            Assert.Equal(1, eventMetadata.Count);

            EventMetadata metricMetadata = eventMetadata.ElementAt(0);

            Assert.Equal(DataRetrievalResult.Success, MetricData.TryGetData(eventData, metricMetadata, out MetricData metricData));

            Assert.Equal("rps", metricData.MetricName);
            Assert.Equal(223.7d, metricData.Value);
        }
Exemple #3
0
        public void AddsMetadataToRequestTelemetry()
        {
            UnitTestOutput unitTestOutput = null;
            DateTimeOffset now            = DateTimeOffset.Now;

            using (var pipeline = DiagnosticPipelineFactory.CreatePipeline(diagnosticPipelineConfiguration_.Value))
            {
                unitTestOutput = pipeline.Sinks.First().Output as UnitTestOutput;

                TelemetryConfiguration      telemetryConfiguration = GetAppInsightsTestTelemetryConfiguration();
                EventFlowTelemetryProcessor efTelemetryProcessor   = telemetryConfiguration.DefaultTelemetrySink.TelemetryProcessors.OfType <EventFlowTelemetryProcessor>().First();
                efTelemetryProcessor.Pipeline = pipeline;

                TelemetryClient client = new TelemetryClient(telemetryConfiguration);
                client.TrackRequest("rqName", now, TimeSpan.FromMilliseconds(123), "418 I am a teapot", false);
            }

            Assert.Equal(1, unitTestOutput.EventCount);
            Assert.True(unitTestOutput.CapturedEvents.TryDequeue(out EventData eventData));
            Assert.Equal(now, eventData.Timestamp);

            Assert.True(eventData.TryGetMetadata(RequestData.RequestMetadataKind, out IReadOnlyCollection <EventMetadata> eventMetadata));
            Assert.Equal(1, eventMetadata.Count);

            EventMetadata requestMetadata = eventMetadata.ElementAt(0);

            Assert.Equal(DataRetrievalResult.Success, RequestData.TryGetData(eventData, requestMetadata, out RequestData requestData));

            Assert.Equal("rqName", requestData.RequestName);
            Assert.False(requestData.IsSuccess);
            Assert.Equal(TimeSpan.FromMilliseconds(123), requestData.Duration);
            Assert.Equal("418 I am a teapot", requestData.ResponseCode);
        }
Exemple #4
0
        public void AddsMetadataDependencyTelemetry()
        {
            UnitTestOutput unitTestOutput = null;
            DateTimeOffset now            = DateTimeOffset.Now;

            using (var pipeline = DiagnosticPipelineFactory.CreatePipeline(diagnosticPipelineConfiguration_.Value))
            {
                unitTestOutput = pipeline.Sinks.First().Output as UnitTestOutput;

                TelemetryConfiguration      telemetryConfiguration = GetAppInsightsTestTelemetryConfiguration();
                EventFlowTelemetryProcessor efTelemetryProcessor   = telemetryConfiguration.DefaultTelemetrySink.TelemetryProcessors.OfType <EventFlowTelemetryProcessor>().First();
                efTelemetryProcessor.Pipeline = pipeline;

                TelemetryClient client = new TelemetryClient(telemetryConfiguration);
                client.TrackDependency("FlawlessDependency", "https://flawless.microsoft.com", "dpName", "payload",
                                       now, TimeSpan.FromMilliseconds(178), "201 Created", success: true);
            }

            Assert.Equal(1, unitTestOutput.EventCount);
            Assert.True(unitTestOutput.CapturedEvents.TryDequeue(out EventData eventData));
            Assert.Equal(now, eventData.Timestamp);

            Assert.True(eventData.TryGetMetadata(DependencyData.DependencyMetadataKind, out IReadOnlyCollection <EventMetadata> eventMetadata));
            Assert.Equal(1, eventMetadata.Count);

            EventMetadata dependencyMetadata = eventMetadata.ElementAt(0);

            Assert.Equal(DataRetrievalResult.Success, DependencyData.TryGetData(eventData, dependencyMetadata, out DependencyData dependencyData));

            Assert.True(dependencyData.IsSuccess);
            Assert.Equal(TimeSpan.FromMilliseconds(178), dependencyData.Duration);
            Assert.Equal("201 Created", dependencyData.ResponseCode);
            Assert.Equal("https://flawless.microsoft.com", dependencyData.Target);
            Assert.Equal("FlawlessDependency", dependencyData.DependencyType);
        }
        public static void PrepareUnitTestDataStore()
        {
            PSCmdletBase.UnitTestMode = true;

            if (0 < UnitTestOutput.Count)
            {
                UnitTestOutput.Clear();
            }

            TLAddinData.CurrentTestLinkConnection = null;
        }
        public static void PrepareUnitTestDataStore()
        {
            PSCmdletBase.UnitTestMode = true;

            if (0 < UnitTestOutput.Count)
            {
                UnitTestOutput.Clear();
            }

            CurrentData.ResetData();
        }
Exemple #7
0
 public static void PrepareUnitTestDataStore()
 {
     PSCmdletBase.UnitTestMode = true;
     if (0 < UnitTestOutput.Count)
     {
         UnitTestOutput.Clear();
     }
     TestData.ResetData();
     // 20141117
     TestData.AlreadyInitialized = false;
     TestData.InitTestData();
 }
Exemple #8
0
        public static void PrepareUnitTestDataStore()
        {
            PSCmdletBase.UnitTestMode = true;

//            if (null != Tmx.CommonCmdletBase.UnitTestOutput && 0 < Tmx.CommonCmdletBase.UnitTestOutput.Count) {
//                Tmx.CommonCmdletBase.UnitTestOutput.Clear();
//            }
            if (0 < UnitTestOutput.Count)
            {
                UnitTestOutput.Clear();
            }

            //TLAddinData.CurrentTestLinkConnection = null;

            TestData.ResetData();
        }
Exemple #9
0
        public override async Task ExecuteAsync(IOperationExecutionContext context)
        {
            var fileOps = await context.Agent.GetServiceAsync <IFileOperationsExecuter>();

            var tmpXmlPath = fileOps.CombinePath(context.WorkingDirectory, $"{Guid.NewGuid().ToString()}.xml");

            var testStart = DateTimeOffset.Now;

            await this.ExecutePHPAsync(context, $"{await this.GetPHPUnitPathAsync(context)} --log-junit {tmpXmlPath} {this.TestToRun}");

            if (!await fileOps.FileExistsAsync(tmpXmlPath))
            {
                this.LogWarning("PHPUnit did not generate an output XML file, therefore no tests were run. This can be caused if there are no test cases in the action's source directory, or the test file names do not end with \"Test\" (case-sensitive).");
                return;
            }

            List <UnitTestOutput.TestSuite> suites;

            try
            {
                using (var stream = await fileOps.OpenFileAsync(tmpXmlPath, FileMode.Open, FileAccess.Read))
                {
                    suites = UnitTestOutput.Load(stream);
                }
            }
            finally
            {
                await fileOps.DeleteFileAsync(tmpXmlPath);
            }

            var testRecorder = await context.TryGetServiceAsync <IUnitTestRecorder>();

            foreach (var suite in suites)
            {
                foreach (var test in suite.TestCases)
                {
                    await testRecorder.RecordUnitTestAsync(
                        groupName : suite.Name,
                        testName : test.Name,
                        testStatus : test.Failures.Any()?UnitTestStatus.Failed : UnitTestStatus.Passed,
                        testResult : string.Empty,
                        startTime : testStart,
                        duration : TimeSpan.FromSeconds((double)test.Time)
                        );
                }
            }
        }
Exemple #10
0
        public void ReportsAllTelemetryTypes()
        {
            UnitTestOutput unitTestOutput = null;

            using (var pipeline = DiagnosticPipelineFactory.CreatePipeline(diagnosticPipelineConfiguration_.Value))
            {
                unitTestOutput = pipeline.Sinks.First().Output as UnitTestOutput;

                TelemetryConfiguration      telemetryConfiguration = GetAppInsightsTestTelemetryConfiguration();
                EventFlowTelemetryProcessor efTelemetryProcessor   = telemetryConfiguration.DefaultTelemetrySink.TelemetryProcessors.OfType <EventFlowTelemetryProcessor>().First();
                efTelemetryProcessor.Pipeline = pipeline;

                TelemetryClient client = new TelemetryClient(telemetryConfiguration);
                client.TrackTrace("This is a trace");
                client.TrackRequest("DoStuff", DateTimeOffset.UtcNow, TimeSpan.FromMilliseconds(20), "200 OK", success: true);
                client.TrackEvent("ImportantEvent", new Dictionary <string, string> {
                    { "eventProp", "foo" }
                });
                client.TrackDependency("otherService", "inquire", DateTimeOffset.UtcNow, TimeSpan.FromMilliseconds(57), success: true);
                client.TrackMetric("rps", 340.7);
                try
                {
                    throw new Exception("Oops!");
                }
                catch (Exception e)
                {
                    client.TrackException(e);
                }
                client.TrackPageView("Home page");
                client.TrackAvailability("frontend-service-ping", DateTimeOffset.UtcNow, TimeSpan.FromMilliseconds(73.5), "Munich-DE", success: true);
            }

            Assert.Equal(8, unitTestOutput.EventCount);
            Assert.Collection(unitTestOutput.CapturedEvents,
                              e => Assert.Equal("trace", e.Payload[EventFlowTelemetryProcessor.TelemetryTypeProperty]),
                              e => Assert.Equal("request", e.Payload[EventFlowTelemetryProcessor.TelemetryTypeProperty]),
                              e => Assert.Equal("event", e.Payload[EventFlowTelemetryProcessor.TelemetryTypeProperty]),
                              e => Assert.Equal("dependency", e.Payload[EventFlowTelemetryProcessor.TelemetryTypeProperty]),
                              e => Assert.Equal("metric", e.Payload[EventFlowTelemetryProcessor.TelemetryTypeProperty]),
                              e => Assert.Equal("exception", e.Payload[EventFlowTelemetryProcessor.TelemetryTypeProperty]),
                              e => Assert.Equal("page_view", e.Payload[EventFlowTelemetryProcessor.TelemetryTypeProperty]),
                              e => Assert.Equal("availability", e.Payload[EventFlowTelemetryProcessor.TelemetryTypeProperty]));
        }
Exemple #11
0
        public void AddsMetadataToExceptionTelemetry()
        {
            UnitTestOutput unitTestOutput = null;
            DateTimeOffset now            = DateTimeOffset.Now;

            using (var pipeline = DiagnosticPipelineFactory.CreatePipeline(diagnosticPipelineConfiguration_.Value))
            {
                unitTestOutput = pipeline.Sinks.First().Output as UnitTestOutput;

                TelemetryConfiguration      telemetryConfiguration = GetAppInsightsTestTelemetryConfiguration();
                EventFlowTelemetryProcessor efTelemetryProcessor   = telemetryConfiguration.DefaultTelemetrySink.TelemetryProcessors.OfType <EventFlowTelemetryProcessor>().First();
                efTelemetryProcessor.Pipeline = pipeline;

                TelemetryClient client = new TelemetryClient(telemetryConfiguration);

                try
                {
                    throw new Exception("Bummer!");
                }
                catch (Exception e)
                {
                    ExceptionTelemetry et = new ExceptionTelemetry(e);
                    et.Timestamp = now;
                    client.TrackException(et);
                }
            }

            Assert.Equal(1, unitTestOutput.EventCount);
            Assert.True(unitTestOutput.CapturedEvents.TryDequeue(out EventData eventData));
            Assert.Equal(now, eventData.Timestamp);

            Assert.True(eventData.TryGetMetadata(ExceptionData.ExceptionMetadataKind, out IReadOnlyCollection <EventMetadata> eventMetadata));
            Assert.Equal(1, eventMetadata.Count);

            EventMetadata exceptionMetadata = eventMetadata.ElementAt(0);

            Assert.Equal(DataRetrievalResult.Success, ExceptionData.TryGetData(eventData, exceptionMetadata, out ExceptionData exceptionData));

            Assert.Equal("Bummer!", exceptionData.Exception.Message);
        }
Exemple #12
0
        public static void PrepareModuleTests()
        {
            PSCmdletBase.UnitTestMode = true;
            if (0 < UnitTestOutput.Count)
            {
                UnitTestOutput.Clear();
            }
            TestData.ResetData();
            ClientsCollection.Clients.Clear();
            TaskPool.Tasks.Clear();
            TaskPool.TasksForClients.Clear();
            var clientSettings = ClientSettings.Instance;

            clientSettings.ResetData();
            WorkflowCollection.Workflows.Clear();
            TestRunQueue.TestRuns.Clear();
            TestLabCollection.TestLabs.Clear();
            var testLabCollection = new TestLabCollection();

            Preferences.ClientRegistrationSleepIntervalMilliseconds = 0;
            Preferences.ReceivingTaskSleepIntervalMilliseconds      = 0;
        }
        public void ReportsAllTelemetryTypes()
        {
            string pipelineConfiguration = @"
                {
                    ""inputs"": [
                        { ""type"": ""ApplicationInsights"" }
                    ],
                    ""outputs"": [
                        { 
                            ""type"": ""UnitTestOutput"",
                            ""preserveEvents"": ""true""
                        }
                    ],

                    ""schemaVersion"": ""2016-08-11"",

                    ""extensions"": [
                         {
                            ""category"": ""outputFactory"",
                            ""type"": ""UnitTestOutput"",
                            ""qualifiedTypeName"": ""Microsoft.Diagnostics.EventFlow.TestHelpers.UnitTestOutputFactory, Microsoft.Diagnostics.EventFlow.TestHelpers""
                        },
                        {
                            ""category"": ""healthReporter"",
                            ""type"": ""CustomHealthReporter"",
                            ""qualifiedTypeName"": ""Microsoft.Diagnostics.EventFlow.TestHelpers.CustomHealthReporter, Microsoft.Diagnostics.EventFlow.TestHelpers""
                        }
                    ]
                }";

            using (var configFile = new TemporaryFile())
            {
                configFile.Write(pipelineConfiguration);
                ConfigurationBuilder builder = new ConfigurationBuilder();
                builder.AddJsonFile(configFile.FilePath);
                var configuration = builder.Build();

                UnitTestOutput unitTestOutput = null;
                using (var pipeline = DiagnosticPipelineFactory.CreatePipeline(configuration))
                {
                    unitTestOutput = pipeline.Sinks.First().Output as UnitTestOutput;

                    string configurationDoc = File.ReadAllText("ApplicationInsights.config");
                    TelemetryConfiguration      telemetryConfiguration = TelemetryConfiguration.CreateFromConfiguration(configurationDoc);
                    EventFlowTelemetryProcessor efTelemetryProcessor   = telemetryConfiguration.TelemetryProcessors.OfType <EventFlowTelemetryProcessor>().First();
                    efTelemetryProcessor.Pipeline = pipeline;

                    TelemetryClient client = new TelemetryClient(telemetryConfiguration);
                    client.TrackTrace("This is a trace");
                    client.TrackRequest("DoStuff", DateTimeOffset.UtcNow, TimeSpan.FromMilliseconds(20), "200 OK", success: true);
                    client.TrackEvent("ImportantEvent", new Dictionary <string, string> {
                        { "eventProp", "foo" }
                    });
                    client.TrackDependency("otherService", "inquire", DateTimeOffset.UtcNow, TimeSpan.FromMilliseconds(57), success: true);
                    client.TrackMetric("rps", 340.7);
                    try
                    {
                        throw new Exception("Oops!");
                    }
                    catch (Exception e)
                    {
                        client.TrackException(e);
                    }
                    client.TrackPageView("Home page");
                    client.TrackAvailability("frontend-service-ping", DateTimeOffset.UtcNow, TimeSpan.FromMilliseconds(73.5), "Munich-DE", success: true);
                }

                Assert.Equal(8, unitTestOutput.EventCount);
                Assert.Collection(unitTestOutput.CapturedEvents,
                                  e => Assert.Equal("trace", e.Payload[EventFlowTelemetryProcessor.TelemetryTypeProperty]),
                                  e => Assert.Equal("request", e.Payload[EventFlowTelemetryProcessor.TelemetryTypeProperty]),
                                  e => Assert.Equal("event", e.Payload[EventFlowTelemetryProcessor.TelemetryTypeProperty]),
                                  e => Assert.Equal("dependency", e.Payload[EventFlowTelemetryProcessor.TelemetryTypeProperty]),
                                  e => Assert.Equal("metric", e.Payload[EventFlowTelemetryProcessor.TelemetryTypeProperty]),
                                  e => Assert.Equal("exception", e.Payload[EventFlowTelemetryProcessor.TelemetryTypeProperty]),
                                  e => Assert.Equal("page_view", e.Payload[EventFlowTelemetryProcessor.TelemetryTypeProperty]),
                                  e => Assert.Equal("availability", e.Payload[EventFlowTelemetryProcessor.TelemetryTypeProperty]));
            }
        }