public void ReturnsNullWhenActiveWorkersExistAndIsNotTimedOut() { var job = new FakeJob { Name = "jobname", Timeout = TimeSpan.MaxValue }; var repository = new Mock<IWorkItemRepository>(); repository.Setup(r => r.GetLastWorkItem(job)).Returns(new Mock<IWorkItem>().Object); var coordinator = new WebFarmJobCoordinator(repository.Object); var unitOfWork = coordinator.ReserveWork("worker-id", job); Assert.Null(unitOfWork); }
public void ReturnsNullWhenActiveWorkersExistAndIsNotTimedOut() { var job = new FakeJob { Name = "jobname", Timeout = TimeSpan.MaxValue }; var repository = new Mock <IWorkItemRepository>(); repository.Setup(r => r.GetLastWorkItem(job)).Returns(new Mock <IWorkItem>().Object); var coordinator = new WebFarmJobCoordinator(repository.Object); var unitOfWork = coordinator.ReserveWork("worker-id", job); Assert.Null(unitOfWork); }
public void ReturnsUnitOfWorkWhenNoActiveWorkers() { var job = new FakeJob { Name = "jobname" }; var repository = new Mock <IWorkItemRepository>(); repository.Setup(r => r.GetLastWorkItem(job)).Returns((IWorkItem)null); repository.Setup(r => r.RunInTransaction(It.IsAny <Action>())).Callback <Action>(a => a()); repository.Setup(r => r.CreateWorkItem("worker-id", job)).Returns(123); var coordinator = new WebFarmJobCoordinator(repository.Object); var unitOfWork = coordinator.ReserveWork("worker-id", job); Assert.NotNull(unitOfWork); }
public void ReturnsUnitOfWorkWhenLastActiveWorkerIsTimedOut() { var job = new FakeJob { Name = "jobname", Timeout = TimeSpan.FromSeconds(10) }; var workItem = new Mock <IWorkItem>(); workItem.Setup(w => w.Id).Returns(1233); workItem.Setup(w => w.Started).Returns(DateTime.UtcNow.AddSeconds(-11)); var repository = new Mock <IWorkItemRepository>(); repository.Setup(r => r.GetLastWorkItem(job)).Returns(workItem.Object); repository.Setup(r => r.RunInTransaction(It.IsAny <Action>())).Callback <Action>(a => a()); repository.Setup(r => r.CreateWorkItem("worker-id", job)).Returns(123); var coordinator = new WebFarmJobCoordinator(repository.Object); var unitOfWork = coordinator.ReserveWork("worker-id", job); Assert.NotNull(unitOfWork); repository.Verify(r => r.SetWorkItemFailed(1233, It.IsAny <TimeoutException>())); }
public void ReturnsNullWhenActiveWorkersExistWithinTransaction() { var job = new FakeJob { Name = "jobname", Timeout = TimeSpan.MaxValue }; var complete = new Mock <IWorkItem>(); complete.Setup(wi => wi.Completed).Returns(DateTime.UtcNow); var active = new Mock <IWorkItem>(); active.Setup(wi => wi.Completed).Returns((DateTime?)null); var activeWorkerQueue = new Queue <IWorkItem>(new[] { complete.Object, active.Object }); var repository = new Mock <IWorkItemRepository>(); repository.Setup(r => r.GetLastWorkItem(job)).Returns(activeWorkerQueue.Dequeue); repository.Setup(r => r.RunInTransaction(It.IsAny <Action>())).Callback <Action>(a => a()); repository.Setup(r => r.CreateWorkItem("worker-id", job)).Throws(new InvalidOperationException()); var coordinator = new WebFarmJobCoordinator(repository.Object); var unitOfWork = coordinator.ReserveWork("worker-id", job); Assert.Null(unitOfWork); }
public void ReturnsNullWhenActiveWorkersExistWithinTransaction() { var job = new FakeJob { Name = "jobname", Timeout = TimeSpan.MaxValue }; var complete = new Mock<IWorkItem>(); complete.Setup(wi => wi.Completed).Returns(DateTime.UtcNow); var active = new Mock<IWorkItem>(); active.Setup(wi => wi.Completed).Returns((DateTime?)null); var activeWorkerQueue = new Queue<IWorkItem>(new[] { complete.Object, active.Object }); var repository = new Mock<IWorkItemRepository>(); repository.Setup(r => r.GetLastWorkItem(job)).Returns(activeWorkerQueue.Dequeue); repository.Setup(r => r.RunInTransaction(It.IsAny<Action>())).Callback<Action>(a => a()); repository.Setup(r => r.CreateWorkItem("worker-id", job)).Throws(new InvalidOperationException()); var coordinator = new WebFarmJobCoordinator(repository.Object); var unitOfWork = coordinator.ReserveWork("worker-id", job); Assert.Null(unitOfWork); }
public void ReturnsUnitOfWorkWhenNoActiveWorkers() { var job = new FakeJob { Name = "jobname" }; var repository = new Mock<IWorkItemRepository>(); repository.Setup(r => r.GetLastWorkItem(job)).Returns((IWorkItem)null); repository.Setup(r => r.RunInTransaction(It.IsAny<Action>())).Callback<Action>(a => a()); repository.Setup(r => r.CreateWorkItem("worker-id", job)).Returns(123); var coordinator = new WebFarmJobCoordinator(repository.Object); var unitOfWork = coordinator.ReserveWork("worker-id", job); Assert.NotNull(unitOfWork); }
public void ReturnsUnitOfWorkWhenLastActiveWorkerIsTimedOut() { var job = new FakeJob { Name = "jobname", Timeout = TimeSpan.FromSeconds(10) }; var workItem = new Mock<IWorkItem>(); workItem.Setup(w => w.Id).Returns(1233); workItem.Setup(w => w.Started).Returns(DateTime.UtcNow.AddSeconds(-11)); var repository = new Mock<IWorkItemRepository>(); repository.Setup(r => r.GetLastWorkItem(job)).Returns(workItem.Object); repository.Setup(r => r.RunInTransaction(It.IsAny<Action>())).Callback<Action>(a => a()); repository.Setup(r => r.CreateWorkItem("worker-id", job)).Returns(123); var coordinator = new WebFarmJobCoordinator(repository.Object); var unitOfWork = coordinator.ReserveWork("worker-id", job); Assert.NotNull(unitOfWork); repository.Verify(r => r.SetWorkItemFailed(1233, It.IsAny<TimeoutException>())); }