Beispiel #1
0
        public void TestMSMQ_ReadsFromMessageQueue()
        {
            ManualResetEvent        signal = new ManualResetEvent(false);
            IMessageReader <String> reader = new MSMQReader(Environment.MachineName);

            reader.MessageRead += new EventHandler <MessageReadArgs <String> >((o, e) =>
            {
                if (++unboundedReceives == N_MESSAGES)
                {
                    signal.Set();
                }
            });

            reader.StartReading(m_Stream);

            // Publish some messages to the queue
            for (int i = 1; i <= N_MESSAGES; ++i)
            {
                m_Queue.Send(i);
            }

            signal.WaitOne();

            // All the messages should have been consumed.
            Assert.AreEqual(0, m_Queue.GetAllMessages().Length);
        }
Beispiel #2
0
        public void TestMSMQ_FiresEndOfMessagesEvent()
        {
            ManualResetEvent        signal = new ManualResetEvent(false);
            IMessageReader <String> reader = new MSMQReader(Environment.MachineName);

            reader.EndOfMessages += (o, e) => signal.Set();

            // Publish some messages to the queue
            for (int i = 1; i <= N_MESSAGES; ++i)
            {
                m_Queue.Send(i);
            }

            reader.StartReading(m_Stream);

            signal.WaitOne();

            // All the messages should have been consumed.
            Assert.AreEqual(0, m_Queue.GetAllMessages().Length);
        }
Beispiel #3
0
        public void TestMSMQ_FiresDoneReadingEvent()
        {
            ManualResetEvent        signal = new ManualResetEvent(false);
            IMessageReader <String> reader = new MSMQReader(Environment.MachineName, N_MESSAGES);

            int messagesRead = 0;
            int boundedReads = 0;

            reader.MessageRead += new EventHandler <MessageReadArgs <String> >((o, e) =>
            {
                ++boundedReads;
            });

            reader.DoneReading += new EventHandler <DoneReadingArgs>((o, e) =>
            {
                messagesRead = e.NumberOfMessages;
                signal.Set();
            });

            reader.StartReading(m_Stream);

            // Write some messages to the queue
            for (int i = 1; i <= N_MESSAGES; ++i)
            {
                m_Queue.Send(i);
            }

            // Wait for the reader to stop reading
            signal.WaitOne();


            // All the messages should have been read.
            Assert.AreEqual(0, m_Queue.GetAllMessages().Length);

            // The number of messages from the DoneReading event should be equal
            // to the number of messages we wrote.
            Assert.AreEqual(N_MESSAGES, messagesRead);
        }