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