blob: 74011689780614ba500b1a38a74211b30ba501cb [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.
*
*/
package org.apache.qpid.client.messaging.address;
import org.apache.qpid.client.AMQDestination;
import org.apache.qpid.client.AMQDestination.AddressOption;
import org.apache.qpid.client.AMQDestination.Binding;
import org.apache.qpid.client.messaging.address.Link.Reliability;
import org.apache.qpid.messaging.Address;
import org.apache.qpid.test.utils.QpidTestCase;
public class AddressHelperTest extends QpidTestCase
{
public void testAddressOptions() throws Exception
{
Address addr = Address.parse("queue/test;{create:sender, assert:always, delete:receiver, mode:browse}");
AddressHelper helper = new AddressHelper(addr);
assertEquals(AddressOption.SENDER,AddressOption.getOption(helper.getCreate()));
assertEquals(AddressOption.ALWAYS,AddressOption.getOption(helper.getAssert()));
assertEquals(AddressOption.RECEIVER,AddressOption.getOption(helper.getDelete()));
assertTrue("'mode' option wasn't read properly",helper.isBrowseOnly());
}
public void testNodeProperties() throws Exception
{
Address addr = Address.parse("my-queue;{" +
"node: " +
"{" +
"type: queue ," +
"durable: true ," +
"x-declare: " +
"{" +
"exclusive: true," +
"auto-delete: true," +
"alternate-exchange: 'amq.fanout'," +
"arguments: {" +
"'qpid.max_size': 1000," +
"'qpid.max_count': 100" +
"}" +
"}, " +
"x-bindings: [{exchange : 'amq.direct', queue:my-queue, key : test}, " +
"{exchange : 'amq.fanout', queue:my-queue}," +
"{exchange: 'amq.match', queue:my-queue, arguments: {x-match: any, dep: sales, loc: CA}}," +
"{exchange : 'amq.topic',queue:my-queue, key : 'a.#'}" +
"]" +
"}" +
"}");
AddressHelper helper = new AddressHelper(addr);
Node node = helper.getNode();
assertEquals("'type' property wasn't read properly",AMQDestination.QUEUE_TYPE,helper.getNodeType());
assertTrue("'durable' property wasn't read properly",node.isDurable());
assertTrue("'auto-delete' property wasn't read properly",node.isAutoDelete());
assertTrue("'exclusive' property wasn't read properly",node.isExclusive());
assertEquals("'alternate-exchange' property wasn't read properly","amq.fanout",node.getAlternateExchange());
assertEquals("'arguments' in 'x-declare' property wasn't read properly",2,node.getDeclareArgs().size());
assertEquals("'bindings' property wasn't read properly",4,node.getBindings().size());
for (Binding binding: node.getBindings())
{
assertTrue("property 'exchange' in bindings wasn't read properly",binding.getExchange().startsWith("amq."));
assertEquals("property 'queue' in bindings wasn't read properly","my-queue",binding.getQueue());
if (binding.getExchange().equals("amq.direct"))
{
assertEquals("'key' property in bindings wasn't read properly","test",binding.getBindingKey());
}
if (binding.getExchange().equals("amq.match"))
{
assertEquals("'arguments' property in bindings wasn't read properly",3,binding.getArgs().size());
}
}
}
public void testLinkProperties() throws Exception
{
Address addr = Address.parse("my-queue;{" +
"link: " +
"{" +
"name: my-queue ," +
"durable: true ," +
"reliability: at-least-once," +
"capacity: {source:10, target:15}," +
"x-declare: " +
"{" +
"exclusive: true," +
"auto-delete: true," +
"alternate-exchange: 'amq.fanout'," +
"arguments: {" +
"'qpid.max_size': 1000," +
"'qpid.max_count': 100" +
"}" +
"}, " +
"x-bindings: [{exchange : 'amq.direct', queue:my-queue, key : test}, " +
"{exchange : 'amq.fanout', queue:my-queue}," +
"{exchange: 'amq.match', queue:my-queue, arguments: {x-match: any, dep: sales, loc: CA}}," +
"{exchange : 'amq.topic',queue:my-queue, key : 'a.#'}" +
"]," +
"x-subscribes:{exclusive: true, arguments: {a:b,x:y}}" +
"}" +
"}");
AddressHelper helper = new AddressHelper(addr);
Link link = helper.getLink();
assertEquals("'name' property wasn't read properly","my-queue",link.getName());
assertTrue("'durable' property wasn't read properly",link.isDurable());
assertEquals("'reliability' property wasn't read properly",Reliability.AT_LEAST_ONCE,link.getReliability());
assertTrue("'auto-delete' property in 'x-declare' wasn't read properly",link.getSubscriptionQueue().isAutoDelete());
assertTrue("'exclusive' property in 'x-declare' wasn't read properly",link.getSubscriptionQueue().isExclusive());
assertEquals("'alternate-exchange' property in 'x-declare' wasn't read properly","amq.fanout",link.getSubscriptionQueue().getAlternateExchange());
assertEquals("'arguments' in 'x-declare' property wasn't read properly",2,link.getSubscriptionQueue().getDeclareArgs().size());
assertEquals("'bindings' property wasn't read properly",4,link.getBindings().size());
for (Binding binding: link.getBindings())
{
assertTrue("property 'exchange' in bindings wasn't read properly",binding.getExchange().startsWith("amq."));
assertEquals("property 'queue' in bindings wasn't read properly","my-queue",binding.getQueue());
if (binding.getExchange().equals("amq.direct"))
{
assertEquals("'key' property in bindings wasn't read properly","test",binding.getBindingKey());
}
if (binding.getExchange().equals("amq.match"))
{
assertEquals("'arguments' property in bindings wasn't read properly",3,binding.getArgs().size());
}
}
assertTrue("'exclusive' property in 'x-subscribe' wasn't read properly",link.getSubscription().isExclusive());
assertEquals("'arguments' in 'x-subscribe' property wasn't read properly",2,link.getSubscription().getArgs().size());
}
}