public async Task AsyncClient_ConnectMultipleClientsToServer_ConnectionsSucceed()
        {
            var port = Network.GetTcpPort();
            var uriString = string.Format("http://localhost:{0}", port);
            var uri = new Uri(uriString);

            var applicationContext = Substitute.For<IApplicationContext>();
            using (var server = new Server.Server(uri))
            {
                server.Start(applicationContext);

                var clients = new List<Client.AsyncClient>();
                const int NumClients = 100;
                var clientReceivedMessageCount = 0;
                for (var i = 0; i < NumClients; i++)
                {
                    var client = new Client.AsyncClient(uri);
                    client.OnMessage += (sender, eventArgs) => clientReceivedMessageCount++;
                    var connected = await client.Connect(Client.Enums.TransportType.ServerSentEvents);
                    Assert.IsTrue(connected);
                    clients.Add(client);
                }
                Assert.AreEqual(NumClients, clients.Count);
                server.SendMessage("x");
                foreach (var client in clients)
                {
                    client.Dispose();
                }

                // Probably won't receive all messages - no sleep or synchronisation implemented to ensure exactly NumClients messages
                Assert.IsTrue(clientReceivedMessageCount > 0);
                Assert.IsTrue(clientReceivedMessageCount <= NumClients);
            }
        }
        public void TestServerSendAddMessageInDb()
        {
            var abonent = new Server.Abonent()
            {
                id     = 1,
                name   = "1",
                status = Server.Status.Online
            };

            var message = new Server.Message()
            {
                SenderId      = 1,
                RecipientId   = 2,
                TextOfMessage = "test"
            };

            List <Server.Message> messages = new List <Server.Message>();

            messages.Add(message);


            Dictionary <int, Server.Abonent> allAbonents = new Dictionary <int, Server.Abonent>();

            mockDataBase.Setup(r => r.AddAbonentToDb(1, "1"));
            mockDataBase.Setup(r => r.GetAbonentFromDb()).Returns(allAbonents);

            mockDataBase.Setup(r => r.GetMessagesFromDb(2)).Returns(messages);

            mockLogger.Setup(r => r.Logging("test"));

            mockCallback.Setup(r => r.cbShowAbonent(abonent));
            mockCallback.Setup(r => r.cbSendMessage("1", "test"));

            mockOperationContext.Setup(r => r.GetChannelCallback(It.IsAny <OperationContext>())).Returns(mockCallback.Object);

            var server = new Server.Server(mockDataBase.Object, mockLogger.Object, mockOperationContext.Object);

            server.Connect("1");
            server.Connect("2");

            server.Disconnect(2);


            List <int> recipient = new List <int>();

            recipient.Add(2);

            server.SendMessage(1, recipient, "test");

            mockDataBase.Verify(r => r.AddMessageToDb(1, 2, "test"));
        }
Example #3
0
 private void SongChanged()
 {
     server.SendMessage("192.168.0.15: <Song>" + SelectedSong);
 }