/* * * 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.server.model; import java.util.HashSet; import java.util.Set; import java.util.UUID; import org.apache.qpid.test.utils.QpidTestCase; public class UUIDGeneratorTest extends QpidTestCase { private static final String VIRTUAL_HOST_NAME_1 = "virtualHost1"; private static final String VIRTUAL_HOST_NAME_2 = "virtualHost2"; private static final String VHOST_ALIAS_1 = "alias1"; private static final String VHOST_ALIAS_2 = "alias2"; private static final String QUEUE_NAME_1 = "queue1"; private static final String QUEUE_NAME_2 = "queue2"; private static final String EXCHANGE_NAME_1 = "exchange1"; private static final String EXCHANGE_NAME_2 = "exchange2"; private static final String BINDING_KEY_1 = "bindingKey1"; private static final String BINDING_KEY_2 = "bindingKey2"; private static final String PORT_1 = "port1"; private static final String PORT_2 = "port2"; private static final String CONN_REMOTE_ADDR_1 = "localhost:1234"; private static final String CONN_REMOTE_ADDR_2 = "localhost:5678"; private static final String CHANNEL_NUMBER_1 = "1"; private static final String CHANNEL_NUMBER_2 = "2"; private static final String CONSUMER_NAME_1 = "consumer1"; private static final String CONSUMER_NAME_2 = "consumer2"; private static final String PROVIDER_1 = "provider1"; private static final String PROVIDER_2 = "provider2"; private static final String USER_1 = "user1"; private static final String USER_2 = "user2"; public void testDifferentObjectTypeReturnDifferentIdFromSameValues() throws Exception { String value = "name"; Set idSet = new HashSet(); UUID id1 = UUIDGenerator.generateQueueUUID(value, value); idSet.add(id1); UUID id2 = UUIDGenerator.generateExchangeUUID(value, value); idSet.add(id2); UUID id3 = UUIDGenerator.generateBindingUUID(value, value, value, value); idSet.add(id3); UUID id4 = UUIDGenerator.generateConsumerUUID(value, value, value, value, value); idSet.add(id4); UUID id5 = UUIDGenerator.generateUserUUID(value, value); idSet.add(id5); UUID id6 = UUIDGenerator.generateVhostUUID(value); idSet.add(id6); UUID id7 = UUIDGenerator.generateVhostAliasUUID(value, value); idSet.add(id7); UUID id8 = UUIDGenerator.generateGroupUUID(value, value); idSet.add(id8); UUID id9 = UUIDGenerator.generateGroupMemberUUID(value, value, value); idSet.add(id9); assertEquals("The produced UUIDs were not all unique", 9, idSet.size()); } public void testQueueIdGeneration() throws Exception { //check repeated generation is deterministic UUID queue1 = UUIDGenerator.generateQueueUUID(QUEUE_NAME_1, VIRTUAL_HOST_NAME_1); UUID queue2 = UUIDGenerator.generateQueueUUID(QUEUE_NAME_1, VIRTUAL_HOST_NAME_1); assertEquals("Queue IDs should be equal", queue1, queue2); //check different name gives different ID queue1 = UUIDGenerator.generateQueueUUID(QUEUE_NAME_1, VIRTUAL_HOST_NAME_1); queue2 = UUIDGenerator.generateQueueUUID(QUEUE_NAME_2, VIRTUAL_HOST_NAME_1); assertFalse("Queue IDs should not be equal", queue1.equals(queue2)); //check different vhost name gives different ID queue1 = UUIDGenerator.generateQueueUUID(QUEUE_NAME_1, VIRTUAL_HOST_NAME_1); queue2 = UUIDGenerator.generateQueueUUID(QUEUE_NAME_1, VIRTUAL_HOST_NAME_2); assertFalse("Queue IDs should not be equal", queue1.equals(queue2)); } public void testExchangeIdGeneration() throws Exception { //check repeated generation is deterministic UUID exchange1 = UUIDGenerator.generateExchangeUUID(EXCHANGE_NAME_1, VIRTUAL_HOST_NAME_1); UUID exchange2 = UUIDGenerator.generateExchangeUUID(EXCHANGE_NAME_1, VIRTUAL_HOST_NAME_1); assertEquals("Exchange IDs should be equal", exchange1, exchange2); //check different name gives different ID exchange1 = UUIDGenerator.generateExchangeUUID(EXCHANGE_NAME_1, VIRTUAL_HOST_NAME_1); exchange2 = UUIDGenerator.generateExchangeUUID(EXCHANGE_NAME_2, VIRTUAL_HOST_NAME_1); assertFalse("Exchange IDs should not be equal", exchange1.equals(exchange2)); //check different vhost name gives different ID exchange1 = UUIDGenerator.generateExchangeUUID(EXCHANGE_NAME_1, VIRTUAL_HOST_NAME_1); exchange2 = UUIDGenerator.generateExchangeUUID(EXCHANGE_NAME_1, VIRTUAL_HOST_NAME_2); assertFalse("Exchange IDs should not be equal", exchange1.equals(exchange2)); } public void testBindingIdGeneration() throws Exception { //check repeated generation is deterministic UUID binding1 = UUIDGenerator.generateBindingUUID(EXCHANGE_NAME_1, QUEUE_NAME_1, BINDING_KEY_1, VIRTUAL_HOST_NAME_1); UUID binding2 = UUIDGenerator.generateBindingUUID(EXCHANGE_NAME_1, QUEUE_NAME_1, BINDING_KEY_1, VIRTUAL_HOST_NAME_1); assertEquals("Binding IDs should be equal", binding1, binding2); //check different name gives different ID binding1 = UUIDGenerator.generateBindingUUID(EXCHANGE_NAME_1, QUEUE_NAME_1, BINDING_KEY_1, VIRTUAL_HOST_NAME_1); binding2 = UUIDGenerator.generateBindingUUID(EXCHANGE_NAME_1, QUEUE_NAME_1, BINDING_KEY_2, VIRTUAL_HOST_NAME_1); assertFalse("Binding IDs should not be equal", binding1.equals(binding2)); //check different vhost name gives different ID binding1 = UUIDGenerator.generateBindingUUID(EXCHANGE_NAME_1, QUEUE_NAME_1, BINDING_KEY_1, VIRTUAL_HOST_NAME_1); binding2 = UUIDGenerator.generateBindingUUID(EXCHANGE_NAME_1, QUEUE_NAME_1, BINDING_KEY_1, VIRTUAL_HOST_NAME_2); assertFalse("Binding IDs should not be equal", binding1.equals(binding2)); } public void testVhostIdGeneration() throws Exception { //check repeated generation is deterministic UUID vhost1 = UUIDGenerator.generateVhostUUID(VIRTUAL_HOST_NAME_1); UUID vhost2 = UUIDGenerator.generateVhostUUID(VIRTUAL_HOST_NAME_1); assertTrue("Virtualhost IDs should be equal", vhost1.equals(vhost2)); //check different vhost name gives different ID vhost1 = UUIDGenerator.generateVhostUUID(VIRTUAL_HOST_NAME_1); vhost2 = UUIDGenerator.generateVhostUUID(VIRTUAL_HOST_NAME_2); assertFalse("Virtualhost IDs should not be equal", vhost1.equals(vhost2)); } public void testVhostAliasIdGeneration() throws Exception { //check repeated generation is deterministic UUID alias1 = UUIDGenerator.generateVhostAliasUUID(VHOST_ALIAS_1, PORT_1); UUID alias2 = UUIDGenerator.generateVhostAliasUUID(VHOST_ALIAS_1, PORT_1); assertTrue("Virtualhost Alias IDs should be equal", alias1.equals(alias2)); //check different port name gives different ID alias1 = UUIDGenerator.generateVhostAliasUUID(VHOST_ALIAS_1, PORT_1); alias2 = UUIDGenerator.generateVhostAliasUUID(VHOST_ALIAS_2, PORT_1); assertFalse("Virtualhost Alias IDs should not be equal", alias1.equals(alias2)); //check different alias name gives different ID alias1 = UUIDGenerator.generateVhostAliasUUID(VHOST_ALIAS_1, PORT_1); alias2 = UUIDGenerator.generateVhostAliasUUID(VHOST_ALIAS_1, PORT_2); assertFalse("Virtualhost Alias IDs should not be equal", alias1.equals(alias2)); } public void testConsumerIdGeneration() throws Exception { //check repeated generation is deterministic UUID consumer1 = UUIDGenerator.generateConsumerUUID(VIRTUAL_HOST_NAME_1, QUEUE_NAME_1, CONN_REMOTE_ADDR_1, CHANNEL_NUMBER_1, CONSUMER_NAME_1); UUID consumer2 = UUIDGenerator.generateConsumerUUID(VIRTUAL_HOST_NAME_1, QUEUE_NAME_1, CONN_REMOTE_ADDR_1, CHANNEL_NUMBER_1, CONSUMER_NAME_1); assertTrue("Consumer IDs should be equal", consumer1.equals(consumer2)); //check different name gives different ID consumer1 = UUIDGenerator.generateConsumerUUID(VIRTUAL_HOST_NAME_1, QUEUE_NAME_1, CONN_REMOTE_ADDR_1, CHANNEL_NUMBER_1, CONSUMER_NAME_1); consumer2 = UUIDGenerator.generateConsumerUUID(VIRTUAL_HOST_NAME_1, QUEUE_NAME_1, CONN_REMOTE_ADDR_1, CHANNEL_NUMBER_1, CONSUMER_NAME_2); assertFalse("Consumer IDs should not be equal", consumer1.equals(consumer2)); //check different vhost name gives different ID consumer1 = UUIDGenerator.generateConsumerUUID(VIRTUAL_HOST_NAME_1, QUEUE_NAME_1, CONN_REMOTE_ADDR_1, CHANNEL_NUMBER_1, CONSUMER_NAME_1); consumer2 = UUIDGenerator.generateConsumerUUID(VIRTUAL_HOST_NAME_2, QUEUE_NAME_1, CONN_REMOTE_ADDR_1, CHANNEL_NUMBER_1, CONSUMER_NAME_1); assertFalse("Consumer IDs should not be equal", consumer1.equals(consumer2)); //check different consumer name gives different ID consumer1 = UUIDGenerator.generateConsumerUUID(VIRTUAL_HOST_NAME_1, QUEUE_NAME_1, CONN_REMOTE_ADDR_1, CHANNEL_NUMBER_1, CONSUMER_NAME_1); consumer2 = UUIDGenerator.generateConsumerUUID(VIRTUAL_HOST_NAME_1, QUEUE_NAME_1, CONN_REMOTE_ADDR_1, CHANNEL_NUMBER_2, CONSUMER_NAME_1); assertFalse("Consumer IDs should not be equal", consumer1.equals(consumer2)); //check different address name gives different ID consumer1 = UUIDGenerator.generateConsumerUUID(VIRTUAL_HOST_NAME_1, QUEUE_NAME_1, CONN_REMOTE_ADDR_1, CHANNEL_NUMBER_1, CONSUMER_NAME_1); consumer2 = UUIDGenerator.generateConsumerUUID(VIRTUAL_HOST_NAME_1, QUEUE_NAME_1, CONN_REMOTE_ADDR_2, CHANNEL_NUMBER_1, CONSUMER_NAME_1); assertFalse("Consumer IDs should not be equal", consumer1.equals(consumer2)); //check different queue name gives different ID consumer1 = UUIDGenerator.generateConsumerUUID(VIRTUAL_HOST_NAME_1, QUEUE_NAME_1, CONN_REMOTE_ADDR_1, CHANNEL_NUMBER_1, CONSUMER_NAME_1); consumer2 = UUIDGenerator.generateConsumerUUID(VIRTUAL_HOST_NAME_1, QUEUE_NAME_2, CONN_REMOTE_ADDR_1, CHANNEL_NUMBER_1, CONSUMER_NAME_1); assertFalse("Consumer IDs should not be equal", consumer1.equals(consumer2)); } public void testUserIdGeneration() throws Exception { //check repeated generation is deterministic UUID user1 = UUIDGenerator.generateUserUUID(PROVIDER_1, USER_1); UUID user2 = UUIDGenerator.generateUserUUID(PROVIDER_1, USER_1); assertTrue("User IDs should be equal", user1.equals(user2)); //check different name gives different ID user1 = UUIDGenerator.generateUserUUID(PROVIDER_1, USER_1); user2 = UUIDGenerator.generateUserUUID(PROVIDER_1, USER_2); assertFalse("User IDs should not be equal", user1.equals(user2)); //check different provider gives different ID user1 = UUIDGenerator.generateUserUUID(PROVIDER_1, USER_1); user2 = UUIDGenerator.generateUserUUID(PROVIDER_2, USER_1); assertFalse("User IDs should not be equal", user1.equals(user2)); } }