/* * 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.activemq.artemis.tests.integration.persistence; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.activemq.artemis.api.core.ActiveMQBuffer; import org.apache.activemq.artemis.api.core.ActiveMQBuffers; import org.apache.activemq.artemis.api.core.Pair; import org.apache.activemq.artemis.core.config.StoreConfiguration; import org.apache.activemq.artemis.core.remoting.impl.netty.TransportConstants; import org.apache.activemq.artemis.jms.persistence.config.PersistedConnectionFactory; import org.apache.activemq.artemis.jms.server.config.ConnectionFactoryConfiguration; import org.apache.activemq.artemis.jms.server.config.impl.ConnectionFactoryConfigurationImpl; import org.apache.activemq.artemis.utils.RandomUtil; import org.junit.Before; import org.junit.Test; public class JMSConnectionFactoryConfigurationStorageTest extends StorageManagerTestBase { private Map<String, PersistedConnectionFactory> mapExpectedCFs; public JMSConnectionFactoryConfigurationStorageTest(StoreConfiguration.StoreType storeType) { super(storeType); } @Override @Before public void setUp() throws Exception { super.setUp(); mapExpectedCFs = new HashMap<>(); } protected void addSetting(PersistedConnectionFactory setting) throws Exception { mapExpectedCFs.put(setting.getName(), setting); jmsJournal.storeConnectionFactory(setting); } @Test public void testSettings() throws Exception { createJMSStorage(); List<String> transportConfigs = new ArrayList<>(); for (int i = 0; i < 5; i++) { transportConfigs.add("c1-" + i); transportConfigs.add("c2-" + i); } ConnectionFactoryConfiguration config = new ConnectionFactoryConfigurationImpl().setName("some-name").setConnectorNames(transportConfigs); addSetting(new PersistedConnectionFactory(config)); jmsJournal.stop(); createJMSStorage(); List<PersistedConnectionFactory> cfs = jmsJournal.recoverConnectionFactories(); assertEquals(1, cfs.size()); assertEquals("some-name", cfs.get(0).getName()); PersistedConnectionFactory cf1 = cfs.get(0); assertEquals(10, cf1.getConfig().getConnectorNames().size()); List<String> configs = cf1.getConfig().getConnectorNames(); for (int i = 0, j = 0; i < 10; i += 2, j++) { assertEquals(configs.get(i), "c1-" + j); assertEquals(configs.get(i + 1), "c2-" + j); } } @Test public void testSizeOfCF() throws Exception { String[] str = new String[5]; for (int i = 0; i < 5; i++) { str[i] = "str" + i; } ConnectionFactoryConfiguration config = new ConnectionFactoryConfigurationImpl().setName("some-name").setConnectorNames(new ArrayList<String>()).setBindings(""); int size = config.getEncodeSize(); ActiveMQBuffer buffer = ActiveMQBuffers.fixedBuffer(size); config.encode(buffer); assertEquals(size, buffer.writerIndex()); PersistedConnectionFactory persistedCF = new PersistedConnectionFactory(config); size = persistedCF.getEncodeSize(); buffer = ActiveMQBuffers.fixedBuffer(size); persistedCF.encode(buffer); assertEquals(size, buffer.writerIndex()); } @Test public void testSettingsWithConnectorConfigs() throws Exception { createJMSStorage(); String[] str = new String[5]; for (int i = 0; i < 5; i++) { str[i] = "str" + i; } List<String> connectorConfigs = new ArrayList<>(); Map<String, Object> liveParams = new HashMap<>(); liveParams.put(TransportConstants.PORT_PROP_NAME, 5665); Map<String, Object> backupParams = new HashMap<>(); backupParams.put(TransportConstants.PORT_PROP_NAME, 5775); Map<String, Object> liveParams2 = new HashMap<>(); liveParams2.put(TransportConstants.PORT_PROP_NAME, 6665); ConnectionFactoryConfiguration config = new ConnectionFactoryConfigurationImpl().setName("some-name").setConnectorNames(connectorConfigs).setBindings(str).setCallTimeout(RandomUtil.randomPositiveLong()); List<Pair<String, String>> connectors = new ArrayList<>(); connectors.add(new Pair<String, String>(RandomUtil.randomString(), null)); //config.setConnectorNames(connectors); addSetting(new PersistedConnectionFactory(config)); jmsJournal.stop(); createJMSStorage(); List<PersistedConnectionFactory> cfs = jmsJournal.recoverConnectionFactories(); assertEquals(1, cfs.size()); assertEquals("some-name", cfs.get(0).getName()); assertEquals(config.getCallTimeout(), cfs.get(0).getConfig().getCallTimeout()); } }