public void ShouldReportUnhealthyTest() { FaultInjectionConfig config; StandAloneCluster cluster = Utility.PopulateStandAloneClusterWithBaselineJson("myClusterConfig.UnSecure.DevCluster.json"); cluster.TargetNodeConfig = new ClusterNodeConfig(null, 0); config = new FaultInjectionConfig(UpgradeFlow.RollingForward, 0); StandAloneSimpleClusterUpgradeState upgradeState1 = new StandAloneSimpleClusterUpgradeState(cluster.TargetCsmConfig, cluster.TargetWrpConfig, cluster.TargetNodeConfig, cluster, new StandAloneTraceLogger("StandAloneDeploymentManager")); Assert.IsTrue(FaultInjectionHelper.ShouldReportUnhealthy(upgradeState1, UpgradeFlow.RollingForward, config)); Assert.IsFalse(FaultInjectionHelper.ShouldReportUnhealthy(upgradeState1, UpgradeFlow.RollingBack, config)); MockUpMultiphaseClusterUpgradeState upgradeState2 = new MockUpMultiphaseClusterUpgradeState(2, cluster); upgradeState2.CurrentListIndex = 0; Assert.IsTrue(FaultInjectionHelper.ShouldReportUnhealthy(upgradeState2, UpgradeFlow.RollingForward, config)); Assert.IsFalse(FaultInjectionHelper.ShouldReportUnhealthy(upgradeState2, UpgradeFlow.RollingBack, config)); upgradeState2.CurrentListIndex = 1; Assert.IsFalse(FaultInjectionHelper.ShouldReportUnhealthy(upgradeState2, UpgradeFlow.RollingForward, config)); config = new FaultInjectionConfig(UpgradeFlow.RollingForward, 1); Assert.IsFalse(FaultInjectionHelper.ShouldReportUnhealthy(upgradeState1, UpgradeFlow.RollingForward, config)); Assert.IsTrue(FaultInjectionHelper.ShouldReportUnhealthy(upgradeState2, UpgradeFlow.RollingForward, config)); }
internal FaultInjectionConfig InternalTryGetFaultInjectionConfigTest(string faultStep, string faultFlow) { List <SettingsSectionDescription> fabricSettings = new List <SettingsSectionDescription>(); if (faultStep != null || faultFlow != null) { SettingsSectionDescription uosSection = new SettingsSectionDescription() { Name = StringConstants.SectionName.UpgradeOrchestrationService }; fabricSettings.Add(uosSection); if (faultStep != null) { uosSection.Parameters.Add(new SettingsParameterDescription() { Name = StringConstants.ParameterName.FaultStep, Value = faultStep }); } if (faultFlow != null) { uosSection.Parameters.Add(new SettingsParameterDescription() { Name = StringConstants.ParameterName.FaultFlow, Value = faultFlow }); } } return(FaultInjectionHelper.TryGetFaultInjectionConfig(fabricSettings)); }
public void GetUpgradeFlowTest() { StandAloneCluster cluster = Utility.PopulateStandAloneClusterWithBaselineJson("myClusterConfig.UnSecure.DevCluster.json"); cluster.TargetNodeConfig = new ClusterNodeConfig(null, 0); StandAloneSimpleClusterUpgradeState upgradeState1 = new StandAloneSimpleClusterUpgradeState(cluster.TargetCsmConfig, cluster.TargetWrpConfig, cluster.TargetNodeConfig, cluster, new StandAloneTraceLogger("StandAloneDeploymentManager")); Assert.AreEqual(UpgradeFlow.RollingForward, FaultInjectionHelper.GetUpgradeFlow(upgradeState1)); MockUpMultiphaseClusterUpgradeState upgradeState2 = new MockUpMultiphaseClusterUpgradeState(2, cluster); upgradeState2.UpgradeUnsuccessful = false; Assert.AreEqual(UpgradeFlow.RollingForward, FaultInjectionHelper.GetUpgradeFlow(upgradeState2)); upgradeState2.UpgradeUnsuccessful = true; Assert.AreEqual(UpgradeFlow.RollingBack, FaultInjectionHelper.GetUpgradeFlow(upgradeState2)); }
private static Exception FaultInjectionCallback(string exceptionType) { LocalizedString localizedString = new LocalizedString("Fault injection."); if (exceptionType.Equals("Microsoft.Exchange.Data.Storage.StoragePermanentException", StringComparison.OrdinalIgnoreCase)) { return(new StoragePermanentException(localizedString)); } if (exceptionType.Equals("Microsoft.Exchange.Data.Storage.StorageTransientException", StringComparison.OrdinalIgnoreCase)) { return(new StorageTransientException(localizedString)); } if (exceptionType.Equals("Microsoft.Mapi.MapiExceptionSessionLimit", StringComparison.OrdinalIgnoreCase)) { Exception innerException = MapiExceptionHelper.SessionLimitException(localizedString); return(new TooManyObjectsOpenedException(localizedString, innerException)); } if (exceptionType.Equals("Microsoft.Mapi.MapiExceptionUnconfigured", StringComparison.OrdinalIgnoreCase)) { Exception innerException2 = MapiExceptionHelper.UnconfiguredException(localizedString); return(new MailboxUnavailableException(localizedString, innerException2)); } if (exceptionType.Equals("CannotGetSiteInfoException", StringComparison.OrdinalIgnoreCase)) { return(new StoragePermanentException(localizedString, new CannotGetSiteInfoException(localizedString))); } if (exceptionType.Equals("System.ArgumentException", StringComparison.OrdinalIgnoreCase)) { return(new ArgumentException(localizedString)); } if (exceptionType.StartsWith("Microsoft.Mapi.MapiException", StringComparison.OrdinalIgnoreCase)) { return(FaultInjectionHelper.CreateXsoExceptionFromMapiException(exceptionType, localizedString)); } return(new ApplicationException(localizedString)); }
private static Exception FaultInjectionCallback(string exceptionType) { LocalizedString localizedString = new LocalizedString("Fault injection."); if (exceptionType.Equals("Microsoft.Exchange.Data.Storage.MailboxRules.InvalidRuleException", StringComparison.OrdinalIgnoreCase)) { return(new InvalidRuleException(localizedString)); } if (exceptionType.Equals("Microsoft.Exchange.Data.Storage.StoragePermanentException", StringComparison.OrdinalIgnoreCase)) { return(new StoragePermanentException(localizedString)); } if (exceptionType.Equals("Microsoft.Exchange.Data.Storage.StorageTransientException", StringComparison.OrdinalIgnoreCase)) { return(new StorageTransientException(localizedString)); } if (exceptionType.Equals("Microsoft.Mapi.MapiExceptionSessionLimit", StringComparison.OrdinalIgnoreCase)) { Exception innerException = MapiExceptionHelper.SessionLimitException(localizedString); return(new TooManyObjectsOpenedException(localizedString, innerException)); } if (exceptionType.Equals("Microsoft.Mapi.MapiExceptionRpcServerTooBusy", StringComparison.OrdinalIgnoreCase)) { Exception innerException2 = MapiExceptionHelper.RpcServerTooBusyException(localizedString); return(new StorageTransientException(localizedString, innerException2)); } if (exceptionType.Equals("Microsoft.Mapi.MapiExceptionNotEnoughMemory", StringComparison.OrdinalIgnoreCase)) { Exception innerException3 = MapiExceptionHelper.NotEnoughMemoryException(localizedString); return(new StorageTransientException(localizedString, innerException3)); } if (exceptionType.Equals("Microsoft.Mapi.MapiExceptionMaxThreadsPerMdbExceeded", StringComparison.OrdinalIgnoreCase)) { Exception innerException4 = MapiExceptionHelper.MaxThreadsPerMdbExceededException(localizedString); return(new StorageTransientException(localizedString, innerException4)); } if (exceptionType.Equals("Microsoft.Mapi.MapiExceptionMaxThreadsPerSCTExceeded", StringComparison.OrdinalIgnoreCase)) { Exception innerException5 = MapiExceptionHelper.MaxThreadsPerSCTExceededException(localizedString); return(new StorageTransientException(localizedString, innerException5)); } if (exceptionType.Equals("Microsoft.Mapi.MapiExceptionUnconfigured", StringComparison.OrdinalIgnoreCase)) { Exception innerException6 = MapiExceptionHelper.UnconfiguredException(localizedString); return(new MailboxUnavailableException(localizedString, innerException6)); } if (exceptionType.Equals("Microsoft.Mapi.MapiExceptionUnknownUser", StringComparison.OrdinalIgnoreCase)) { Exception innerException7 = MapiExceptionHelper.UnknownUserException(localizedString); return(new StoragePermanentException(localizedString, innerException7)); } if (exceptionType.Equals("CannotGetSiteInfoException", StringComparison.OrdinalIgnoreCase)) { return(new StoragePermanentException(localizedString, new CannotGetSiteInfoException(localizedString))); } if (exceptionType.Equals("System.ArgumentException", StringComparison.OrdinalIgnoreCase)) { return(new ArgumentException(localizedString)); } if (exceptionType.Equals("Microsoft.Exchange.Data.Directory.ADTransientException", StringComparison.OrdinalIgnoreCase)) { return(new ADTransientException(localizedString)); } if (exceptionType.Equals("StoreDriverAgentTransientException", StringComparison.OrdinalIgnoreCase)) { return(new StoreDriverAgentTransientException(Strings.StoreDriverAgentTransientExceptionEmail)); } if (exceptionType.Equals("UnexpectedMessageCountException", StringComparison.OrdinalIgnoreCase)) { return(new UnexpectedMessageCountException("Fault injection.")); } if (exceptionType.Equals("Microsoft.Exchange.Data.Storage.MailboxInSiteFailoverException", StringComparison.OrdinalIgnoreCase)) { return(new MailboxInSiteFailoverException(localizedString)); } if (exceptionType.Equals("Microsoft.Mapi.MapiExceptionDuplicateDelivery", StringComparison.OrdinalIgnoreCase)) { return(new StoragePermanentException(localizedString, new MapiExceptionDuplicateDelivery(localizedString, 0, 0, null, null))); } if (exceptionType.Equals("Microsoft.Exchange.MailboxTransport.StoreDriverCommon.SmtpResponseException", StringComparison.OrdinalIgnoreCase)) { return(new SmtpResponseException(AckReason.ApprovalUpdateSuccess, "TestSource")); } if (exceptionType.Equals("Microsoft.Exchange.Data.Storage.MailboxInfoStaleException", StringComparison.OrdinalIgnoreCase)) { return(new MailboxInfoStaleException(localizedString, new DatabaseNotFoundException(localizedString))); } if (exceptionType.StartsWith("Microsoft.Mapi.MapiException", StringComparison.OrdinalIgnoreCase)) { return(FaultInjectionHelper.CreateXsoExceptionFromMapiException(exceptionType, localizedString)); } return(new ApplicationException(localizedString)); }