You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by or...@apache.org on 2016/12/18 12:57:37 UTC

svn commit: r1774885 - in /qpid/java/trunk/broker-core/src: main/java/org/apache/qpid/server/store/ test/java/org/apache/qpid/server/store/ test/resources/configuration/

Author: orudyy
Date: Sun Dec 18 12:57:37 2016
New Revision: 1774885

URL: http://svn.apache.org/viewvc?rev=1774885&view=rev
Log:
QPID-7548: [Java Broker] Fix trustore upgrade from 6.0 to 6.1 and simplify test added for a previous change

Removed:
    qpid/java/trunk/broker-core/src/test/resources/configuration/broker-config-1.0.json
    qpid/java/trunk/broker-core/src/test/resources/configuration/broker-config-latest.json
Modified:
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecoverer.java
    qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecoverer.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecoverer.java?rev=1774885&r1=1774884&r2=1774885&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecoverer.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecoverer.java Sun Dec 18 12:57:37 2016
@@ -562,8 +562,8 @@ public class BrokerStoreUpgraderAndRecov
                 }
                 record = new ConfiguredObjectRecordImpl(record.getId(), record.getType(), updatedAttributes, record.getParents());
                 getUpdateMap().put(record.getId(), record);
-                getNextUpgrader().configuredObject(record);
             }
+            getNextUpgrader().configuredObject(record);
         }
 
         @Override

Modified: qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java?rev=1774885&r1=1774884&r2=1774885&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java (original)
+++ qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java Sun Dec 18 12:57:37 2016
@@ -23,17 +23,11 @@ package org.apache.qpid.server.store;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.nio.file.Files;
 import java.util.ArrayList;
-import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.TreeMap;
 import java.util.UUID;
 
 import org.apache.qpid.server.configuration.updater.CurrentThreadTaskExecutor;
@@ -41,13 +35,10 @@ import org.apache.qpid.server.logging.Ev
 import org.apache.qpid.server.model.Broker;
 import org.apache.qpid.server.model.BrokerModel;
 import org.apache.qpid.server.model.ConfiguredObject;
-import org.apache.qpid.server.model.JsonSystemConfig;
 import org.apache.qpid.server.model.JsonSystemConfigImpl;
 import org.apache.qpid.server.model.SystemConfig;
 import org.apache.qpid.server.store.handler.ConfiguredObjectRecordHandler;
 import org.apache.qpid.test.utils.QpidTestCase;
-import org.apache.qpid.test.utils.TestFileUtils;
-import org.apache.qpid.util.FileUtils;
 
 
 public class BrokerStoreUpgraderAndRecovererTest extends QpidTestCase
@@ -670,158 +661,117 @@ public class BrokerStoreUpgraderAndRecov
                     authenticationProviders.get(0).getAttributes().containsKey("preferencesproviders"));
     }
 
-    public void testEndToEndUpgradeFromModelVersion1() throws Exception
+    public void testUpgradeTrustStoreRecordsFrom_6_0() throws Exception
     {
-        final File workDir = TestFileUtils.createTestDirectory("qpid.work_dir", true);
-        try
-        {
-            File pathToStore_1_0 = copyResource("configuration/broker-config-1.0.json", workDir);
-            File pathToStoreLatest = copyResource("configuration/broker-config-latest.json", workDir);
-
-            List<ConfiguredObjectRecord> expected = getStoreRecords(pathToStoreLatest);
-
-            BrokerStoreUpgraderAndRecoverer recoverer = new BrokerStoreUpgraderAndRecoverer(_systemConfig);
-            List<ConfiguredObjectRecord> records =
-                    recoverer.upgrade(mock(DurableConfigurationStore.class), getStoreRecords(pathToStore_1_0));
-
-            assertEquals("Unexpected number of records after upgrade", expected.size(), records.size());
-
-            for (ConfiguredObjectRecord expectedRecord : expected)
-            {
-                ConfiguredObjectRecord actualRecord = findActualForExpected(expectedRecord, expected, records);
-                assertNotNull("Missing record after upgrade :" + expectedRecord, actualRecord);
-                assertEquals("Unexpected record attributes after upgrade",
-                             getRecordAttributes(expectedRecord.getAttributes()),
-                             getRecordAttributes(actualRecord.getAttributes()));
-            }
-        }
-        finally
-        {
-            FileUtils.delete(workDir, true);
-        }
-    }
-
-    private Map<String, Object> getRecordAttributes(final Map<String, Object> attributes)
-    {
-        Map<String, Object> result = new TreeMap<>();
-        for (Map.Entry<String, Object> attribute : attributes.entrySet())
-        {
-            if (!(attribute.getValue() instanceof Collection) || !("id".equals(attribute.getKey())))
-            {
-                result.put(attribute.getKey(), attribute.getValue());
-            }
-        }
-        return result;
-    }
-
-    private ConfiguredObjectRecord findActualForExpected(final ConfiguredObjectRecord expectedRecord,
-                                                         final List<ConfiguredObjectRecord> expectedRecords,
-                                                         final List<ConfiguredObjectRecord> actualRecords)
-    {
-        for (ConfiguredObjectRecord actual : actualRecords)
-        {
-            if (actual.getId().equals(expectedRecord.getId()))
-            {
-                return actual;
-            }
-        }
-        String expectedName = String.valueOf(expectedRecord.getAttributes().get("name"));
-        List<ConfiguredObjectRecord> expectedParents = findParents(expectedRecord.getParents(), expectedRecords);
-        for (ConfiguredObjectRecord actual : actualRecords)
-        {
-            String actualName = String.valueOf(actual.getAttributes().get("name"));
-            List<ConfiguredObjectRecord> actualParents = findParents(actual.getParents(), actualRecords);
-            if (actual.getType().equals(expectedRecord.getType())
-                && expectedName.equals(actualName)
-                && equals(expectedParents, actualParents))
-            {
-                return actual;
-            }
-        }
-        return null;
-    }
-
-    private List<ConfiguredObjectRecord> findParents(final Map<String, UUID> parents,
-                                                     final List<ConfiguredObjectRecord> records)
-    {
-        List<ConfiguredObjectRecord> results = new ArrayList<>();
-        for (Map.Entry<String, UUID> parent : parents.entrySet())
-        {
-            ConfiguredObjectRecord parentRecord = null;
-            for (ConfiguredObjectRecord record : records)
-            {
-                if (record.getId().equals(parent.getValue()) && record.getType().equals(parent.getKey()))
-                {
-                    parentRecord = record;
-                    break;
-                }
-            }
-            if (parentRecord == null)
-            {
-                throw new RuntimeException("Parent record is not found for " + parent);
-            }
-            results.add(parentRecord);
-        }
-        return results;
-    }
-
-    private boolean equals(final List<ConfiguredObjectRecord> expectedRecords,
-                           final List<ConfiguredObjectRecord> actualRecords)
-    {
-        for (ConfiguredObjectRecord expectedRecord : expectedRecords)
-        {
-            String expectedName = String.valueOf(expectedRecord.getAttributes().get("name"));
-            for (ConfiguredObjectRecord actual : actualRecords)
-            {
-                if (actual.getId().equals(expectedRecord.getId()))
-                {
-                    return true;
-                }
-                String actualName = String.valueOf(actual.getAttributes().get("name"));
-                if (actual.getType().equals(expectedRecord.getType())
-                    && expectedName.equals(actualName))
-                {
-                    return true;
-                }
-            }
-        }
-        return false;
-    }
-
-    private File copyResource(String resource, File workDir) throws IOException
-    {
-        File copy = new File(workDir, new File(resource).getName());
-        try (InputStream is = getClass().getClassLoader().getResourceAsStream(resource))
-        {
-            Files.copy(is, copy.toPath());
-        }
-        return copy;
-    }
-
-    private List<ConfiguredObjectRecord> getStoreRecords(final File pathToStore)
-    {
-        JsonSystemConfig systemConfig = getJsonSystemConfigMock(pathToStore.getAbsolutePath());
-        JsonFileConfigStore jsonFileConfigStore = new JsonFileConfigStore(Broker.class);
-        try
-        {
-            jsonFileConfigStore.init(systemConfig);
-            RecordRetrievingConfiguredObjectRecordHandler handler = new RecordRetrievingConfiguredObjectRecordHandler();
-            jsonFileConfigStore.openConfigurationStore(handler);
-            return handler.getRecords();
-        }
-        finally
-        {
-            jsonFileConfigStore.closeConfigurationStore();
-        }
-    }
-
-    private JsonSystemConfig getJsonSystemConfigMock(final String pathToStore)
-    {
-        JsonSystemConfig systemConfig = mock(JsonSystemConfig.class);
-        when(systemConfig.getName()).thenReturn("test");
-        when(systemConfig.getStorePath()).thenReturn(pathToStore);
-        when(systemConfig.getModel()).thenReturn(BrokerModel.getInstance());
-        return systemConfig;
+        _brokerRecord.getAttributes().put("modelVersion", "6.0");
+        Map<String, UUID> parents = Collections.singletonMap("Broker", _brokerRecord.getId());
+
+        Map<String, Object> trustStoreAttributes1 = new HashMap<>();
+        trustStoreAttributes1.put("name", "truststore1");
+        trustStoreAttributes1.put("type", "FileTrustStore");
+        trustStoreAttributes1.put("path", "${json:test.ssl.resources}/java_broker_truststore1.jks");
+        trustStoreAttributes1.put("password", "password");
+        ConfiguredObjectRecord trustStore1 = new ConfiguredObjectRecordImpl(UUID.randomUUID(), "TrustStore",
+                                                                        trustStoreAttributes1,
+                                                                        parents);
+
+        Map<String, Object> trustStoreAttributes2 = new HashMap<>();
+        trustStoreAttributes2.put("name", "truststore2");
+        trustStoreAttributes2.put("type", "FileTrustStore");
+        trustStoreAttributes2.put("path", "${json:test.ssl.resources}/java_broker_truststore2.jks");
+        trustStoreAttributes2.put("password", "password");
+        trustStoreAttributes2.put("includedVirtualHostMessageSources", "true");
+        ConfiguredObjectRecord trustStore2 = new ConfiguredObjectRecordImpl(UUID.randomUUID(), "TrustStore",
+                                                                            trustStoreAttributes2,
+                                                                            parents);
+
+        Map<String, Object> trustStoreAttributes3 = new HashMap<>();
+        trustStoreAttributes3.put("name", "truststore3");
+        trustStoreAttributes3.put("type", "FileTrustStore");
+        trustStoreAttributes3.put("path", "${json:test.ssl.resources}/java_broker_truststore3.jks");
+        trustStoreAttributes3.put("password", "password");
+        trustStoreAttributes3.put("excludedVirtualHostMessageSources", "true");
+        ConfiguredObjectRecord trustStore3 = new ConfiguredObjectRecordImpl(UUID.randomUUID(), "TrustStore",
+                                                                            trustStoreAttributes3,
+                                                                            parents);
+
+        DurableConfigurationStore dcs = new DurableConfigurationStoreStub(_brokerRecord, trustStore1, trustStore2, trustStore3);
+        BrokerStoreUpgraderAndRecoverer recoverer = new BrokerStoreUpgraderAndRecoverer(_systemConfig);
+        List<ConfiguredObjectRecord> records = upgrade(dcs, recoverer);
+
+        ConfiguredObjectRecord trustStore1Upgraded = findRecordById(trustStore1.getId(), records);
+        ConfiguredObjectRecord trustStore2Upgraded = findRecordById(trustStore2.getId(), records);
+        ConfiguredObjectRecord trustStore3Upgraded = findRecordById(trustStore3.getId(), records);
+
+        assertNotNull("Trust store 1 is not found after upgrade", trustStore1Upgraded);
+        assertNotNull("Trust store 2 is not found after upgrade", trustStore2Upgraded);
+        assertNotNull("Trust store 3 is not found after upgrade", trustStore3Upgraded);
+
+        assertEquals("Unexpected attributes after upgrade for Trust store 1",
+                     trustStoreAttributes1,
+                     new HashMap<>(trustStore1Upgraded.getAttributes()));
+
+        assertEquals("includedVirtualHostNodeMessageSources is not found",
+                     "true",
+                     trustStore2Upgraded.getAttributes().get("includedVirtualHostNodeMessageSources"));
+        assertNull("includedVirtualHostMessageSources is  found",
+                     trustStore2Upgraded.getAttributes().get("includedVirtualHostMessageSources"));
+
+        assertEquals("includedVirtualHostNodeMessageSources is not found",
+                     "true",
+                     trustStore3Upgraded.getAttributes().get("excludedVirtualHostNodeMessageSources"));
+        assertNull("includedVirtualHostMessageSources is  found",
+                   trustStore3Upgraded.getAttributes().get("excludedVirtualHostMessageSources"));
+        assertModelVersionUpgraded(records);
+    }
+
+    public void testUpgradeJmxRecordsFrom_3_0() throws Exception
+    {
+        _brokerRecord.getAttributes().put("modelVersion", "3.0");
+        Map<String, UUID> parents = Collections.singletonMap("Broker", _brokerRecord.getId());
+
+        Map<String, Object> jmxPortAttributes = new HashMap<>();
+        jmxPortAttributes.put("name", "jmx1");
+        jmxPortAttributes.put("type", "JMX");
+        ConfiguredObjectRecord jmxPort = new ConfiguredObjectRecordImpl(UUID.randomUUID(), "Port",
+                                                                        jmxPortAttributes,
+                                                                        parents);
+        Map<String, Object> rmiPortAttributes = new HashMap<>();
+        rmiPortAttributes.put("name", "rmi1");
+        rmiPortAttributes.put("type", "RMI");
+        ConfiguredObjectRecord rmiPort = new ConfiguredObjectRecordImpl(UUID.randomUUID(), "Port",
+                                                                        rmiPortAttributes,
+                                                                        parents);
+
+        Map<String, Object> jmxPluginAttributes = new HashMap<>();
+        jmxPluginAttributes.put("name", getTestName());
+        jmxPluginAttributes.put("type", "MANAGEMENT-JMX");
+
+        _brokerRecord.getAttributes().put("modelVersion", "6.0");
+
+        ConfiguredObjectRecord jmxManagement = new ConfiguredObjectRecordImpl(UUID.randomUUID(),
+                                                                           "Plugin",
+                                                                           jmxPluginAttributes,
+                                                                           parents);
+
+        DurableConfigurationStore dcs = new DurableConfigurationStoreStub(_brokerRecord, jmxPort, rmiPort, jmxManagement);
+
+        BrokerStoreUpgraderAndRecoverer recoverer = new BrokerStoreUpgraderAndRecoverer(_systemConfig);
+        List<ConfiguredObjectRecord> records = upgrade(dcs, recoverer);
+
+        assertNull("Jmx port is not removed", findRecordById(jmxPort.getId(), records));
+        assertNull("Rmi port is not removed", findRecordById(rmiPort.getId(), records));
+        assertNull("Jmx plugin is not removed", findRecordById(jmxManagement.getId(), records));
+
+        assertModelVersionUpgraded(records);
+    }
+
+    private void assertModelVersionUpgraded(final List<ConfiguredObjectRecord> records)
+    {
+        ConfiguredObjectRecord upgradedBrokerRecord = findRecordById(_brokerRecord.getId(), records);
+        assertEquals("Unexpected model version",
+                     BrokerModel.MODEL_VERSION,
+                     upgradedBrokerRecord.getAttributes().get(Broker.MODEL_VERSION));
     }
 
     private void upgradeBrokerRecordAndAssertUpgradeResults()



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org