public void UntilWorksTest() { var storage = new InMemoryStorageEngine(); var executionEngine = ExecutionEngineFactory.StartNew(storage); executionEngine.Schedule(() => { var holder = new UntilTestHolder(); var task = holder.Start(); Roots.Entangle(holder); Roots.Entangle(task); return(Sync.Next()); }).Wait(); executionEngine.Dispose(); executionEngine = ExecutionEngineFactory.Continue(storage); executionEngine.Schedule(() => { var holder = Roots.Resolve <UntilTestHolder>(); holder.Stop = true; return(Roots.Resolve <CTask>()); }).Wait(); var completed = executionEngine.Schedule(() => Roots.Resolve <UntilTestHolder>().Completed).Result; completed.ShouldBe(true); }
//[TestMethod] public void SentMessageIsProcessed() { var hostname = "127.0.0.1"; const int port = 10_000; var storage = new InMemoryStorageEngine(); var scheduler1 = ExecutionEngineFactory.StartNew(storage); scheduler1.Schedule(() => { var msgHandler = new MessageHandler(); var connectionListener = new ConnectionServer(hostname, port, msgHandler.Handle); Roots.Entangle(msgHandler); Roots.Entangle(connectionListener); }); var senderId = Guid.Empty; var msgSender = new TestMessageSender(hostname, port, senderId); msgSender.Connect(); msgSender.SendMessage("HELLO".GetUtf8Bytes(), 0); Thread.Sleep(1000); var messageHandler = scheduler1.Resolve <MessageHandler>().Result; var messages = messageHandler.GetMessages(); messages.Count.ShouldBe(1); messages[0].ShouldBe("HELLO"); scheduler1.Do <ConnectionServer>(c => c.Shutdown()); Thread.Sleep(1000); scheduler1.Dispose(); scheduler1 = ExecutionEngineFactory.Continue(storage); messageHandler = scheduler1.Resolve <MessageHandler>().Result; Console.WriteLine(messageHandler); msgSender = new TestMessageSender(hostname, port, senderId); msgSender.Connect(); msgSender.SendMessage("HELLO2".GetUtf8Bytes(), 1); Thread.Sleep(1000); messages = messageHandler.GetMessages(); messages.Count.ShouldBe(2); messages[0].ShouldBe("HELLO"); messages[1].ShouldBe("HELLO2"); scheduler1.Dispose(); }
public static void Continue() { var storage = new SimpleFileStorageEngine(@"./TravelAgent.txt", false); var scheduler = ExecutionEngineFactory.Continue(storage); while (true) { Console.WriteLine("PRESS ENTER TO STOP PING PONG APP"); Console.ReadLine(); scheduler.Dispose(); Console.WriteLine("PRESS ENTER TO START PING PONG APP"); Console.ReadLine(); scheduler = ExecutionEngineFactory.Continue(storage); } }
public void EmptyMessageQueueCanBeSerializeAndDeserialized() { var storage = new InMemoryStorageEngine(); var c = ExecutionEngineFactory.StartNew(storage); c.Schedule(() => { var q = new MessageQueue(); Roots.Entangle(q); }); c.Sync().Wait(); c.Dispose(); c = ExecutionEngineFactory.Continue(storage); c.Schedule(Roots.Resolve <MessageQueue>); c.Sync().Wait(); }
private static void Continue() { var storage = new SimpleFileStorageEngine("./ping_pong.txt", false); //var storage = new SqlServerStorageEngine("1", DatabaseHelper.ConnectionString("localhost", "ping_pong", "sa", "Pa55word")); var engine = ExecutionEngineFactory.Continue(storage); while (true) { Console.WriteLine("PRESS ENTER TO STOP PING PONG APP"); Console.ReadLine(); engine.Dispose(); Console.WriteLine("PRESS ENTER TO START PING PONG APP"); Console.ReadLine(); engine = ExecutionEngineFactory.Continue(storage); } }
public void NonEmptyMessageQueueCanBeSerializeAndDeserialized() { var storage = new InMemoryStorageEngine(); var c = ExecutionEngineFactory.StartNew(storage); c.Schedule(() => { var q = new MessageQueue(); var hello = new ImmutableByteArray(Encoding.UTF8.GetBytes("hello")); var helloTask = new CTask(); var world = new ImmutableByteArray(Encoding.UTF8.GetBytes("world")); var worldTask = new CTask(); q.Add(hello, helloTask); q.Add(world, worldTask); Roots.Entangle(q); Roots.Entangle(new CImmutableList <CTask>(new [] { helloTask, worldTask })); }); c.Sync().Wait(); c.Dispose(); c = ExecutionEngineFactory.Continue(storage); c.Schedule(() => { var queue = Roots.Resolve <MessageQueue>(); var elms = queue.GetAll().ToArray(); elms.Length.ShouldBe(2); var s1 = Encoding.UTF8.GetString(elms[0].Array); s1.ShouldBe("hello"); var s2 = Encoding.UTF8.GetString(elms[1].Array); s2.ShouldBe("world"); Roots.Resolve <CImmutableList <CTask> >()[0].SignalCompletion(); }).Wait(); c.Sync().Wait(); c.Dispose(); c = ExecutionEngineFactory.Continue(storage); c.Schedule(() => { var queue = Roots.Resolve <MessageQueue>(); var elms = queue.GetAll().ToArray(); elms.Length.ShouldBe(1); var s1 = Encoding.UTF8.GetString(elms[0].Array); s1.ShouldBe("world"); Roots.Resolve <CImmutableList <CTask> >()[1].SignalCompletion(); }).Wait(); c.Sync().Wait(); c.Dispose(); c = ExecutionEngineFactory.Continue(storage); c.Schedule(() => { var queue = Roots.Resolve <MessageQueue>(); var elms = queue.GetAll().ToArray(); elms.Length.ShouldBe(0); }).Wait(); c.Sync().Wait(); c.Dispose(); }
private static Engine Continue(IStorageEngine storageEngine) => ExecutionEngineFactory.Continue(storageEngine);