예제 #1
0
        public void GetJobDetailsAsync_ServiceAvailable_JobReturned()
        {
            // Arrange
            var expected = new MockJob {
                Name = _jobName
            };
            var expectedTask = new Task <Job>(() => expected);

            expectedTask.Start();

            // VS reports a compiler error here but tests run fine...
            _mockDataService.Expect(ds => ds.RequestAsync <Job>(Arg.Is(URL.Job), Arg.Is(_url), Arg.Is(_userName), Arg.Is(_apiKey), Arg <object[]> .List.ContainsAll(_jobNameList)))
            .Return(expectedTask);
            //mockDataService.Expect(
            //    ds =>ds.RequestAsync<Node>(Arg.Is(URL.Api), Arg.Is(url), Arg.Is(userName), Arg.Is(apiKey),Arg<object[]>.Is.Anything));

            _targetServer = new JenkinsServer(_mockDataService, _url, _userName, _apiKey, _name);

            // Act
            var actualTask = _targetServer.GetJobDetailsAsync(_jobName);

            actualTask.Wait();
            var actual = actualTask.Result;

            // Assert
            Assert.AreEqual(actual, expected);
            _mockDataService.VerifyAllExpectations();
        }
예제 #2
0
        public void TestScheduleParallel()
        {
            Parallel.For(0, 100000, _ => MockJob.Publish());

            StopWorkers();

            Assert.AreEqual(100000, _counter.Value);
        }
예제 #3
0
 public void IncreaseKey()
 {
     var job = new MockJob { Name = "cooking" };
     var job2 = new MockJob { Name = "homework" };
     var job3 = new MockJob { Name = "hoover" };
     var priorityQueue = new MaxPriorityQueue<MockJob>(new[] { new KeyValuePair<double, MockJob>(2.0, job), new KeyValuePair<double, MockJob>(1.1, job2), new KeyValuePair<double, MockJob>(2.5, job3) });
     priorityQueue.IncreaseKey(1, 3.0);
     Assert.AreEqual("homework", priorityQueue.Maximum().Name,"#E8");
 }
예제 #4
0
 public void Insert()
 {
     var job = new MockJob { Name = "cooking" };
     var job2 = new MockJob { Name = "homework" };
     var job3 = new MockJob { Name = "hoover" };
     var priorityQueue = new MaxPriorityQueue<MockJob>(new[] { new KeyValuePair<double, MockJob>(2.0, job), new KeyValuePair<double, MockJob>(1.1, job2)});
     priorityQueue.Insert(new KeyValuePair<double, MockJob>(2.5, job3) );
     Assert.AreEqual(3, priorityQueue.Count, "#E9");
     Assert.AreEqual("hoover", priorityQueue.Maximum().Name, "#E10");
 }
예제 #5
0
        public void TestScheduleInBatch()
        {
            JobBatch.Do(() =>
            {
                for (var i = 0; i < 100000; i++)
                {
                    MockJob.Publish();
                }
            });

            StopWorkers();

            Assert.AreEqual(100000, _counter.Value);
        }
예제 #6
0
        public void ExtractMax()
        {
            var job = new MockJob { Name = "cooking" };
            var priorityQueue = new MaxPriorityQueue<MockJob>(new[] { new KeyValuePair<double, MockJob>(2.0, job) });
            Assert.AreEqual(job.Name, priorityQueue.ExtractMax().Name, "#E2");
            Assert.AreEqual(0, priorityQueue.Count, "#E3");

            var job2 = new MockJob { Name = "homework" };
            var job3 = new MockJob { Name = "hoover" };
            priorityQueue = new MaxPriorityQueue<MockJob>(new[] { new KeyValuePair<double, MockJob>(2.0, job), new KeyValuePair<double, MockJob>(1.1, job2), new KeyValuePair<double, MockJob>(2.5, job3) });
            Assert.AreEqual("hoover", priorityQueue.ExtractMax().Name, "#E4");
            Assert.AreEqual(2, priorityQueue.Count,"#E5");
            Assert.AreEqual("cooking",priorityQueue.ExtractMax().Name,"#E6");
            Assert.AreEqual(1, priorityQueue.Count, "#E7");
        }
예제 #7
0
        public void TestCronJobWithEndTime()
        {
            var startTime = new DateTime(2021, 9, 5, 0, 0, 0, DateTimeKind.Utc);

            MockJob.PublishPeriodic("test_job", "0/2 * * ? * *", null, startTime, startTime.AddSeconds(4));

            _timeProvider.CurrentTimeUtc = startTime;

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

            _timeProvider.CurrentTimeUtc = startTime.AddMilliseconds(1000);

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

            _timeProvider.CurrentTimeUtc = startTime.AddMilliseconds(2000);

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

            _timeProvider.CurrentTimeUtc = startTime.AddMilliseconds(3000);

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

            _timeProvider.CurrentTimeUtc = startTime.AddMilliseconds(4000);

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

            _timeProvider.CurrentTimeUtc = startTime.AddMilliseconds(5000);

            StopWorkers();
            Assert.AreEqual(2, _counter.Value);
        }
예제 #8
0
        public void TestPeriodicJob()
        {
            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);
            StartWorkers();

            _timeProvider.CurrentTimeUtc = startTime.AddMilliseconds(1999);

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

            _timeProvider.CurrentTimeUtc = startTime.AddMilliseconds(2000);

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

            _timeProvider.CurrentTimeUtc = startTime.AddMilliseconds(2999);

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

            _timeProvider.CurrentTimeUtc = startTime.AddMilliseconds(3000);

            StopWorkers();
            Assert.AreEqual(3, _counter.Value);
        }
예제 #9
0
        public void GetJobDetails_ServiceAvailable_JobReturned()
        {
            // Arrange
            var expected = new MockJob {
                Name = _jobName
            };
            var expectedTask = new Task <Job>(() => expected);

            expectedTask.Start();

            // VS reports a compiler error here but tests run fine...
            _mockDataService.Expect(ds => ds.RequestAsync <Job>(Arg.Is(URL.Job), Arg.Is(_url), Arg.Is(_userName), Arg.Is(_apiKey), Arg <object[]> .List.ContainsAll(_jobNameList)))
            .Return(expectedTask);

            // Act
            var actual = _targetServer.GetJobDetails(_jobName);

            // Assert
            Assert.AreEqual(actual, expected);
            _mockDataService.VerifyAllExpectations();
        }
예제 #10
0
        public void RunJobs()
        {
            JobRunner[] runners = new JobRunner[] { new JobRunner(), new JobRunner(numProcessors: 1) };
            foreach (var runner in runners)
            {
                MockJob job1;
                MockJob job2;
                MockJob job3;

                var jobs1 = new JobManager();
                jobs1.Add(job1 = new MockJob());
                jobs1.Add(job2 = new MockJob());
                runner.Add(jobs1);

                var jobs2 = new JobManager();
                jobs2.Add(job3 = new MockJob());
                runner.Add(jobs2);

                runner.Run(wait: true);
                Assert.IsTrue(job1.HasRun);
                Assert.IsTrue(job2.HasRun);
                Assert.IsTrue(job3.HasRun);
            }
        }
예제 #11
0
        public void Roundtrip()
        {
            MockJob job = new MockJob() { Id = Guid.NewGuid() };
            JobDescriptor desc = factory.CreateDescriptor(job);
            JToken token;

            Assert.That(desc, Is.Not.Null);
            Assert.That(desc.Job, Is.EqualTo("MockJob"));
            Assert.That(desc.Properties, Is.Not.Null.And.Count.EqualTo(1));
            Assert.That(desc.Properties.TryGetValue("Id", out token), Is.True);
            Assert.That(token, Is.TypeOf<JValue>().And.Property("Type").EqualTo(JTokenType.Guid));
            Assert.That(token.ToObject<Guid>(), Is.EqualTo(job.Id));
            Assert.That(desc.QueueMessageId, Is.Null);

            IJob job2 = factory.CreateJob(desc);
            Assert.That(job2, Is.Not.Null.And.TypeOf<MockJob>());
            MockJob mockJob2 = (MockJob)job2;
            Assert.That(mockJob2.Id, Is.EqualTo(job.Id));
        }