public void TestWork_EmptyJob() { ObjectJobDefinition d = new ObjectJobDefinition( new PipelineDefinition( new AlgorithmDefinition[] { }), new JobInput[] { }); JobRequest r = new JobRequest(d); JobTicket ticket = new JobTicket(r, new DudCancellationHandler()); ProcessPluginRepository re = new ProcessPluginRepository(); RegistryCache.Cache.Initialize(re); RegistryFactory factory = new RegistryFactory(re); TicketWorker w = new TicketWorker(); WorkerArgs args = new WorkerArgs(new DudPersister(), new BadPipelineFactory()); args.Ticket = ticket; bool didError = false; bool didFinish = false; TicketSink s = new TicketSink(); ticket.Sinks.Add(s); s.JobCompleted += (se, e) => didFinish = true; w.Work(args); // Events are dispatched on a seperate thread, so let it run. Thread.Sleep(15); Assert.IsTrue(didFinish); JobResult result = ticket.Result; Assert.AreEqual(JobState.Complete, result.Result); }
public void TestWork_PluginException() { ObjectJobDefinition d = new ObjectJobDefinition( new PipelineDefinition( new[] { new AlgorithmDefinition("Test", new Property[] { }) }), new[] { new JobInput(Image.FromFile("img.bmp")) }); JobRequest r = new JobRequest(d); JobTicket ticket = new JobTicket(r, new DudCancellationHandler()); TicketWorker w = new TicketWorker(); WorkerArgs args = new WorkerArgs(new DudPersister(), new BadPipelineFactory()); args.Ticket = ticket; bool didError = false; bool didFinish = false; TicketSink s = new TicketSink(); ticket.Sinks.Add(s); s.JobError += (se, e) => didError = true; s.JobCompleted += (se, e) => didFinish = true; w.Work(args); // Events are dispatched on a seperate thread, so let it run. Thread.Sleep(15); Assert.IsTrue(didError); Assert.IsFalse(didFinish); JobResult result = ticket.Result; Assert.AreEqual(JobState.Error, result.Result); Assert.AreEqual(typeof(NotImplementedException), result.Exception.GetType()); }
public void TestWork_InputProcessedFired() { ObjectJobDefinition d = new ObjectJobDefinition( new PipelineDefinition( new[] { new AlgorithmDefinition("Test", new Property[] { }) }), new[] { new JobInput(Image.FromFile("img.bmp")) { Identifier = "Test" } }); JobRequest r = new JobRequest(d); JobTicket ticket = new JobTicket(r, new DudCancellationHandler()); TicketWorker w = new TicketWorker(); WorkerArgs args = new WorkerArgs(new DudPersister(), new DudPipelineFactory()); args.Ticket = ticket; bool didProcess = false; InputProcessedArgs ie = null; TicketSink s = new TicketSink(); ticket.Sinks.Add(s); s.InputProcessed += (se, e) => { didProcess = true; ie = e; }; w.Work(args); Thread.Sleep(5); Assert.IsTrue(didProcess); Assert.IsNotNull(ie); Assert.AreEqual("Test", ie.Identifier); }
/// <summary> /// Creates and returns a new <see cref="ISynchronousProcessor"/> clients /// can use to compute jobs on their own threads. /// </summary> /// <returns>An <see cref="ISynchronousProcessor"/> instance for running /// jobs within the client.</returns> public ISynchronousProcessor CreateSynchronousProcessor() { IJobPersister persister = new MemoryPersister(); IWorker worker = new TicketWorker(); var processor = new SynchronousProcessor(worker); processor.Factory = new PluginPipelineFactory(_pluginFactory); return(processor); }
public TicketController(DataFactory dataFactory) { _ticketWorker = (TicketWorker)dataFactory.GetDataFactory <Ticket>(); }