public void ConnectLoggingTest()
        {
            Expect.AtLeastOnce.On(mockConnection);
            Expect.Once.On(mockApplicationLogger).Method("Log").With(testActiveMqRemoteReceiver, LogLevel.Information, "Connected to URI: '" + connectUriName + "', Queue: '" + queueName + "'.");

            testActiveMqRemoteReceiver.Connect();

            mocks.VerifyAllExpectationsHaveBeenMet();
        }
 //------------------------------------------------------------------------------
 //
 // Method: Connect
 //
 //------------------------------------------------------------------------------
 /// <summary>
 /// Connects and initialises the underlying MethodInvocationRemoting and ActiveMQ components.
 /// </summary>
 public void Connect()
 {
     outgoingSender.Connect();
     outgoingReceiver.Connect();
     incomingSender.Connect();
     incomingReceiver.Connect();
     methodInvocationReceiver.Receive();
 }
        public void ReceiveException()
        {
            ITextMessage mockTextMessage = mocks.NewMock <ITextMessage>();

            using (mocks.Ordered)
            {
                SetConnectExpectations();
                Expect.Once.On(mockConsumer).Method("Receive").WithAnyArguments().Will(Throw.Exception(new Exception("Mock Receive Failure")));
            }

            testActiveMqRemoteReceiver.Connect();
            Exception e = Assert.Throws <Exception>(delegate
            {
                string receivedMessage = testActiveMqRemoteReceiver.Receive();
            });

            mocks.VerifyAllExpectationsHaveBeenMet();
            Assert.That(e.Message, NUnit.Framework.Is.StringStarting("Error receiving message."));
        }
예제 #4
0
        static void Main(string[] args)
        {
            // Setup connection parameters for ActiveMQ
            const string connectUri                 = "activemq:tcp://localhost:61616?wireFormat.maxInactivityDuration=0";
            const string queueName                  = "FromJava";
            const string requestQueueFilter         = "Request";
            const string responseQueueFilter        = "Response";
            const int    receiverConnectLoopTimeout = 200;

            // Setup method invocation receiver
            ActiveMqRemoteSender           activeMqSender           = new ActiveMqRemoteSender(connectUri, queueName, responseQueueFilter);
            ActiveMqRemoteReceiver         activeMqReceiver         = new ActiveMqRemoteReceiver(connectUri, queueName, requestQueueFilter, receiverConnectLoopTimeout);
            MethodInvocationSerializer     methodSerializer         = new MethodInvocationSerializer(new SerializerOperationMap());
            MethodInvocationRemoteReceiver methodInvocationReceiver = new MethodInvocationRemoteReceiver(methodSerializer, activeMqSender, activeMqReceiver);

            methodInvocationReceiver.MethodInvocationReceived += new MethodInvocationReceivedEventHandler(ReceiveMethodInvocation);

            try
            {
                // Connect to ActiveMQ
                activeMqSender.Connect();
                activeMqReceiver.Connect();
                // Start receiving method invocations
                methodInvocationReceiver.Receive();
                Console.WriteLine("Waiting for incoming method calls...");
                Console.WriteLine("Press [ENTER] to cancel.");
                Console.ReadLine();
            }
            catch (Exception e)
            {
                Console.WriteLine("An exception occurred");
                Console.WriteLine(e.Message);
                Console.WriteLine(e.StackTrace);
            }
            finally
            {
                // Stop receiving, disconnect, and dispose
                methodInvocationReceiver.CancelReceive();
                activeMqReceiver.CancelReceive();
                activeMqReceiver.Disconnect();
                activeMqSender.Disconnect();
                activeMqReceiver.Dispose();
                activeMqSender.Dispose();
            }
        }
        public void ReceiveMetricsTest()
        {
            ITextMessage  mockTextMessage           = mocks.NewMock <ITextMessage>();
            IPrimitiveMap mockTextMessageProperties = mocks.NewMock <IPrimitiveMap>();
            string        receivedMessage           = "<?xml version=\"1.0\" encoding=\"utf-8\"?><MethodInvocation><MethodName>TestMethod</MethodName><Parameters><Parameter><DataType>string</DataType><Data>abc</Data></Parameter><Parameter><DataType>integer</DataType><Data>123</Data></Parameter><Parameter /><Parameter><DataType>double</DataType><Data>4.5678899999999999e+002</Data></Parameter></Parameters><ReturnType /></MethodInvocation>";

            using (mocks.Ordered)
            {
                // Expects for Connect()
                Expect.AtLeastOnce.On(mockConnection);
                // Expects for first Receive()
                Expect.Once.On(mockConsumer).Method("Receive").WithAnyArguments().Will(Return.Value(mockTextMessage));
                Expect.Once.On(mockTextMessage).GetProperty("Properties").Will(Return.Value(mockTextMessageProperties));
                Expect.Once.On(mockTextMessageProperties).Method("GetString").With("Text").Will(Return.Value(receivedMessage));
                Expect.Once.On(mockMetricLogger).Method("Increment").With(IsMetric.Equal(new MessageReceived()));
                Expect.Once.On(mockMetricLogger).Method("Add").With(IsAmountMetric.Equal(new ReceivedMessageSize(381)));
            }

            testActiveMqRemoteReceiver.Connect();
            testActiveMqRemoteReceiver.Receive();

            mocks.VerifyAllExpectationsHaveBeenMet();
        }