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(); } } }
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); }
/// <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; }
/// <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)); } }
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); }
/// <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)); } }