public void Setup() { var parameters = new TestJobParams("Test Job", 1); var ser = JsonConvert.SerializeObject(parameters); _jobDefinition = new JobQueueItemEntity { JobId = Guid.NewGuid(), Name = "jobDefinition Name", Serialized = ser, Type = "NodeTest.JobHandlers.TestJobParams" }; _nodeStartupNotification = new NodeStartupNotificationToManagerFake(_nodeConfigurationFake, new FakeHttpSender()); _jobDetailSender = new JobDetailSender(_nodeConfigurationFake, new FakeHttpSender()); _trySendJobDetailToManagerTimer = new TrySendJobDetailToManagerTimer(_nodeConfigurationFake, _jobDetailSender); _pingToManagerFake = new PingToManagerFake(); _sendJobDoneTimer = new SendJobDoneTimerFake(_nodeConfigurationFake, _jobDetailSender, new FakeHttpSender()); _sendJobCanceledTimer = new SendJobCanceledTimerFake(_nodeConfigurationFake, _jobDetailSender, new FakeHttpSender()); _sendJobFaultedTimer = new SendJobFaultedTimerFake(_nodeConfigurationFake, _jobDetailSender, new FakeHttpSender()); }
public void ShouldBeAbleToInvokeAHandler() { var invokehandler = Container.Resolve <InvokeHandler>(); var jobParams = new TestJobParams("Test Job", 1); IEnumerable <object> returnObjects = null; invokehandler.Invoke(jobParams, new CancellationTokenSource(), _ => {}, ref returnObjects ); }
public void ShouldBeAbleToInvokeAHandlerAndGetExitObjectInReturn() { var invokehandler = Container.Resolve <InvokeHandler>(); var jobParams = new TestJobParams("Test Job", 1); IEnumerable <object> returnObjects = null; invokehandler.Invoke(jobParams, new CancellationTokenSource(), _ => { }, ref returnObjects ); Assert.IsNotNull(returnObjects); var list = ((List <object>)returnObjects); Assert.True(list.Count > 0); Assert.IsNotNull(list.FirstOrDefault(x => x is ExitApplication)); }
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 Execute(object parameter) { Task.Factory.StartNew(() => { var uri = ManagerUriBuilder.GetAddToJobQueueUri(); for (var i = 0; i < NumberOfJobs; i++) { var testJobParams = new TestJobParams("Test job Data " + i, 10); var testJobParamsToJson = JsonConvert.SerializeObject(testJobParams); var job = new JobQueueItem { Name = "Job Name " + i, Serialized = testJobParamsToJson, Type = "NodeTest.JobHandlers.TestJobParams", CreatedBy = "test" }; var response = HttpSender.PostAsync(uri, job); } }); }
public static List <JobQueueItem> GenerateTestJobRequests(int numberOfJobRequests, int duration) { List <JobQueueItem> jobQueueItems = new List <JobQueueItem>(); if (numberOfJobRequests > 0) { for (var i = 1; i <= numberOfJobRequests; i++) { var testJobParams = new TestJobParams("Name " + i, duration); var testJobParamsToJson = JsonConvert.SerializeObject(testJobParams); var job = new JobQueueItem { Name = "Job Name " + i, Serialized = testJobParamsToJson, Type = "NodeTest.JobHandlers.TestJobParams", CreatedBy = "test" }; jobQueueItems.Add(job); } } return(jobQueueItems); }
public void StartDurationTest() { CancellationTokenSourceDurationTest = new CancellationTokenSource(); Task.Factory.StartNew(() => { while (true) { var tasksToDispose = _tasks.Where(task => task.IsCompleted); foreach (var task in tasksToDispose) { task.Dispose(); _tasks.Remove(task); } if (CancellationTokenSourceDurationTest.Token.IsCancellationRequested) { CancellationTokenSourceDurationTest.Token.ThrowIfCancellationRequested(); } } }, CancellationTokenSourceDurationTest.Token); Task.Factory.StartNew(() => { var mangerUriBuilder = new ManagerUriBuilder(); var addToJobQueueUri = mangerUriBuilder.GetAddToJobQueueUri(); var httpSender = new HttpSender(); Random random = new Random(); for (int i = 0; i < NumberOfMessages; i++) { if (CancellationTokenSourceDurationTest.Token.IsCancellationRequested) { CancellationTokenSourceDurationTest.Token.ThrowIfCancellationRequested(); } var i1 = i; var randomTimeSpan = random.Next(MessageDurationFrom, MessageDurationTo); _tasks.Add(new Task <HttpResponseMessage>(() => { var testJobTimerParams = new TestJobParams("Test job name " + i1, randomTimeSpan); var jobParamsToJson = JsonConvert.SerializeObject(testJobTimerParams); var jobQueueItem = new JobQueueItem { Name = "Job Name " + i1, Serialized = jobParamsToJson, Type = "NodeTest.JobHandlers.TestJobParams", CreatedBy = "WPF Client" }; return(httpSender.PostAsync(addToJobQueueUri, jobQueueItem).Result); }, CancellationTokenSourceDurationTest.Token)); } var sendJobEveryDurationTimer = new SendJobEveryDurationTimer <HttpResponseMessage>(_tasks, TimeSpan.FromSeconds(5), ProgressAction); CheckManagerDbTimer.Start(); sendJobEveryDurationTimer.SendTimer.Start(); }); }