示例#1
0
        private bool IsTimeToConnect()
        {
            var connectThisWeek    = TimingProvider.ThisWeek(this.connectWeeklyTime, this.InstantNow());
            var disconnectThisWeek = TimingProvider.ThisWeek(this.disconnectWeeklyTime, this.InstantNow());

            var now = this.TimeNow();

            return(now.IsLessThan(disconnectThisWeek) || now.IsGreaterThan(connectThisWeek));
        }
示例#2
0
        internal void GetNextUtc_FromUnixEpoch_ReturnsExpectedResult()
        {
            // Arrange
            var utcNow = StubZonedDateTime.UnixEpoch();

            // Act
            var result = TimingProvider.GetNextUtc(new WeeklyTime(IsoDayOfWeek.Sunday, LocalTime.Midnight), utcNow.ToInstant());

            // Assert
            Assert.Equal(StubZonedDateTime.UnixEpoch() + Duration.FromDays(3), result);
        }
示例#3
0
        internal void GetDurationToNextUtc_WithUnixEpochPlusOneMinutes_ReturnsExpectedResult()
        {
            // Arrange
            var durationToNext = Duration.FromMinutes(1);
            var next           = StubZonedDateTime.UnixEpoch() + durationToNext;
            var now            = StubZonedDateTime.UnixEpoch().ToInstant();

            // Act
            var result = TimingProvider.GetDurationToNextUtc(next, now);

            // Assert
            Assert.Equal(durationToNext, result);
        }
示例#4
0
        internal void GetDelayToNextDuration_WithVariousDurations_ReturnsExpectedResult(
            int millisecondsInitialOffset,
            int millisecondsDuration,
            int millisecondsDelay)
        {
            // Arrange
            var utcNow   = StubZonedDateTime.UnixEpoch() + Duration.FromMilliseconds(millisecondsInitialOffset);
            var duration = Duration.FromMilliseconds(millisecondsDuration);

            // Act
            var result = TimingProvider.GetDelayToNextDuration(utcNow, duration);

            // Assert
            Assert.Equal(Duration.FromMilliseconds(millisecondsDelay), result);
        }
示例#5
0
        public void Sleep(int millis)
        {
#if !NETCOREAPP1_0
            TimingProvider.Sleep(millis);
#else
            // in order to avoid long sleeps (netcore1.0 doesn't provide ThreadInterruptException for sleep)
            const int sleepTimePerCycle = DEFAULT_SLEEP_TIME_MILLISECONDS;
            while (millis > 0)
            {
                TimingProvider.Sleep(Math.Min(sleepTimePerCycle, millis));
                millis -= sleepTimePerCycle;
                if (isShutdownRequested)
                {
                    break;
                }
            }
#endif
        }
示例#6
0
        internal void IsOutSideInterval_WithVariousDateTimes_ReturnsExpectedResult(
            int year,
            int month,
            int day,
            int hour,
            int minute,
            bool expected)
        {
            // Arrange
            var localUtc = new LocalDateTime(year, month, day, hour, minute);
            var utcNow   = new ZonedDateTime(localUtc, DateTimeZone.Utc, Offset.Zero);

            // Act
            var start  = new WeeklyTime(IsoDayOfWeek.Saturday, new LocalTime(20, 00));
            var end    = new WeeklyTime(IsoDayOfWeek.Sunday, new LocalTime(21, 00));
            var result = TimingProvider.IsOutsideInterval(start, end, utcNow.ToInstant());

            // Assert
            Assert.Equal(expected, result);
        }
示例#7
0
 public void InitializeTimeSync(long clusterTimeOffset, bool isTimeSyncSupported)
 {
     TimingProvider.Initialze(clusterTimeOffset, isTimeSyncSupported);
 }
示例#8
0
 public ITiming GetTiming()
 {
     return(TimingProvider.GetSelectedSource());
 }
示例#9
0
 public void Sleep(int millis)
 {
     TimingProvider.Sleep(millis);
 }