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(); } } }
internal static LocalizedException SetExchangePrincipalInformation(TestCasConnectivity.TestCasConnectivityRunInstance instance, ADUser user) { if (instance == null) { return(new LocalizedException(Strings.ErrorNullParameter("instance"))); } if (user == null) { return(new LocalizedException(Strings.ErrorNullParameter("user"))); } if (instance.exchangePrincipal == null) { try { if (user is ADSystemMailbox) { throw new NotSupportedException("not supported for ADSystemMailbox"); } instance.exchangePrincipal = ExchangePrincipal.FromADUser(user, null); } catch (ObjectNotFoundException result) { return(result); } catch (InvalidCastException innerException) { return(new LocalizedException(Strings.ErrorInvalidCasting, innerException)); } catch (LocalizedException result2) { return(result2); } } return(null); }
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); }
private WebApplication GetWebApplication(TestCasConnectivity.TestCasConnectivityRunInstance instance) { CasTransactionOutcome casTransactionOutcome = base.CreateLogonOutcome(instance); WebApplication result = null; try { WebApplication webApplication = this.CreateWebApplication(instance); if (webApplication.ValidateLogin()) { casTransactionOutcome.Update(CasTransactionResultEnum.Success, LocalizedString.Empty); result = webApplication; } else { casTransactionOutcome.Update(CasTransactionResultEnum.Failure, Strings.CasHealthOwaNoLogonCookieReturned); } } catch (AuthenticationException ex) { casTransactionOutcome.Update(CasTransactionResultEnum.Failure, Strings.CasHealthWebAppNoSession(instance.CasFqdn, ex.LocalizedString, (ex.InnerException != null) ? ex.GetBaseException().Message : "")); } catch (WebException ex2) { casTransactionOutcome.Update(CasTransactionResultEnum.Failure, Strings.CasHealthWebAppNoSession(instance.CasFqdn, ex2.Message, (ex2.InnerException != null) ? ex2.GetBaseException().Message : "")); } instance.Outcomes.Enqueue(casTransactionOutcome); instance.Result.Outcomes.Add(casTransactionOutcome); return(result); }
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 }); }
protected override List <TestCasConnectivity.TestCasConnectivityRunInstance> PopulateInfoPerCas(TestCasConnectivity.TestCasConnectivityRunInstance instance, List <CasTransactionOutcome> outcomeList) { TaskLogger.LogEnter(); List <TestCasConnectivity.TestCasConnectivityRunInstance> result; try { if (base.Fields.IsModified("ConnectionUri")) { base.WriteVerbose(Strings.CasHealthOwaTestUrlSpecified(this.ConnectionUri.AbsoluteUri)); TestCasConnectivity.TestCasConnectivityRunInstance testCasConnectivityRunInstance = new TestCasConnectivity.TestCasConnectivityRunInstance(instance); testCasConnectivityRunInstance.baseUri = TestCasConnectivity.GetUrlWithTrailingSlash(this.ConnectionUri); testCasConnectivityRunInstance.UrlType = VirtualDirectoryUriScope.Unknown; testCasConnectivityRunInstance.CasFqdn = null; result = new List <TestCasConnectivity.TestCasConnectivityRunInstance> { testCasConnectivityRunInstance }; } else { result = base.PopulateInfoPerCas(instance, outcomeList); } } finally { TaskLogger.LogExit(); } return(result); }
internal override void UpdateTransientErrorCache(TestCasConnectivity.TestCasConnectivityRunInstance instance, int cFailed, int cWarning, ref int cFailedTransactions, ref int cWarningTransactions, StringBuilder failedStr, StringBuilder warningStr, ref StringBuilder failedTransactionsStr, ref StringBuilder warningTransactionsStr) { TransientErrorCache transientErrorCache = this.GetTransientErrorCache(); string text = (instance.exchangePrincipal != null) ? instance.exchangePrincipal.MailboxInfo.Location.ServerFqdn : null; if (cFailed > 0 || cWarning > 0) { if (transientErrorCache != null && !string.IsNullOrEmpty(text) && !transientErrorCache.ContainsError(text, instance.VirtualDirectoryName)) { transientErrorCache.Add(new CASServiceError(text, instance.VirtualDirectoryName)); return; } if (cFailed > 0) { cFailedTransactions += cFailed; failedTransactionsStr.Append(failedStr); } if (cWarning > 0) { cWarningTransactions += cWarning; warningTransactionsStr.Append(warningStr); return; } } else if (transientErrorCache != null && !string.IsNullOrEmpty(text) && !string.IsNullOrEmpty(instance.VirtualDirectoryName)) { transientErrorCache.Remove(text, instance.VirtualDirectoryName); } }
protected override List <CasTransactionOutcome> BuildPerformanceOutcomes(TestCasConnectivity.TestCasConnectivityRunInstance instance, string mbxFqdn) { return(new List <CasTransactionOutcome> { new CasTransactionOutcome(instance.CasFqdn, Strings.TestProtocolConnectivity(this.CurrentProtocol), Strings.ProtocolConnectivityScenario(this.CurrentProtocol), this.MonitoringLatencyPerformanceCounter(), base.LocalSiteName, true, instance.credentials.UserName) }); }
protected override List <CasTransactionOutcome> BuildPerformanceOutcomes(TestCasConnectivity.TestCasConnectivityRunInstance instance, string mailboxFqdn) { return(new List <CasTransactionOutcome> { this.CreateLogonOutcome(instance) }); }
private TestCasConnectivity.TestCasConnectivityRunInstance CreateRunInstanceForVirtualDirectory(TestCasConnectivity.TestCasConnectivityRunInstance clientAccessServerInstance, ExchangeVirtualDirectory virtualDirectory) { TestCasConnectivity.TestCasConnectivityRunInstance testCasConnectivityRunInstance = new TestCasConnectivity.TestCasConnectivityRunInstance(clientAccessServerInstance) { UrlType = (this.UseInternalUrl ? VirtualDirectoryUriScope.Internal : VirtualDirectoryUriScope.External), VirtualDirectory = virtualDirectory }; base.WriteVerbose(Strings.CasHealthWebAppAddingTestInstance(clientAccessServerInstance.CasFqdn, testCasConnectivityRunInstance.baseUri.AbsoluteUri)); return(testCasConnectivityRunInstance); }
protected Uri GetTestUri(TestCasConnectivity.TestCasConnectivityRunInstance instance, out VirtualDirectoryUriScope uriType) { if (this.explicitlySetUrl != null) { uriType = VirtualDirectoryUriScope.Unknown; return(this.explicitlySetUrl); } uriType = instance.UrlType; return(instance.baseUri); }
protected override WebSession CreateWebSession(TestCasConnectivity.TestCasConnectivityRunInstance instance) { ExchangeWebAppVirtualDirectory exchangeWebAppVirtualDirectory = (ExchangeWebAppVirtualDirectory)instance.VirtualDirectory; if (exchangeWebAppVirtualDirectory.LiveIdAuthentication && instance.UrlType == VirtualDirectoryUriScope.Internal) { return(new WindowsLiveIdWebSession(TestCasConnectivity.GetUrlWithTrailingSlash(exchangeWebAppVirtualDirectory.ExternalUrl), instance.baseUri, instance.credentials, instance.LiveIdAuthenticationConfiguration)); } return(base.CreateWebSession(instance)); }
protected override void ExecuteTestConnectivity(TestCasConnectivity.TestCasConnectivityRunInstance instance) { int perConnectionTimeout = base.PerConnectionTimeout; CasTransactionOutcome casTransactionOutcome = new CasTransactionOutcome(base.CasFqdn, Strings.TestProtocolConnectivity("POP3"), Strings.ProtocolConnectivityScenario("POP3"), "POPConnectivity-Latency", base.LocalSiteName, false, instance.credentials.UserName); if (base.PortClientAccessServer == 0) { switch (base.ConnectionType) { case ProtocolConnectionType.Plaintext: case ProtocolConnectionType.Tls: base.PortClientAccessServer = 110; break; case ProtocolConnectionType.Ssl: base.PortClientAccessServer = 995; break; } } else { switch (base.ConnectionType) { case ProtocolConnectionType.Plaintext: case ProtocolConnectionType.Tls: if (110 != base.PortClientAccessServer) { instance.Outcomes.Enqueue(new Warning(Strings.PopImapTransactionWarning(base.PortClientAccessServer, base.ConnectionType.ToString(), 995, 110))); } break; case ProtocolConnectionType.Ssl: if (995 != base.PortClientAccessServer) { instance.Outcomes.Enqueue(new Warning(Strings.PopImapTransactionWarning(base.PortClientAccessServer, base.ConnectionType.ToString(), 995, 110))); } break; } } casTransactionOutcome.Port = base.PortClientAccessServer; casTransactionOutcome.ConnectionType = base.ConnectionType; instance.Port = base.PortClientAccessServer; instance.ConnectionType = base.ConnectionType; LocalizedString localizedString = Strings.ProtocolTransactionsDetails(base.CasFqdn, string.IsNullOrEmpty(base.MailboxFqdn) ? base.User.ServerName : base.MailboxFqdn, base.User.Database.Name, base.User.PrimarySmtpAddress.ToString(), base.PortClientAccessServer.ToString(CultureInfo.InvariantCulture), base.ConnectionType.ToString(), this.trustAllCertificates); instance.Outcomes.Enqueue(localizedString); this.transactionTarget = new PopTransaction(base.User, this.casToTest.Name, instance.credentials.Password, base.PortClientAccessServer); this.transactionTarget.ConnectionType = base.ConnectionType; this.transactionTarget.TrustAnySslCertificate = instance.trustAllCertificates; this.transactionTarget.MailSubject = base.MailSubject; this.transactionTarget.TransactionResult = casTransactionOutcome; this.transactionTarget.Instance = instance; this.transactionTarget.Execute(); }
private void ExecuteCalendarVDirTests(TestCasConnectivity.TestCasConnectivityRunInstance instance, CasTransactionOutcome outcome) { string text = string.Format("{0}/Calendar/calendar.html", instance.exchangePrincipal.MailboxInfo.PrimarySmtpAddress.ToString()); string text2 = string.Format("{0}/Calendar/calendar.ics", instance.exchangePrincipal.MailboxInfo.PrimarySmtpAddress.ToString()); ADSessionSettings adsessionSettings = instance.exchangePrincipal.MailboxInfo.OrganizationId.ToADSessionSettings(); IRecipientSession tenantOrRootOrgRecipientSession = DirectorySessionFactory.Default.GetTenantOrRootOrgRecipientSession(null, true, ConsistencyMode.IgnoreInvalid, null, adsessionSettings, 293, "ExecuteCalendarVDirTests", "f:\\15.00.1497\\sources\\dev\\Management\\src\\Management\\Monitoring\\Tasks\\TestCalendarConnectivity.cs"); using (MailboxCalendarFolderDataProvider mailboxCalendarFolderDataProvider = new MailboxCalendarFolderDataProvider(adsessionSettings, DirectoryHelper.ReadADRecipient(instance.exchangePrincipal.MailboxInfo.MailboxGuid, instance.exchangePrincipal.MailboxInfo.IsArchive, tenantOrRootOrgRecipientSession) as ADUser, "Test-CalendarConnectivity")) { StoreObjectId defaultFolderId = mailboxCalendarFolderDataProvider.MailboxSession.GetDefaultFolderId(DefaultFolderType.Calendar); Microsoft.Exchange.Data.Storage.Management.MailboxFolderId identity = new Microsoft.Exchange.Data.Storage.Management.MailboxFolderId(instance.exchangePrincipal.ObjectId, defaultFolderId, null); MailboxCalendarFolder mailboxCalendarFolder = (MailboxCalendarFolder)mailboxCalendarFolderDataProvider.Read <MailboxCalendarFolder>(identity); if (!mailboxCalendarFolder.PublishEnabled) { mailboxCalendarFolder.SearchableUrlEnabled = true; mailboxCalendarFolder.PublishEnabled = true; mailboxCalendarFolder.PublishedCalendarUrl = new Uri(instance.baseUri, text).ToString(); mailboxCalendarFolder.PublishedICalUrl = new Uri(instance.baseUri, text2).ToString(); try { mailboxCalendarFolderDataProvider.Save(mailboxCalendarFolder); } catch (NotAllowedPublishingByPolicyException ex) { instance.Outcomes.Enqueue(new Warning(ex.LocalizedString)); return; } } } ADOwaVirtualDirectory adowaVirtualDirectory = instance.VirtualDirectory as ADOwaVirtualDirectory; if (adowaVirtualDirectory != null && !(adowaVirtualDirectory.AnonymousFeaturesEnabled != true)) { base.WriteMonitoringEvent(1104, this.MonitoringEventSource, EventTypeEnumeration.Success, Strings.CasHealthCalendarVDirSuccess); TimeSpan latency; if (!this.TestCalendarUrlResponse(text2, instance, TestCalendarConnectivity.CalendarContext.ICalContext, out latency)) { outcome.Update(CasTransactionResultEnum.Failure); } else { outcome.UpdateLatency(latency); } if (!this.TestCalendarUrlResponse(text, instance, TestCalendarConnectivity.CalendarContext.ViewCalendarContext, out latency)) { outcome.Update(CasTransactionResultEnum.Failure); } return; } instance.Outcomes.Enqueue(new Warning(Strings.CasHealthCalendarVDirWarning(instance.VirtualDirectoryName, instance.CasFqdn))); outcome.Update(CasTransactionResultEnum.Skipped); base.WriteMonitoringEvent(1105, this.MonitoringEventSource, EventTypeEnumeration.Warning, Strings.CasHealthCalendarVDirWarning(instance.VirtualDirectoryName, instance.CasFqdn)); }
private bool SetUpConnTestSendTestMessage(TestCasConnectivity.TestCasConnectivityRunInstance instance, MailboxSession mailboxSession, out CasTransactionOutcome outcome) { outcome = null; if (this.SendTestMessage) { outcome = this.BuildOutcome(Strings.DatabaseStatus, Strings.CheckDatabaseStatus(this.user.Database.Name), instance); bool flag = false; Exception ex = this.CheckDatabaseStatus(this.user.Database.Name, this.MailboxFqdn, ref flag); if (!flag) { if (ex == null) { goto IL_16C; } } try { outcome = this.BuildOutcome(Strings.SendMessage, Strings.SendMessage, instance); using (MessageItem messageItem = MessageItem.Create(mailboxSession, mailboxSession.GetDefaultFolderId(DefaultFolderType.Inbox))) { this.mailSubject = this.MailSubjectPrefix + Guid.NewGuid().ToString(); messageItem.Subject = this.MailSubject; using (TextWriter textWriter = messageItem.Body.OpenTextWriter(BodyFormat.TextPlain)) { textWriter.Write("Body of -"); textWriter.Write(this.MailSubject); } messageItem.IsReadReceiptRequested = false; messageItem.Save(SaveMode.NoConflictResolution); instance.Outcomes.Enqueue(Strings.TestMessageSent(this.MailSubject, this.user.PrimarySmtpAddress.ToString())); } return(true); } catch (LocalizedException exception) { base.WriteMonitoringEvent(2008, this.CmdletMonitoringEventSource, EventTypeEnumeration.Error, base.ShortErrorMsgFromException(exception)); outcome.Update(CasTransactionResultEnum.Failure); return(false); } IL_16C: if (ex != null) { outcome.Update(CasTransactionResultEnum.Failure, ex.Message); } else { outcome.Update(CasTransactionResultEnum.Failure); } return(false); } return(true); }
private void GetUserParameters(TestCasConnectivity.TestCasConnectivityRunInstance instance, out string userName, out string userDomain, out SecureString password) { if (this.explicitlySetMailboxCredential != null) { userName = this.explicitlySetMailboxCredential.UserName; userDomain = null; password = this.explicitlySetMailboxCredential.Password.Copy(); return; } userName = instance.credentials.UserName; userDomain = instance.credentials.Domain; password = instance.credentials.Password.ConvertToSecureString(); }
private bool SetUpConnectivityTests(TestCasConnectivity.TestCasConnectivityRunInstance instance, out CasTransactionOutcome outcome) { MailboxSession mailboxSession = null; outcome = new CasTransactionOutcome(base.CasFqdn, Strings.ValidatingTestCasConnectivityRunInstance, Strings.ValidatingTestCasConnectivityRunInstance, this.MonitoringLatencyPerformanceCounter(), base.LocalSiteName, true, string.Empty); if (instance == null) { base.WriteMonitoringEvent(2020, this.CmdletMonitoringEventSource, EventTypeEnumeration.Error, base.ShortErrorMsgFromException(new ArgumentNullException("instance"))); outcome.Update(CasTransactionResultEnum.Failure); return(false); } this.userName = instance.credentials.UserName; if (!this.SetUpConnTestValidateAndMakeADUser(instance, out outcome)) { return(false); } if (!this.SetUpConnTestSetExchangePrincipal(instance, out outcome)) { return(false); } if (instance.credentials.Password == null) { base.WriteMonitoringEvent(2020, this.CmdletMonitoringEventSource, EventTypeEnumeration.Error, base.ShortErrorMsgFromException(new ArgumentNullException("password"))); outcome.Update(CasTransactionResultEnum.Failure); return(false); } if (instance.LightMode) { return(true); } try { if (!this.SetUpConnTestSetCreateMailboxSession(instance, out mailboxSession, out outcome)) { return(false); } if (!this.SetUpConnTestSendTestMessage(instance, mailboxSession, out outcome)) { return(false); } } finally { if (mailboxSession != null) { mailboxSession.Dispose(); mailboxSession = null; } } return(true); }
private void ExecuteWebServiceTest(TestCasConnectivity.TestCasConnectivityRunInstance instance, WebApplication webApplication) { StringBody stringBody = new StringBody("{\"filter\":{\"SearchText\":\"\"},\"sort\":{\"Direction\":0,\"PropertyName\":\"Name\"}}"); stringBody.ContentType = new System.Net.Mime.ContentType("application/json"); string text = "RulesEditor/InboxRules.svc/GetList"; string relativeUrl = "default.aspx"; CasTransactionOutcome casTransactionOutcome = this.BuildOutcome(Strings.CasHealthEcpScenarioTestWebService, Strings.CasHealthEcpTestWebService(new Uri(webApplication.BaseUri, text).ToString()), "ECP Web Sevice Logon Latency", instance); bool flag = false; string additionalInformation = ""; try { TextResponse textResponse = webApplication.Get <TextResponse>(relativeUrl); flag = (textResponse.StatusCode == HttpStatusCode.OK); additionalInformation = (flag ? "" : Strings.CasHealthEcpServiceRequestResult(textResponse.StatusCode.ToString())); base.WriteVerbose(Strings.CasHealthEcpServiceResponse(textResponse.Text)); if (flag) { textResponse = webApplication.Post <TextResponse>(text, stringBody); flag = (textResponse.StatusCode == HttpStatusCode.OK); additionalInformation = (flag ? "" : Strings.CasHealthEcpServiceRequestResult(textResponse.StatusCode.ToString())); base.WriteVerbose(Strings.CasHealthEcpServiceResponse(textResponse.Text)); } } catch (WebException ex) { string casServer = string.Empty; string fullResponse = string.Empty; if (ex.Response != null) { casServer = ex.Response.Headers["X-DiagInfo"]; try { fullResponse = this.GetResponseHtml(ex.Response); } catch (Exception ex2) { if (!(ex2 is ProtocolViolationException) && !(ex2 is IOException) && !(ex2 is NotSupportedException)) { throw; } } } additionalInformation = Strings.CasHealthEcpServiceRequestException(ex.Message, casServer, fullResponse); } casTransactionOutcome.Update(flag ? CasTransactionResultEnum.Success : CasTransactionResultEnum.Failure, additionalInformation); instance.Outcomes.Enqueue(casTransactionOutcome); instance.Result.Outcomes.Add(casTransactionOutcome); }
protected override List <CasTransactionOutcome> ExecuteTests(TestCasConnectivity.TestCasConnectivityRunInstance instance) { CasTransactionOutcome casTransactionOutcome = null; if (!this.SetUpConnectivityTests(instance, out casTransactionOutcome)) { instance.Outcomes.Enqueue(casTransactionOutcome); instance.Result.Outcomes.Add(casTransactionOutcome); instance.Result.Complete(); return(null); } this.ExecuteTestConnectivity(instance); 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 ITestStep CreateScenario(TestCasConnectivity.TestCasConnectivityRunInstance instance, Uri testUri, string userName, string domain, SecureString password, VirtualDirectoryUriScope testType, string serverFqdn) { ITestFactory testFactory = new TestFactory(); ITestStep result; if (testType == VirtualDirectoryUriScope.Internal || testType == VirtualDirectoryUriScope.Unknown) { result = testFactory.CreateEcpLoginScenario(testUri, userName, domain, password, testFactory); } else { result = testFactory.CreateEcpExternalLoginAgainstSpecificServerScenario(testUri, userName, domain, password, serverFqdn, testFactory); } return(result); }
public static WebSession GetWebSession(TestCasConnectivity.TestCasConnectivityRunInstance instance) { ExchangeWebAppVirtualDirectory exchangeWebAppVirtualDirectory = (ExchangeWebAppVirtualDirectory)instance.VirtualDirectory; Uri baseUri = instance.baseUri; NetworkCredential credentials = instance.credentials; if (exchangeWebAppVirtualDirectory.LiveIdAuthentication) { return(new WindowsLiveIdWebSession(baseUri, credentials, instance.LiveIdAuthenticationConfiguration)); } if (exchangeWebAppVirtualDirectory.FormsAuthentication) { return(new FbaWebSession(baseUri, credentials)); } return(new AuthenticateWebSession(baseUri, credentials)); }
private bool SetUpConnTestSetExchangePrincipal(TestCasConnectivity.TestCasConnectivityRunInstance instance, out CasTransactionOutcome outcome) { outcome = null; if (instance.exchangePrincipal == null) { outcome = new CasTransactionOutcome(base.CasFqdn, Strings.CreateExchangePrincipalObject, Strings.CreateExchangePrincipalObject, this.MonitoringLatencyPerformanceCounter(), base.LocalSiteName, false, this.userName); LocalizedException ex = ProtocolConnectivity.SetExchangePrincipalInformation(instance, this.User); if (ex != null) { base.WriteMonitoringEvent(2021, this.CmdletMonitoringEventSource, EventTypeEnumeration.Error, base.ShortErrorMsgFromException(ex)); outcome.Update(CasTransactionResultEnum.Failure); return(false); } outcome.Update(CasTransactionResultEnum.Success); } return(true); }
private bool ValidateExternalTest(TestCasConnectivity.TestCasConnectivityRunInstance instance) { bool result = true; if (string.Compare(instance.VirtualDirectory.Name, "PowerShell-LiveID (Default Web Site)", true) == 0) { base.WriteVerbose(Strings.CasHealthPowerShellSkipCertVDir("PS liveID ExternalUrl")); result = false; } else { this.GetRpsCertificateThumbprint(); if (this.certThumbprint == null) { this.WriteWarning(Strings.CasHealthPowerShellSkipCertVDir("PS ExternalUrl without ForwardSync Certificate")); result = false; } } return(result); }
private bool SetUpConnTestValidateAndMakeADUser(TestCasConnectivity.TestCasConnectivityRunInstance instance, out CasTransactionOutcome outcome) { outcome = new CasTransactionOutcome(base.CasFqdn, Strings.ValidatingUserObject, Strings.ValidatingUserObjectDescription, this.MonitoringLatencyPerformanceCounter(), base.LocalSiteName, false, this.userName); LocalizedException ex = ProtocolConnectivity.SetUserInformation(instance, this.recipientSession, ref this.user); if (ex != null) { base.WriteMonitoringEvent(2001, this.CmdletMonitoringEventSource, EventTypeEnumeration.Error, base.ShortErrorMsgFromException(ex)); outcome.Update(CasTransactionResultEnum.Failure); return(false); } if (this.user != null && !this.user.IsMailboxEnabled) { UserIsNotMailBoxEnabledException exception = new UserIsNotMailBoxEnabledException(instance.credentials.UserName); base.WriteMonitoringEvent(2003, this.CmdletMonitoringEventSource, EventTypeEnumeration.Error, base.ShortErrorMsgFromException(exception)); outcome.Update(CasTransactionResultEnum.Failure); return(false); } outcome.Update(CasTransactionResultEnum.Success); return(true); }
private bool ShouldTestVirtualDirectory(TestCasConnectivity.TestCasConnectivityRunInstance clientAccessServerInstance, List <CasTransactionOutcome> outcomeList, ExchangeVirtualDirectory virtualDirectory) { if (this.IsOrphanVdir(virtualDirectory)) { this.WriteWarning(Strings.CasHealthWebAppOrphanVirtualDirectory(this.ApplicationShortName, virtualDirectory.Name)); CasTransactionOutcome casTransactionOutcome = this.CreateVirtualDirectoryConfigErrorOutcome(clientAccessServerInstance, virtualDirectory); this.TestFailedBadVdirConfig(casTransactionOutcome); base.WriteObject(casTransactionOutcome); outcomeList.Add(casTransactionOutcome); return(false); } if ((this.UseInternalUrl && (virtualDirectory.InternalUrl == null || string.IsNullOrEmpty(virtualDirectory.InternalUrl.AbsoluteUri))) || (!this.UseInternalUrl && (virtualDirectory.ExternalUrl == null || string.IsNullOrEmpty(virtualDirectory.ExternalUrl.AbsoluteUri)))) { CasTransactionOutcome casTransactionOutcome2 = this.CreateVirtualDirectoryConfigErrorOutcome(clientAccessServerInstance, virtualDirectory); this.TestFailedUrlPropertyNotSet(casTransactionOutcome2); base.WriteObject(casTransactionOutcome2); outcomeList.Add(casTransactionOutcome2); return(false); } return(true); }
private WebSession GetWebSession(TestCasConnectivity.TestCasConnectivityRunInstance instance) { WebSession webSession = this.CreateWebSession(instance); if (instance.UrlType == VirtualDirectoryUriScope.Internal) { webSession.TrustAnySSLCertificate = true; base.WriteVerbose(Strings.CasHealthOwaInternalTrustCertificate); } else if (instance.trustAllCertificates) { webSession.TrustAnySSLCertificate = true; base.WriteVerbose(Strings.CasHealthOwaTrustAnyCertificate); } webSession.SendingRequest += delegate(object sender, HttpWebRequestEventArgs e) { LocalizedString localizedString = Strings.CasHealthWebAppSendingRequest(e.Request.RequestUri); instance.Outcomes.Enqueue(localizedString); }; webSession.ResponseReceived += delegate(object sender, HttpWebResponseEventArgs e) { if (e.Response != null) { string responseHeader = e.Response.GetResponseHeader("X-DiagInfo"); LocalizedString localizedString = Strings.CasHealthWebAppResponseReceived(e.Response.ResponseUri, e.Response.StatusCode, responseHeader ?? string.Empty, TestWebApplicationConnectivity.GetResponseAdditionalInformation(e.Response)); instance.Outcomes.Enqueue(localizedString); } }; webSession.RequestException += delegate(object sender, WebExceptionEventArgs e) { if (e.Response != null) { string responseHeader = e.Response.GetResponseHeader("X-DiagInfo"); LocalizedString localizedString = Strings.CasHealthWebAppRequestException(e.Request.RequestUri, e.Exception.Status, responseHeader ?? string.Empty, e.Exception.Message); instance.Outcomes.Enqueue(localizedString); } }; webSession.Initialize(); return(webSession); }
protected override List <CasTransactionOutcome> ExecuteTests(TestCasConnectivity.TestCasConnectivityRunInstance instance) { TaskLogger.LogEnter(); try { instance.baseUri = new UriBuilder(new Uri(instance.baseUri, "calendar/")) { Scheme = Uri.UriSchemeHttp, Port = 80 }.Uri; CasTransactionOutcome casTransactionOutcome = this.BuildOutcome(base.ApplicationShortName, base.ApplicationName, instance); casTransactionOutcome.Update(CasTransactionResultEnum.Success); this.ExecuteCalendarVDirTests(instance, casTransactionOutcome); instance.Result.Outcomes.Add(casTransactionOutcome); } finally { instance.Result.Complete(); TaskLogger.LogExit(); } return(null); }
protected override List <CasTransactionOutcome> ExecuteTests(TestCasConnectivity.TestCasConnectivityRunInstance instance) { TaskLogger.LogEnter(); instance.liveRSTEndpointUri = this.liveRSTEndpoint; try { base.WriteVerbose(Strings.CasHealthWebAppStartTest(instance.baseUri)); WebApplication webApplication = this.GetWebApplication(instance); if (webApplication != null) { this.ExecuteWebApplicationTests(instance, webApplication); } else { instance.Result.Complete(); } } finally { TaskLogger.LogExit(); } return(null); }
private bool SetUpConnTestSetCreateMailboxSession(TestCasConnectivity.TestCasConnectivityRunInstance instance, out MailboxSession mailboxSession, out CasTransactionOutcome outcome) { this.mailboxFqdn = instance.exchangePrincipal.MailboxInfo.Location.ServerFqdn; string text = string.Empty; mailboxSession = null; outcome = null; try { outcome = this.BuildOutcome(Strings.CreateMailboxSession, Strings.CreateMailboxSessionDetail(this.User.PrimarySmtpAddress.ToString()), instance); mailboxSession = MailboxSession.OpenAsAdmin(instance.exchangePrincipal, CultureInfo.InvariantCulture, "Client=Monitoring;Action=System Management"); } catch (StorageTransientException exception) { text = ProtocolConnectivity.ShortErrorMessageFromException(exception); new MailboxCreationException(this.User.PrimarySmtpAddress.ToString(), text); outcome.Update(CasTransactionResultEnum.Failure, Strings.ErrorMailboxCreationFailure(this.User.PrimarySmtpAddress.ToString(), text)); return(false); } catch (StoragePermanentException exception2) { text = ProtocolConnectivity.ShortErrorMessageFromException(exception2); new MailboxCreationException(this.User.PrimarySmtpAddress.ToString(), text); outcome.Update(CasTransactionResultEnum.Failure, Strings.ErrorMailboxCreationFailure(this.User.PrimarySmtpAddress.ToString(), text)); return(false); } catch (ArgumentException exception3) { text = ProtocolConnectivity.ShortErrorMessageFromException(exception3); LocalizedException exception4 = new LocalizedException(new LocalizedString(text)); base.WriteMonitoringEvent(2013, this.CmdletMonitoringEventSource, EventTypeEnumeration.Error, base.ShortErrorMsgFromException(exception4)); outcome.Update(CasTransactionResultEnum.Failure); return(false); } outcome.Update(CasTransactionResultEnum.Success); return(true); }