internal AutoPoolSpecification(string autoPoolIdPrefix, PoolLifetimeOption poolLifetimeOption, bool?keepAlive, PoolSpecification pool)
 {
     AutoPoolIdPrefix   = autoPoolIdPrefix;
     PoolLifetimeOption = poolLifetimeOption;
     KeepAlive          = keepAlive;
     Pool = pool;
 }
Пример #2
0
 /// <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);
Пример #4
0
        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;
 }