This is an automated email from the ASF dual-hosted git repository.

dinglei pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/rocketmq.git


The following commit(s) were added to refs/heads/develop by this push:
     new 1371ebc  [RIP-10]Add test cases for ConfigManager (#917)
1371ebc is described below

commit 1371ebc797473596e5fda64fca6c249bfcfcaa4b
Author: Mantou <[email protected]>
AuthorDate: Tue May 14 16:13:47 2019 +0800

    [RIP-10]Add test cases for ConfigManager (#917)
---
 .../apache/rocketmq/common/ConfigManagerTest.java  | 103 +++++++++++++++++++++
 1 file changed, 103 insertions(+)

diff --git 
a/common/src/test/java/org/apache/rocketmq/common/ConfigManagerTest.java 
b/common/src/test/java/org/apache/rocketmq/common/ConfigManagerTest.java
new file mode 100644
index 0000000..a884b6a
--- /dev/null
+++ b/common/src/test/java/org/apache/rocketmq/common/ConfigManagerTest.java
@@ -0,0 +1,103 @@
+package org.apache.rocketmq.common;/*
+ * 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.
+ */
+
+import org.apache.rocketmq.common.ConfigManager;
+import org.apache.rocketmq.common.MixAll;
+import org.junit.Test;
+
+import java.io.File;
+import java.io.PrintWriter;
+import java.lang.reflect.Method;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+public class ConfigManagerTest {
+    private static final String PATH_FILE = 
System.getProperty("java.io.tmpdir") + File.separator + 
"org.apache.rocketmq.common.ConfigManagerTest";
+    private static final String CONTENT_ENCODE = "Encode content for 
ConfigManager";
+
+    @Test
+    public void testLoad() throws Exception {
+        ConfigManager testConfigManager = buildTestConfigManager();
+        File file = createAndWriteFile(testConfigManager.configFilePath());
+        assertTrue(testConfigManager.load());
+        file.delete();
+        File fileBak = createAndWriteFile(testConfigManager.configFilePath() + 
".bak");
+        assertTrue(testConfigManager.load());
+        fileBak.delete();
+    }
+
+    @Test
+    public void testLoadBak() throws Exception {
+        ConfigManager testConfigManager = buildTestConfigManager();
+        File file = createAndWriteFile(testConfigManager.configFilePath() + 
".bak");
+        // invoke private method "loadBak()"
+        Method declaredMethod = 
ConfigManager.class.getDeclaredMethod("loadBak");
+        declaredMethod.setAccessible(true);
+        Boolean loadBakResult = (Boolean) 
declaredMethod.invoke(testConfigManager);
+        assertTrue(loadBakResult);
+        file.delete();
+
+        Boolean loadBakResult2 = (Boolean) 
declaredMethod.invoke(testConfigManager);
+        assertTrue(loadBakResult2);
+        declaredMethod.setAccessible(false);
+    }
+
+    @Test
+    public void testPersist() throws Exception {
+        ConfigManager testConfigManager = buildTestConfigManager();
+        testConfigManager.persist();
+        File file = new File(testConfigManager.configFilePath());
+        assertEquals(CONTENT_ENCODE, MixAll.file2String(file));
+    }
+
+    private ConfigManager buildTestConfigManager() {
+        return new ConfigManager() {
+            @Override
+            public String encode() {
+                return encode(false);
+            }
+
+            @Override
+            public String configFilePath() {
+                return PATH_FILE;
+            }
+
+            @Override
+            public void decode(String jsonString) {
+
+            }
+
+            @Override
+            public String encode(boolean prettyFormat) {
+                return CONTENT_ENCODE;
+            }
+        };
+    }
+
+    private File createAndWriteFile(String fileName) throws Exception {
+        File file = new File(fileName);
+        if (file.exists()) {
+            file.delete();
+        }
+        file.createNewFile();
+        PrintWriter out = new PrintWriter(fileName);
+        out.write("TestForConfigManager");
+        out.close();
+        return file;
+    }
+}
\ No newline at end of file

Reply via email to