Пример #1
0
        public void MsmqLogWriter_Write_WritesEnumerableBatchToQueue()
        {
            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 MsmqJsonLogEventMessageFormatter();

                var writer = new MsmqLogWriter(writeQueue);

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

                    var logEvents = new List <LogEvent>(2);
                    logEvents.Add(new LogEvent()
                    {
                        EventName = "Test Event",
                        Source    = "Test Source"
                    });
                    logEvents.Add(new LogEvent()
                    {
                        EventName = "Test Event 2",
                        Source    = "Test Source"
                    });
                    writer.WriteBatch(logEvents);

                    var result = readQueue.Receive(TimeSpan.FromSeconds(5));
                    Assert.IsNotNull(result);

                    var results = Newtonsoft.Json.JsonConvert.DeserializeObject <LogEvent[]>(result.Body.ToString());
                    Assert.AreEqual(2, results.Length);
                    Assert.AreEqual("Test Event", results[0].EventName);
                    Assert.AreEqual("Test Event 2", results[1].EventName);
                }
            }
        }