internal AutoPoolSpecification(string autoPoolIdPrefix, PoolLifetimeOption poolLifetimeOption, bool?keepAlive, PoolSpecification pool) { AutoPoolIdPrefix = autoPoolIdPrefix; PoolLifetimeOption = poolLifetimeOption; KeepAlive = keepAlive; Pool = pool; }
/// <summary> /// Initializes a new instance of the AutoPoolSpecification class. /// </summary> /// <param name="poolLifetimeOption">The minimum lifetime of created /// auto pools, and how multiple jobs on a schedule are assigned to /// pools.</param> /// <param name="autoPoolIdPrefix">A prefix to be added to the unique /// identifier when a pool is automatically created.</param> /// <param name="keepAlive">Whether to keep an auto pool alive after /// its lifetime expires.</param> /// <param name="pool">The pool specification for the auto /// pool.</param> public AutoPoolSpecification(PoolLifetimeOption poolLifetimeOption, string autoPoolIdPrefix = default(string), bool?keepAlive = default(bool?), PoolSpecification pool = default(PoolSpecification)) { AutoPoolIdPrefix = autoPoolIdPrefix; PoolLifetimeOption = poolLifetimeOption; KeepAlive = keepAlive; Pool = pool; }
public void TestAutoPoolSpecificationUnboundConstraints() { const string idPrefix = "Bar"; const bool keepAlive = false; const PoolLifetimeOption poolLifetimeOption = PoolLifetimeOption.Job; PoolSpecification poolSpecification = new PoolSpecification(); AutoPoolSpecification autoPoolSpecification = new AutoPoolSpecification(); //Properties should start out as their defaults Assert.Equal(default, autoPoolSpecification.AutoPoolIdPrefix);
internal static string ToSerializedValue(this PoolLifetimeOption value) { switch (value) { case PoolLifetimeOption.JobSchedule: return("jobschedule"); case PoolLifetimeOption.Job: return("job"); } return(null); }
public void TestAutoPoolSpecificationUnboundConstraints() { const string idPrefix = "Bar"; const bool keepAlive = false; const PoolLifetimeOption poolLifetimeOption = PoolLifetimeOption.Job; PoolSpecification poolSpecification = new PoolSpecification(); AutoPoolSpecification autoPoolSpecification = new AutoPoolSpecification(); //Properties should start out as their defaults Assert.Equal(default(string), autoPoolSpecification.AutoPoolIdPrefix); Assert.Equal(default(bool?), autoPoolSpecification.KeepAlive); Assert.Equal(default(PoolLifetimeOption), autoPoolSpecification.PoolLifetimeOption); Assert.Equal(default(PoolSpecification), autoPoolSpecification.PoolSpecification); Assert.False(((IModifiable)autoPoolSpecification).HasBeenModified); //Should be able to set all properties autoPoolSpecification.AutoPoolIdPrefix = idPrefix; autoPoolSpecification.KeepAlive = keepAlive; autoPoolSpecification.PoolLifetimeOption = poolLifetimeOption; autoPoolSpecification.PoolSpecification = poolSpecification; Assert.True(((IModifiable)autoPoolSpecification).HasBeenModified); Protocol.Models.AutoPoolSpecification protoAutoPoolSpecification = autoPoolSpecification.GetTransportObject(); ((IReadOnly)autoPoolSpecification).IsReadOnly = true; //Forces read-onlyness //After MarkReadOnly, the original object should be unsettable Assert.Throws <InvalidOperationException>(() => autoPoolSpecification.AutoPoolIdPrefix = "bar"); Assert.Throws <InvalidOperationException>(() => autoPoolSpecification.KeepAlive = false); Assert.Throws <InvalidOperationException>(() => autoPoolSpecification.PoolLifetimeOption = PoolLifetimeOption.JobSchedule); InvalidOperationException e = Assert.Throws <InvalidOperationException>(() => autoPoolSpecification.PoolSpecification = new PoolSpecification()); this.testOutputHelper.WriteLine(e.ToString()); //After GetProtocolObject, the child objects should be unreadable too Assert.Throws <InvalidOperationException>(() => poolSpecification.TaskSlotsPerNode = 4); //The original data should be on the protocol specification Assert.Equal(idPrefix, protoAutoPoolSpecification.AutoPoolIdPrefix); Assert.Equal(keepAlive, protoAutoPoolSpecification.KeepAlive); Assert.Equal(poolLifetimeOption, UtilitiesInternal.MapEnum <Protocol.Models.PoolLifetimeOption, PoolLifetimeOption>(protoAutoPoolSpecification.PoolLifetimeOption)); }
internal static AutoPoolSpecification DeserializeAutoPoolSpecification(JsonElement element) { string autoPoolIdPrefix = default; PoolLifetimeOption poolLifetimeOption = default; bool?keepAlive = default; PoolSpecification pool = default; foreach (var property in element.EnumerateObject()) { if (property.NameEquals("autoPoolIdPrefix")) { if (property.Value.ValueKind == JsonValueKind.Null) { continue; } autoPoolIdPrefix = property.Value.GetString(); continue; } if (property.NameEquals("poolLifetimeOption")) { poolLifetimeOption = property.Value.GetString().ToPoolLifetimeOption(); continue; } if (property.NameEquals("keepAlive")) { if (property.Value.ValueKind == JsonValueKind.Null) { continue; } keepAlive = property.Value.GetBoolean(); continue; } if (property.NameEquals("pool")) { if (property.Value.ValueKind == JsonValueKind.Null) { continue; } pool = PoolSpecification.DeserializePoolSpecification(property.Value); continue; } } return(new AutoPoolSpecification(autoPoolIdPrefix, poolLifetimeOption, keepAlive, pool)); }
void IUtf8JsonSerializable.Write(Utf8JsonWriter writer) { writer.WriteStartObject(); if (AutoPoolIdPrefix != null) { writer.WritePropertyName("autoPoolIdPrefix"); writer.WriteStringValue(AutoPoolIdPrefix); } writer.WritePropertyName("poolLifetimeOption"); writer.WriteStringValue(PoolLifetimeOption.ToSerialString()); if (KeepAlive != null) { writer.WritePropertyName("keepAlive"); writer.WriteBooleanValue(KeepAlive.Value); } if (Pool != null) { writer.WritePropertyName("pool"); writer.WriteObjectValue(Pool); } writer.WriteEndObject(); }
public static string ToSerialString(this PoolLifetimeOption value) => value switch {
public AutoPoolSpecification(PoolLifetimeOption poolLifetimeOption) { PoolLifetimeOption = poolLifetimeOption; }