Пример #1
0
        public void SetUp()
        {
            destination = Target.Input;
            XmsUtilities.Purge(destination);

            using (var producer = new XmsProducer(destination, false))
            {
                var msg = producer.CreateBytesMessage();
                msg.WriteUTF(expected);
                producer.Send(msg);
            }
        }
Пример #2
0
        public void GIVE_transactional_producer_AND_no_transaction_WHEN_send_THEN_message_is_on_queue()
        {
            using (var producer = new XmsProducer(address, true))
            {
                var msg = producer.CreateTextMessage();
                msg.Text = "message";
                producer.Send(msg);
            }
            var after = XmsUtilities.GetCurrentQueueDebth(address);

            Assert.That(after, Is.EqualTo(1));
        }
Пример #3
0
        public void ShouldSendOneMessage()
        {
            using (var producer = new XmsProducer(destination, false))
            {
                var msg = producer.CreateTextMessage();
                msg.Text = "message";
                producer.Send(msg);
            }
            var after = XmsUtilities.GetCurrentQueueDebth(destination);

            Assert.That(after, Is.EqualTo(1));
        }
Пример #4
0
        public void SetUp()
        {
            address = TestTargets.InputQueue;
            XmsUtilities.Purge(address);

            using (var producer = new XmsProducer(address, false))
            {
                var msg = producer.CreateBytesMessage();
                msg.WriteUTF(expected);
                producer.Send(msg);
            }
        }
        public void GIVEN_non_transactional_pool_WHEN_send_THEN_message_is_enqueued()
        {
            using (var producer = new XmsProducer(address, false))
                producer.SendTestMessage(address);

            IBM.XMS.IMessage message;
            using (var pool = new Pool<XmsPooledConsumer>(2, p => new XmsPooledConsumer(p, new XmsConsumer(address, false)), store))
            using (var producer = pool.Acquire())
            {
                message = producer.ReceiveNoWait();
            }
            Assert.That(message,Is.Not.Null);
        }
Пример #6
0
        public void GIVE_transactional_producer_WHEN_send_and_commited_THEN_message_is_on_queue()
        {
            using(var scope = new TransactionScope(TransactionScopeOption.Required))
            using (var producer = new XmsProducer(address, true))
            {
                var msg = producer.CreateTextMessage();
                msg.Text = "message";
                producer.Send(msg);
                scope.Complete();
            }
            var after = XmsUtilities.GetCurrentQueueDebth(address);

            Assert.That(after, Is.EqualTo(1));
        }
Пример #7
0
 public void ShouldSend100MessagesSingleThreaded()
 {
     int count = 100;
     var stop = Stopwatch.StartNew();
     using (var producer = new XmsProducer(destination, false))
     {
         foreach (var i in Enumerable.Range(0, count))
         {
             var msg = producer.CreateTextMessage();
             msg.Text = "message";
             producer.Send(msg);
         }
         stop.Stop();
     }
     var after = XmsUtilities.GetCurrentQueueDebth(destination);
     Console.WriteLine("Sent {0} messages single-threaded in {1}", count, stop.Elapsed);
     Assert.That(after, Is.EqualTo(count));
 }
Пример #8
0
        public void The_same_producer_can_be_accessed_on_two_different_threads_give_trat_the_transaction_scopes_do_not_collide()
        {
            var producer = new XmsProducer(address, true);

            using (var scope = new TransactionScope(TransactionScopeOption.Required))
            {    
                producer.SendTestMessage(address);
                scope.Complete();
            }
            var aaa = Task.Run(() =>
            {
                using (var scope2 = new TransactionScope(TransactionScopeOption.Required))
                {
                    producer.SendTestMessage(address);
                    scope2.Complete();
                }
            });
            aaa.Wait();
            
            var after = XmsUtilities.GetCurrentQueueDebth(address);
            Assert.That(after, Is.EqualTo(2));
        }