예제 #1
0
        public void MiultipleSendersTest()
        {
            //Arrange
            var received = new List <LogMessage>();
            var sender1  = new LogMessageSender("127.0.0.1", 9994);
            var sender2  = new LogMessageSender("127.0.0.1", 9994);
            var receiver = new LogMessageReceiver(9994);

            receiver.MessageReceived += (messageReceiver, message, arg3) => received.Add(message);
            receiver.Start();

            //Act
            sender1.Send(new LogMessage("logger1", "Test msg"));
            sender2.Send(new LogMessage("logger2", "Test msg"));

            for (var i = 0; i < 10; i++)
            {
                Thread.Sleep(100);
                if (received.Count == 2)
                {
                    break;
                }
            }

            //Assert
            Assert.That(received.Count, Is.EqualTo(2));
            Assert.That(received.First().Logger, Is.Not.EqualTo(received.Last().Logger));

            sender1.Dispose();
            sender2.Dispose();
            receiver.Dispose();
        }
예제 #2
0
        public void SendAndReceiveTest()
        {
            //Arrange
            var msg      = new LogMessage("Test.Logger", "Test message", LogMessage.LogLevel.Fatal, true, new Exception());
            var msg2     = new LogMessage("1", "2"); //to satisfy compiler
            var sender   = new LogMessageSender("127.0.0.1", 9995);
            var receiver = new LogMessageReceiver(9995);

            receiver.Start();

            receiver.MessageReceived += (thisReceiver, receiverMsg, host) =>
            {
                msg2 = receiverMsg;
            };

            //Act
            sender.Send(msg);

            //Assert
            Assert.That(() => msg2, Has.
                        Property("Logger").EqualTo("Test.Logger").And.
                        Property("Thread").EqualTo(msg.Thread).And.
                        Property("Message").EqualTo("Test message").And.
                        Property("Stack").EqualTo(msg.Stack).And.
                        Property("Exception").EqualTo(msg.Exception).And.
                        Property("Counter").EqualTo(msg.Counter).And.
                        Property("Level").EqualTo(msg.Level).And.
                        Property("TimeStamp").EqualTo(msg.TimeStamp).
                        After(500));

            sender.Dispose();
            receiver.Dispose();
        }
예제 #3
0
 void OnDestroy()
 {
     if (_sender != null)
     {
         _sender.Dispose();
     }
 }
예제 #4
0
        protected override void CloseTarget()
        {
            if (_sender != null)
            {
                _sender.Dispose();
                _sender = null;
            }

            base.CloseTarget();
        }
예제 #5
0
        public void DisposeTest()
        {
            //Arrange
            var sender = new LogMessageSender("127.0.0.1", 9996);

            sender.Dispose();

            //Act
            //Assert
            Assert.That(() => sender.Send(new LogMessage("a", "b")), Throws.Exception);
        }
        public void SendReceiveStressTest()
        {
            const int EventsCount = 100;

            //Arrange
            var result   = new List <LogMessage>();
            var sender   = new LogMessageSender("127.0.0.2", 9997);
            var receiver = new LogMessageReceiver(9997);

            receiver.MessageReceived += (thisReceiver, receiverMsg, host) =>
                                        result.Add(receiverMsg);

            //Act

            for (var i = 0; i < EventsCount; i++)
            {
                sender.Send(new LogMessage("Test.Logger", "Message " + (i + 1), LogMessage.LogLevel.Trace, true));
            }

            receiver.Start();

            for (var i = 0; i < 20; i++)
            {
                Thread.Sleep(100);
                if (result.Count == EventsCount)
                {
                    break;
                }
            }

            //Assert
            Assert.That(result.Count, Is.EqualTo(EventsCount));
            Assert.That(result.All(m => m.Level == LogMessage.LogLevel.Trace));
            Assert.That(result.All(m => m.Logger == "Test.Logger"));
            Assert.That(result.All(m => m.Message.StartsWith("Message")));

            sender.Dispose();
            receiver.Dispose();
        }
예제 #7
0
 void OnDestroy()
 {
     _sender.Dispose();
 }