Refine search
@Test public void testCopyConfiguration() throws Exception { Assert.assertEquals(2, jmsServer.getActiveMQServer().getConfiguration().getDiscoveryGroupConfigurations().size()); Configuration copiedconfig = jmsServer.getActiveMQServer().getConfiguration().copy(); Assert.assertEquals(2, copiedconfig.getDiscoveryGroupConfigurations().size()); }
@Test public void testHugeString() throws Exception { int msgSize = 1024 * 1024; conn = cf.createConnection(); Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); MessageProducer prod = session.createProducer(queue1); TextMessage m = session.createTextMessage(); StringBuffer buffer = new StringBuffer(); while (buffer.length() < msgSize) { buffer.append(UUIDGenerator.getInstance().generateStringUUID()); } final String originalString = buffer.toString(); m.setText(originalString); buffer = null; prod.send(m); conn.close(); validateNoFilesOnLargeDir(server.getConfiguration().getLargeMessagesDirectory(), 1); conn = cf.createConnection(); session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); MessageConsumer cons = session.createConsumer(queue1); conn.start(); TextMessage rm = (TextMessage) cons.receive(10000); Assert.assertNotNull(rm); String str = rm.getText(); Assert.assertEquals(originalString, str); conn.close(); validateNoFilesOnLargeDir(server.getConfiguration().getLargeMessagesDirectory(), 0); }
@Test /** * When running this test from an IDE add this to the test command line so that the AssertionLoggerHandler works properly: * * -Djava.util.logging.manager=org.jboss.logmanager.LogManager -Dlogging.configuration=file:<path_to_source>/tests/config/logging.properties */ public void testBlockLogging() throws Exception { ActiveMQServer server = createServer(false, createDefaultInVMConfig()); for (int i = 0; i < 10000; i++) { server.getConfiguration().addQueueConfiguration(new CoreQueueConfiguration().setAddress(UUID.randomUUID().toString()).setName(UUID.randomUUID().toString())); } server.getConfiguration().setGlobalMaxSize(-1); server.getConfiguration().getAddressesSettings().put("#", new AddressSettings().setMaxSizeBytes(10485760 * 10)); server.start(); // Using the code only so the test doesn't fail just because someone edits the log text Assert.assertTrue("Expected to find 222205", AssertionLoggerHandler.findText("AMQ222205")); }
@Override @Test public void testStartBackupFirst() throws Exception { ((ReplicaPolicyConfiguration) backupServers.get(2).getServer().getConfiguration().getHAPolicyConfiguration()).setGroupName(getNodeGroupName() + "-0"); ((ReplicaPolicyConfiguration) backupServers.get(3).getServer().getConfiguration().getHAPolicyConfiguration()).setGroupName(getNodeGroupName() + "-1"); startServers(backupServers); startServers(liveServers); waitForBackups(); waitForTopology(liveServers.get(0).getServer(), liveServers.size(), 2); sendCrashReceive(); }
@Override @Test public void testStartLiveFirst() throws Exception { ((ReplicaPolicyConfiguration) backupServers.get(2).getServer().getConfiguration().getHAPolicyConfiguration()).setGroupName(getNodeGroupName() + "-0"); ((ReplicaPolicyConfiguration) backupServers.get(3).getServer().getConfiguration().getHAPolicyConfiguration()).setGroupName(getNodeGroupName() + "-1"); startServers(liveServers); backupServers.get(0).start(); backupServers.get(1).start(); waitForSync(backupServers.get(0).getServer()); waitForSync(backupServers.get(1).getServer()); // wait to start the other 2 backups so the first 2 can sync with the 2 live servers backupServers.get(2).start(); backupServers.get(3).start(); sendCrashReceive(); waitForTopology(backupServers.get(0).getServer(), liveServers.size(), 2); sendCrashBackupReceive(); }
@Test public void testDeleteLargeMessages() throws Exception { // 200 will increase the odds of a failure setNumberOfMessages(200); File dir = new File(backupServer.getServer().getConfiguration().getLargeMessagesDirectory()); assertEquals("Should not have any large messages... previous test failed to clean up?", 0, getAllMessageFileIds(dir).size()); createProducerSendSomeMessages(); startBackupFinishSyncing(); receiveMsgsInRange(0, getNumberOfMessages() / 2); finishSyncAndFailover(); final int target = getNumberOfMessages() / 2; long timeout = System.currentTimeMillis() + 5000; while (getAllMessageFileIds(dir).size() != target && System.currentTimeMillis() < timeout) { Thread.sleep(50); } assertEquals("we really ought to delete these after delivery", target, getAllMessageFileIds(dir).size()); }
@Test public void liveCrashOnBackupSyncLargeMessageTest() throws Exception { Process process = SpawnedVMSupport.spawnVM(LiveCrashOnBackupSyncTest.class.getCanonicalName(), backupDir.getAbsolutePath(), liveDir.getAbsolutePath()); try { Assert.assertEquals(OK, process.waitFor()); Configuration liveConfiguration = createLiveConfiguration(); ActiveMQServer liveServer = ActiveMQServers.newActiveMQServer(liveConfiguration); liveServer.start(); Wait.waitFor(() -> liveServer.isStarted()); File liveLMDir = liveServer.getConfiguration().getLargeMessagesLocation(); Set<Long> liveLM = getAllMessageFileIds(liveLMDir); Assert.assertEquals("we really ought to delete these after delivery", 0, liveLM.size()); liveServer.stop(); } finally { process.destroy(); Assert.assertTrue(process.waitFor(5, TimeUnit.SECONDS)); Assert.assertFalse(process.isAlive()); } }
@Test public void testJAASSecurityManagerAuthenticationWithCertsAndOpenWire() throws Exception { ActiveMQJAASSecurityManager securityManager = new ActiveMQJAASSecurityManager("CertLogin"); ActiveMQServer server = addServer(ActiveMQServers.newActiveMQServer(createDefaultInVMConfig().setSecurityEnabled(true), ManagementFactory.getPlatformMBeanServer(), securityManager, false)); Map<String, Object> params = new HashMap<>(); params.put(TransportConstants.SSL_ENABLED_PROP_NAME, true); params.put(TransportConstants.KEYSTORE_PATH_PROP_NAME, "server-side-keystore.jks"); params.put(TransportConstants.KEYSTORE_PASSWORD_PROP_NAME, "secureexample"); params.put(TransportConstants.TRUSTSTORE_PATH_PROP_NAME, "server-side-truststore.jks"); params.put(TransportConstants.TRUSTSTORE_PASSWORD_PROP_NAME, "secureexample"); params.put(TransportConstants.NEED_CLIENT_AUTH_PROP_NAME, true); server.getConfiguration().addAcceptorConfiguration(new TransportConfiguration(NETTY_ACCEPTOR_FACTORY, params)); server.start(); ActiveMQSslConnectionFactory factory = new ActiveMQSslConnectionFactory("ssl://localhost:61616"); factory.setTrustStore("client-side-truststore.jks"); factory.setTrustStorePassword("secureexample"); factory.setKeyStore("client-side-keystore.jks"); factory.setKeyStorePassword("secureexample"); try (ActiveMQConnection connection = (ActiveMQConnection) factory.createConnection()) { Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); session.close(); } catch (Throwable e) { e.printStackTrace(); Assert.fail("should not throw exception"); } }
@Test public void testConsumeFromFormat() throws Exception { ActiveMQServer server = createServer(true); DecodeJournal.importJournal(server.getConfiguration().getJournalLocation().getAbsolutePath(), "activemq-data", "amq", 2, 102400, new StringReader(journalFile)); DecodeJournal.importJournal(server.getConfiguration().getBindingsLocation().getAbsolutePath(), "activemq-bindings", "bindings", 2, 1048576, new StringReader(bindingsFile)); server.start(); ServerLocator locator = createInVMNonHALocator(); ClientSessionFactory factory = createSessionFactory(locator); ClientSession session = factory.createSession(); session.start(); ClientConsumer consumer = session.createConsumer("A1"); for (int i = 0; i < 10; i++) { ClientMessage msg = consumer.receive(5000); assertNotNull(msg); msg.acknowledge(); assertEquals(i, msg.getIntProperty("key").intValue()); } session.commit(); }
@Test public void testGlobalBlockLogging() throws Exception { final int MAX_MESSAGES = 200; final String MY_ADDRESS = "myAddress"; final String MY_QUEUE = "myQueue"; ActiveMQServer server = createServer(false); AddressSettings defaultSetting = new AddressSettings().setAddressFullMessagePolicy(AddressFullMessagePolicy.BLOCK); server.getAddressSettingsRepository().addMatch("#", defaultSetting); server.getConfiguration().setGlobalMaxSize(20 * 1024); server.start(); internalTest(MAX_MESSAGES, MY_ADDRESS, MY_QUEUE, server); }
@Test public void testDuplicateRecordId() throws Exception { for (int i = 0; i < 3; i++) { server.start(); ActiveMQServerControl serverControl = server.getActiveMQServerControl(); serverControl.removeAddressSettings("q"); AddressSettingsInfo defaultSettings = AddressSettingsInfo.from(serverControl.getAddressSettingsAsJSON("#")); serverControl.addAddressSettings("q", "dlq", defaultSettings.getExpiryAddress(), -1, false, 1, defaultSettings.getMaxSizeBytes(), defaultSettings.getPageSizeBytes(), defaultSettings.getPageCacheMaxSize(), defaultSettings.getRedeliveryDelay(), defaultSettings.getRedeliveryMultiplier(), defaultSettings.getMaxRedeliveryDelay(), defaultSettings.getRedistributionDelay(), defaultSettings.isSendToDLAOnNoRoute(), defaultSettings.getAddressFullMessagePolicy(), defaultSettings.getSlowConsumerThreshold(), defaultSettings.getSlowConsumerCheckPeriod(), defaultSettings.getSlowConsumerPolicy(), defaultSettings.isAutoCreateJmsQueues(), defaultSettings.isAutoDeleteJmsQueues(), defaultSettings.isAutoCreateJmsQueues(), defaultSettings.isAutoDeleteJmsTopics()); server.stop(); PrintData.printData(server.getConfiguration().getBindingsLocation().getAbsoluteFile(), server.getConfiguration().getJournalLocation().getAbsoluteFile(), server.getConfiguration().getPagingLocation().getAbsoluteFile()); } } }
@Test public void testRoutingTypes() throws Exception { SimpleString myAddress = SimpleString.toSimpleString("myAddress"); xmlDataExporter.process(xmlOutputStream, server.getConfiguration().getBindingsDirectory(), server.getConfiguration().getJournalDirectory(), server.getConfiguration().getPagingDirectory(), server.getConfiguration().getLargeMessagesDirectory()); System.out.print(new String(xmlOutputStream.toByteArray()));
@Test public void testSinglePersistentBlockingNonSync() throws Exception { ActiveMQServer server = createServer(true); server.getConfiguration().setJournalSyncNonTransactional(false); server.getConfiguration().setJournalBufferTimeout_AIO(15000); System.out.println("sync = " + server.getConfiguration().isJournalSyncNonTransactional()); locator = createInVMNonHALocator().setBlockOnDurableSend(true); factory = createSessionFactory(locator);
@Test public void testCloseSessionOnDestroyedConnection() throws Exception { server.getConfiguration().setConnectionTTLOverride(ttl); server.start(); cf = createSessionFactory(locator);
@Test public void testJMSXUserID() throws Exception { server.getConfiguration().setPopulateValidatedUser(true); MessageConsumer consumer = session.createConsumer(queue); StompClientConnection conn = StompClientConnectionFactory.createClientConnection(uri); conn.connect(defUser, defPass); ClientStompFrame frame = conn.createFrame("SEND"); frame.addHeader("destination", getQueuePrefix() + getQueueName()); frame.setBody("Hello World"); conn.sendFrame(frame); conn.disconnect(); TextMessage message = (TextMessage) consumer.receive(1000); Assert.assertNotNull(message); Assert.assertEquals("Hello World", message.getText()); // Assert default priority 4 is used when priority header is not set Assert.assertEquals("getJMSPriority", 4, message.getJMSPriority()); Assert.assertEquals("JMSXUserID", "brianm", message.getStringProperty("JMSXUserID")); // Make sure that the timestamp is valid - should // be very close to the current time. long tnow = System.currentTimeMillis(); long tmsg = message.getJMSTimestamp(); Assert.assertTrue(Math.abs(tnow - tmsg) < 1000); } }
/** * @throws Exception */ @Test public void testDeleteLargeMessagesDuringSync() throws Exception { setNumberOfMessages(200); File backupLMdir = new File(backupServer.getServer().getConfiguration().getLargeMessagesDirectory()); File liveLMDir = new File(liveServer.getServer().getConfiguration().getLargeMessagesDirectory()); assertEquals("Should not have any large messages... previous test failed to clean up?", 0, getAllMessageFileIds(backupLMdir).size()); createProducerSendSomeMessages(); backupServer.start(); waitForComponent(backupServer.getServer(), 5); receiveMsgsInRange(0, getNumberOfMessages() / 2); startBackupFinishSyncing(); Thread.sleep(500); liveServer.getServer().stop(); backupServer.getServer().waitForActivation(10, TimeUnit.SECONDS); backupServer.stop(); Set<Long> backupLM = getAllMessageFileIds(backupLMdir); Set<Long> liveLM = getAllMessageFileIds(liveLMDir); assertEquals("live and backup should have the same files ", liveLM, backupLM); assertEquals("we really ought to delete these after delivery: " + backupLM, getNumberOfMessages() / 2, backupLM.size()); assertEquals("we really ought to delete these after delivery", getNumberOfMessages() / 2, getAllMessageFileIds(backupLMdir).size()); }
@Test public void testConsumerWindowSizeAddressSettings() throws Exception { ActiveMQServer messagingService = createServer(false, isNetty()); final int defaultConsumerWindowSize = 1024 * 5; final AddressSettings settings = new AddressSettings(); settings.setDefaultConsumerWindowSize(defaultConsumerWindowSize); messagingService.getConfiguration() .getAddressesSettings().put(queueA.toString(), settings); messagingService.start(); messagingService.createQueue(queueA, RoutingType.ANYCAST, queueA, null, true, false); ClientSessionFactory cf = createSessionFactory(locator); ClientSession session = cf.createSession(false, true, true); ClientConsumerImpl consumer = (ClientConsumerImpl) session.createConsumer(queueA); session.start(); assertEquals(defaultConsumerWindowSize / 2, consumer.getClientWindowSize()); }
@Test public void testInterruptLargeMessageSend() throws Exception { ActiveMQServer server = createServer(true, isNetty()); server.getConfiguration().getIncomingInterceptorClassNames().add(LargeMessageTestInterceptorIgnoreLastPacket.class.getName());
@Test public void testSimpleShutdown() throws Exception { Configuration configuration = createDefaultConfig(false); configuration.setCriticalAnalyzerCheckPeriod(10).setCriticalAnalyzerPolicy(CriticalAnalyzerPolicy.SHUTDOWN); ActiveMQServer server = createServer(false, configuration, AddressSettings.DEFAULT_PAGE_SIZE, AddressSettings.DEFAULT_MAX_SIZE_BYTES); server.start(); try { CountDownLatch latch = new CountDownLatch(1); server.getConfiguration().registerBrokerPlugin(new ActiveMQServerPlugin() { @Override public void criticalFailure(CriticalComponent components) throws ActiveMQException { latch.countDown(); } }); server.getCriticalAnalyzer().add(new CriticalComponent() { @Override public boolean isExpired(long timeout) { return true; } }); Assert.assertTrue(latch.await(10, TimeUnit.SECONDS)); Wait.waitFor(() -> !server.isStarted()); Assert.assertFalse(server.isStarted()); } finally { server.stop(); } }
@Test public void testExtraBackupGroupNameReplicates() throws Exception { ReplicaPolicyConfiguration backupReplicaPolicyConfiguration = (ReplicaPolicyConfiguration) backupServer.getServer().getConfiguration().getHAPolicyConfiguration(); backupReplicaPolicyConfiguration.setGroupName("foo"); ReplicatedPolicyConfiguration replicatedPolicyConfiguration = (ReplicatedPolicyConfiguration) liveServer.getServer().getConfiguration().getHAPolicyConfiguration(); replicatedPolicyConfiguration.setGroupName("foo"); Configuration secondBackupConfig = backupConfig.copy(); TransportConfiguration tc = secondBackupConfig.getAcceptorConfigurations().iterator().next(); TestableServer secondBackupServer = createTestableServer(secondBackupConfig); tc.getParams().put("serverId", "2"); secondBackupConfig.setBindingsDirectory(getBindingsDir(1, true)).setJournalDirectory(getJournalDir(1, true)).setPagingDirectory(getPageDir(1, true)).setLargeMessagesDirectory(getLargeMessagesDir(1, true)).setSecurityEnabled(false); ReplicaPolicyConfiguration replicaPolicyConfiguration = (ReplicaPolicyConfiguration) secondBackupConfig.getHAPolicyConfiguration(); replicaPolicyConfiguration.setGroupName("foo"); waitForRemoteBackupSynchronization(backupServer.getServer()); secondBackupServer.start(); Thread.sleep(5000); backupServer.stop(); waitForSync(secondBackupServer.getServer()); waitForRemoteBackupSynchronization(secondBackupServer.getServer()); }