public void TestTaskQueuePreProcessing05() { var schedulerThread = new SampleSchedulerThread(); var scheduler = new DynamoScheduler(schedulerThread, false); // Start scheduling a bunch of tasks. var asyncTasks = new AsyncTask[] { new PrioritizedAsyncTask(scheduler, 1), new InconsequentialAsyncTask(scheduler, 100), }; var results = new List <string>(); foreach (SampleAsyncTask asyncTask in asyncTasks) { asyncTask.InitializeWithResultList(results); scheduler.ScheduleForExecution(asyncTask); } schedulerThread.GetSchedulerToProcessTasks(); // Drops all InconsequentialAsyncTask and leave behind one. // Kept all PrioritizedAsyncTask instances and sorted them. Assert.AreEqual(2, results.Count); Assert.AreEqual("PrioritizedAsyncTask: 1", results[0]); Assert.AreEqual("InconsequentialAsyncTask: 100", results[1]); }
public void TestTaskQueuePreProcessing06() { var schedulerThread = new SampleSchedulerThread(); var scheduler = new DynamoScheduler(schedulerThread, false); schedulerThread.GetSchedulerToProcessTasks(); Assert.Pass("Scheduler thread successfully exits"); }
public void TestSchedulerCreationDestruction() { var schedulerThread = new SampleSchedulerThread(); Assert.IsFalse(schedulerThread.Initialized); Assert.IsFalse(schedulerThread.Destroyed); var scheduler = new DynamoScheduler(schedulerThread, TaskProcessMode.Asynchronous); Assert.IsTrue(schedulerThread.Initialized); Assert.IsFalse(schedulerThread.Destroyed); scheduler.Shutdown(); Assert.IsTrue(schedulerThread.Initialized); Assert.IsTrue(schedulerThread.Destroyed); }
public void TestSchedulerCreationDestruction() { var schedulerThread = new SampleSchedulerThread(); Assert.IsFalse(schedulerThread.Initialized); Assert.IsFalse(schedulerThread.Destroyed); var scheduler = new DynamoScheduler(schedulerThread, false); Assert.IsTrue(schedulerThread.Initialized); Assert.IsFalse(schedulerThread.Destroyed); scheduler.Shutdown(); Assert.IsTrue(schedulerThread.Initialized); Assert.IsTrue(schedulerThread.Destroyed); }
protected void StartDynamo() { var assemblyPath = Assembly.GetExecutingAssembly().Location; preloader = new Preloader(Path.GetDirectoryName(assemblyPath)); preloader.Preload(); var pathResolver = new TestPathResolver(); pathResolver.AddPreloadLibraryPath("DSCoreNodes.dll"); schedulerThread = new SampleSchedulerThread(); dynamoModel = DynamoModel.Start( new DynamoModel.DefaultStartConfiguration() { // See documentation for 'SchedulerIntegrationTests' above. StartInTestMode = false, SchedulerThread = schedulerThread, PathResolver = pathResolver, GeometryFactoryPath = preloader.GeometryFactoryPath }); }
public void TestTaskStateChangedEventHandling() { var observer = new TaskEventObserver(); var schedulerThread = new SampleSchedulerThread(); var scheduler = new DynamoScheduler(schedulerThread, false); scheduler.TaskStateChanged += observer.OnTaskStateChanged; // Start scheduling a bunch of tasks. var asyncTasks = new AsyncTask[] { new ErrorProneAsyncTask(scheduler, 7), new InconsequentialAsyncTask(scheduler, 100), new PrioritizedAsyncTask(scheduler, 1), new PrioritizedAsyncTask(scheduler, 5), new ErrorProneAsyncTask(scheduler, 3), new InconsequentialAsyncTask(scheduler, 500), new InconsequentialAsyncTask(scheduler, 300), new PrioritizedAsyncTask(scheduler, 3), new ErrorProneAsyncTask(scheduler, 5), }; foreach (SampleAsyncTask asyncTask in asyncTasks) { scheduler.ScheduleForExecution(asyncTask); } schedulerThread.GetSchedulerToProcessTasks(); // Drops all InconsequentialAsyncTask and leave behind one. // Kept all PrioritizedAsyncTask instances and sorted them. var expected = new List <string> { // Scheduling notifications... "Scheduled: ErrorProneAsyncTask: 7", "Scheduled: InconsequentialAsyncTask: 100", "Scheduled: PrioritizedAsyncTask: 1", "Scheduled: PrioritizedAsyncTask: 5", "Scheduled: ErrorProneAsyncTask: 3", "Scheduled: InconsequentialAsyncTask: 500", "Scheduled: InconsequentialAsyncTask: 300", "Scheduled: PrioritizedAsyncTask: 3", "Scheduled: ErrorProneAsyncTask: 5", // Task discarded notifications... "Discarded: InconsequentialAsyncTask: 100", "Discarded: InconsequentialAsyncTask: 300", // Execution of remaining tasks... "ExecutionStarting: ErrorProneAsyncTask: 7", "ExecutionFailed: ErrorProneAsyncTask: 7", "CompletionHandled: ErrorProneAsyncTask: 7", "ExecutionStarting: PrioritizedAsyncTask: 1", "ExecutionCompleted: PrioritizedAsyncTask: 1", "CompletionHandled: PrioritizedAsyncTask: 1", "ExecutionStarting: PrioritizedAsyncTask: 5", "ExecutionCompleted: PrioritizedAsyncTask: 5", "CompletionHandled: PrioritizedAsyncTask: 5", "ExecutionStarting: ErrorProneAsyncTask: 3", "ExecutionFailed: ErrorProneAsyncTask: 3", "CompletionHandled: ErrorProneAsyncTask: 3", "ExecutionStarting: PrioritizedAsyncTask: 3", "ExecutionCompleted: PrioritizedAsyncTask: 3", "CompletionHandled: PrioritizedAsyncTask: 3", "ExecutionStarting: ErrorProneAsyncTask: 5", "ExecutionFailed: ErrorProneAsyncTask: 5", "CompletionHandled: ErrorProneAsyncTask: 5", // Execution of InconsequentialAsyncTask last... "ExecutionStarting: InconsequentialAsyncTask: 500", "ExecutionCompleted: InconsequentialAsyncTask: 500", "CompletionHandled: InconsequentialAsyncTask: 500" }; Assert.AreEqual(expected.Count, observer.Results.Count()); int index = 0; foreach (var actual in observer.Results) { Assert.AreEqual(expected[index++], actual); } }
public void TestTaskStateChangedEventHandling() { var observer = new TaskEventObserver(); var schedulerThread = new SampleSchedulerThread(); var scheduler = new DynamoScheduler(schedulerThread, false); scheduler.TaskStateChanged += observer.OnTaskStateChanged; // Start scheduling a bunch of tasks. var asyncTasks = new AsyncTask[] { new ErrorProneAsyncTask(scheduler, 7), new InconsequentialAsyncTask(scheduler, 100), new PrioritizedAsyncTask(scheduler, 1), new PrioritizedAsyncTask(scheduler, 5), new ErrorProneAsyncTask(scheduler, 3), new InconsequentialAsyncTask(scheduler, 500), new InconsequentialAsyncTask(scheduler, 300), new PrioritizedAsyncTask(scheduler, 3), new ErrorProneAsyncTask(scheduler, 5), }; foreach (SampleAsyncTask asyncTask in asyncTasks) scheduler.ScheduleForExecution(asyncTask); schedulerThread.GetSchedulerToProcessTasks(); // Drops all InconsequentialAsyncTask and leave behind one. // Kept all PrioritizedAsyncTask instances and sorted them. var expected = new List<string> { // Scheduling notifications... "Scheduled: ErrorProneAsyncTask: 7", "Scheduled: InconsequentialAsyncTask: 100", "Scheduled: PrioritizedAsyncTask: 1", "Scheduled: PrioritizedAsyncTask: 5", "Scheduled: ErrorProneAsyncTask: 3", "Scheduled: InconsequentialAsyncTask: 500", "Scheduled: InconsequentialAsyncTask: 300", "Scheduled: PrioritizedAsyncTask: 3", "Scheduled: ErrorProneAsyncTask: 5", // Task discarded notifications... "Discarded: InconsequentialAsyncTask: 100", "Discarded: InconsequentialAsyncTask: 300", // Execution of remaining tasks... "ExecutionStarting: ErrorProneAsyncTask: 7", "ExecutionFailed: ErrorProneAsyncTask: 7", "CompletionHandled: ErrorProneAsyncTask: 7", "ExecutionStarting: PrioritizedAsyncTask: 1", "ExecutionCompleted: PrioritizedAsyncTask: 1", "CompletionHandled: PrioritizedAsyncTask: 1", "ExecutionStarting: PrioritizedAsyncTask: 5", "ExecutionCompleted: PrioritizedAsyncTask: 5", "CompletionHandled: PrioritizedAsyncTask: 5", "ExecutionStarting: ErrorProneAsyncTask: 3", "ExecutionFailed: ErrorProneAsyncTask: 3", "CompletionHandled: ErrorProneAsyncTask: 3", "ExecutionStarting: PrioritizedAsyncTask: 3", "ExecutionCompleted: PrioritizedAsyncTask: 3", "CompletionHandled: PrioritizedAsyncTask: 3", "ExecutionStarting: ErrorProneAsyncTask: 5", "ExecutionFailed: ErrorProneAsyncTask: 5", "CompletionHandled: ErrorProneAsyncTask: 5", // Execution of InconsequentialAsyncTask last... "ExecutionStarting: InconsequentialAsyncTask: 500", "ExecutionCompleted: InconsequentialAsyncTask: 500", "CompletionHandled: InconsequentialAsyncTask: 500" }; Assert.AreEqual(expected.Count, observer.Results.Count()); int index = 0; foreach (var actual in observer.Results) { Assert.AreEqual(expected[index++], actual); } }
public void TestTaskQueuePreProcessing05() { var schedulerThread = new SampleSchedulerThread(); var scheduler = new DynamoScheduler(schedulerThread, false); // Start scheduling a bunch of tasks. var asyncTasks = new AsyncTask[] { new PrioritizedAsyncTask(scheduler, 1), new InconsequentialAsyncTask(scheduler, 100), }; var results = new List<string>(); foreach (SampleAsyncTask asyncTask in asyncTasks) { asyncTask.InitializeWithResultList(results); scheduler.ScheduleForExecution(asyncTask); } schedulerThread.GetSchedulerToProcessTasks(); // Drops all InconsequentialAsyncTask and leave behind one. // Kept all PrioritizedAsyncTask instances and sorted them. Assert.AreEqual(2, results.Count); Assert.AreEqual("PrioritizedAsyncTask: 1", results[0]); Assert.AreEqual("InconsequentialAsyncTask: 100", results[1]); }