Пример #1
0
        public void MsmqLogWriter_Write_WritesToQueue()
        {
            if (System.Messaging.MessageQueue.Exists(_TestQueuePath))
            {
                System.Messaging.MessageQueue.Delete(_TestQueuePath);
            }

            if (!System.Messaging.MessageQueue.Exists(_TestQueuePath))
            {
                System.Messaging.MessageQueue.Create(_TestQueuePath, false);
            }

            using (var writeQueue = new System.Messaging.MessageQueue(_TestQueuePath, false, true, System.Messaging.QueueAccessMode.Send))
            {
                writeQueue.Formatter = new MsmqXmlLogEventMessageFormatter();

                var writer = new MsmqLogWriter(writeQueue);

                using (var readQueue = new System.Messaging.MessageQueue(_TestQueuePath, false, true, System.Messaging.QueueAccessMode.SendAndReceive))
                {
                    readQueue.Formatter = new MsmqXmlLogEventMessageFormatter();

                    var logEvent = new LogEvent()
                    {
                        EventName = "Test Event",
                        Source    = "Test Source"
                    };
                    writer.Write(logEvent);

                    var result = readQueue.Receive(TimeSpan.FromSeconds(5));
                    Assert.IsNotNull(result);
                    var xdoc = System.Xml.Linq.XDocument.Parse(result.Body.ToString());
                    Assert.IsNotNull((from n in xdoc.Descendants("LogEvent") select n).FirstOrDefault());
                }
            }
        }