Exemple #1
0
        public void Initialize(IRunContext runContext)
        {
            if (_ide == null)
            {
                var runId = _runId = runContext.RunConfig.TestRun.Id;
                TestRunTextResultMessage failure = null;

                try {
                    InitializeWorker(runContext).GetAwaiter().GetResult();
                } catch (ArgumentException ex) {
                    failure = new TestRunTextResultMessage(runId, ex.Message);
                } catch (TimeoutException ex) {
                    failure = new TestRunTextResultMessage(runId, ex.Message);
                } catch (Exception ex) {
                    failure = new TestRunTextResultMessage(
                        runId,
                        string.Format("{0}: {1}{2}{3}", ex.GetType().Name, ex.Message, Environment.NewLine, ex)
                        );
                    failure.SystemException = ex;
                }

                if (failure != null)
                {
                    runContext.ResultSink.AddResult(failure);
                    runContext.StopTestRun();
                }
            }
        }
Exemple #2
0
        protected override void LogImpl(LogSeverity severity, string message, ExceptionData exceptionData)
        {
            TestOutcome outcome;

            if (severity == LogSeverity.Warning)
            {
                outcome = TestOutcome.Warning;
            }
            else if (severity == LogSeverity.Error)
            {
                outcome = TestOutcome.Error;
            }
            else
            {
                return;
            }

            if (exceptionData != null)
            {
                message = string.Concat(message, "\n", exceptionData.ToString());
            }

            TestRunTextResultMessage resultMessage = new TestRunTextResultMessage(runContext.RunConfig.TestRun.Id, message);

            resultMessage.Outcome = outcome;

            runContext.ResultSink.AddResult(resultMessage);
        }
        protected override void LogImpl(LogSeverity severity, string message, ExceptionData exceptionData)
        {
            TestOutcome outcome;
            if (severity == LogSeverity.Warning)
                outcome = TestOutcome.Warning;
            else if (severity == LogSeverity.Error)
                outcome = TestOutcome.Error;
            else
                return;

            if (exceptionData != null)
                message = string.Concat(message, "\n", exceptionData.ToString());

            TestRunTextResultMessage resultMessage = new TestRunTextResultMessage(runContext.RunConfig.TestRun.Id, message);
            resultMessage.Outcome = outcome;

            runContext.ResultSink.AddResult(resultMessage);
        }
Exemple #4
0
        /// <summary>
        /// Creates VS IDE and HostSide inside it.
        /// This can be called multiple times in the run if specified to restart VS between tests.
        /// </summary>
        private void InitHostSide()
        {
            Debug.Assert(m_runContext != null);
            try
            {
                m_vsRegistryHive        = GetRegistryHive();
                m_additionalCommandLine = GetAdditionalCommandLine();

                lock (m_hostSideLock)
                {
                    // Get the "host side" of the host adapter.
                    CreateHostSide();

                    try
                    {
                        // Call Initialize for the host side.
                        ((ITestAdapter)HostSide).Initialize(m_runContext);
                    }
                    catch (RemotingException remotingException)
                    {
                        SendResult("Remoting Exception in InitHostSide(): " + remotingException.Message, TestOutcome.Warning);
                    }
                    // If test run was started under debugger, attach debugger.
                    CheckAttachDebugger();
                }
            }
            catch (Exception ex)
            {
                // Do some error diagnostics.
                TestRunTextResultMessage textMessage = new TestRunTextResultMessage(
                    Environment.MachineName,
                    m_runContext.RunConfig.TestRun.Id,
                    ex.GetType() + ": " + ex.Message,
                    TestMessageKind.TextMessage);
                m_runContext.ResultSink.AddResult(textMessage);
                m_runContext.ResultSink.AddResult(new RunStateEvent(m_runContext.RunConfig.TestRun.Id,
                                                                    RunState.Aborting,
                                                                    Environment.MachineName));
                throw;
            }

            m_isHostSideDirty = false;
        }
Exemple #5
0
        /// <summary>
        /// Sends run level message to the result sink.
        /// </summary>
        /// <param name="message">Text for the message.</param>
        /// <param name="outcome">Outcome for the message. Affects test run outcome.</param>
        /// <param name="abortTestRun">If true, we use TMK.Panic, otherwise TMK.TextMessage</param>
        private void SendResult(string messageText, TestOutcome outcome, bool abortTestRun)
        {
            Debug.Assert(!abortTestRun || outcome == TestOutcome.Error,
                         "HA.SendResult: When abortTestRun = true, Outcome should be Error.");

            TestRunTextResultMessage message = new TestRunTextResultMessage(
                Environment.MachineName,
                m_runContext.RunConfig.TestRun.Id,
                messageText,
                TestMessageKind.TextMessage);

            message.Outcome = outcome;

            m_runContext.ResultSink.AddResult(message);

            if (abortTestRun)
            {
                m_runContext.ResultSink.AddResult(new RunStateEvent(m_runContext.RunConfig.TestRun.Id,
                                                                    RunState.Aborting,
                                                                    Environment.MachineName));
            }
        }
Exemple #6
0
        private void SendMessage(IRunContext runContext, string message, ITestElement currentTest = null)
        {
            if (runContext == null)
            {
                return;
            }

            var runId = runContext.RunConfig.TestRun.Id;

            TestMessage msg;

            if (currentTest == null)
            {
                msg = new TestRunTextResultMessage(runId, message);
            }
            else
            {
                msg = new TextTestResultMessage(runId, currentTest, message);
            }

            runContext.ResultSink.AddResult(msg);
        }
Exemple #7
0
        /// <summary>
        /// Sends run level message to the result sink.
        /// </summary>
        /// <param name="message">Text for the message.</param>
        /// <param name="outcome">Outcome for the message. Affects test run outcome.</param>
        /// <param name="abortTestRun">If true, we use TMK.Panic, otherwise TMK.TextMessage</param>
        private void SendResult(string messageText, TestOutcome outcome, bool abortTestRun)
        {
            TakeScreenShot("ScreenShot_TestRunAborted");

            Debug.Assert(!abortTestRun || outcome == TestOutcome.Error,
                         "HA.SendResult: When abortTestRun = true, Outcome should be Error.");

            String events       = GetEvents(m_runContext.RunConfig.TestRun.Created, DateTime.Now, true);
            String abortMessage = String.Empty;

            if (events != String.Empty)
            {
                abortMessage = String.Format("{0}{1}{2}", messageText, Environment.NewLine, events);
            }
            else
            {
                abortMessage = messageText;
            }

            TestRunTextResultMessage message = new TestRunTextResultMessage(
                Environment.MachineName,
                m_runContext.RunConfig.TestRun.Id,
                abortMessage,
                TestMessageKind.TextMessage);

            message.Outcome = outcome;

            m_runContext.ResultSink.AddResult(message);

            if (abortTestRun)
            {
                m_runContext.ResultSink.AddResult(new RunStateEvent(m_runContext.RunConfig.TestRun.Id,
                                                                    RunState.Aborting,
                                                                    Environment.MachineName));
            }
        }
        /// <summary>
        /// Sends run level message to the result sink.
        /// </summary>
        /// <param name="message">Text for the message.</param>
        /// <param name="outcome">Outcome for the message. Affects test run outcome.</param>
        /// <param name="abortTestRun">If true, we use TMK.Panic, otherwise TMK.TextMessage</param>
        private void SendResult(string messageText, TestOutcome outcome, bool abortTestRun)
        {
            Contract.Assert(!abortTestRun || outcome == TestOutcome.Error,
                "SendResult: When abortTestRun = true, Outcome should be Error.");

            TestRunTextResultMessage message = new TestRunTextResultMessage(
                Environment.MachineName,
                _runContext.RunConfig.TestRun.Id,
                messageText,
                TestMessageKind.TextMessage);
            message.Outcome = outcome;

            _runContext.ResultSink.AddResult(message);

            if (abortTestRun)
            {
                _runContext.ResultSink.AddResult(new RunStateEvent(_runContext.RunConfig.TestRun.Id,
                                                                RunState.Aborting,
                                                                Environment.MachineName));
            }
        }
        private void SendMessage(IRunContext runContext, string message, ITestElement currentTest = null) {
            if (runContext == null) {
                return;
            }

            var runId = runContext.RunConfig.TestRun.Id;

            TestMessage msg;
            if (currentTest == null) {
                msg = new TestRunTextResultMessage(runId, message);
            } else {
                msg = new TextTestResultMessage(runId, currentTest, message);
            }

            runContext.ResultSink.AddResult(msg);
        }
        public void Initialize(IRunContext runContext) {
            if (_ide == null) {
                var runId = _runId = runContext.RunConfig.TestRun.Id;
                TestRunTextResultMessage failure = null;

                try {
                    InitializeWorker(runContext).GetAwaiter().GetResult();
                } catch (ArgumentException ex) {
                    failure = new TestRunTextResultMessage(runId, ex.Message);
                } catch (TimeoutException ex) {
                    failure = new TestRunTextResultMessage(runId, ex.Message);
                } catch (Exception ex) {
                    failure = new TestRunTextResultMessage(
                        runId,
                        string.Format("{0}: {1}{2}{3}", ex.GetType().Name, ex.Message, Environment.NewLine, ex)
                    );
                    failure.SystemException = ex;
                }

                if (failure != null) {
                    runContext.ResultSink.AddResult(failure);
                    runContext.StopTestRun();
                }
            }
        }
        /// <summary>
        /// Sends run level message to the result sink.
        /// </summary>
        /// <param name="message">Text for the message.</param>
        /// <param name="outcome">Outcome for the message. Affects test run outcome.</param>
        /// <param name="abortTestRun">If true, we use TMK.Panic, otherwise TMK.TextMessage</param>
        private void SendResult(string messageText, TestOutcome outcome, bool abortTestRun)
        {
            TakeScreenShot("ScreenShot_TestRunAborted");

            Debug.Assert(!abortTestRun || outcome == TestOutcome.Error,
                "HA.SendResult: When abortTestRun = true, Outcome should be Error.");

            String events = GetEvents(m_runContext.RunConfig.TestRun.Created, DateTime.Now, true);
            String abortMessage = String.Empty;

            if (events != String.Empty)
            {
                abortMessage = String.Format("{0}{1}{2}", messageText, Environment.NewLine, events);
            }
            else
            {
                abortMessage = messageText;
            }

            TestRunTextResultMessage message = new TestRunTextResultMessage(
                Environment.MachineName,
                m_runContext.RunConfig.TestRun.Id,
                abortMessage,
                TestMessageKind.TextMessage);
            message.Outcome = outcome;

            m_runContext.ResultSink.AddResult(message);

            if (abortTestRun)
            {
                m_runContext.ResultSink.AddResult(new RunStateEvent(m_runContext.RunConfig.TestRun.Id,
                                                                RunState.Aborting,
                                                                Environment.MachineName));
            }
        }
        /// <summary>
        /// Creates VS IDE and HostSide inside it.
        /// This can be called multiple times in the run if specified to restart VS between tests.
        /// </summary>
        private void InitHostSide()
        {
            Debug.Assert(m_runContext != null);
            try
            {
                m_vsRegistryHive = GetRegistryHive();
                m_additionalCommandLine = GetAdditionalCommandLine();

                lock (m_hostSideLock)
                {
                    // Get the "host side" of the host adapter.
                    CreateHostSide();

                    try
                    {
                        // Call Initialize for the host side.
                        ((ITestAdapter)HostSide).Initialize(m_runContext);
                    }
                    catch (RemotingException remotingException)
                    {
                        SendResult("Remoting Exception in InitHostSide(): " + remotingException.Message, TestOutcome.Warning);
                    }
                    // If test run was started under debugger, attach debugger.
                    CheckAttachDebugger();
                }
            }
            catch (Exception ex)
            {
                // Do some error diagnostics.
                TestRunTextResultMessage textMessage = new TestRunTextResultMessage(
                                            Environment.MachineName,
                                            m_runContext.RunConfig.TestRun.Id,
                                            ex.GetType() + ": " + ex.Message,
                                            TestMessageKind.TextMessage);
                m_runContext.ResultSink.AddResult(textMessage);
                m_runContext.ResultSink.AddResult(new RunStateEvent(m_runContext.RunConfig.TestRun.Id,
                                                                    RunState.Aborting,
                                                                    Environment.MachineName));
                throw;
            }

            m_isHostSideDirty = false;
        }