public void OptionsBuilderOut() { try { var network = new DummyNetworkInterface(); var builder = new NodeBuilder(); builder.UseNetwork(network); builder.UseTransient <SimpleDummyMiddleware>(); builder.UseTransient <OptionsBuilderMiddleware, MwOptions>(o => { o.SomeId = "2nd Middleware"; }); builder.UseSingleton <FirstMiddleware>(); var node = builder.Build(); var context = new PipelineContext(); node.SendAsync(context).Wait(); Assert.AreEqual(network.OutDatas.Count(), 1); var outData = network.OutDatas.First(); Assert.AreEqual(outData.Destination.Port, 9999); Assert.AreEqual(outData.Source.Port, 8888); var state = outData.State as InMemoryNodeContract; Assert.IsNotNull(state); Assert.IsTrue(state.Id.Contains("SimpleDummyMiddleware")); Assert.IsTrue(state.Id.Contains("2nd Middleware")); } catch (Exception ex) { Debug.WriteLine(ex.Message); } }
public override IReadOnlyList <INode> GetNodes(ISqlLoader loader, IGeneratorOption option, MethodInfo mi) { var parameters = BuildHelper.GetParameters(option, mi); var tableName = table ?? (type != null ? BuildHelper.GetTableNameOfType(option, type) : null) ?? BuildHelper.GetTableName(option, mi); if (String.IsNullOrEmpty(tableName)) { throw new BuilderException($"Table name resolve failed. type=[{mi.DeclaringType.FullName}], method=[{mi.Name}]"); } var sql = new StringBuilder(); sql.Append("INSERT INTO "); sql.Append(tableName); sql.Append(" ("); BuildHelper.AddInsertColumns(sql, mi, parameters); sql.Append(") VALUES ("); BuildHelper.AddInsertValues(sql, mi, parameters); sql.Append(")"); var tokenizer = new SqlTokenizer(sql.ToString()); var builder = new NodeBuilder(tokenizer.Tokenize()); return(builder.Build()); }
public override IReadOnlyList <INode> GetNodes(ISqlLoader loader, IGeneratorOption option, MethodInfo mi) { var parameters = BuildHelper.GetParameters(option, mi); var keys = BuildHelper.GetKeyParameters(parameters); var tableName = table ?? (type != null ? BuildHelper.GetTableNameOfType(option, type) : null) ?? BuildHelper.GetTableName(option, mi); var conditions = keys.Count > 0 ? keys : parameters; if (String.IsNullOrEmpty(tableName)) { throw new BuilderException($"Table name resolve failed. type=[{mi.DeclaringType.FullName}], method=[{mi.Name}]"); } if (!Force && (conditions.Count == 0)) { throw new BuilderException($"Delete all requires force option. type=[{mi.DeclaringType.FullName}], method=[{mi.Name}]"); } var sql = new StringBuilder(); sql.Append("DELETE FROM "); sql.Append(tableName); BuildHelper.AddCondition(sql, conditions); var tokenizer = new SqlTokenizer(sql.ToString()); var builder = new NodeBuilder(tokenizer.Tokenize()); return(builder.Build()); }
public void MiddlewareOrderOut() { var network = new DummyNetworkInterface(); var builder = new NodeBuilder(); builder.UseNetwork(network); SimpleDummyMiddleware.Tag = MethodBase.GetCurrentMethod().Name; builder.UseTransient <SimpleDummyMiddleware>(); builder.UseSingleton <FirstMiddleware>(); var node = builder.Build(); var context = new PipelineContext(); node.SendAsync(context).Wait(); Assert.AreEqual(network.OutDatas.Count(), 1); var outData = network.OutDatas.First(); Assert.AreEqual(outData.Destination.Port, 9999); Assert.AreEqual(outData.Source.Port, 8888); var state = outData.State as InMemoryNodeContract; Assert.IsNotNull(state); Assert.IsTrue(state.Id.Contains("FirstMiddleware")); Assert.IsTrue(state.Id.Contains("SimpleDummyMiddleware")); }
public void Setup() { var addressList = Dns.GetHostEntry("localhost").AddressList; _localhost = addressList.First(p => p.AddressFamily == AddressFamily.InterNetwork); var ipLocalEndPoint = new IPEndPoint(_localhost, 7000); var builder = new NodeBuilder(); builder .UseMsgPack(ipLocalEndPoint) .Use <TestMiddleware>(MiddlewareScope.Transient) .UseEndpoint(Endpoint1); _node1 = builder.Build(); ipLocalEndPoint = new IPEndPoint(_localhost, 8000); builder = new NodeBuilder(); builder .UseMsgPack(ipLocalEndPoint) .Use <TestMiddleware>(MiddlewareScope.Transient) .UseEndpoint(Endpoint2); _node2 = builder.Build(); }
public override IReadOnlyList <INode> GetNodes(ISqlLoader loader, IGeneratorOption option, MethodInfo mi) { var tokenizer = new SqlTokenizer(sql); var tokens = tokenizer.Tokenize(); var builder = new NodeBuilder(tokens); return(builder.Build()); }
public void OptionsBuilderIn() { PipelineContext receivedContext = null; var network = new DummyNetworkInterface(); var builder = new NodeBuilder(); builder .UseNetwork(network) .UseTransient <SimpleDummyMiddleware>() .UseTransient <OptionsBuilderMiddleware, MwOptions>(o => { o.SomeId = "2nd Middleware"; }) .UseSingleton <FirstMiddleware>() .UseEndpoint(c => { receivedContext = c; return(Task.CompletedTask); }); var node = builder.Build(); var context = new PipelineContext(); node.SendAsync(context).Wait(); Assert.AreEqual(network.OutDatas.Count(), 1); var outData = network.OutDatas.First(); Assert.AreEqual(outData.Destination.Port, 9999); Assert.AreEqual(outData.Source.Port, 8888); var state = outData.State as InMemoryNodeContract; Assert.IsNotNull(state); Assert.IsTrue(state.Id.Contains("SimpleDummyMiddleware")); Assert.IsTrue(state.Id.Contains("2nd Middleware")); context = network.GenerateRandomInData(); Thread.Sleep(2000); Assert.IsNotNull(receivedContext); Assert.IsNotNull(context); Assert.AreEqual(receivedContext.Raw.Length, context.Raw.Length); Assert.AreEqual(receivedContext.Raw[10], context.Raw[10]); Assert.AreEqual(receivedContext.Source, context.Source); state = receivedContext.State as InMemoryNodeContract; Assert.AreEqual(state.Id, "Lekker"); }
public override IReadOnlyList <INode> GetNodes(ISqlLoader loader, IGeneratorOption option, MethodInfo mi) { var parameters = BuildHelper.GetParameters(option, mi); var order = BuildHelper.PickParameter <OrderAttribute>(parameters); var tableName = table ?? (type != null ? BuildHelper.GetTableNameOfType(option, type) : null) ?? BuildHelper.GetReturnTableName(option, mi); if (String.IsNullOrEmpty(tableName)) { throw new BuilderException($"Table name resolve failed. type=[{mi.DeclaringType.FullName}], method=[{mi.Name}]"); } var sql = new StringBuilder(); sql.Append("SELECT * FROM "); sql.Append(tableName); BuildHelper.AddCondition(sql, parameters); if (order != null) { sql.Append(" ORDER BY "); sql.Append($"/*# {order.Name} */dummy"); } else if (!String.IsNullOrEmpty(Order)) { sql.Append(" ORDER BY "); sql.Append(Order); } else { var columns = BuildHelper.MakeKeyColumns(option, mi.ReturnType); if (!String.IsNullOrEmpty(columns)) { sql.Append(" ORDER BY "); sql.Append(columns); } } var tokenizer = new SqlTokenizer(sql.ToString()); var builder = new NodeBuilder(tokenizer.Tokenize()); return(builder.Build()); }
public override IReadOnlyList <INode> GetNodes(ISqlLoader loader, IGeneratorOption option, MethodInfo mi) { var parameters = BuildHelper.GetParameters(option, mi); var tableName = table ?? BuildHelper.GetTableNameOfType(option, type); if (String.IsNullOrEmpty(tableName)) { throw new BuilderException($"Table name resolve failed. type=[{mi.DeclaringType.FullName}], method=[{mi.Name}]"); } var sql = new StringBuilder(); sql.Append("SELECT "); sql.Append(field); sql.Append(" FROM "); sql.Append(tableName); BuildHelper.AddCondition(sql, parameters); var tokenizer = new SqlTokenizer(sql.ToString()); var builder = new NodeBuilder(tokenizer.Tokenize()); return(builder.Build()); }
public void DummyNetworkInterfaceOnlyOut() { var network = new DummyNetworkInterface(); var builder = new NodeBuilder(); builder.UseNetwork(network); builder.UseTransient <SimpleDummyMiddleware>(); var node = builder.Build(); var model = new InMemoryNodeContract(MethodBase.GetCurrentMethod().Name, new byte[10]); _rand.NextBytes(model.RawData); node.SendAsync(new InMemoryNodeContract()).Wait(); Assert.AreEqual(network.OutDatas.Count(), 1); var outData = network.OutDatas.First(); Assert.AreEqual(outData.Destination.Port, 9999); Assert.AreEqual(outData.Source.Port, 8888); var state = outData.State as InMemoryNodeContract; Assert.IsNotNull(state); }
internal PrefetchQuery <TElement> RegisterPath <TValue>(Expression <Func <TElement, TValue> > expression) { var node = NodeBuilder.Build(session.Domain.Model, expression); return(node == null ? this : new PrefetchQuery <TElement>(session, source, nodes.Add(node))); }