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!");
        }
Ejemplo n.º 2
0
        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!");
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);

        }