blob: f0f139b3608e6a0d27d1e65553f6ba38a8ac5d62 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
using System;
using Apache.NMS;
using Apache.NMS.AMQP;
using Apache.NMS.AMQP.Meta;
using Apache.NMS.AMQP.Util;
using NMS.AMQP.Test.Provider.Mock;
using NUnit.Framework;
namespace NMS.AMQP.Test
{
[TestFixture]
public class NmsMessageProducerTest
{
private readonly MockRemotePeer remotePeer = new MockRemotePeer();
private NmsConnectionInfo connectionInfo;
private NmsConnection connection;
private ISession session;
[SetUp]
public void SetUp()
{
remotePeer.Start();
connectionInfo = new NmsConnectionInfo(new NmsConnectionId("ID:TEST:1"));
connection = CreateConnectionToMockProvider();
session = connection.CreateSession(AcknowledgementMode.AutoAcknowledge);
}
[TearDown]
public void TearDown()
{
remotePeer?.Terminate();
connection?.Close();
}
[Test]
public void TestMultipleCloseCallsNoErrors()
{
IMessageProducer producer = session.CreateProducer();
producer.Close();
producer.Close();
}
[Test]
public void TestGetDisableMessageId()
{
IMessageProducer producer = session.CreateProducer();
Assert.False(producer.DisableMessageID);
}
[Test]
public void TestGetDisableTimeStamp()
{
IMessageProducer producer = session.CreateProducer(null);
Assert.False(producer.DisableMessageTimestamp);
producer.DisableMessageTimestamp = true;
Assert.True(producer.DisableMessageTimestamp);
}
[Test]
public void TestPriorityConfiguration()
{
IMessageProducer producer = session.CreateProducer(null);
Assert.AreEqual(NMSConstants.defaultPriority, producer.Priority);
producer.Priority = MsgPriority.Highest;
Assert.AreEqual(MsgPriority.Highest, producer.Priority);
}
[Test]
public void TestTimeToLiveConfiguration()
{
IMessageProducer producer = session.CreateProducer(null);
Assert.AreEqual(NMSConstants.defaultTimeToLive, producer.TimeToLive);
producer.TimeToLive = TimeSpan.FromHours(1);
Assert.AreEqual(TimeSpan.FromHours(1), producer.TimeToLive);
}
[Test]
public void TestDeliveryModeConfiguration()
{
IMessageProducer producer = session.CreateProducer(null);
Assert.AreEqual(NMSConstants.defaultDeliveryMode, producer.DeliveryMode);
producer.DeliveryMode = MsgDeliveryMode.NonPersistent;
Assert.AreEqual(MsgDeliveryMode.NonPersistent, producer.DeliveryMode);
}
[Test]
public void TestAnonymousProducerThrowsMFEWhenNullMessageProvided()
{
IDestination dest = new NmsQueue("destination");
IMessageProducer producer = session.CreateProducer(null);
Assert.Catch<MessageFormatException>(() => producer.Send(dest, null));
Assert.Catch<MessageFormatException>(() => producer.Send(dest, null, NMSConstants.defaultDeliveryMode, NMSConstants.defaultPriority, NMSConstants.defaultTimeToLive));
// Assert.Catch<MessageFormatException>(() => producer.Send(null, NMSConstants.defaultDeliveryMode, NMSConstants.defaultPriority, NMSConstants.defaultTimeToLive));
}
[Test]
public void TestExplicitProducerThrowsMFEWhenNullMessageProvided()
{
IDestination dest = new NmsQueue("destination");
IMessageProducer producer = session.CreateProducer(dest);
Assert.Catch<MessageFormatException>(() => producer.Send(null));
Assert.Catch<MessageFormatException>(() => producer.Send(null, NMSConstants.defaultDeliveryMode, NMSConstants.defaultPriority, NMSConstants.defaultTimeToLive));
}
private NmsConnection CreateConnectionToMockProvider()
{
return new NmsConnection(connectionInfo, CreateMockProvider());
}
private MockProvider CreateMockProvider()
{
return (MockProvider) new MockProviderFactory().CreateProvider(new Uri("mock://localhost"));
}
}
}