Ejemplo n.º 1
0
 /// <summary>
 /// Initializes a new instance of the AutoscaleProfile class.
 /// </summary>
 /// <param name="name">the name of the profile.</param>
 /// <param name="capacity">the number of instances that can be used
 /// during this profile.</param>
 /// <param name="rules">the collection of rules that provide the
 /// triggers and parameters for the scaling action. A maximum of 10
 /// rules can be specified.</param>
 /// <param name="fixedDate">the specific date-time for the profile.
 /// This element is not used if the Recurrence element is used.</param>
 /// <param name="recurrence">the repeating times at which this profile
 /// begins. This element is not used if the FixedDate element is
 /// used.</param>
 public AutoscaleProfile(string name, ScaleCapacity capacity, System.Collections.Generic.IList <ScaleRule> rules, TimeWindow fixedDate = default(TimeWindow), Recurrence recurrence = default(Recurrence))
 {
     Name       = name;
     Capacity   = capacity;
     Rules      = rules;
     FixedDate  = fixedDate;
     Recurrence = recurrence;
 }
        private static AutoscaleSetting CreateAutoscaleSetting(string resourceUri, string metricName, string metricNamespace)
        {
            var capacity = new ScaleCapacity
            {
                Default = "1",
                Maximum = "100",
                Minimum = "1"
            };

            var fixedDate = new TimeWindow()
            {
                End = DateTime.Parse("2014-04-16T21:06:11.7882792Z"),
                Start = DateTime.Parse("2014-04-15T21:06:11.7882792Z"),
                TimeZone = TimeZoneInfo.Utc.Id.ToString()
            };

            var recurrence = new Recurrence()
            {
                Frequency = RecurrenceFrequency.Week,
                Schedule = new RecurrentSchedule()
                {
                    Days = new List<string> { "Monday" },
                    Hours = new List<int> { 0 },
                    Minutes = new int[] { 10 },
                    TimeZone = "UTC-11"
                }
            };

            var rules = new ScaleRule[]
            {
                new ScaleRule()
                {
                    MetricTrigger = new MetricTrigger
                    {
                        MetricName = metricName,
                        MetricNamespace = metricNamespace,
                        MetricResourceUri = resourceUri,
                        Operator = ComparisonOperationType.GreaterThan,
                        Statistic = MetricStatisticType.Average,
                        Threshold = 80.0,
                        TimeAggregation = TimeAggregationType.Maximum,
                        TimeGrain = TimeSpan.FromMinutes(1),
                        TimeWindow = TimeSpan.FromHours(1)
                    },
                    ScaleAction = new ScaleAction
                    {
                        Cooldown = TimeSpan.FromMinutes(20),
                        Direction = ScaleDirection.Increase,
                        Type = ScaleType.ExactCount,
                        Value = "10"
                    }
                }
            };

            AutoscaleSetting setting = new AutoscaleSetting
            {
                Name = "setting1",
                TargetResourceUri = resourceUri,
                Enabled = true,
                Profiles = new AutoscaleProfile[]
                {
                    new AutoscaleProfile()
                    {
                        Name = "Profile1",
                        Capacity = capacity,
                        FixedDate = fixedDate,
                        Recurrence = null,
                        Rules = rules
                    },
                    new AutoscaleProfile()
                    {
                        Name = "Profile2",
                        Capacity = capacity,
                        FixedDate = null,
                        Recurrence = recurrence,
                        Rules = rules
                    }
                }
            };

            return setting;
        }
 private static void AreEqual(ScaleCapacity exp, ScaleCapacity act)
 {
     if (exp != null)
     {
         Assert.Equal(exp.Default, act.Default);
         Assert.Equal(exp.Maximum, act.Maximum);
         Assert.Equal(exp.Minimum, act.Minimum);
     }
 }