Esempio n. 1
0
        public void ValidateErrorCap()
        {
            m_eventListener.RegisterEventSource(global::BuildXL.Processes.ETWLogger.Log);
            m_eventListener.NestedLoggerHandler += eventData =>
            {
                m_eventFields = new PipProcessErrorEventFields(eventData.Payload, false);
            };

            using (var testElements = PipProcessErrorTestElement.Create(this))
                using (AzureDevOpsListener listener = new AzureDevOpsListener(Events.Log, testElements.Console, DateTime.Now, testElements.ViewModel, false, null, maxIssuesToLog: 1))
                {
                    listener.RegisterEventSource(global::BuildXL.Processes.ETWLogger.Log);

                    // First log should go through as normal
                    testElements.LogPipProcessError();
                    testElements.Console.ValidateCall(MessageLevel.Info, testElements.ExpectingConsoleLog);

                    // Second will log the message about being truncated
                    testElements.LogPipProcessError();
                    testElements.Console.ValidateCall(MessageLevel.Info, "truncated");

                    // Third should result in no more messages logged
                    testElements.LogPipProcessError();
                    testElements.Console.ValidateNoCall();
                }

            // The TestEventListener is watching all errors, not the AzureDevOpsListener processed ones. Make sure it's cool with seeing 3 errors
            AssertErrorEventLogged(LogEventId.PipProcessError, 3);
        }
Esempio n. 2
0
        public void ForwardedPipProcessErrorTest()
        {
            var eventName         = "PipProcessError";
            var text              = "Pip process error message";
            var pipSemiStableHash = (long)24;

            m_eventListener.RegisterEventSource(global::BuildXL.Engine.ETWLogger.Log);
            m_eventListener.NestedLoggerHandler += eventData =>
            {
                m_eventFields = new PipProcessErrorEventFields(eventData.Payload, true);
            };

            using (var testElements = PipProcessErrorTestElement.Create(this))
                using (AzureDevOpsListener listener = new AzureDevOpsListener(Events.Log, testElements.Console, DateTime.Now, testElements.ViewModel, false, null))
                {
                    listener.RegisterEventSource(global::BuildXL.Engine.ETWLogger.Log);
                    global::BuildXL.Engine.Tracing.Logger.Log.DistributionWorkerForwardedError(LoggingContext, new WorkerForwardedEvent()
                    {
                        EventId              = (int)LogEventId.PipProcessError,
                        EventName            = eventName,
                        EventKeywords        = 0,
                        Text                 = text,
                        PipProcessErrorEvent = testElements.PipProcessError,
                    });
                    testElements.Console.ValidateCall(MessageLevel.Info, testElements.ExpectingConsoleLog);
                    XAssert.IsTrue(testElements.ViewModel.BuildSummary.PipErrors.Any(e => e.SemiStablePipId == $"Pip{(pipSemiStableHash):X16}"));
                    XAssert.AreEqual(m_eventFields, testElements.PipProcessError, "You may edit the PipProcessError and/or WorkerForwardedEvent fields, and/or struct PipProcessErrorEventFields.");
                    AssertErrorEventLogged(SharedLogEventId.DistributionWorkerForwardedError);
                }
        }
Esempio n. 3
0
        public void LogAzureDevOpsIssueTest()
        {
            m_eventListener.RegisterEventSource(global::BuildXL.Processes.ETWLogger.Log);
            m_eventListener.NestedLoggerHandler += eventData =>
            {
                m_eventFields = new PipProcessErrorEventFields(eventData.Payload, false);
            };

            using (var testElements = PipProcessErrorTestElement.Create(this))
                using (AzureDevOpsListener listener = new AzureDevOpsListener(Events.Log, testElements.Console, DateTime.Now, testElements.ViewModel, false, null))
                {
                    listener.RegisterEventSource(global::BuildXL.Processes.ETWLogger.Log);
                    testElements.LogPipProcessError();
                    testElements.Console.ValidateCall(MessageLevel.Info, testElements.ExpectingConsoleLog);
                    XAssert.AreEqual(m_eventFields, testElements.PipProcessError, "You may edit the PipProcessError event fields, update the test and/or struct PipProcessErrorEventFields.");
                    AssertErrorEventLogged(LogEventId.PipProcessError);
                }
        }