public void TestMethod1() { try { var fabric = new ManualFabricBridge(); var bridgeOut = fabric[FabricMode.Queue]; var bridgein = fabric[FabricMode.Broadcast]; PersistenceClient <Guid, BridgeMe> init; DebugMemoryDataCollector memp1, memp2; var p1 = new MicroservicePipeline("Sender") .AdjustPolicyCommunication((p, c) => p.BoundaryLoggingActiveDefault = true) .AddDebugMemoryDataCollector(out memp1) .AddChannelIncoming("cresponse") .AttachListener(bridgein.GetListener()) .Revert() .AddChannelOutgoing("crequest") .AttachSender(bridgeOut.GetSender()) .AttachPersistenceClient("cresponse", out init) .Revert() ; var p2 = new MicroservicePipeline("Receiver") .AdjustPolicyCommunication((p, c) => p.BoundaryLoggingActiveDefault = true) .AddDebugMemoryDataCollector(out memp2) .AddChannelIncoming("crequest") .AttachListener(bridgeOut.GetListener()) .AttachCommand(new PersistenceManagerHandlerMemory <Guid, BridgeMe>((e) => e.Id, (s) => new Guid(s))) .Revert() .AddChannelOutgoing("cresponse") .AttachSender(bridgein.GetSender()) ; p2.ToMicroservice().Events.ExecuteBegin += CommunicationBridgeTests_OnExecuteBegin; p1.Start(); p2.Start(); int check1 = p1.ToMicroservice().Commands.Count(); int check2 = p2.ToMicroservice().Commands.Count(); var entity = new BridgeMe() { Message = "Momma" }; var rs = init.Create(entity, new RepositorySettings() { WaitTime = TimeSpan.FromMinutes(5) }).Result; var rs2 = init.Read(entity.Id).Result; Assert.IsTrue(rs2.IsSuccess); Assert.IsTrue(rs2.Entity.Message == "Momma"); } catch (Exception ex) { throw; } }
public void Tcp1() { try { var bridgeOut = new CommunicationBridge(CommunicationBridgeMode.RoundRobin, new TcpCommunicationBridgeAgent(new IPEndPoint(IPAddress.Loopback, 8088))); var bridgein = new CommunicationBridge(CommunicationBridgeMode.Broadcast, new TcpCommunicationBridgeAgent(new IPEndPoint(IPAddress.Loopback, 8088))); PersistenceClient <Guid, BridgeMe> init; DebugMemoryDataCollector memp1, memp2; var p1 = new MicroservicePipeline("Sender") .AdjustPolicyCommunicationBoundaryLoggingActive() .AddDebugMemoryDataCollector(out memp1) .AddChannelIncoming("cresponse") .AttachListener(bridgein.GetListener()) .Revert() .AddChannelOutgoing("crequest") .AttachSender(bridgeOut.GetSender()) .AttachPersistenceClient("cresponse", out init) .Revert() ; var p2 = new MicroservicePipeline("Receiver") .AdjustPolicyCommunicationBoundaryLoggingActive() .AddDebugMemoryDataCollector(out memp2) .AddChannelIncoming("crequest") .AttachListener(bridgeOut.GetListener()) .AttachPersistenceManagerHandlerMemory((BridgeMe e) => e.Id, (s) => new Guid(s)) .Revert() .AddChannelOutgoing("cresponse") .AttachSender(bridgein.GetSender()) ; p2.ToMicroservice().Events.ExecuteBegin += CommunicationBridgeTests_OnExecuteBegin; p1.Start(); p2.Start(); int check1 = p1.ToMicroservice().Commands.Count(); int check2 = p2.ToMicroservice().Commands.Count(); var entity = new BridgeMe() { Message = "Momma" }; var rs = init.Create(entity, new RepositorySettings() { WaitTime = TimeSpan.FromMinutes(5) }).Result; var rs2 = init.Read(entity.Id).Result; Assert.IsTrue(rs2.IsSuccess); Assert.IsTrue(rs2.Entity.Message == "Momma"); } catch (Exception ex) { throw; } }
public void RPipeInternal() { PersistenceClient <Guid, PipeTest1> persistence, persistence2; CommandInitiator init; var server = new MicroservicePipeline(nameof(RPipeInternal)); server.ToMicroservice().Events.ProcessRequestError += Events_ProcessRequestError; server.ToMicroservice().Events.ProcessRequestUnresolved += Events_ProcessRequestUnresolved; server .AddChannelIncoming("inChannel") .AttachPersistenceManagerHandlerMemory((PipeTest1 e) => e.Id, (s) => new Guid(s), resourceProfile: "Entity") .AttachPersistenceClient(out persistence) .Revert() .AddChannelIncoming("inChannel2") .AttachPersistenceClient(out persistence2) .Revert() .AddChannelIncoming("backout") .AttachCommandInitiator(out init) ; server.Start(); var result = persistence.Create(new PipeTest1() { Message = "Hello" } , new RepositorySettings() { WaitTime = TimeSpan.FromSeconds(5) } ).Result; Assert.IsTrue(result.ResponseCode == 201); var result2 = persistence2.Create(new PipeTest1() { Message = "Hello" } , new RepositorySettings() { WaitTime = TimeSpan.FromSeconds(5) } ).Result; Assert.IsTrue(result2.ResponseCode == 501); var result3 = init.Process <string, string>(("franky", "four", "fingers"), "" , new RequestSettings { WaitTime = TimeSpan.FromSeconds(5) }, routing: ProcessOptions.RouteInternal ).Result; Assert.IsTrue(result3.ResponseCode == 501); }
public void TestMethod1() { try { var bridgeOut = new CommunicationBridge(CommunicationBridgeMode.RoundRobin); var bridgein = new CommunicationBridge(CommunicationBridgeMode.Broadcast); PersistenceClient <Guid, BridgeMe> init; DebugMemoryDataCollector memp1, memp2; var p1 = new MicroservicePipeline("Sender") .AdjustPolicyCommunication((p, c) => p.BoundaryLoggingActiveDefault = true) .AddDebugMemoryDataCollector(out memp1) .AddChannelIncoming("cresponse") .AttachListener(bridgein.GetListener()) .Revert() .AddChannelOutgoing("crequest") .AttachSender(bridgeOut.GetSender()) .AttachPersistenceClient("cresponse", out init) ; var p2 = new MicroservicePipeline("Receiver") .AdjustPolicyCommunication((p, c) => p.BoundaryLoggingActiveDefault = true) .AddDataCollector((c) => new DebugMemoryDataCollector(), (c) => memp2 = c) .AddChannelIncoming("crequest") .AttachMessageRedirectRule( canRedirect: (p) => p.Message.MessageType.Equals("bridgeme", StringComparison.InvariantCultureIgnoreCase) , redirect: (p) => p.Message.MessageType = "BridgeMe2" ) .AttachListener(bridgeOut.GetListener()) .AttachCommand(new PersistenceManagerHandlerMemory <Guid, BridgeMe2>((e) => e.Id, (s) => new Guid(s))) .Revert() .AddChannelOutgoing("cresponse") .AttachSender(bridgein.GetSender()) ; p1.Start(); p2.Start(); int check1 = p1.ToMicroservice().Commands.Count(); int check2 = p2.ToMicroservice().Commands.Count(); var entity = new BridgeMe() { Message = "Momma" }; var rs = init.Create(entity, new RepositorySettings() { WaitTime = TimeSpan.FromSeconds(20) }).Result; Assert.IsTrue(!rs.IsSuccess && rs.ResponseCode == 422); } catch (Exception ex) { throw; } }
public void TestReroute() { var bridgeOut = new ManualCommunicationBridgeAgent(new ManualFabricBridge(), CommunicationBridgeMode.RoundRobin); bool success = false; ManualResetEvent mre = new ManualResetEvent(false); DebugMemoryDataCollector memp1, memp2; var p1 = new MicroservicePipeline("Sender") .AdjustPolicyCommunication((p, c) => p.BoundaryLoggingActiveDefault = true) .AddDebugMemoryDataCollector(out memp1) .AddChannelIncoming("fredo") .AttachCommand(typeof(IContractInitial), (ctx) => { ctx.Responses.Add(new TransmissionPayload(ctx.Request.Message.Clone().SetDestination <IContractFinal>())); return(Task.FromResult(0)); }) .Revert() .AddChannelOutgoing("crequest") .AttachSender(bridgeOut.GetSender()) .Revert() ; var p2 = new MicroservicePipeline("Receiver") .AdjustPolicyCommunication((p, c) => p.BoundaryLoggingActiveDefault = true) .AddDebugMemoryDataCollector(out memp2) .AddChannelIncoming("crequest") .AttachListener(bridgeOut.GetListener()) .AttachCommand(typeof(IContractFinal), (ctx) => { var value = ctx.PayloadSerializer.PayloadDeserialize <string>(ctx.Request); success = value == "Hello"; mre.Set(); return(Task.FromResult(0)); }) .Revert() ; p1.Start(); p2.Start(); //Send the message to the command asynchronously. p1.ToMicroservice().Dispatch.Process <IContractInitial>("Hello"); mre.WaitOne(); Assert.IsTrue(success); p1.Stop(); p2.Stop(); }
public void Redirect1() { try { var fabric = new ManualFabricBridge(); var bridgeOut = fabric[FabricMode.Queue]; var bridgein = fabric[FabricMode.Broadcast]; ICommandInitiator init; DebugMemoryDataCollector memp1, memp2; var client = new MicroservicePipeline("Sender") .AdjustPolicyCommunicationBoundaryLoggingActive() .AddDebugMemoryDataCollector(out memp1) .AddChannelIncoming("cresponse", autosetPartition01: false) .AttachPriorityPartition((0, 0.9M), (1, 1.1M)) .AttachListener(bridgein.GetListener()) .AttachICommandInitiator(out init) .Revert() .AddChannelOutgoing("crequest") .AttachSender(bridgeOut.GetSender()) ; var server = new MicroservicePipeline("Receiver") .AdjustPolicyCommunicationBoundaryLoggingActive() .AddDebugMemoryDataCollector(out memp2) .AddChannelIncoming("credirect") .AttachCommand((CommandMethodRequestContext ctx) => { ctx.ResponseSet(201, "Hi"); return(Task.FromResult(0)); }, ("one", "two")) .Revert() .AddChannelIncoming("crequest") .AttachMessageRedirectRule( canRedirect: (p) => p.Message.MessageType.Equals("bridgeme", StringComparison.InvariantCultureIgnoreCase) , redirect: (p) => { p.Message.MessageType = "BridgeMe2"; p.Message.ActionType = "Whatever"; } ) .AttachMessageRedirectRule( canRedirect: (p) => p.Message.MessageType.Equals("redirectme", StringComparison.InvariantCultureIgnoreCase) , redirect: (p) => { p.Message.ChannelId = "credirect"; p.Message.MessageType = "one"; p.Message.ActionType = "two"; } ) .AttachListener(bridgeOut.GetListener()) .AttachCommand((CommandMethodRequestContext ctx) => { ctx.ResponseSet(400, "Blah"); return(Task.FromResult(0)); }, ("BridgeMe", "create")) .AttachCommand((CommandMethodRequestContext ctx) => { ctx.ResponseSet(200, "Yah!"); return(Task.FromResult(0)); }, ("bridgeMe2", "whatever")) .Revert() .AddChannelOutgoing("cresponse") .AttachSender(bridgein.GetSender()) ; client.Start(); server.Start(); int check1 = client.ToMicroservice().Commands.Count(); int check2 = server.ToMicroservice().Commands.Count(); var entity = new BridgeMe() { Message = "Momma" }; var rs = init.Process <BridgeMe, string>(("crequest", "BRIDGEME", "create"), entity).Result; Assert.IsTrue(rs.ResponseCode == 200); var rs2 = init.Process <BridgeMe, string>(("crequest", "redirectme", "hmm"), entity).Result; Assert.IsTrue(rs2.ResponseCode == 201); client.Stop(); server.Stop(); } catch (Exception ex) { throw; } }
public void TestMethod1() { try { var fabric = new ManualFabricBridge(); var bridgeOut = fabric[FabricMode.Queue]; var bridgein = fabric[FabricMode.Broadcast]; var key = CreateSalt(128); var encOut = new AesEncryptionHandler(key, keySize: 128); var encIn = new AesEncryptionHandler(key, keySize: 128); PersistenceClient <Guid, SecureMe> init; DebugMemoryDataCollector memp1, memp2; var p1 = new MicroservicePipeline("Sender") .AddEncryptionHandler("rogue1", encOut) .AdjustPolicyCommunication((p, c) => p.BoundaryLoggingActiveDefault = true) .AddDataCollector((c) => new DebugMemoryDataCollector(), (c) => memp1 = c) .AddChannelIncoming("cresponse") .AttachListener(bridgein.GetListener()) .Revert() .AddChannelOutgoing("crequest") .AttachTransportPayloadEncryption("rogue1") .AttachSender(bridgeOut.GetSender()) .AttachPersistenceClient("cresponse", out init) .Revert() ; var p2 = new MicroservicePipeline("Receiver") .AddEncryptionHandler("rogue2", encIn) .AdjustPolicyCommunication((p, c) => p.BoundaryLoggingActiveDefault = true) .AddDataCollector((c) => new DebugMemoryDataCollector(), (c) => memp2 = c) .AddChannelIncoming("crequest") .AttachTransportPayloadDecryption("rogue2") .AttachListener(bridgeOut.GetListener()) .AttachCommand(new PersistenceManagerHandlerMemory <Guid, SecureMe>((e) => e.Id, (s) => new Guid(s))) .Revert() .AddChannelOutgoing("cresponse") .AttachSender(bridgein.GetSender()) ; p1.Start(); p2.Start(); int check1 = p1.ToMicroservice().Commands.Count(); int check2 = p2.ToMicroservice().Commands.Count(); var entity = new SecureMe() { Message = "Momma" }; var rs = init.Create(entity, new RepositorySettings() { WaitTime = TimeSpan.FromMinutes(5) }).Result; var rs2 = init.Read(entity.Id).Result; Assert.IsTrue(rs2.IsSuccess); Assert.IsTrue(rs2.Entity.Message == "Momma"); } catch (Exception ex) { throw; } }
public void TestMethod1() { try { var fabric = new ManualFabricBridge(); var bridgeOut = new ManualCommunicationBridgeAgent(fabric, CommunicationBridgeMode.RoundRobin); var bridgein = new ManualCommunicationBridgeAgent(fabric, CommunicationBridgeMode.Broadcast); PersistenceClient <Guid, SecureMe> init; DebugMemoryDataCollector memp1, memp2; var p1 = new MicroservicePipeline("Sender") .AdjustPolicyCommunication((p, c) => p.BoundaryLoggingActiveDefault = true) .AddAuthenticationHandlerJwtToken("id1", JwtHashAlgorithm.HS256, Encoding.UTF8.GetBytes("My big secret")) .AddDebugMemoryDataCollector(out memp1) .AddChannelIncoming("cresponse", boundaryLoggingEnabled: true) .AttachListener(bridgein.GetListener()) .Revert() .AddChannelOutgoing("crequest", boundaryLoggingEnabled: true) .AttachSender(bridgeOut.GetSender()) .AttachTransportPayloadSignature("id1") .AttachPersistenceClient("cresponse", out init) .Revert() ; var p2 = new MicroservicePipeline("Receiver") .AdjustPolicyCommunication((p, c) => p.BoundaryLoggingActiveDefault = true) .AddAuthenticationHandlerJwtToken("id1", JwtHashAlgorithm.HS256, Encoding.UTF8.GetBytes("My big secret")) .AddDebugMemoryDataCollector(out memp2) .AddChannelIncoming("crequest", boundaryLoggingEnabled: true) .AttachListener(bridgeOut.GetListener()) .AttachTransportPayloadVerification("id1") .AttachCommand(new PersistenceManagerHandlerMemory <Guid, SecureMe>((e) => e.Id, (s) => new Guid(s))) .Revert() .AddChannelOutgoing("cresponse", boundaryLoggingEnabled: true) .AttachSender(bridgein.GetSender()) .Revert() ; p1.Start(); p2.Start(); int check1 = p1.ToMicroservice().Commands.Count(); int check2 = p2.ToMicroservice().Commands.Count(); var entity = new SecureMe() { Message = "Momma" }; var rs = init.Create(entity, new RepositorySettings() { WaitTime = TimeSpan.FromSeconds(30) }).Result; var rs2 = init.Read(entity.Id).Result; Assert.IsTrue(rs2.IsSuccess); Assert.IsTrue(rs2.Entity.Message == "Momma"); } catch (Exception ex) { throw; } }
public void RPipeExternal() { PersistenceClient <Guid, PipeTest1> persistence, persistence2; CommandInitiator init; DebugMemoryDataCollector collectorS, collectorC; var fabric = new ManualFabricBridge(); var bridgeOut = new ManualCommunicationBridgeAgent(fabric, CommunicationBridgeMode.RoundRobin); var bridgeReturn = new ManualCommunicationBridgeAgent(fabric, CommunicationBridgeMode.Broadcast); var server = new MicroservicePipeline($"{nameof(RPipeExternal)}server"); var client = new MicroservicePipeline($"{nameof(RPipeExternal)}client"); server.ToMicroservice().Events.ProcessRequestError += Events_ProcessRequestError; server.ToMicroservice().Events.ProcessRequestUnresolved += Events_ProcessRequestUnresolved; client.ToMicroservice().Events.ProcessRequestError += Events_ProcessRequestError; client.ToMicroservice().Events.ProcessRequestUnresolved += Events_ProcessRequestUnresolved; server .AdjustPolicyTaskManagerForDebug() .AddDebugMemoryDataCollector(out collectorS) .AddChannelIncoming("inChannel") .AttachPersistenceManagerHandlerMemory( (PipeTest1 e) => e.Id , (s) => new Guid(s) , resourceProfile: "Entity") .AttachListener(bridgeOut.GetListener()) .Revert() .AddChannelOutgoing("return") .AttachSender(bridgeReturn.GetSender()) .Revert() ; client .AdjustPolicyTaskManagerForDebug() .AddDebugMemoryDataCollector(out collectorC) .AddChannelIncoming("return") .AttachCommandInitiator(out init) .AttachListener(bridgeReturn.GetListener()) .Revert() .AddChannelOutgoing("inChannel") .AttachPersistenceClient("return", out persistence) .AttachSender(bridgeOut.GetSender()) .Revert() ; server.Start(); client.Start(); var result = persistence.Create(new PipeTest1() { Message = "Hello" } , new RepositorySettings() { WaitTime = TimeSpan.FromMinutes(5) } ).Result; Assert.IsTrue(result.ResponseCode == 201); //var result2 = persistence2.Create(new PipeTest1() { Message = "Hello" } // , new RepositorySettings() { WaitTime = TimeSpan.FromSeconds(5) } // ).Result; //Assert.IsTrue(result2.ResponseCode == 501); //var result3 = init.Process<string, string>(("franky", "four", "fingers"), "" // , new RequestSettings { WaitTime = TimeSpan.FromSeconds(5) }, routing: ProcessOptions.RouteInternal // ).Result; //Assert.IsTrue(result3.ResponseCode == 501); }