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);
     }
 
     /**

Reply via email to