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); }
//todo deactivated as it crashed the test framework [TestMethod] public void OutgoingMessageIsResetOnSocketReset() { const string hostname = "127.0.0.1"; const int port = 10100; const string connectionIdentifier = "1"; var server = new SingleConnectionServer(); server.StartListening(); var engine = ExecutionEngineFactory.StartNew(new InMemoryStorageEngine()); engine.Schedule(() => { var unackedMessageQueue = new OutgoingMessageQueue(); var deliverer = new OutgoingMessageDeliverer(hostname, port, connectionIdentifier, unackedMessageQueue); Roots.Entangle(deliverer); Roots.Entangle(unackedMessageQueue); deliverer.Send("HELLO WORLD".GetUtf8Bytes()); }); Thread.Sleep(1_000); server.DisposeConnectedSocket(); Thread.Sleep(1_000); server.GetNodeIdentifier().ShouldBe("1"); server.GetReceivedMessages().Count.ShouldBe(2); }
public virtual void Execute(CaseSet testCases) { var queryEngineFactory = new ExecutionEngineFactory(); var queryEngine = queryEngineFactory.Instantiate(new Query(Query, ConnectionString)); var ds = queryEngine.Execute(); testCases.Content = ds.Tables[0]; }
protected IList <object> GetMembersFromResultSet(IQuery query) { var engineFactory = new ExecutionEngineFactory(); var qe = engineFactory.Instantiate(query); var members = qe.ExecuteList <string>(); return(members.Cast <object>().ToList()); }
private static Engine Start(IStorageEngine storageEngine) { var engine = ExecutionEngineFactory.StartNew(storageEngine); engine.Schedule(() => new HeartbeatSender().Start()); return(engine); }
//[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 void ReadFromQuery(string sql, string connectionString) { var queryEngineFactory = new ExecutionEngineFactory(); var queryEngine = queryEngineFactory.Instantiate(new Query(sql, connectionString)); var ds = queryEngine.Execute(); content = ds.Tables[0]; variables.Clear(); foreach (DataColumn col in Content.Columns) { variables.Add(col.ColumnName); } }
public void DetectSelfCircularDependency() { var a = new Node { Name = "A" }; a.Edges.Add(a); var engine = ExecutionEngineFactory.StartNew(new InMemoryStorageEngine(), detectCircularDependencies: true); engine.Entangle(a).Wait(); Should.Throw <CircularDependencyException>(engine.Sync); }
public void DetectCircularDependencyInComplexGraph() { var a = new Node { Name = "A" }; var b = new Node { Name = "B" }; var c = new Node { Name = "C" }; var d = new Node { Name = "D" }; var e = new Node { Name = "E" }; var f = new Node { Name = "F" }; var g = new Node { Name = "G" }; var h = new Node { Name = "H" }; a.Add(b); a.Add(c); c.Add(g); c.Add(f); g.Add(b); b.Add(d); d.Add(h); d.Add(f); f.Add(e); e.Add(d); var engine = ExecutionEngineFactory.StartNew(new InMemoryStorageEngine(), detectCircularDependencies: true); engine.Entangle(a).Wait(); Should.Throw <CircularDependencyException>(engine.Sync); }
public void OutgoingConnectionSendsMessageSuccessfully() { const string hostname = "127.0.0.1"; const int port = 10100; const string connectionIdentifier = "1"; var server = new SingleConnectionServer(); server.StartListening(); var engine = ExecutionEngineFactory.StartNew(new InMemoryStorageEngine()); engine.Schedule(() => { var unackedMessageQueue = new OutgoingMessageQueue(); var deliverer = new OutgoingMessageDeliverer(hostname, port, connectionIdentifier, unackedMessageQueue); Roots.Entangle(deliverer); Roots.Entangle(unackedMessageQueue); deliverer.Send("HELLO WORLD".GetUtf8Bytes()); }); Thread.Sleep(1_000); server.GetNodeIdentifier().ShouldBe("1"); server.GetReceivedMessages()[0].Item2.ShouldBe("HELLO WORLD"); var unackeds = engine.Schedule(() => { var q = Roots.Resolve <OutgoingMessageQueue>(); return(q.GetSyncedUnackedMessages().ToArray()); }).Result; unackeds.Length.ShouldBe(1); unackeds[0].Item1.ShouldBe(0); unackeds[0].Item2.Array.ToUtf8String().ShouldBe("HELLO WORLD"); server.AckUntil(0); Thread.Sleep(1_000); unackeds = engine.Schedule(() => { var q = Roots.Resolve <OutgoingMessageQueue>(); return(q.GetSyncedUnackedMessages().ToArray()); }).Result; unackeds.Length.ShouldBe(0); }
public void YieldWorksTest() { var executionEngine = ExecutionEngineFactory.StartNew(new InMemoryStorageEngine()); YieldTestHolder holder = null; var task = executionEngine.Schedule(() => { holder = new YieldTestHolder(); return(holder.Start()); }); task.Wait(); var yieldCompleted = executionEngine.Schedule(() => holder.YieldCompleted).Result; yieldCompleted.ShouldBe(true); }
public void DoNotDetectCircularDependencyOnNonCircularGraph() { var a = new Node { Name = "A" }; var b = new Node { Name = "B" }; a.Edges.Add(b); var engine = ExecutionEngineFactory.StartNew(new InMemoryStorageEngine(), detectCircularDependencies: true); engine.Entangle(a).Wait(); engine.Sync().Wait(); }
public static void Do() { var storageEngine = new InMemoryStorageEngine(); var executionEngine = ExecutionEngineFactory.StartNew(storageEngine); executionEngine.Schedule(() => { var network = new Network(); var source = new Source <object>(); Roots.Entangle(source); var proposer = new PaxosProposer(source, network); _ = proposer.StartRound("hello", 0); _ = OutsideFlow(source, network); }); }
public void Instantiate_BoltConnectionString_BoltExecutionEngine() { var config = new BoltConfig(); var sessionProvider = new ClientProvider(config); var commandProvider = new CommandProvider(config); var factory = new ExecutionEngineFactory(sessionProvider, commandProvider, config); var query = Mock.Of <IQuery> ( x => x.ConnectionString == "bolt://*****:*****@host:7687/" && x.Statement == "MATCH(actor: Person) RETURN actor.name" ); var engine = factory.Instantiate(query); Assert.That(engine, Is.Not.Null); Assert.That(engine, Is.TypeOf <BoltExecutionEngine>()); }
public void Instantiate_GremlinConnectionString_GremlinExecutionEngine() { var config = new GremlinConfig(); var clientProvider = new ClientProvider(config); var commandProvider = new CommandProvider(config); var factory = new ExecutionEngineFactory(clientProvider, commandProvider, config); var query = Mock.Of <IQuery> ( x => x.ConnectionString == $@"Hostname=your-endpoint.gremlin.cosmosdb.azure.com;port=443;EnableSsl=true;Username=/dbs/database/colls/;password=p@ssw0rd;api=gremlin" && x.Statement == "g.V().Count()" ); var engine = factory.Instantiate(query); Assert.That(engine, Is.Not.Null); Assert.That(engine, Is.TypeOf <GremlinExecutionEngine>()); }
public void Instantiate_GraphConnectionString_GraphExecutionEngine() { var config = new GraphConfig(); var clientProvider = new ClientProvider(config); var commandProvider = new CommandProvider(config); var factory = new ExecutionEngineFactory(clientProvider, commandProvider, config); var query = Mock.Of <IQuery> ( x => x.ConnectionString == $"Endpoint=https://xyz.documents.azure.com:443;AuthKey={base64AuthKey};database=db;graph=FoF" && x.Statement == "g.V().Count()" ); var engine = factory.Instantiate(query); Assert.That(engine, Is.Not.Null); Assert.That(engine, Is.TypeOf <GraphExecutionEngine>()); }
public void Instantiate_SqlConnectionString_SqlExecutionEngine() { var config = new SqlConfig(); var clientProvider = new ClientProvider(config); var commandProvider = new CommandProvider(config); var factory = new ExecutionEngineFactory(clientProvider, commandProvider, config); var query = Mock.Of <IQuery> ( x => x.ConnectionString == $"Endpoint=https://xyz.documents.azure.com:443;AuthKey={base64AuthKey};database=db;collection=FoF;api=sql" && x.Statement == "SELECT * FROM Families f WHERE f.id = \"WakefieldFamily\"" ); var engine = factory.Instantiate(query); Assert.That(engine, Is.Not.Null); Assert.That(engine, Is.TypeOf <SqlExecutionEngine>()); }
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(); }
public void Instantiate_ElasticsearchConnectionString_ElasticsearchExecutionEngine() { var config = new ElasticsearchConfig(); var clientProvider = new ClientProvider(config); var commandProvider = new CommandProvider(config); var factory = new ExecutionEngineFactory(clientProvider, commandProvider, config); var query = Mock.Of <IQuery> ( x => x.ConnectionString == $@"Hostname=localhost;port=9200;Username=admin;password=p@ssw0rd;api=Elasticsearch" && x.Statement == @"GET index/type/_search { ""query"": {""match_all"": { }} }" ); var engine = factory.Instantiate(query); Assert.That(engine, Is.Not.Null); Assert.That(engine, Is.TypeOf <ElasticsearchExecutionEngine>()); }
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 static void StartNew() { var storage = new SimpleFileStorageEngine(@"./TravelAgent.txt", true); var scheduler = ExecutionEngineFactory.StartNew(storage); scheduler.Schedule(() => { var workflow = new Workflow(); _ = workflow.Do(); }); Console.WriteLine("PRESS ENTER TO STOP PING PONG APP"); Console.ReadLine(); scheduler.Dispose(); Console.WriteLine("PRESS ENTER TO START PING PONG APP"); Console.ReadLine(); Continue(); }
public void Instantiate_FakeConnectionString_FakeExecutionEngine() { var localServiceLocator = new ServiceLocator(); var query = Mock.Of <IQuery>(x => x.ConnectionString == "fake://MyConnectionString"); var sessionFactory = localServiceLocator.GetSessionFactory(); sessionFactory.RegisterFactories(new[] { typeof(FakeSessionFactory) }); var commandFactory = localServiceLocator.GetCommandFactory(); commandFactory.RegisterFactories(new[] { typeof(FakeCommandFactory) }); var factory = new ExecutionEngineFactory(sessionFactory, commandFactory); factory.RegisterEngines(new[] { typeof(FakeExecutionEngine) }); var engine = factory.Instantiate(query); Assert.IsInstanceOf <FakeExecutionEngine>(engine); }
public static void StartNew(StorageEngineImplementation storageEngine) { var storage = new SimpleFileStorageEngine("./ping_pong.txt", true); /*DatabaseHelper.CreateDatabaseIfNotExist("localhost", "ping_pong", "sa", "Pa55word"); * var storage = new SqlServerStorageEngine("1", DatabaseHelper.ConnectionString("localhost", "ping_pong", "sa", "Pa55word")); * * storage.Initialize(); * storage.Clear();*/ var scheduler = ExecutionEngineFactory.StartNew(storage); scheduler.Schedule(() => { var messages = new Source <string>(); var pinger = new Pinger { Messages = messages }; var ponger = new Ponger { Messages = messages }; _ = ponger.Start(); _ = pinger.Start(); }); Console.WriteLine("PRESS ENTER TO STOP PING PONG APP"); Console.ReadLine(); scheduler.Dispose(); storage.Dispose(); Console.WriteLine("PRESS ENTER TO START PING PONG APP"); Console.ReadLine(); Continue(); }
public void Initialize() { StableStorageEngine = new InMemoryStorageEngine(); Scheduler = ExecutionEngineFactory.StartNew(StableStorageEngine); }
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);