[jboss-cvs] JBoss Messaging SVN: r4529 - in trunk/tests/src/org/jboss/messaging/tests/unit/core: management and 1 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Jun 19 19:20:32 EDT 2008
Author: clebert.suconic at jboss.com
Date: 2008-06-19 19:20:32 -0400 (Thu, 19 Jun 2008)
New Revision: 4529
Added:
trunk/tests/src/org/jboss/messaging/tests/unit/core/management/
trunk/tests/src/org/jboss/messaging/tests/unit/core/management/impl/
trunk/tests/src/org/jboss/messaging/tests/unit/core/management/impl/MessagingServerManagementImplTest.java
Log:
Interim commit on test
Added: trunk/tests/src/org/jboss/messaging/tests/unit/core/management/impl/MessagingServerManagementImplTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/management/impl/MessagingServerManagementImplTest.java (rev 0)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/management/impl/MessagingServerManagementImplTest.java 2008-06-19 23:20:32 UTC (rev 4529)
@@ -0,0 +1,329 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005-2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.messaging.tests.unit.core.management.impl;
+
+import java.beans.BeanInfo;
+import java.beans.IntrospectionException;
+import java.beans.Introspector;
+import java.beans.PropertyDescriptor;
+import java.util.Set;
+
+import org.easymock.EasyMock;
+import org.jboss.messaging.core.config.Configuration;
+import org.jboss.messaging.core.management.impl.MessagingServerManagementImpl;
+import org.jboss.messaging.core.persistence.StorageManager;
+import org.jboss.messaging.core.postoffice.Binding;
+import org.jboss.messaging.core.postoffice.PostOffice;
+import org.jboss.messaging.core.security.Role;
+import org.jboss.messaging.core.server.ConnectionManager;
+import org.jboss.messaging.core.server.MessagingServer;
+import org.jboss.messaging.core.server.Queue;
+import org.jboss.messaging.core.settings.HierarchicalRepository;
+import org.jboss.messaging.core.settings.impl.QueueSettings;
+import org.jboss.messaging.tests.util.RandomUtil;
+import org.jboss.messaging.tests.util.UnitTestCase;
+import org.jboss.messaging.util.SimpleString;
+
+/**
+ *
+ * @author <a href="mailto:clebert.suconic at jboss.com">Clebert Suconic</a>
+ *
+ */
+public class MessagingServerManagementImplTest extends UnitTestCase
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ private PostOffice mockPostOffice;
+ private StorageManager mockStorageManager;
+ private Configuration mockConfiguration;
+ private ConnectionManager mockConnectionManager;
+ private HierarchicalRepository<Set<Role>> mockSecurityRepository;
+ private HierarchicalRepository<QueueSettings> mockQueueSettingsRepository;
+ private MessagingServer mockServer;
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ // Public --------------------------------------------------------
+
+ public void setUp() throws Exception
+ {
+ super.setUp();
+
+ mockPostOffice = EasyMock.createNiceMock(PostOffice.class);
+ mockStorageManager = EasyMock.createNiceMock(StorageManager.class);
+ mockConnectionManager = EasyMock.createNiceMock(ConnectionManager.class);
+ mockConfiguration = EasyMock.createNiceMock(Configuration.class);
+ mockSecurityRepository = EasyMock.createNiceMock(HierarchicalRepository.class);
+ mockQueueSettingsRepository = EasyMock.createNiceMock(HierarchicalRepository.class);
+ mockServer = EasyMock.createNiceMock(MessagingServer.class);
+
+ }
+
+ public void testcreateQueue() throws Exception
+ {
+ SimpleString destination = RandomUtil.randomSimpleString();
+ SimpleString name = RandomUtil.randomSimpleString();
+
+ mockPostOffice = EasyMock.createMock(PostOffice.class);
+
+ beNiceOnProperties(mockPostOffice);
+
+ EasyMock.expect(mockPostOffice.getBinding(name)).andReturn(null);
+
+ EasyMock.expect(mockPostOffice.addBinding(destination, name, null, true, false)).andReturn(null);
+
+ EasyMock.replay(mockPostOffice);
+
+ MessagingServerManagementImpl impl = createImpl();
+
+ impl.createQueue(destination, name);
+
+ EasyMock.verify(mockPostOffice);
+
+ EasyMock.reset(mockPostOffice);
+
+ beNiceOnProperties(mockPostOffice);
+ EasyMock.expect(mockPostOffice.getBinding(name)).andReturn(EasyMock.createNiceMock(Binding.class));
+
+ EasyMock.replay(mockPostOffice);
+
+ impl.createQueue(destination, name);
+
+ EasyMock.verify(mockPostOffice);
+
+ }
+
+ public void testConnectionCount() throws Exception
+ {
+
+ mockConnectionManager = EasyMock.createMock(ConnectionManager.class);
+ EasyMock.expect(mockConnectionManager.size()).andReturn(123);
+
+ beNiceOnProperties(mockConnectionManager, "size");
+
+ EasyMock.replay(mockConnectionManager);
+
+ MessagingServerManagementImpl impl = createImpl();
+
+ assertEquals(impl.getConnectionCount(), 123);
+
+ }
+
+ public void testDestroyQueue() throws Exception
+ {
+ SimpleString name = RandomUtil.randomSimpleString();
+
+ mockPostOffice = EasyMock.createMock(PostOffice.class);
+ beNiceOnProperties(mockPostOffice);
+
+ Binding binding = EasyMock.createMock(Binding.class);
+ beNiceOnProperties(binding, "queue");
+
+ Queue queue = EasyMock.createMock(Queue.class);
+ beNiceOnProperties(queue, "name");
+
+
+ EasyMock.expect(mockPostOffice.getBinding(name)).andReturn(binding);
+ EasyMock.expect(binding.getQueue()).andReturn(queue);
+
+ queue.deleteAllReferences(mockStorageManager);
+
+
+ EasyMock.expect(queue.getName()).andReturn(name).atLeastOnce();
+
+ EasyMock.expect(mockPostOffice.removeBinding(name)).andReturn(binding);
+
+ EasyMock.replay(mockPostOffice, binding, queue);
+
+ MessagingServerManagementImpl impl = createImpl();
+
+ impl.destroyQueue(name);
+
+ EasyMock.verify(mockPostOffice, binding, queue);
+
+ EasyMock.reset(mockPostOffice, binding, queue);
+
+ EasyMock.expect(mockPostOffice.getBinding(name)).andReturn(null);
+
+ EasyMock.replay(mockPostOffice, binding, queue);
+
+ impl.destroyQueue(name);
+
+ EasyMock.verify(mockPostOffice, binding, queue);
+
+ }
+
+ public void testAddDestination() throws Exception
+ {
+ SimpleString address = RandomUtil.randomSimpleString();
+
+ mockPostOffice = EasyMock.createMock(PostOffice.class);
+ beNiceOnProperties(mockPostOffice);
+
+ EasyMock.expect(mockPostOffice.addDestination(address, false)).andReturn(false);
+
+ EasyMock.replay(mockPostOffice);
+
+ MessagingServerManagementImpl impl = createImpl();
+ assertFalse(impl.addDestination(address));
+
+ EasyMock.reset(mockPostOffice);
+
+ EasyMock.expect(mockPostOffice.addDestination(address, false)).andReturn(true);
+
+ EasyMock.replay(mockPostOffice);
+
+ assertTrue(impl.addDestination(address));
+
+ EasyMock.verify(mockPostOffice);
+
+ }
+
+ public void testRemoveDestination() throws Exception
+ {
+ SimpleString address = RandomUtil.randomSimpleString();
+
+ mockPostOffice = EasyMock.createMock(PostOffice.class);
+ beNiceOnProperties(mockPostOffice);
+
+ EasyMock.expect(mockPostOffice.removeDestination(address, false)).andReturn(false);
+
+ EasyMock.replay(mockPostOffice);
+
+ MessagingServerManagementImpl impl = createImpl();
+ assertFalse(impl.removeDestination(address));
+
+ EasyMock.reset(mockPostOffice);
+
+ EasyMock.expect(mockPostOffice.removeDestination(address, false)).andReturn(true);
+
+ EasyMock.replay(mockPostOffice);
+
+ assertTrue(impl.removeDestination(address));
+
+ EasyMock.verify(mockPostOffice);
+
+ }
+
+ // public MessagingServerManagementImpl(final PostOffice postOffice, final StorageManager storageManager,
+ // final Configuration configuration,
+ // final ConnectionManager connectionManager,
+ // final HierarchicalRepository<Set<Role>> securityRepository,
+ // final HierarchicalRepository<QueueSettings> queueSettingsRepository,
+ // final MessagingServer server)
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ /** This won't really work on Strict Mocks as it will require ordering. So make sure to only use this on regular Mocks (without ordering). */
+ private <T> void beNiceOnProperties(T mock, String ... ignores) throws Exception
+ {
+ BeanInfo info;
+ info = Introspector.getBeanInfo(mock.getClass());
+
+ for (PropertyDescriptor descr: info.getPropertyDescriptors())
+ {
+
+ // Bean Introspector will consider getClass as a property, and we need to ignore it
+ if (descr.getName().equals("class"))
+ {
+ continue;
+ }
+
+ boolean ignore = false;
+
+
+
+ for (String toignore: ignores)
+ {
+ if (descr.getName().equals(toignore) || descr.getReadMethod().getName().equals(toignore))
+ {
+ System.out.println("Ignoring " + toignore);
+ ignore = true;
+ break;
+ }
+ }
+
+ if (!ignore)
+ {
+ try
+ {
+ descr.getReadMethod().invoke(mock);
+
+ if (descr.getReadMethod().getReturnType().equals(Boolean.class) ||
+ descr.getReadMethod().getReturnType().equals(Boolean.TYPE))
+ {
+ EasyMock.expectLastCall().andReturn(false).anyTimes();
+ }
+ else if (descr.getReadMethod().getReturnType().equals(Integer.class) ||
+ descr.getReadMethod().getReturnType().equals(Integer.TYPE))
+ {
+ EasyMock.expectLastCall().andReturn(0).anyTimes();
+ }
+ else if (descr.getReadMethod().getReturnType().equals(Long.class) ||
+ descr.getReadMethod().getReturnType().equals(Long.TYPE))
+ {
+ EasyMock.expectLastCall().andReturn(0l).anyTimes();
+ }
+ else if (descr.getReadMethod().getReturnType().equals(Double.class) ||
+ descr.getReadMethod().getReturnType().equals(Double.TYPE))
+ {
+ EasyMock.expectLastCall().andReturn((double)0).anyTimes();
+ }
+ else if (descr.getReadMethod().getReturnType().equals(Float.class) ||
+ descr.getReadMethod().getReturnType().equals(Float.TYPE))
+ {
+ EasyMock.expectLastCall().andReturn((float)0).anyTimes();
+ }
+ else
+ {
+ EasyMock.expectLastCall().andReturn(null).anyTimes();
+ }
+
+ }
+ catch (Exception ignored)
+ {
+ ignored.printStackTrace();
+ }
+ }
+ }
+
+
+ }
+
+ private MessagingServerManagementImpl createImpl()
+ {
+ return new MessagingServerManagementImpl(mockPostOffice,
+ mockStorageManager, mockConfiguration, mockConnectionManager,
+ mockSecurityRepository, mockQueueSettingsRepository, mockServer);
+ }
+
+ // Inner classes -------------------------------------------------
+
+}
More information about the jboss-cvs-commits
mailing list