IGNITE-10488 ClusterCachesInfo.validateCacheGroupConfiguration should check cache compression configuration
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/5fb803a2 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/5fb803a2 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/5fb803a2 Branch: refs/heads/ignite-10639 Commit: 5fb803a2c92f0f0844e88acbcb81f508873bd7f7 Parents: 83abf89 Author: Sergi Vladykin <[email protected]> Authored: Mon Dec 17 16:15:04 2018 +0300 Committer: Sergi Vladykin <[email protected]> Committed: Mon Dec 17 16:15:04 2018 +0300 ---------------------------------------------------------------------- .../compress/CompressionConfigurationTest.java | 109 +++++++++++++++++++ .../IgnitePdsCompressionTestSuite.java | 2 + .../processors/cache/ClusterCachesInfo.java | 8 ++ 3 files changed, 119 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/5fb803a2/modules/compress/src/test/java/org/apache/ignite/internal/processors/compress/CompressionConfigurationTest.java ---------------------------------------------------------------------- diff --git a/modules/compress/src/test/java/org/apache/ignite/internal/processors/compress/CompressionConfigurationTest.java b/modules/compress/src/test/java/org/apache/ignite/internal/processors/compress/CompressionConfigurationTest.java new file mode 100644 index 0000000..c2d86fa --- /dev/null +++ b/modules/compress/src/test/java/org/apache/ignite/internal/processors/compress/CompressionConfigurationTest.java @@ -0,0 +1,109 @@ +/* + * 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.ignite.internal.processors.compress; + +import java.util.Objects; +import org.apache.ignite.IgniteCheckedException; +import org.apache.ignite.configuration.CacheConfiguration; +import org.apache.ignite.configuration.DiskPageCompression; +import org.apache.ignite.configuration.IgniteConfiguration; +import org.apache.ignite.internal.util.typedef.X; +import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +import static org.apache.ignite.configuration.DiskPageCompression.LZ4; +import static org.apache.ignite.configuration.DiskPageCompression.ZSTD; + +/** + */ +@RunWith(JUnit4.class) +public class CompressionConfigurationTest extends GridCommonAbstractTest { + /** */ + DiskPageCompression compression1; + + /** */ + DiskPageCompression compression2; + + /** */ + Integer level1; + + /** */ + Integer level2; + + /** {@inheritDoc} */ + @Override protected IgniteConfiguration getConfiguration(String instanceName) throws Exception { + CacheConfiguration<Object,Object> ccfg1 = new CacheConfiguration<>("cache1"); + + ccfg1.setDiskPageCompression(compression1); + ccfg1.setDiskPageCompressionLevel(level1); + ccfg1.setGroupName("myGroup"); + + CacheConfiguration<Object,Object> ccfg2 = new CacheConfiguration<>("cache2"); + + ccfg2.setDiskPageCompression(compression2); + ccfg2.setDiskPageCompressionLevel(level2); + ccfg2.setGroupName("myGroup"); + + return super.getConfiguration(instanceName).setCacheConfiguration(ccfg1, ccfg2); + } + + /** + * @throws Exception If failed. + */ + @Test + public void testInconsistentCacheGroupCompressionConfig() throws Exception { + doTestConfig(ZSTD, null, null, null); + doTestConfig(ZSTD, 1, LZ4, 1); + doTestConfig(ZSTD, null, LZ4, null); + + doTestConfig(null, null, null, 2); + doTestConfig(ZSTD, null, ZSTD, 2); + doTestConfig(ZSTD, 1, ZSTD, 2); + } + + /** + */ + private void doTestConfig( + DiskPageCompression compression1, + Integer level1, + DiskPageCompression compression2, + Integer level2 + ) throws Exception { + this.compression1 = compression1; + this.level1 = level1; + + this.compression2 = compression2; + this.level2 = level2; + + try { + startGrid(); + + fail("Exception expected."); + } + catch (IgniteCheckedException e) { + if (compression1 != compression2) + assertTrue(e.getCause().getMessage().startsWith("Disk page compression mismatch")); + else if (!Objects.equals(level1, level2)) + assertTrue(e.getCause().getMessage().startsWith("Disk page compression level mismatch")); + else + fail(X.getFullStackTrace(e)); + } + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/5fb803a2/modules/compress/src/test/java/org/apache/ignite/testsuites/IgnitePdsCompressionTestSuite.java ---------------------------------------------------------------------- diff --git a/modules/compress/src/test/java/org/apache/ignite/testsuites/IgnitePdsCompressionTestSuite.java b/modules/compress/src/test/java/org/apache/ignite/testsuites/IgnitePdsCompressionTestSuite.java index a24144d..696c614 100644 --- a/modules/compress/src/test/java/org/apache/ignite/testsuites/IgnitePdsCompressionTestSuite.java +++ b/modules/compress/src/test/java/org/apache/ignite/testsuites/IgnitePdsCompressionTestSuite.java @@ -19,6 +19,7 @@ package org.apache.ignite.testsuites; import junit.framework.JUnit4TestAdapter; import junit.framework.TestSuite; +import org.apache.ignite.internal.processors.compress.CompressionConfigurationTest; import org.apache.ignite.internal.processors.compress.CompressionProcessorTest; import org.apache.ignite.internal.processors.compress.DiskPageCompressionIntegrationAsyncTest; import org.apache.ignite.internal.processors.compress.DiskPageCompressionIntegrationTest; @@ -37,6 +38,7 @@ public class IgnitePdsCompressionTestSuite { public static TestSuite suite() { TestSuite suite = new TestSuite("Ignite Persistent Store Test Suite (with page compression)."); + suite.addTest(new JUnit4TestAdapter(CompressionConfigurationTest.class)); suite.addTest(new JUnit4TestAdapter(CompressionProcessorTest.class)); suite.addTest(new JUnit4TestAdapter(FileSystemUtilsTest.class)); suite.addTest(new JUnit4TestAdapter(DiskPageCompressionIntegrationTest.class)); http://git-wip-us.apache.org/repos/asf/ignite/blob/5fb803a2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java index b85c8df..b97d12f 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java @@ -1928,6 +1928,14 @@ class ClusterCachesInfo { CU.validateCacheGroupsAttributesMismatch(log, cfg, startCfg, "encryptionEnabled", "Encrypted", cfg.isEncryptionEnabled(), startCfg.isEncryptionEnabled(), true); + + CU.validateCacheGroupsAttributesMismatch(log, cfg, startCfg, + "diskPageCompression", "Disk page compression", + cfg.getDiskPageCompression(), startCfg.getDiskPageCompression(), true); + + CU.validateCacheGroupsAttributesMismatch(log, cfg, startCfg, + "diskPageCompressionLevel", "Disk page compression level", + cfg.getDiskPageCompressionLevel(), startCfg.getDiskPageCompressionLevel(), true); } /**
