public void TestWritableTransportServer() { BlockingCollection<WritableString> queue = new BlockingCollection<WritableString>(); List<string> events = new List<string>(); IPEndPoint endpoint = new IPEndPoint(IPAddress.Any, 0); var remoteHandler = Observer.Create<TransportEvent<WritableString>>(tEvent => queue.Add(tEvent.Data)); using (var server = new WritableTransportServer<WritableString>(endpoint, remoteHandler, _tcpPortProvider, _injector)) { server.Run(); IPEndPoint remoteEndpoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), server.LocalEndpoint.Port); using (var client = new WritableTransportClient<WritableString>(remoteEndpoint, _injector)) { client.Send(new WritableString("Hello")); client.Send(new WritableString(", ")); client.Send(new WritableString("World!")); events.Add(queue.Take().Data); events.Add(queue.Take().Data); events.Add(queue.Take().Data); } } Assert.AreEqual(3, events.Count); Assert.AreEqual(events[0], "Hello"); Assert.AreEqual(events[1], ", "); Assert.AreEqual(events[2], "World!"); }
public void TestWritableTransportServer() { BlockingCollection <WritableString> queue = new BlockingCollection <WritableString>(); List <string> events = new List <string>(); IPEndPoint endpoint = new IPEndPoint(IPAddress.Any, 0); var remoteHandler = Observer.Create <TransportEvent <WritableString> >(tEvent => queue.Add(tEvent.Data)); using (var server = new WritableTransportServer <WritableString>(endpoint, remoteHandler, _tcpPortProvider, _injector)) { server.Run(); IPEndPoint remoteEndpoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), server.LocalEndpoint.Port); using (var client = new WritableTransportClient <WritableString>(remoteEndpoint, _injector)) { client.Send(new WritableString("Hello")); client.Send(new WritableString(", ")); client.Send(new WritableString("World!")); events.Add(queue.Take().Data); events.Add(queue.Take().Data); events.Add(queue.Take().Data); } } Assert.AreEqual(3, events.Count); Assert.AreEqual(events[0], "Hello"); Assert.AreEqual(events[1], ", "); Assert.AreEqual(events[2], "World!"); }
public void TestWritableRaceCondition() { BlockingCollection <WritableString> queue = new BlockingCollection <WritableString>(); List <string> events = new List <string>(); int numEventsExpected = 150; IPEndPoint endpoint = new IPEndPoint(IPAddress.Any, 0); var remoteHandler = Observer.Create <TransportEvent <WritableString> >(tEvent => queue.Add(tEvent.Data)); using (var server = new WritableTransportServer <WritableString>(endpoint, remoteHandler, _tcpPortProvider, _injector)) { server.Run(); for (int i = 0; i < numEventsExpected / 3; i++) { Task.Run(() => { IPEndPoint remoteEndpoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), server.LocalEndpoint.Port); using (var client = new WritableTransportClient <WritableString>(remoteEndpoint, _injector)) { client.Send(new WritableString("Hello")); client.Send(new WritableString(", ")); client.Send(new WritableString("World!")); } }); } for (int i = 0; i < numEventsExpected; i++) { events.Add(queue.Take().Data); } } Assert.AreEqual(numEventsExpected, events.Count); }
public void TestNonEmptyInjectionTransportServer() { int id = 5; IConfiguration config = TangFactory.GetTang().NewConfigurationBuilder().BindNamedParameter <StringId, int>( GenericType <StringId> .Class, id.ToString(CultureInfo.InvariantCulture)).Build(); IInjector injector = TangFactory.GetTang().NewInjector(config); BlockingCollection <PrefixedStringWritable> queue = new BlockingCollection <PrefixedStringWritable>(); List <string> events = new List <string>(); IPEndPoint endpoint = new IPEndPoint(IPAddress.Any, 0); var remoteHandler = Observer.Create <TransportEvent <PrefixedStringWritable> >(tEvent => queue.Add(tEvent.Data)); using (var server = new WritableTransportServer <PrefixedStringWritable>(endpoint, remoteHandler, _tcpPortProvider, injector.ForkInjector())) { server.Run(); IPEndPoint remoteEndpoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), server.LocalEndpoint.Port); using (var client = new WritableTransportClient <PrefixedStringWritable>(remoteEndpoint, injector.ForkInjector())) { client.Send(new PrefixedStringWritable("Hello")); client.Send(new PrefixedStringWritable(", ")); client.Send(new PrefixedStringWritable("World!")); events.Add(queue.Take().Data); events.Add(queue.Take().Data); events.Add(queue.Take().Data); } } Assert.AreEqual(3, events.Count); Assert.AreEqual(events[0], "Hello_" + id); Assert.AreEqual(events[1], ", _" + id); Assert.AreEqual(events[2], "World!_" + id); }
public void TestNonEmptyInjectionTransportServer() { int id = 5; IConfiguration config = TangFactory.GetTang().NewConfigurationBuilder().BindNamedParameter<StringId, int>( GenericType<StringId>.Class, id.ToString(CultureInfo.InvariantCulture)).Build(); IInjector injector = TangFactory.GetTang().NewInjector(config); BlockingCollection<PrefixedStringWritable> queue = new BlockingCollection<PrefixedStringWritable>(); List<string> events = new List<string>(); IPEndPoint endpoint = new IPEndPoint(IPAddress.Any, 0); var remoteHandler = Observer.Create<TransportEvent<PrefixedStringWritable>>(tEvent => queue.Add(tEvent.Data)); using (var server = new WritableTransportServer<PrefixedStringWritable>(endpoint, remoteHandler, _tcpPortProvider, injector.ForkInjector())) { server.Run(); IPEndPoint remoteEndpoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), server.LocalEndpoint.Port); using (var client = new WritableTransportClient<PrefixedStringWritable>(remoteEndpoint, injector.ForkInjector())) { client.Send(new PrefixedStringWritable("Hello")); client.Send(new PrefixedStringWritable(", ")); client.Send(new PrefixedStringWritable("World!")); events.Add(queue.Take().Data); events.Add(queue.Take().Data); events.Add(queue.Take().Data); } } Assert.AreEqual(3, events.Count); Assert.AreEqual(events[0], "Hello_" + id); Assert.AreEqual(events[1], ", _" + id); Assert.AreEqual(events[2], "World!_" + id); }
public void TestWritableRaceCondition() { BlockingCollection<WritableString> queue = new BlockingCollection<WritableString>(); List<string> events = new List<string>(); int numEventsExpected = 150; IPEndPoint endpoint = new IPEndPoint(IPAddress.Any, 0); var remoteHandler = Observer.Create<TransportEvent<WritableString>>(tEvent => queue.Add(tEvent.Data)); using (var server = new WritableTransportServer<WritableString>(endpoint, remoteHandler, _tcpPortProvider, _injector)) { server.Run(); for (int i = 0; i < numEventsExpected / 3; i++) { Task.Run(() => { IPEndPoint remoteEndpoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), server.LocalEndpoint.Port); using (var client = new WritableTransportClient<WritableString>(remoteEndpoint, _injector)) { client.Send(new WritableString("Hello")); client.Send(new WritableString(", ")); client.Send(new WritableString("World!")); } }); } for (int i = 0; i < numEventsExpected; i++) { events.Add(queue.Take().Data); } } Assert.AreEqual(numEventsExpected, events.Count); }