예제 #1
0
        public void TestPublishWithDelay()
        {
            MockJobInc.Publish(true, TimeSpan.FromSeconds(2));
            MockJobInc.Publish(true, TimeSpan.FromSeconds(2));

            _timeProvider.CurrentTimeUtc = DateTime.UtcNow;
            //FireActiveTimers();

            StopWorkers();
            Assert.AreEqual(0, _counter.Value);
            StartWorkers();

            _timeProvider.AdvanceTime(1000);
            //FireActiveTimers();

            StopWorkers();
            Assert.AreEqual(0, _counter.Value);
            StartWorkers();

            _timeProvider.AdvanceTime(1000);
            //FireActiveTimers();

            StopWorkers();
            Assert.AreEqual(2, _counter.Value);
        }
예제 #2
0
        public void TestPublishInc()
        {
            MockJobInc.Publish(true);

            StopWorkers();

            Assert.AreEqual(1, _counter.Value);
        }
예제 #3
0
        public void TestPublishDec()
        {
            MockJobInc.Publish(false);

            StopWorkers();

            Assert.AreEqual(-1, _counter.Value);
        }
예제 #4
0
        public void TestCanceledAsyncJobs()
        {
            MockJobInc.Publish(true);
            MockAsyncJobCanceled.Publish();

            StopWorkers();

            Assert.AreEqual(1, _counter.Value);
            Assert.AreEqual(1, _messages.GetCount());
        }
예제 #5
0
        public void TestFailedJobs()
        {
            MockJobInc.Publish(true);
            MockJobFailed.Publish(true);

            StopWorkers();

            Assert.AreEqual(1, _counter.Value);
            Assert.AreEqual(1, _messages.GetCount());
        }
예제 #6
0
        public void TestLongRunningImmediateJob()
        {
            MockJobInc.Publish(true, 10_000);

            var totalLongRunning = 0;

            for (var i = 0; i < _settings.LongRunningWorkersCount; i++)
            {
                totalLongRunning +=
                    _messages.GetCount(string.Format(_settings.LongRunningQueueNameTemplate, i));
            }

            Assert.AreEqual(1, totalLongRunning);
        }
예제 #7
0
        public void TestPeriodicJobCancelling()
        {
            var startTime = new DateTime(2021, 9, 5, 0, 0, 0, DateTimeKind.Utc);

            MockJob.PublishPeriodic("test_job", 1, startTime);

            _timeProvider.CurrentTimeUtc = startTime;

            StopWorkers();
            Assert.AreEqual(0, _counter.Value);
            StartWorkers();

            _timeProvider.CurrentTimeUtc = startTime.AddMilliseconds(1000);

            StopWorkers();
            Assert.AreEqual(1, _counter.Value);
            MockJobInc.CancelPeriodic("test_job");
            StartWorkers();

            _timeProvider.CurrentTimeUtc = startTime.AddMilliseconds(2000);

            StopWorkers();
            Assert.AreEqual(1, _counter.Value);
        }