private void ScenarioExecutionFinished(IAsyncResult result) { TaskLogger.LogEnter(); object[] array = result.AsyncState as object[]; ITestStep testStep = array[0] as ITestStep; TestCasConnectivity.TestCasConnectivityRunInstance testCasConnectivityRunInstance = array[1] as TestCasConnectivity.TestCasConnectivityRunInstance; IResponseTracker responseTracker = array[2] as IResponseTracker; CasTransactionOutcome casTransactionOutcome = array[3] as CasTransactionOutcome; SecureString secureString = array[4] as SecureString; try { testStep.EndExecute(result); this.CompleteSuccessfulOutcome(casTransactionOutcome, testCasConnectivityRunInstance, responseTracker); } catch (Exception ex) { testCasConnectivityRunInstance.Outcomes.Enqueue(TestWebApplicationConnectivity2.GenerateVerboseMessage(ex.ToString())); this.CompleteFailedOutcome(casTransactionOutcome, testCasConnectivityRunInstance, responseTracker, ex); } finally { TaskLogger.LogExit(); if (secureString != null) { secureString.Dispose(); } if (testCasConnectivityRunInstance != null) { testCasConnectivityRunInstance.Outcomes.Enqueue(casTransactionOutcome); testCasConnectivityRunInstance.Result.Complete(); } } }
protected sealed override List <CasTransactionOutcome> ExecuteTests(TestCasConnectivity.TestCasConnectivityRunInstance instance) { TaskLogger.LogEnter(); try { VirtualDirectoryUriScope virtualDirectoryUriScope; Uri testUri = this.GetTestUri(instance, out virtualDirectoryUriScope); base.WriteVerbose(Strings.CasHealthWebAppStartTest(testUri)); IRequestAdapter requestAdapter = this.CreateRequestAdapter(virtualDirectoryUriScope); IExceptionAnalyzer exceptionAnalyzer = this.CreateExceptionAnalyzer(testUri); IResponseTracker responseTracker = this.CreateResponseTracker(); IHttpSession session = this.CreateHttpSession(requestAdapter, exceptionAnalyzer, responseTracker, instance); this.HookupEventHandlers(session); CasTransactionOutcome casTransactionOutcome = this.CreateOutcome(instance, testUri, responseTracker); string userName; string domain; SecureString secureString; this.GetUserParameters(instance, out userName, out domain, out secureString); ITestStep testStep = this.CreateScenario(instance, testUri, userName, domain, secureString, virtualDirectoryUriScope, instance.CasFqdn); testStep.BeginExecute(session, new AsyncCallback(this.ScenarioExecutionFinished), new object[] { testStep, instance, responseTracker, casTransactionOutcome, secureString }); } finally { TaskLogger.LogExit(); } return(null); }
internal override void CompleteFailedOutcome(CasTransactionOutcome outcome, TestCasConnectivity.TestCasConnectivityRunInstance instance, IResponseTracker responseTracker, Exception e) { TestEcpConnectivityOutcome testEcpConnectivityOutcome = outcome as TestEcpConnectivityOutcome; ScenarioException scenarioException = e.GetScenarioException(); if (scenarioException != null) { testEcpConnectivityOutcome.FailureSource = scenarioException.FailureSource.ToString(); testEcpConnectivityOutcome.FailureReason = scenarioException.FailureReason.ToString(); testEcpConnectivityOutcome.FailingComponent = scenarioException.FailingComponent.ToString(); } testEcpConnectivityOutcome.Update(CasTransactionResultEnum.Failure, (scenarioException != null) ? scenarioException.Message.ToString() : e.Message.ToString(), EventTypeEnumeration.Error); base.WriteMonitoringEvent(1001, this.MonitoringEventSource, EventTypeEnumeration.Error, Strings.CasHealthTransactionFailures((scenarioException != null) ? scenarioException.Message.ToString() : e.Message.ToString())); }
internal override void CompleteSuccessfulOutcome(CasTransactionOutcome outcome, TestCasConnectivity.TestCasConnectivityRunInstance instance, IResponseTracker responseTracker) { outcome.Update(CasTransactionResultEnum.Success); base.WriteMonitoringEvent(1000, this.MonitoringEventSource, EventTypeEnumeration.Success, Strings.CasHealthAllTransactionsSucceeded); }
internal override CasTransactionOutcome CreateOutcome(TestCasConnectivity.TestCasConnectivityRunInstance instance, Uri testUri, IResponseTracker responseTracker) { return(new TestEcpConnectivityOutcome(instance.CasFqdn, (instance.exchangePrincipal == null) ? null : instance.exchangePrincipal.MailboxInfo.Location.ServerFqdn, Strings.CasHealthEcpScenarioTestWebService, Strings.CasHealthEcpScenarioTestWebServiceDescription, "Logon Latency", base.LocalSiteName, instance.trustAllCertificates, instance.credentials.UserName, instance.VirtualDirectoryName, testUri, instance.UrlType) { HttpData = responseTracker.Items }); }
internal virtual IHttpSession CreateHttpSession(IRequestAdapter requestAdapter, IExceptionAnalyzer exceptionAnalyzer, IResponseTracker responseTracker, TestCasConnectivity.TestCasConnectivityRunInstance instance) { return(new HttpSession(requestAdapter, exceptionAnalyzer, responseTracker) { SslValidationOptions = (this.trustAllCertificates ? SslValidationOptions.NoSslValidation : SslValidationOptions.BasicCertificateValidation), UserAgent = "Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1; MSEXCHMON; TESTCONN2)", EventState = instance }); }
internal abstract void CompleteFailedOutcome(CasTransactionOutcome outcome, TestCasConnectivity.TestCasConnectivityRunInstance instance, IResponseTracker responseTracker, Exception e);
internal abstract void CompleteSuccessfulOutcome(CasTransactionOutcome outcome, TestCasConnectivity.TestCasConnectivityRunInstance instance, IResponseTracker responseTracker);
internal abstract CasTransactionOutcome CreateOutcome(TestCasConnectivity.TestCasConnectivityRunInstance instance, Uri testUri, IResponseTracker responseTracker);