public void SendDedicatedMessageTest()
        {
            var bus = new YottoBusFactory().Create();

            using (var peer1 = bus.CreatePeer())
                using (var peer2 = bus.CreatePeer())
                {
                    peer1.Connect();
                    peer2.Connect();

                    var subscriberToReceive = new SubscriberFor <string>();
                    var subscriberToSkip    = new SubscriberFor <string>();
                    peer1.Register(subscriberToReceive);
                    peer2.Register(subscriberToSkip);

                    Thread.Sleep(50);

                    var message = "Hello";
                    peer2.Send(message, peer1.Identity);

                    AwaitAssert(TimeSpan.FromSeconds(5), () =>
                    {
                        CollectionAssert.Contains(subscriberToReceive.ReceivedMessages, message);
                    });

                    Thread.Sleep(1000);

                    CollectionAssert.IsEmpty(subscriberToSkip.ReceivedMessages);
                }
        }
        public void SubscribeToPeerConnectedOrDisconnectedTest()
        {
            var bus = new YottoBusFactory().Create();

            using (var peer1 = bus.CreatePeer())
                using (var peer2 = bus.CreatePeer())
                {
                    peer1.Connect();

                    var subscriberForConnected    = new SubscriberFor <PeerConnected>();
                    var subscriberForDisconnected = new SubscriberFor <PeerDisconnected>();
                    peer1.Register(subscriberForConnected);
                    peer1.Register(subscriberForDisconnected);

                    Thread.Sleep(50);

                    peer2.Connect();

                    AwaitAssert(TimeSpan.FromSeconds(10), () =>
                    {
                        Assert.True(subscriberForConnected.ReceivedMessages.Any(m => m is PeerConnected && ((PeerConnected)m).Identity.Equals(peer2.Identity)));
                    });

                    peer2.Disconnect();

                    AwaitAssert(TimeSpan.FromSeconds(10), () =>
                    {
                        Assert.True(subscriberForDisconnected.ReceivedMessages.Any(m => m is PeerDisconnected && ((PeerDisconnected)m).Identity.Equals(peer2.Identity)));
                    });
                }
        }
        public void ShouldDiscoverDisconnect()
        {
            var bus = new YottoBusFactory().Create();

            using (var peer1 = bus.CreatePeer())
                using (var peer2 = bus.CreatePeer())
                {
                    peer1.Connect();
                    peer2.Connect();

                    Console.WriteLine(DateTime.Now + "Started");

                    AwaitAssert(TimeSpan.FromSeconds(50), () =>
                    {
                        CollectionAssert.Contains(peer1.GetConnectedPeers(), peer2.Identity);
                    });

                    Console.WriteLine(DateTime.Now + "Connected");

                    peer2.Disconnect();

                    AwaitAssert(TimeSpan.FromSeconds(50), () =>
                    {
                        CollectionAssert.DoesNotContain(peer1.GetConnectedPeers(), peer2.Identity);
                    });

                    Console.WriteLine(DateTime.Now + "Disconnected");
                }
        }
        public void MultipleSubscriptionsTest()
        {
            var bus = new YottoBusFactory().Create();

            using (var peer1 = bus.CreatePeer())
            {
                peer1.Connect();

                var subscriber = new SubscriberForStringAndInt();
                peer1.Register(subscriber);

                Thread.Sleep(50);

                var stringMessage = "Hello";
                var intMessage    = 5;
                peer1.Publish(stringMessage);
                peer1.Publish(intMessage);

                AwaitAssert(TimeSpan.FromSeconds(5), () =>
                {
                    CollectionAssert.Contains(subscriber.ReceivedMessages, stringMessage);
                    CollectionAssert.Contains(subscriber.ReceivedMessages, intMessage);
                });
            }
        }
        public void ShouldSetIsConnectedProperly()
        {
            var bus = new YottoBusFactory().Create();

            using (var peer1 = bus.CreatePeer())
            {
                peer1.Connect();

                Assert.True(peer1.IsConnected);

                peer1.Disconnect();

                Assert.False(peer1.IsConnected);
            }
        }
        /// <summary>
        /// This test is running in debug mode so that we can examine consumed memory with VisualStudio tools
        /// </summary>
        // [Test]
        public void MemoryConsumptionTest()
        {
            var bus = new YottoBusFactory().Create();

            using (var peer1 = bus.CreatePeer())
                using (var peer2 = bus.CreatePeer())
                {
                    peer1.Connect();
                    peer2.Connect();

                    while (true)
                    {
                    }
                }
        }
        public void PeersInDifferentContextsDoNotSeeEachOther()
        {
            var bus = new YottoBusFactory().Create();

            using (var peer1 = bus.CreatePeer("contextOne"))
                using (var peer2 = bus.CreatePeer("contextTwo"))
                {
                    peer1.Connect();
                    peer2.Connect();

                    Thread.Sleep(5000);

                    CollectionAssert.AreEquivalent(new[] { peer1.Identity }, peer1.GetConnectedPeers());
                    CollectionAssert.AreEquivalent(new[] { peer2.Identity }, peer2.GetConnectedPeers());
                }
        }
        public void ShouldDiscoverEachOther()
        {
            var bus = new YottoBusFactory().Create();

            using (var peer1 = bus.CreatePeer())
                using (var peer2 = bus.CreatePeer())
                {
                    peer1.Connect();
                    peer2.Connect();

                    AwaitAssert(TimeSpan.FromSeconds(5), () =>
                    {
                        CollectionAssert.AreEquivalent(new[] { peer1.Identity, peer2.Identity }, peer1.GetConnectedPeers());
                        CollectionAssert.AreEquivalent(new[] { peer1.Identity, peer2.Identity }, peer2.GetConnectedPeers());
                    });
                }
        }
        public void ShouldDiscoverWithMetadata()
        {
            var bus = new YottoBusFactory().Create();

            var conf = new PeerConfiguration(string.Empty, new Dictionary <string, string>()
            {
                ["key"] = "value"
            });

            using (var peer1 = bus.CreatePeer(conf))
            {
                peer1.Connect();

                AwaitAssert(TimeSpan.FromSeconds(5), () =>
                {
                    Assert.True(peer1.GetConnectedPeers().Any());
                    Assert.True(peer1.GetConnectedPeers().First().Metadata.Has("key"));
                    Assert.AreEqual(peer1.GetConnectedPeers().First().Metadata.Get("key"), "value");
                });
            }
        }
Exemplo n.º 10
0
        public void PublishSubscribeTest()
        {
            var bus = new YottoBusFactory().Create();

            using (var peer1 = bus.CreatePeer())
            {
                peer1.Connect();

                var subscriber = new SubscriberFor <string>();
                peer1.Register(subscriber);

                Thread.Sleep(50);

                var message = "Hello";
                peer1.Publish(message);

                AwaitAssert(TimeSpan.FromSeconds(5), () =>
                {
                    CollectionAssert.Contains(subscriber.ReceivedMessages, message);
                    CollectionAssert.Contains(subscriber.MessageSenders, peer1.Identity);
                });
            }
        }
Exemplo n.º 11
0
        public void PeersInDifferentContextDoNotReceiveSubscribedMessages()
        {
            var bus = new YottoBusFactory().Create();

            using (var peer1 = bus.CreatePeer("contextOne"))
                using (var peer2 = bus.CreatePeer("contextTwo"))
                {
                    peer1.Connect();
                    peer2.Connect();

                    var subscriber = new SubscriberFor <string>();
                    peer1.Register(subscriber);

                    Thread.Sleep(50);

                    var message = "Hello";
                    peer2.Publish(message);

                    Thread.Sleep(5000);

                    CollectionAssert.DoesNotContain(subscriber.ReceivedMessages, message);
                    CollectionAssert.DoesNotContain(subscriber.MessageSenders, peer1.Identity);
                }
        }