public void StartJobShouldReturnBadRequestWhenStartJobIdDoesNotMatchPrepareJobId()
        {
            _workerWrapper = new WorkerWrapper(new ShortRunningInvokeHandlerFake(),
                                               _nodeConfigurationFake,
                                               _nodeStartupNotification,
                                               _pingToManagerFake,
                                               _sendJobDoneTimer,
                                               _sendJobCanceledTimer,
                                               _sendJobFaultedTimer,
                                               _trySendJobDetailToManagerTimer,
                                               _jobDetailSender);

            _nodeController = new NodeController(_workerWrapper)
            {
                Request       = new HttpRequestMessage(),
                Configuration = new HttpConfiguration()
            };

            _nodeController.PrepareToStartJob(_jobQueueItemEntity);

            var actionResult = _nodeController.StartJob(Guid.NewGuid());

            Assert.IsTrue(actionResult.ExecuteAsync(new CancellationToken())
                          .Result.StatusCode ==
                          HttpStatusCode.BadRequest);
        }
        public void CancelJobShouldReturnOkWhenSuccessful()
        {
            _workerWrapper = new WorkerWrapper(new LongRunningInvokeHandlerFake(),
                                               _nodeConfigurationFake,
                                               _nodeStartupNotification,
                                               _pingToManagerFake,
                                               _sendJobDoneTimer,
                                               _sendJobCanceledTimer,
                                               _sendJobFaultedTimer,
                                               _trySendJobDetailToManagerTimer,
                                               _jobDetailSender);

            _nodeController = new NodeController(_workerWrapper)
            {
                Request = new HttpRequestMessage()
            };

            _nodeController.PrepareToStartJob(_jobQueueItemEntity);
            _nodeController.StartJob(_jobQueueItemEntity.JobId);

            while (!_workerWrapper.IsWorking)
            {
                Thread.Sleep(200);
            }
            var actionResult = _nodeController.TryCancelJob(_jobQueueItemEntity.JobId);

            Assert.IsTrue(actionResult.ExecuteAsync(new CancellationToken()).Result.StatusCode == HttpStatusCode.OK);
        }
示例#3
0
 public void ShouldBeAbleToCatchExceptionsFromJob()         //faulting job
 {
     _workerWrapper = new WorkerWrapper(new ThrowExceptionInvokeHandlerFake(),
                                        _nodeConfigurationFake,
                                        _nodeStartupNotification,
                                        _pingToManagerFake,
                                        _sendJobDoneTimer,
                                        _sendJobCanceledTimer,
                                        _sendJobFaultedTimer,
                                        _trySendJobDetailToManagerTimer,
                                        _jobDetailSender);
     _workerWrapper.ValidateStartJob(_jobDefinition);
     _workerWrapper.StartJob(_jobDefinition);
 }
示例#4
0
 public void ShouldBeAbleToStartJob()
 {
     _workerWrapper = new WorkerWrapper(new ShortRunningInvokeHandlerFake(),
                                        _nodeConfigurationFake,
                                        _nodeStartupNotification,
                                        _pingToManagerFake,
                                        _sendJobDoneTimer,
                                        _sendJobCanceledTimer,
                                        _sendJobFaultedTimer,
                                        _trySendJobDetailToManagerTimer,
                                        _jobDetailSender);
     _workerWrapper.ValidateStartJob(_jobDefinition);
     _workerWrapper.StartJob(_jobDefinition);
 }
示例#5
0
        public void StartJobShouldReturnBadRequestWhenMessageIsNull()
        {
            _workerWrapper = new WorkerWrapper(new ShortRunningInvokeHandlerFake(),
                                               _nodeConfigurationFake,
                                               _nodeStartupNotification,
                                               _pingToManagerFake,
                                               _sendJobDoneTimer,
                                               _sendJobCanceledTimer,
                                               _sendJobFaultedTimer,
                                               _trySendJobDetailToManagerTimer,
                                               _jobDetailSender);

            var actionResult = _workerWrapper.ValidateStartJob(null);

            Assert.IsTrue(actionResult.StatusCode == HttpStatusCode.BadRequest);
        }
示例#6
0
        public void ShouldBeAbleToTryCancelJob()
        {
            _workerWrapper = new WorkerWrapper(new LongRunningInvokeHandlerFake(),
                                               _nodeConfigurationFake,
                                               _nodeStartupNotification,
                                               _pingToManagerFake,
                                               _sendJobDoneTimer,
                                               _sendJobCanceledTimer,
                                               _sendJobFaultedTimer,
                                               _trySendJobDetailToManagerTimer,
                                               _jobDetailSender);
            _workerWrapper.ValidateStartJob(_jobDefinition);
            _workerWrapper.StartJob(_jobDefinition);
            _workerWrapper.CancelJob(_jobDefinition.JobId);

            Assert.IsTrue(_workerWrapper.IsCancellationRequested);
        }
        public void PrepareToStartJobShouldReturnConflictWhenAlreadyProcessingJob()
        {
            _workerWrapper = new WorkerWrapper(new ShortRunningInvokeHandlerFake(),
                                               _nodeConfigurationFake,
                                               _nodeStartupNotification,
                                               _pingToManagerFake,
                                               _sendJobDoneTimer,
                                               _sendJobCanceledTimer,
                                               _sendJobFaultedTimer,
                                               _trySendJobDetailToManagerTimer,
                                               _jobDetailSender);

            _nodeController = new NodeController(_workerWrapper)
            {
                Request       = new HttpRequestMessage(),
                Configuration = new HttpConfiguration()
            };

            var parameters = new TestJobParams("Test Job",
                                               1);
            var ser = JsonConvert.SerializeObject(parameters);

            var jobToDo2 = new JobQueueItemEntity
            {
                JobId      = Guid.NewGuid(),
                Name       = "Another name",
                Serialized = ser,
                Type       = "NodeTest.JobHandlers.TestJobParams"
            };

            _nodeController.PrepareToStartJob(_jobQueueItemEntity);

            var actionResult = _nodeController.PrepareToStartJob(jobToDo2);

            Assert.IsTrue(actionResult.ExecuteAsync(new CancellationToken())
                          .Result.StatusCode ==
                          HttpStatusCode.Conflict);
        }
        public void CancelJobShouldReturnNotFoundWhenNodeIsIdle()
        {
            _workerWrapper = new WorkerWrapper(new ShortRunningInvokeHandlerFake(),
                                               _nodeConfigurationFake,
                                               _nodeStartupNotification,
                                               _pingToManagerFake,
                                               _sendJobDoneTimer,
                                               _sendJobCanceledTimer,
                                               _sendJobFaultedTimer,
                                               _trySendJobDetailToManagerTimer,
                                               _jobDetailSender);

            _nodeController = new NodeController(_workerWrapper)
            {
                Request = new HttpRequestMessage()
            };

            IHttpActionResult actionResultCancel = _nodeController.TryCancelJob(_jobQueueItemEntity.JobId);

            Assert.IsTrue(actionResultCancel.ExecuteAsync(new CancellationToken())
                          .Result.StatusCode ==
                          HttpStatusCode.NotFound);
        }
        public void ShouldReturnBadRequestWhenCancelJobWithNoId()
        {
            _workerWrapper = new WorkerWrapper(new ShortRunningInvokeHandlerFake(),
                                               _nodeConfigurationFake,
                                               _nodeStartupNotification,
                                               _pingToManagerFake,
                                               _sendJobDoneTimer,
                                               _sendJobCanceledTimer,
                                               _sendJobFaultedTimer,
                                               _trySendJobDetailToManagerTimer,
                                               _jobDetailSender);

            _nodeController = new NodeController(_workerWrapper)
            {
                Request       = new HttpRequestMessage(),
                Configuration = new HttpConfiguration()
            };

            var actionResult = _nodeController.TryCancelJob(Guid.Empty);

            Assert.IsTrue(actionResult.ExecuteAsync(new CancellationToken())
                          .Result.StatusCode ==
                          HttpStatusCode.BadRequest);
        }
示例#10
0
		public void ShouldBeAbleToCatchExceptionsFromJob() //faulting job
		{
			_workerWrapper = new WorkerWrapper(new ThrowExceptionInvokeHandlerFake(),
			                                   _nodeConfigurationFake,
			                                   _nodeStartupNotification,
			                                   _pingToManagerFake,
			                                   _sendJobDoneTimer,
			                                   _sendJobCanceledTimer,
			                                   _sendJobFaultedTimer,
											   _trySendJobDetailToManagerTimerFake);

			_workerWrapper.StartJob(_jobDefinition);
		}
示例#11
0
		public void StartJobShouldReturnBadRequestWhenMessageIsNull()
		{
			_workerWrapper = new WorkerWrapper(new ShortRunningInvokeHandlerFake(),
			                                   _nodeConfigurationFake,
			                                   _nodeStartupNotification,
			                                   _pingToManagerFake,
			                                   _sendJobDoneTimer,
			                                   _sendJobCanceledTimer,
			                                   _sendJobFaultedTimer,
											   _trySendJobDetailToManagerTimerFake);

			var actionResult = _workerWrapper.ValidateStartJob(null);
			Assert.IsTrue(actionResult.StatusCode == HttpStatusCode.BadRequest);
		}
示例#12
0
		public void ShouldNotThrowWhenCancellingAlreadyCancelledJob()
		{
			_workerWrapper = new WorkerWrapper(new LongRunningInvokeHandlerFake(),
			                                   _nodeConfigurationFake,
			                                   _nodeStartupNotification,
			                                   _pingToManagerFake,
			                                   _sendJobDoneTimer,
			                                   _sendJobCanceledTimer,
			                                   _sendJobFaultedTimer,
											   _trySendJobDetailToManagerTimerFake);

			_workerWrapper.StartJob(_jobDefinition);
			_workerWrapper.CancelJob(_jobDefinition.JobId);

			_workerWrapper.CancelJob(_jobDefinition.JobId);

			Assert.IsTrue(_workerWrapper.IsCancellationRequested);
		}
示例#13
0
		public void ShouldBeAbleToStartJob()
		{
			_workerWrapper = new WorkerWrapper(new ShortRunningInvokeHandlerFake(),
			                                   _nodeConfigurationFake,
			                                   _nodeStartupNotification,
			                                   _pingToManagerFake,
			                                   _sendJobDoneTimer,
			                                   _sendJobCanceledTimer,
			                                   _sendJobFaultedTimer,
											   _trySendJobDetailToManagerTimerFake);

			_workerWrapper.StartJob(_jobDefinition);
		}
示例#14
0
		public NodeController(IWorkerWrapper workerWrapper,
		                      NodeConfiguration nodeConfiguration)
		{
			_workerWrapper = workerWrapper;
			NodeConfiguration = nodeConfiguration;
		}
示例#15
0
		public void CancelJobShouldReturnNotFoundWhenNodeIsIdle()
		{
			_workerWrapper = new WorkerWrapper(new ShortRunningInvokeHandlerFake(),
			                                   _nodeConfigurationFake,
			                                   _nodeStartupNotification,
			                                   _pingToManagerFake,
			                                   _sendJobDoneTimer,
			                                   _sendJobCanceledTimer,
			                                   _sendJobFaultedTimer,
			                                   _trySendJobDetailToManagerTimerFake);

			_nodeController = new NodeController(_workerWrapper, _nodeConfigurationFake)
			{
				Request = new HttpRequestMessage()
			};

			IHttpActionResult actionResultCancel = _nodeController.TryCancelJob(_jobQueueItemEntity.JobId);

			Assert.IsTrue(actionResultCancel.ExecuteAsync(new CancellationToken())
							  .Result.StatusCode ==
						  HttpStatusCode.NotFound);
		}
示例#16
0
		public void StartJobShouldReturnOkIfJobIdMatchPrepareJobId()
		{
			_workerWrapper = new WorkerWrapper(new ShortRunningInvokeHandlerFake(),
											   _nodeConfigurationFake,
											   _nodeStartupNotification,
											   _pingToManagerFake,
											   _sendJobDoneTimer,
											   _sendJobCanceledTimer,
											   _sendJobFaultedTimer,
											   _trySendJobDetailToManagerTimerFake);

			_nodeController = new NodeController(_workerWrapper, _nodeConfigurationFake)
			{
				Request = new HttpRequestMessage()
			};

			_nodeController.PrepareToStartJob(_jobQueueItemEntity);
			var actionResult = _nodeController.StartJob(_jobQueueItemEntity.JobId);

			Assert.IsTrue(actionResult.ExecuteAsync(new CancellationToken())
							  .Result.StatusCode ==
						  HttpStatusCode.OK);
		}
示例#17
0
		public void PrepareToStartJobShouldReturnConflictWhenAlreadyProcessingJob()
		{
			_workerWrapper = new WorkerWrapper(new ShortRunningInvokeHandlerFake(),
											   _nodeConfigurationFake,
											   _nodeStartupNotification,
											   _pingToManagerFake,
											   _sendJobDoneTimer,
											   _sendJobCanceledTimer,
											   _sendJobFaultedTimer,
											   _trySendJobDetailToManagerTimerFake);

			_nodeController = new NodeController(_workerWrapper, _nodeConfigurationFake)
			{
				Request = new HttpRequestMessage(),
				Configuration = new HttpConfiguration()
			};

			var parameters = new TestJobParams("Test Job",
			                                   TimeSpan.FromSeconds(1));
			var ser = JsonConvert.SerializeObject(parameters);

			var jobToDo2 = new JobQueueItemEntity
			{
				JobId = Guid.NewGuid(),
				Name = "Another name",
				Serialized = ser,
				Type = "NodeTest.JobHandlers.TestJobParams"
			};

			_nodeController.PrepareToStartJob(_jobQueueItemEntity);

			var actionResult = _nodeController.PrepareToStartJob(jobToDo2);

			Assert.IsTrue(actionResult.ExecuteAsync(new CancellationToken())
							  .Result.StatusCode ==
						  HttpStatusCode.Conflict);
		}
示例#18
0
		public void ShouldReturnBadRequestWhenPrepareToStartJobWithNoJob()
		{
			_workerWrapper = new WorkerWrapper(new ShortRunningInvokeHandlerFake(),
			                                   _nodeConfigurationFake,
			                                   _nodeStartupNotification,
			                                   _pingToManagerFake,
			                                   _sendJobDoneTimer,
			                                   _sendJobCanceledTimer,
			                                   _sendJobFaultedTimer,
			                                   _trySendJobDetailToManagerTimerFake);

			_nodeController = new NodeController(_workerWrapper, _nodeConfigurationFake)
			{
				Request = new HttpRequestMessage(),
				Configuration = new HttpConfiguration()
			};


			var actionResult = _nodeController.PrepareToStartJob(null);

			Assert.IsTrue(actionResult.ExecuteAsync(new CancellationToken())
							  .Result.StatusCode ==
						  HttpStatusCode.BadRequest);
		}
示例#19
0
		public void CancelJobShouldReturnOkWhenSuccessful()
		{
			_workerWrapper = new WorkerWrapper(new LongRunningInvokeHandlerFake(),
			                                   _nodeConfigurationFake,
			                                   _nodeStartupNotification,
			                                   _pingToManagerFake,
			                                   _sendJobDoneTimer,
			                                   _sendJobCanceledTimer,
			                                   _sendJobFaultedTimer,
			                                   _trySendJobDetailToManagerTimerFake);

			_nodeController = new NodeController(_workerWrapper, _nodeConfigurationFake)
			{
				Request = new HttpRequestMessage()
			};

			_nodeController.PrepareToStartJob(_jobQueueItemEntity);
			_nodeController.StartJob(_jobQueueItemEntity.JobId);

			//is this to make sure the job has started before cancelling?
			_trySendJobDetailToManagerTimerFake.WaitHandle.Wait(500);

			var actionResult = _nodeController.TryCancelJob(_jobQueueItemEntity.JobId);

			Assert.IsTrue(actionResult.ExecuteAsync(new CancellationToken())
							  .Result.StatusCode ==
						  HttpStatusCode.OK);
		}
示例#20
0
 public NodeController(IWorkerWrapper workerWrapper)
 {
     _workerWrapper = workerWrapper;
 }