public static HealthEvaluation CreateRandomHealthEvaluation(this Random random) { var chooseEvent = random.Next() % 3 == 0; HealthEvaluationKind kind = chooseEvent ? HealthEvaluationKind.Event : CreateRandom <HealthEvaluationKind>(random); Type targetType = HealthEvaluation.GetDerivedHealthEvaluationClassTypeFromKind(kind); return((HealthEvaluation)random.CreateRandom(targetType)); }
/// <summary> /// Gets the object from Json properties. /// </summary> /// <param name="reader">The <see cref="T: Newtonsoft.Json.JsonReader" /> to read from.</param> /// <returns>The object Value.</returns> internal static HealthEvaluation GetFromJsonProperties(JsonReader reader) { HealthEvaluation obj = null; var propName = reader.ReadPropertyName(); if (!propName.Equals("Kind", StringComparison.Ordinal)) { throw new JsonReaderException($"Incorrect discriminator property name {propName}, Expected discriminator property name is Kind."); } var propValue = reader.ReadValueAsString(); if (propValue.Equals("Application", StringComparison.Ordinal)) { obj = ApplicationHealthEvaluationConverter.GetFromJsonProperties(reader); } else if (propValue.Equals("Applications", StringComparison.Ordinal)) { obj = ApplicationsHealthEvaluationConverter.GetFromJsonProperties(reader); } else if (propValue.Equals("ApplicationTypeApplications", StringComparison.Ordinal)) { obj = ApplicationTypeApplicationsHealthEvaluationConverter.GetFromJsonProperties(reader); } else if (propValue.Equals("DeltaNodesCheck", StringComparison.Ordinal)) { obj = DeltaNodesCheckHealthEvaluationConverter.GetFromJsonProperties(reader); } else if (propValue.Equals("DeployedApplication", StringComparison.Ordinal)) { obj = DeployedApplicationHealthEvaluationConverter.GetFromJsonProperties(reader); } else if (propValue.Equals("DeployedApplications", StringComparison.Ordinal)) { obj = DeployedApplicationsHealthEvaluationConverter.GetFromJsonProperties(reader); } else if (propValue.Equals("DeployedServicePackage", StringComparison.Ordinal)) { obj = DeployedServicePackageHealthEvaluationConverter.GetFromJsonProperties(reader); } else if (propValue.Equals("DeployedServicePackages", StringComparison.Ordinal)) { obj = DeployedServicePackagesHealthEvaluationConverter.GetFromJsonProperties(reader); } else if (propValue.Equals("Event", StringComparison.Ordinal)) { obj = EventHealthEvaluationConverter.GetFromJsonProperties(reader); } else if (propValue.Equals("Node", StringComparison.Ordinal)) { obj = NodeHealthEvaluationConverter.GetFromJsonProperties(reader); } else if (propValue.Equals("Nodes", StringComparison.Ordinal)) { obj = NodesHealthEvaluationConverter.GetFromJsonProperties(reader); } else if (propValue.Equals("Partition", StringComparison.Ordinal)) { obj = PartitionHealthEvaluationConverter.GetFromJsonProperties(reader); } else if (propValue.Equals("Partitions", StringComparison.Ordinal)) { obj = PartitionsHealthEvaluationConverter.GetFromJsonProperties(reader); } else if (propValue.Equals("Replica", StringComparison.Ordinal)) { obj = ReplicaHealthEvaluationConverter.GetFromJsonProperties(reader); } else if (propValue.Equals("Replicas", StringComparison.Ordinal)) { obj = ReplicasHealthEvaluationConverter.GetFromJsonProperties(reader); } else if (propValue.Equals("Service", StringComparison.Ordinal)) { obj = ServiceHealthEvaluationConverter.GetFromJsonProperties(reader); } else if (propValue.Equals("Services", StringComparison.Ordinal)) { obj = ServicesHealthEvaluationConverter.GetFromJsonProperties(reader); } else if (propValue.Equals("SystemApplication", StringComparison.Ordinal)) { obj = SystemApplicationHealthEvaluationConverter.GetFromJsonProperties(reader); } else if (propValue.Equals("UpgradeDomainDeltaNodesCheck", StringComparison.Ordinal)) { obj = UpgradeDomainDeltaNodesCheckHealthEvaluationConverter.GetFromJsonProperties(reader); } else if (propValue.Equals("UpgradeDomainNodes", StringComparison.Ordinal)) { obj = UpgradeDomainNodesHealthEvaluationConverter.GetFromJsonProperties(reader); } else { throw new InvalidOperationException("Unknown Kind."); } return(obj); }
/// <summary> /// Serializes the object to JSON. /// </summary> /// <param name="writer">The <see cref="T: Newtonsoft.Json.JsonWriter" /> to write to.</param> /// <param name="obj">The object to serialize to JSON.</param> internal static void Serialize(JsonWriter writer, HealthEvaluation obj) { var kind = obj.Kind; if (kind.Equals(HealthEvaluationKind.Application)) { ApplicationHealthEvaluationConverter.Serialize(writer, (ApplicationHealthEvaluation)obj); } else if (kind.Equals(HealthEvaluationKind.Applications)) { ApplicationsHealthEvaluationConverter.Serialize(writer, (ApplicationsHealthEvaluation)obj); } else if (kind.Equals(HealthEvaluationKind.ApplicationTypeApplications)) { ApplicationTypeApplicationsHealthEvaluationConverter.Serialize(writer, (ApplicationTypeApplicationsHealthEvaluation)obj); } else if (kind.Equals(HealthEvaluationKind.DeltaNodesCheck)) { DeltaNodesCheckHealthEvaluationConverter.Serialize(writer, (DeltaNodesCheckHealthEvaluation)obj); } else if (kind.Equals(HealthEvaluationKind.DeployedApplication)) { DeployedApplicationHealthEvaluationConverter.Serialize(writer, (DeployedApplicationHealthEvaluation)obj); } else if (kind.Equals(HealthEvaluationKind.DeployedApplications)) { DeployedApplicationsHealthEvaluationConverter.Serialize(writer, (DeployedApplicationsHealthEvaluation)obj); } else if (kind.Equals(HealthEvaluationKind.DeployedServicePackage)) { DeployedServicePackageHealthEvaluationConverter.Serialize(writer, (DeployedServicePackageHealthEvaluation)obj); } else if (kind.Equals(HealthEvaluationKind.DeployedServicePackages)) { DeployedServicePackagesHealthEvaluationConverter.Serialize(writer, (DeployedServicePackagesHealthEvaluation)obj); } else if (kind.Equals(HealthEvaluationKind.Event)) { EventHealthEvaluationConverter.Serialize(writer, (EventHealthEvaluation)obj); } else if (kind.Equals(HealthEvaluationKind.Node)) { NodeHealthEvaluationConverter.Serialize(writer, (NodeHealthEvaluation)obj); } else if (kind.Equals(HealthEvaluationKind.Nodes)) { NodesHealthEvaluationConverter.Serialize(writer, (NodesHealthEvaluation)obj); } else if (kind.Equals(HealthEvaluationKind.Partition)) { PartitionHealthEvaluationConverter.Serialize(writer, (PartitionHealthEvaluation)obj); } else if (kind.Equals(HealthEvaluationKind.Partitions)) { PartitionsHealthEvaluationConverter.Serialize(writer, (PartitionsHealthEvaluation)obj); } else if (kind.Equals(HealthEvaluationKind.Replica)) { ReplicaHealthEvaluationConverter.Serialize(writer, (ReplicaHealthEvaluation)obj); } else if (kind.Equals(HealthEvaluationKind.Replicas)) { ReplicasHealthEvaluationConverter.Serialize(writer, (ReplicasHealthEvaluation)obj); } else if (kind.Equals(HealthEvaluationKind.Service)) { ServiceHealthEvaluationConverter.Serialize(writer, (ServiceHealthEvaluation)obj); } else if (kind.Equals(HealthEvaluationKind.Services)) { ServicesHealthEvaluationConverter.Serialize(writer, (ServicesHealthEvaluation)obj); } else if (kind.Equals(HealthEvaluationKind.SystemApplication)) { SystemApplicationHealthEvaluationConverter.Serialize(writer, (SystemApplicationHealthEvaluation)obj); } else if (kind.Equals(HealthEvaluationKind.UpgradeDomainDeltaNodesCheck)) { UpgradeDomainDeltaNodesCheckHealthEvaluationConverter.Serialize(writer, (UpgradeDomainDeltaNodesCheckHealthEvaluation)obj); } else if (kind.Equals(HealthEvaluationKind.UpgradeDomainNodes)) { UpgradeDomainNodesHealthEvaluationConverter.Serialize(writer, (UpgradeDomainNodesHealthEvaluation)obj); } else { throw new InvalidOperationException("Unknown Kind."); } }
internal static FabricUpgradeProgress CreateFromNative(NativeClient.IFabricUpgradeProgressResult3 nativeResult) { if (nativeResult == null) { return(null); } var progress = new FabricUpgradeProgress(nativeResult); progress.TargetCodeVersion = NativeTypes.FromNativeString(nativeResult.get_TargetCodeVersion()); progress.TargetConfigVersion = NativeTypes.FromNativeString(nativeResult.get_TargetConfigVersion()); switch (nativeResult.get_UpgradeState()) { case NativeTypes.FABRIC_UPGRADE_STATE.FABRIC_UPGRADE_STATE_ROLLBACK_IN_PROGRESS: case NativeTypes.FABRIC_UPGRADE_STATE.FABRIC_UPGRADE_STATE_ROLLBACK_COMPLETED: case NativeTypes.FABRIC_UPGRADE_STATE.FABRIC_UPGRADE_STATE_ROLLBACK_PENDING: case NativeTypes.FABRIC_UPGRADE_STATE.FABRIC_UPGRADE_STATE_ROLLFORWARD_PENDING: case NativeTypes.FABRIC_UPGRADE_STATE.FABRIC_UPGRADE_STATE_ROLLFORWARD_IN_PROGRESS: case NativeTypes.FABRIC_UPGRADE_STATE.FABRIC_UPGRADE_STATE_ROLLFORWARD_COMPLETED: case NativeTypes.FABRIC_UPGRADE_STATE.FABRIC_UPGRADE_STATE_FAILED: progress.UpgradeState = (FabricUpgradeState)nativeResult.get_UpgradeState(); break; default: progress.UpgradeState = FabricUpgradeState.Invalid; break; } uint count = 0; IntPtr pointer = nativeResult.GetUpgradeDomains(out count); progress.UpgradeDomains = UpgradeDomainHelper.CreateUpgradeDomainsFromNative(count, pointer); switch (nativeResult.get_RollingUpgradeMode()) { case NativeTypes.FABRIC_ROLLING_UPGRADE_MODE.FABRIC_ROLLING_UPGRADE_MODE_UNMONITORED_AUTO: case NativeTypes.FABRIC_ROLLING_UPGRADE_MODE.FABRIC_ROLLING_UPGRADE_MODE_UNMONITORED_MANUAL: case NativeTypes.FABRIC_ROLLING_UPGRADE_MODE.FABRIC_ROLLING_UPGRADE_MODE_MONITORED: progress.RollingUpgradeMode = (RollingUpgradeMode)nativeResult.get_RollingUpgradeMode(); break; default: progress.RollingUpgradeMode = RollingUpgradeMode.Invalid; break; } progress.NextUpgradeDomain = NativeTypes.FromNativeString(nativeResult.get_NextUpgradeDomain()); IntPtr upgradeProgressPtr = nativeResult.get_UpgradeProgress(); if (upgradeProgressPtr != IntPtr.Zero) { unsafe { var castedProgressPtr = (NativeTypes.FABRIC_UPGRADE_PROGRESS *)upgradeProgressPtr; progress.UpgradeDescription = FabricUpgradeDescription.FromNative(castedProgressPtr->UpgradeDescription); progress.UpgradeDuration = TimeSpan.FromSeconds(castedProgressPtr->UpgradeDurationInSeconds); progress.CurrentUpgradeDomainDuration = TimeSpan.FromSeconds(castedProgressPtr->CurrentUpgradeDomainDurationInSeconds); progress.UnhealthyEvaluations = HealthEvaluation.FromNativeList(castedProgressPtr->UnhealthyEvaluations); progress.CurrentUpgradeDomainProgress = UpgradeDomainProgress.FromNative(castedProgressPtr->CurrentUpgradeDomainProgress); if (castedProgressPtr->Reserved != IntPtr.Zero) { var castedProgressEx1Ptr = (NativeTypes.FABRIC_UPGRADE_PROGRESS_EX1 *)castedProgressPtr->Reserved; progress.StartTimestampUtc = NativeTypes.FromNullableNativeFILETIME(castedProgressEx1Ptr->StartTimestampUtc); progress.FailureTimestampUtc = NativeTypes.FromNullableNativeFILETIME(castedProgressEx1Ptr->FailureTimestampUtc); if (progress.FailureTimestampUtc.HasValue) { switch (castedProgressEx1Ptr->FailureReason) { case NativeTypes.FABRIC_UPGRADE_FAILURE_REASON.FABRIC_UPGRADE_FAILURE_REASON_INTERRUPTED: case NativeTypes.FABRIC_UPGRADE_FAILURE_REASON.FABRIC_UPGRADE_FAILURE_REASON_HEALTH_CHECK: case NativeTypes.FABRIC_UPGRADE_FAILURE_REASON.FABRIC_UPGRADE_FAILURE_REASON_UPGRADE_DOMAIN_TIMEOUT: case NativeTypes.FABRIC_UPGRADE_FAILURE_REASON.FABRIC_UPGRADE_FAILURE_REASON_OVERALL_UPGRADE_TIMEOUT: case NativeTypes.FABRIC_UPGRADE_FAILURE_REASON.FABRIC_UPGRADE_FAILURE_REASON_PROCESSING_FAILURE: progress.FailureReason = (UpgradeFailureReason)castedProgressEx1Ptr->FailureReason; break; default: progress.FailureReason = UpgradeFailureReason.None; break; } progress.UpgradeDomainProgressAtFailure = UpgradeDomainProgress.FromNative( castedProgressEx1Ptr->UpgradeDomainProgressAtFailure); } } } } GC.KeepAlive(nativeResult); return(progress); }
internal static unsafe ComposeDeploymentUpgradeProgress CreateFromNative( NativeClient.IFabricComposeDeploymentUpgradeProgressResult nativeResult) { ComposeDeploymentUpgradeProgress result = new ComposeDeploymentUpgradeProgress(); IntPtr upgradeProgressPtr = nativeResult.get_UpgradeProgress(); if (upgradeProgressPtr != IntPtr.Zero) { var castedUpgradeProgressPtr = (NativeTypes.FABRIC_COMPOSE_DEPLOYMENT_UPGRADE_PROGRESS *)upgradeProgressPtr; result.ApplicationName = NativeTypes.FromNativeUri(castedUpgradeProgressPtr->ApplicationName); result.DeploymentName = NativeTypes.FromNativeString(castedUpgradeProgressPtr->DeploymentName); // Upgrade policy if (castedUpgradeProgressPtr->UpgradePolicyDescription != IntPtr.Zero) { RollingUpgradePolicyDescription policy = null; var castedPolicyPtr = (NativeTypes.FABRIC_ROLLING_UPGRADE_POLICY_DESCRIPTION *)castedUpgradeProgressPtr->UpgradePolicyDescription; if (castedPolicyPtr->RollingUpgradeMode == NativeTypes.FABRIC_ROLLING_UPGRADE_MODE.FABRIC_ROLLING_UPGRADE_MODE_MONITORED) { policy = MonitoredRollingApplicationUpgradePolicyDescription.FromNative(castedUpgradeProgressPtr->UpgradePolicyDescription); } else { policy = RollingUpgradePolicyDescription.FromNative(castedUpgradeProgressPtr->UpgradePolicyDescription); } result.UpgradePolicyDescription = policy; } result.TargetApplicationTypeVersion = NativeTypes.FromNativeString(castedUpgradeProgressPtr->TargetApplicationTypeVersion); switch (castedUpgradeProgressPtr->UpgradeState) { case NativeTypes.FABRIC_COMPOSE_DEPLOYMENT_UPGRADE_STATE.FABRIC_COMPOSE_DEPLOYMENT_UPGRADE_STATE_PROVISIONING_TARGET: case NativeTypes.FABRIC_COMPOSE_DEPLOYMENT_UPGRADE_STATE.FABRIC_COMPOSE_DEPLOYMENT_UPGRADE_STATE_ROLLING_FORWARD_IN_PROGRESS: case NativeTypes.FABRIC_COMPOSE_DEPLOYMENT_UPGRADE_STATE.FABRIC_COMPOSE_DEPLOYMENT_UPGRADE_STATE_ROLLING_FORWARD_PENDING: case NativeTypes.FABRIC_COMPOSE_DEPLOYMENT_UPGRADE_STATE.FABRIC_COMPOSE_DEPLOYMENT_UPGRADE_STATE_UNPROVISIONING_CURRENT: case NativeTypes.FABRIC_COMPOSE_DEPLOYMENT_UPGRADE_STATE.FABRIC_COMPOSE_DEPLOYMENT_UPGRADE_STATE_ROLLING_FORWARD_COMPLETED: case NativeTypes.FABRIC_COMPOSE_DEPLOYMENT_UPGRADE_STATE.FABRIC_COMPOSE_DEPLOYMENT_UPGRADE_STATE_ROLLING_BACK_IN_PROGRESS: case NativeTypes.FABRIC_COMPOSE_DEPLOYMENT_UPGRADE_STATE.FABRIC_COMPOSE_DEPLOYMENT_UPGRADE_STATE_UNPROVISIONING_TARGET: case NativeTypes.FABRIC_COMPOSE_DEPLOYMENT_UPGRADE_STATE.FABRIC_COMPOSE_DEPLOYMENT_UPGRADE_STATE_ROLLING_BACK_COMPLETED: case NativeTypes.FABRIC_COMPOSE_DEPLOYMENT_UPGRADE_STATE.FABRIC_COMPOSE_DEPLOYMENT_UPGRADE_STATE_FAILED: result.UpgradeState = (ComposeDeploymentUpgradeState)castedUpgradeProgressPtr->UpgradeState; break; default: result.UpgradeState = ComposeDeploymentUpgradeState.Invalid; break; } result.NextUpgradeDomain = NativeTypes.FromNativeString(castedUpgradeProgressPtr->NextUpgradeDomain); if (castedUpgradeProgressPtr->UpgradeDomains != IntPtr.Zero) { var upgradeDomainsPtr = (NativeTypes.FABRIC_UPGRADE_DOMAIN_STATUS_DESCRIPTION_LIST *)castedUpgradeProgressPtr->UpgradeDomains; uint count = upgradeDomainsPtr->Count; result.UpgradeDomains = Interop.InteropHelpers.UpgradeDomainHelper.CreateUpgradeDomainsFromNative(count, upgradeDomainsPtr->Items); } result.UpgradeDuration = TimeSpan.FromSeconds(castedUpgradeProgressPtr->UpgradeDurationInSeconds); result.CurrentUpgradeDomainDuration = TimeSpan.FromSeconds(castedUpgradeProgressPtr->CurrentUpgradeDomainDurationInSeconds); result.ApplicationUnhealthyEvaluations = HealthEvaluation.FromNativeList(castedUpgradeProgressPtr->ApplicationUnhealthyEvaluations); result.CurrentUpgradeDomainProgress = UpgradeDomainProgress.FromNative(castedUpgradeProgressPtr->CurrentUpgradeDomainProgress); result.StartTimestampUtc = NativeTypes.FromNullableNativeFILETIME(castedUpgradeProgressPtr->StartTimestampUtc); result.FailureTimestampUtc = NativeTypes.FromNullableNativeFILETIME(castedUpgradeProgressPtr->FailureTimestampUtc); if (result.FailureTimestampUtc.HasValue) { switch (castedUpgradeProgressPtr->FailureReason) { case NativeTypes.FABRIC_UPGRADE_FAILURE_REASON.FABRIC_UPGRADE_FAILURE_REASON_INTERRUPTED: case NativeTypes.FABRIC_UPGRADE_FAILURE_REASON.FABRIC_UPGRADE_FAILURE_REASON_HEALTH_CHECK: case NativeTypes.FABRIC_UPGRADE_FAILURE_REASON.FABRIC_UPGRADE_FAILURE_REASON_UPGRADE_DOMAIN_TIMEOUT: case NativeTypes.FABRIC_UPGRADE_FAILURE_REASON.FABRIC_UPGRADE_FAILURE_REASON_OVERALL_UPGRADE_TIMEOUT: case NativeTypes.FABRIC_UPGRADE_FAILURE_REASON.FABRIC_UPGRADE_FAILURE_REASON_PROCESSING_FAILURE: result.FailureReason = (UpgradeFailureReason)castedUpgradeProgressPtr->FailureReason; break; default: result.FailureReason = UpgradeFailureReason.None; break; } result.UpgradeDomainProgressAtFailure = UpgradeDomainProgress.FromNative(castedUpgradeProgressPtr->UpgradeDomainProgressAtFailure); } result.ApplicationUpgradeStatusDetails = NativeTypes.FromNativeString(castedUpgradeProgressPtr->ApplicationUpgradeStatusDetails); result.UpgradeStatusDetails = NativeTypes.FromNativeString(castedUpgradeProgressPtr->UpgradeStatusDetails); } return(result); }
public void HealthEvaluationSerializationTest() { HealthEvaluation item1 = this.random.CreateRandom <EventHealthEvaluation>(); RecreateObjectAndCompare(item1, this.Serializer, typeof(HealthEvaluation)); }