예제 #1
0
        public void TestApplyRestartPolicyWithUnknownRuntimeStatus()
        {
            var manager = new RestartPolicyManager(MaxRestartCount, CoolOffTimeUnitInSeconds);
            Mock <IRuntimeModule> module = CreateMockRuntimeModule(RestartPolicy.Always, ModuleStatus.Unknown, 0, DateTime.MinValue);

            Assert.Throws <ArgumentException>(() => manager.ApplyRestartPolicy(new[] { module.Object }).ToList());
        }
예제 #2
0
        public void CoolOffPeriodTest(int restartCount, int expectedCoolOffPeriodSecs)
        {
            // Arrange
            var restartPolicyManager = new RestartPolicyManager(20, 10);

            // Act
            TimeSpan coolOffPeriod = restartPolicyManager.GetCoolOffPeriod(restartCount);

            // Assert
            Assert.Equal(expectedCoolOffPeriodSecs, coolOffPeriod.TotalSeconds);
        }
예제 #3
0
        public void TestApplyRestartPolicyWithWrongUtcTime()
        {
            // Arrange
            var      restartPolicy       = RestartPolicy.Always;
            var      runtimeStatus       = ModuleStatus.Backoff;
            int      restartCount        = 5;
            DateTime lastExitTime        = DateTime.UtcNow.Add(TimeSpan.FromHours(1));
            var      manager             = new RestartPolicyManager(MaxRestartCount, CoolOffTimeUnitInSeconds);
            Mock <IRuntimeModule> module = CreateMockRuntimeModule(restartPolicy, runtimeStatus, restartCount, lastExitTime);

            // Act
            IEnumerable <IRuntimeModule> result = manager.ApplyRestartPolicy(new[] { module.Object });

            // Assert
            Assert.Single(result);
        }
예제 #4
0
        public void TestApplyRestartPolicy(
            RestartPolicy restartPolicy,
            ModuleStatus runtimeStatus,
            int restartCount,
            Func <DateTime> getLastExitTimeUtc,
            bool apply)
        {
            // Arrange
            var manager = new RestartPolicyManager(MaxRestartCount, CoolOffTimeUnitInSeconds);
            Mock <IRuntimeModule> module = CreateMockRuntimeModule(restartPolicy, runtimeStatus, restartCount, getLastExitTimeUtc());

            // Act
            IEnumerable <IRuntimeModule> result = manager.ApplyRestartPolicy(new[] { module.Object });
            int count = result.Count();

            // Assert
            Assert.True(apply ? count == 1 : count == 0);
        }
예제 #5
0
        public void TestComputeModuleStatusFromRestartPolicy(ModuleStatus status, RestartPolicy restartPolicy, int restartCount, ModuleStatus expectedStatus)
        {
            var manager = new RestartPolicyManager(MaxRestartCount, CoolOffTimeUnitInSeconds);

            Assert.Equal(expectedStatus, manager.ComputeModuleStatusFromRestartPolicy(status, restartPolicy, restartCount, DateTime.MinValue));
        }
예제 #6
0
        public void TestComputeModuleStatusFromRestartPolicyInvalidStatus()
        {
            var manager = new RestartPolicyManager(MaxRestartCount, CoolOffTimeUnitInSeconds);

            Assert.Throws <ArgumentException>(() => manager.ComputeModuleStatusFromRestartPolicy(ModuleStatus.Unknown, RestartPolicy.Always, 0, DateTime.MinValue));
        }