#1682: Enhance the test coverage part-4: dubbo-common/src/main/java/com/alibaba/dubbo/common/status(store|threadpoolutils) modules (#1806)
diff --git a/dubbo-common/src/main/java/com/alibaba/dubbo/common/utils/ConfigUtils.java b/dubbo-common/src/main/java/com/alibaba/dubbo/common/utils/ConfigUtils.java
index c5b51d8..8c4ac69 100644
--- a/dubbo-common/src/main/java/com/alibaba/dubbo/common/utils/ConfigUtils.java
+++ b/dubbo-common/src/main/java/com/alibaba/dubbo/common/utils/ConfigUtils.java
@@ -226,7 +226,7 @@
input.close();
}
} catch (Throwable e) {
- logger.warn("Failed to load " + fileName + " file from " + fileName + "(ingore this file): " + e.getMessage(), e);
+ logger.warn("Failed to load " + fileName + " file from " + fileName + "(ignore this file): " + e.getMessage(), e);
}
return properties;
}
@@ -261,7 +261,7 @@
try {
properties.load(ClassHelper.getClassLoader().getResourceAsStream(fileName));
} catch (Throwable e) {
- logger.warn("Failed to load " + fileName + " file from " + fileName + "(ingore this file): " + e.getMessage(), e);
+ logger.warn("Failed to load " + fileName + " file from " + fileName + "(ignore this file): " + e.getMessage(), e);
}
return properties;
}
@@ -284,7 +284,7 @@
}
}
} catch (Throwable e) {
- logger.warn("Fail to load " + fileName + " file from " + url + "(ingore this file): " + e.getMessage(), e);
+ logger.warn("Fail to load " + fileName + " file from " + url + "(ignore this file): " + e.getMessage(), e);
}
}
@@ -312,6 +312,7 @@
try {
timeout = Integer.parseInt(value);
} catch (Exception e) {
+ // ignore
}
} else {
value = ConfigUtils.getProperty(Constants.SHUTDOWN_WAIT_SECONDS_KEY);
@@ -319,6 +320,7 @@
try {
timeout = Integer.parseInt(value) * 1000;
} catch (Exception e) {
+ // ignore
}
}
}
diff --git a/dubbo-common/src/test/java/com/alibaba/dubbo/common/utils/AssertTest.java b/dubbo-common/src/test/java/com/alibaba/dubbo/common/utils/AssertTest.java
new file mode 100644
index 0000000..ec390b5
--- /dev/null
+++ b/dubbo-common/src/test/java/com/alibaba/dubbo/common/utils/AssertTest.java
@@ -0,0 +1,34 @@
+/*
+ * 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 com.alibaba.dubbo.common.utils;
+
+import org.junit.Test;
+
+import static com.alibaba.dubbo.common.utils.Assert.notNull;
+
+public class AssertTest {
+ @Test(expected = IllegalArgumentException.class)
+ public void testNotNull1() throws Exception {
+ notNull(null, "null object");
+ }
+
+ @Test(expected = IllegalStateException.class)
+ public void testNotNull2() throws Exception {
+ notNull(null, new IllegalStateException("null object"));
+ }
+}
diff --git a/dubbo-common/src/test/java/com/alibaba/dubbo/common/utils/AtomicPositiveIntegerTest.java b/dubbo-common/src/test/java/com/alibaba/dubbo/common/utils/AtomicPositiveIntegerTest.java
index 6587353..32d014e 100644
--- a/dubbo-common/src/test/java/com/alibaba/dubbo/common/utils/AtomicPositiveIntegerTest.java
+++ b/dubbo-common/src/test/java/com/alibaba/dubbo/common/utils/AtomicPositiveIntegerTest.java
@@ -19,27 +19,29 @@
import org.junit.Test;
import static org.hamcrest.CoreMatchers.allOf;
+import static org.hamcrest.CoreMatchers.containsString;
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.fail;
-import static org.junit.matchers.JUnitMatchers.containsString;
public class AtomicPositiveIntegerTest {
- AtomicPositiveInteger i1 = new AtomicPositiveInteger();
+ private AtomicPositiveInteger i1 = new AtomicPositiveInteger();
- AtomicPositiveInteger i2 = new AtomicPositiveInteger(127);
+ private AtomicPositiveInteger i2 = new AtomicPositiveInteger(127);
- AtomicPositiveInteger i3 = new AtomicPositiveInteger(Integer.MAX_VALUE);
+ private AtomicPositiveInteger i3 = new AtomicPositiveInteger(Integer.MAX_VALUE);
@Test
- public void test_get() throws Exception {
+ public void testGet() throws Exception {
assertEquals(0, i1.get());
assertEquals(127, i2.get());
assertEquals(Integer.MAX_VALUE, i3.get());
}
@Test
- public void test_set() throws Exception {
+ public void testSet() throws Exception {
i1.set(100);
assertEquals(100, i1.get());
@@ -53,7 +55,7 @@
}
@Test
- public void test_getAndIncrement() throws Exception {
+ public void testGetAndIncrement() throws Exception {
int get = i1.getAndIncrement();
assertEquals(0, get);
assertEquals(1, i1.get());
@@ -68,7 +70,7 @@
}
@Test
- public void test_getAndDecrement() throws Exception {
+ public void testGetAndDecrement() throws Exception {
int get = i1.getAndDecrement();
assertEquals(0, get);
assertEquals(Integer.MAX_VALUE, i1.get());
@@ -83,7 +85,7 @@
}
@Test
- public void test_incrementAndGet() throws Exception {
+ public void testIncrementAndGet() throws Exception {
int get = i1.incrementAndGet();
assertEquals(1, get);
assertEquals(1, i1.get());
@@ -98,7 +100,7 @@
}
@Test
- public void test_decrementAndGet() throws Exception {
+ public void testDecrementAndGet() throws Exception {
int get = i1.decrementAndGet();
assertEquals(Integer.MAX_VALUE, get);
assertEquals(Integer.MAX_VALUE, i1.get());
@@ -113,7 +115,7 @@
}
@Test
- public void test_getAndSet() throws Exception {
+ public void testGetAndSet() throws Exception {
int get = i1.getAndSet(100);
assertEquals(0, get);
assertEquals(100, i1.get());
@@ -127,7 +129,7 @@
}
@Test
- public void test_getAndAnd() throws Exception {
+ public void testGetAndAnd() throws Exception {
int get = i1.getAndAdd(3);
assertEquals(0, get);
assertEquals(3, i1.get());
@@ -143,7 +145,7 @@
@Test
- public void test_addAndGet() throws Exception {
+ public void testAddAndGet() throws Exception {
int get = i1.addAndGet(3);
assertEquals(3, get);
assertEquals(3, i1.get());
@@ -157,8 +159,42 @@
assertEquals(2, i3.get());
}
+ @Test(expected = IllegalArgumentException.class)
+ public void testCompareAndSet1() throws Exception {
+ i1.compareAndSet(i1.get(), -1);
+ }
+
@Test
- public void test_equals() {
+ public void testCompareAndSet2() throws Exception {
+ assertThat(i1.compareAndSet(i1.get(), 2), is(true));
+ assertThat(i1.get(), is(2));
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void testWeakCompareAndSet1() throws Exception {
+ i1.weakCompareAndSet(i1.get(), -1);
+ }
+
+ @Test
+ public void testWeakCompareAndSet2() throws Exception {
+ assertThat(i1.weakCompareAndSet(i1.get(), 2), is(true));
+ assertThat(i1.get(), is(2));
+ }
+
+ @Test
+ public void testValues() throws Exception {
+ Integer i = i1.get();
+ assertThat(i1.byteValue(), equalTo(i.byteValue()));
+ assertThat(i1.shortValue(), equalTo(i.shortValue()));
+ assertThat(i1.intValue(), equalTo(i.intValue()));
+ assertThat(i1.longValue(), equalTo(i.longValue()));
+ assertThat(i1.floatValue(), equalTo(i.floatValue()));
+ assertThat(i1.doubleValue(), equalTo(i.doubleValue()));
+ assertThat(i1.toString(), equalTo(i.toString()));
+ }
+
+ @Test
+ public void testEquals() {
assertEquals(new AtomicPositiveInteger(), new AtomicPositiveInteger());
assertEquals(new AtomicPositiveInteger(1), new AtomicPositiveInteger(1));
}
diff --git a/dubbo-common/src/test/java/com/alibaba/dubbo/common/utils/ClassHelperTest.java b/dubbo-common/src/test/java/com/alibaba/dubbo/common/utils/ClassHelperTest.java
new file mode 100644
index 0000000..834fcc1
--- /dev/null
+++ b/dubbo-common/src/test/java/com/alibaba/dubbo/common/utils/ClassHelperTest.java
@@ -0,0 +1,121 @@
+/*
+ * 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 com.alibaba.dubbo.common.utils;
+
+import org.junit.Test;
+import org.mockito.Mockito;
+
+import static com.alibaba.dubbo.common.utils.ClassHelper.forName;
+import static com.alibaba.dubbo.common.utils.ClassHelper.getCallerClassLoader;
+import static com.alibaba.dubbo.common.utils.ClassHelper.getClassLoader;
+import static com.alibaba.dubbo.common.utils.ClassHelper.resolvePrimitiveClassName;
+import static com.alibaba.dubbo.common.utils.ClassHelper.toShortString;
+import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.sameInstance;
+import static org.hamcrest.Matchers.startsWith;
+import static org.junit.Assert.assertThat;
+import static org.mockito.Mockito.verify;
+
+public class ClassHelperTest {
+ @Test
+ public void testForNameWithThreadContextClassLoader() throws Exception {
+ ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader();
+ try {
+ ClassLoader classLoader = Mockito.mock(ClassLoader.class);
+ Thread.currentThread().setContextClassLoader(classLoader);
+ ClassHelper.forNameWithThreadContextClassLoader("a.b.c.D");
+ verify(classLoader).loadClass("a.b.c.D");
+ } finally {
+ Thread.currentThread().setContextClassLoader(oldClassLoader);
+ }
+ }
+
+ @Test
+ public void tetForNameWithCallerClassLoader() throws Exception {
+ Class c = ClassHelper.forNameWithCallerClassLoader(ClassHelper.class.getName(), ClassHelperTest.class);
+ assertThat(c == ClassHelper.class, is(true));
+ }
+
+ @Test
+ public void testGetCallerClassLoader() throws Exception {
+ assertThat(getCallerClassLoader(ClassHelperTest.class), sameInstance(ClassHelperTest.class.getClassLoader()));
+ }
+
+ @Test
+ public void testGetClassLoader1() throws Exception {
+ ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader();
+ try {
+ assertThat(getClassLoader(ClassHelperTest.class), sameInstance(oldClassLoader));
+ Thread.currentThread().setContextClassLoader(null);
+ assertThat(getClassLoader(ClassHelperTest.class), sameInstance(ClassHelperTest.class.getClassLoader()));
+ } finally {
+ Thread.currentThread().setContextClassLoader(oldClassLoader);
+ }
+ }
+
+ @Test
+ public void testGetClassLoader2() throws Exception {
+ assertThat(getClassLoader(), sameInstance(ClassHelper.class.getClassLoader()));
+ }
+
+ @Test
+ public void testForName1() throws Exception {
+ assertThat(forName(ClassHelperTest.class.getName()) == ClassHelperTest.class, is(true));
+ }
+
+ @Test
+ public void testForName2() throws Exception {
+ assertThat(forName("byte") == byte.class, is(true));
+ assertThat(forName("java.lang.String[]") == String[].class, is(true));
+ assertThat(forName("[Ljava.lang.String;") == String[].class, is(true));
+ }
+
+ @Test
+ public void testForName3() throws Exception {
+ ClassLoader classLoader = Mockito.mock(ClassLoader.class);
+ forName("a.b.c.D", classLoader);
+ verify(classLoader).loadClass("a.b.c.D");
+ }
+
+ @Test
+ public void testResolvePrimitiveClassName() throws Exception {
+ assertThat(resolvePrimitiveClassName("boolean") == boolean.class, is(true));
+ assertThat(resolvePrimitiveClassName("byte") == byte.class, is(true));
+ assertThat(resolvePrimitiveClassName("char") == char.class, is(true));
+ assertThat(resolvePrimitiveClassName("double") == double.class, is(true));
+ assertThat(resolvePrimitiveClassName("float") == float.class, is(true));
+ assertThat(resolvePrimitiveClassName("int") == int.class, is(true));
+ assertThat(resolvePrimitiveClassName("long") == long.class, is(true));
+ assertThat(resolvePrimitiveClassName("short") == short.class, is(true));
+ assertThat(resolvePrimitiveClassName("[Z") == boolean[].class, is(true));
+ assertThat(resolvePrimitiveClassName("[B") == byte[].class, is(true));
+ assertThat(resolvePrimitiveClassName("[C") == char[].class, is(true));
+ assertThat(resolvePrimitiveClassName("[D") == double[].class, is(true));
+ assertThat(resolvePrimitiveClassName("[F") == float[].class, is(true));
+ assertThat(resolvePrimitiveClassName("[I") == int[].class, is(true));
+ assertThat(resolvePrimitiveClassName("[J") == long[].class, is(true));
+ assertThat(resolvePrimitiveClassName("[S") == short[].class, is(true));
+ }
+
+ @Test
+ public void testToShortString() throws Exception {
+ assertThat(toShortString(null), equalTo("null"));
+ assertThat(toShortString(new ClassHelperTest()), startsWith("ClassHelperTest@"));
+ }
+}
diff --git a/dubbo-common/src/test/java/com/alibaba/dubbo/common/utils/CollectionUtilsTest.java b/dubbo-common/src/test/java/com/alibaba/dubbo/common/utils/CollectionUtilsTest.java
index d23f6d6..996817e 100644
--- a/dubbo-common/src/test/java/com/alibaba/dubbo/common/utils/CollectionUtilsTest.java
+++ b/dubbo-common/src/test/java/com/alibaba/dubbo/common/utils/CollectionUtilsTest.java
@@ -22,17 +22,27 @@
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import static com.alibaba.dubbo.common.utils.CollectionUtils.isEmpty;
+import static com.alibaba.dubbo.common.utils.CollectionUtils.isNotEmpty;
+import static com.alibaba.dubbo.common.utils.CollectionUtils.toMap;
+import static com.alibaba.dubbo.common.utils.CollectionUtils.toStringMap;
+import static java.util.Collections.emptyList;
+import static java.util.Collections.singleton;
+import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
public class CollectionUtilsTest {
@Test
- public void test_sort() throws Exception {
+ public void testSort() throws Exception {
List<Integer> list = new ArrayList<Integer>();
list.add(100);
list.add(10);
@@ -47,14 +57,14 @@
}
@Test
- public void test_sort_null() throws Exception {
+ public void testSortNull() throws Exception {
assertNull(CollectionUtils.sort(null));
assertTrue(CollectionUtils.sort(new ArrayList<Integer>()).isEmpty());
}
@Test
- public void test_sortSimpleName() throws Exception {
+ public void testSortSimpleName() throws Exception {
List<String> list = new ArrayList<String>();
list.add("aaa.z");
list.add("b");
@@ -69,14 +79,14 @@
}
@Test
- public void test_sortSimpleName_null() throws Exception {
+ public void testSortSimpleNameNull() throws Exception {
assertNull(CollectionUtils.sortSimpleName(null));
assertTrue(CollectionUtils.sortSimpleName(new ArrayList<String>()).isEmpty());
}
@Test
- public void test_splitAll() throws Exception {
+ public void testSplitAll() throws Exception {
assertNull(CollectionUtils.splitAll(null, null));
assertNull(CollectionUtils.splitAll(null, "-"));
@@ -98,7 +108,7 @@
}
@Test
- public void test_joinAll() throws Exception {
+ public void testJoinAll() throws Exception {
assertNull(CollectionUtils.joinAll(null, null));
assertNull(CollectionUtils.joinAll(null, "-"));
@@ -125,7 +135,7 @@
}
@Test
- public void test_joinList() throws Exception {
+ public void testJoinList() throws Exception {
List<String> list = Arrays.asList();
assertEquals("", CollectionUtils.join(list, "/"));
@@ -137,7 +147,7 @@
}
@Test
- public void test_mapEquals() throws Exception {
+ public void testMapEquals() throws Exception {
assertTrue(CollectionUtils.mapEquals(null, null));
assertFalse(CollectionUtils.mapEquals(null, new HashMap<String, String>()));
assertFalse(CollectionUtils.mapEquals(new HashMap<String, String>(), null));
@@ -147,9 +157,18 @@
}
@Test
- public void test_toMap() throws Exception {
- assertTrue(CollectionUtils.toMap().isEmpty());
+ public void testStringMap1() throws Exception {
+ assertThat(toStringMap("key", "value"), equalTo(Collections.singletonMap("key", "value")));
+ }
+ @Test(expected = IllegalArgumentException.class)
+ public void testStringMap2() throws Exception {
+ toStringMap("key", "value", "odd");
+ }
+
+ @Test
+ public void testToMap1() throws Exception {
+ assertTrue(CollectionUtils.toMap().isEmpty());
Map<String, Integer> expected = new HashMap<String, Integer>();
expected.put("a", 1);
@@ -158,4 +177,21 @@
assertEquals(expected, CollectionUtils.toMap("a", 1, "b", 2, "c", 3));
}
+
+ @Test(expected = IllegalArgumentException.class)
+ public void testToMap2() throws Exception {
+ toMap("a", "b", "c");
+ }
+
+ @Test
+ public void testIsEmpty() throws Exception {
+ assertThat(isEmpty(null), is(true));
+ assertThat(isEmpty(new HashSet()), is(true));
+ assertThat(isEmpty(emptyList()), is(true));
+ }
+
+ @Test
+ public void testIsNotEmpty() throws Exception {
+ assertThat(isNotEmpty(singleton("a")), is(true));
+ }
}
\ No newline at end of file
diff --git a/dubbo-common/src/test/java/com/alibaba/dubbo/common/utils/ConfigUtilsTest.java b/dubbo-common/src/test/java/com/alibaba/dubbo/common/utils/ConfigUtilsTest.java
index 8b11281..b5e2016 100644
--- a/dubbo-common/src/test/java/com/alibaba/dubbo/common/utils/ConfigUtilsTest.java
+++ b/dubbo-common/src/test/java/com/alibaba/dubbo/common/utils/ConfigUtilsTest.java
@@ -16,76 +16,182 @@
*/
package com.alibaba.dubbo.common.utils;
+import com.alibaba.dubbo.common.Constants;
import com.alibaba.dubbo.common.threadpool.ThreadPool;
-
+import org.junit.After;
import org.junit.Assert;
+import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
-import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import java.util.Properties;
+import static java.util.Arrays.asList;
+import static org.hamcrest.Matchers.containsString;
+import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.greaterThan;
+import static org.hamcrest.Matchers.is;
+import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThat;
-import static org.junit.matchers.JUnitMatchers.containsString;
public class ConfigUtilsTest {
+ @Before
+ public void setUp() throws Exception {
+ ConfigUtils.setProperties(null);
+ }
- public static <T> List<T> toArray(T... args) {
- List<T> ret = new ArrayList<T>();
- for (T a : args) {
- ret.add(a);
- }
- return ret;
+ @After
+ public void tearDown() throws Exception {
+ ConfigUtils.setProperties(null);
+ }
+
+ @Test
+ public void testIsNotEmpty() throws Exception {
+ assertThat(ConfigUtils.isNotEmpty("abc"), is(true));
+ }
+
+ @Test
+ public void testIsEmpty() throws Exception {
+ assertThat(ConfigUtils.isEmpty(null), is(true));
+ assertThat(ConfigUtils.isEmpty(""), is(true));
+ assertThat(ConfigUtils.isEmpty("false"), is(true));
+ assertThat(ConfigUtils.isEmpty("FALSE"), is(true));
+ assertThat(ConfigUtils.isEmpty("0"), is(true));
+ assertThat(ConfigUtils.isEmpty("null"), is(true));
+ assertThat(ConfigUtils.isEmpty("NULL"), is(true));
+ assertThat(ConfigUtils.isEmpty("n/a"), is(true));
+ assertThat(ConfigUtils.isEmpty("N/A"), is(true));
+ }
+
+ @Test
+ public void testIsDefault() throws Exception {
+ assertThat(ConfigUtils.isDefault("true"), is(true));
+ assertThat(ConfigUtils.isDefault("TRUE"), is(true));
+ assertThat(ConfigUtils.isDefault("default"), is(true));
+ assertThat(ConfigUtils.isDefault("DEFAULT"), is(true));
}
@Test
public void testMergeValues() {
- List<String> merged = ConfigUtils.mergeValues(ThreadPool.class, "aaa,bbb,default.cunstom",
- toArray("fixed", "default.limited", "cached"));
- Assert.assertEquals(toArray("fixed", "cached", "aaa", "bbb", "default.cunstom"), merged);
+ List<String> merged = ConfigUtils.mergeValues(ThreadPool.class, "aaa,bbb,default.custom",
+ asList("fixed", "default.limited", "cached"));
+ assertEquals(asList("fixed", "cached", "aaa", "bbb", "default.custom"), merged);
}
@Test
- public void testMergeValues_addDefault() {
+ public void testMergeValuesAddDefault() {
List<String> merged = ConfigUtils.mergeValues(ThreadPool.class, "aaa,bbb,default,zzz",
- toArray("fixed", "default.limited", "cached"));
- Assert.assertEquals(toArray("aaa", "bbb", "fixed", "cached", "zzz"), merged);
+ asList("fixed", "default.limited", "cached"));
+ assertEquals(asList("aaa", "bbb", "fixed", "cached", "zzz"), merged);
}
@Test
public void testMergeValuesDeleteDefault() {
- List<String> merged = ConfigUtils.mergeValues(ThreadPool.class, "-default", toArray("fixed", "default.limited", "cached"));
- Assert.assertEquals(toArray(), merged);
+ List<String> merged = ConfigUtils.mergeValues(ThreadPool.class, "-default", asList("fixed", "default.limited", "cached"));
+ assertEquals(asList(), merged);
}
@Test
public void testMergeValuesDeleteDefault_2() {
- List<String> merged = ConfigUtils.mergeValues(ThreadPool.class, "-default,aaa", toArray("fixed", "default.limited", "cached"));
- Assert.assertEquals(toArray("aaa"), merged);
+ List<String> merged = ConfigUtils.mergeValues(ThreadPool.class, "-default,aaa", asList("fixed", "default.limited", "cached"));
+ assertEquals(asList("aaa"), merged);
}
/**
- * Test Point 1: The user configures -default, which will delete all the default parameters
+ * The user configures -default, which will delete all the default parameters
*/
@Test
public void testMergeValuesDelete() {
- List<String> merged = ConfigUtils.mergeValues(ThreadPool.class, "-fixed,aaa", toArray("fixed", "default.limited", "cached"));
- Assert.assertEquals(toArray("cached", "aaa"), merged);
+ List<String> merged = ConfigUtils.mergeValues(ThreadPool.class, "-fixed,aaa", asList("fixed", "default.limited", "cached"));
+ assertEquals(asList("cached", "aaa"), merged);
}
@Test
- public void test_loadProperties_noFile() throws Exception {
+ public void testReplaceProperty() throws Exception {
+ String s = ConfigUtils.replaceProperty("1${a.b.c}2${a.b.c}3", Collections.singletonMap("a.b.c", "ABC"));
+ assertEquals(s, "1ABC2ABC3");
+ s = ConfigUtils.replaceProperty("1${a.b.c}2${a.b.c}3", Collections.<String, String>emptyMap());
+ assertEquals(s, "123");
+ }
+
+ @Test
+ public void testGetProperties1() throws Exception {
+ try {
+ System.setProperty(Constants.DUBBO_PROPERTIES_KEY, "properties.load");
+ Properties p = ConfigUtils.getProperties();
+ assertThat((String) p.get("a"), equalTo("12"));
+ assertThat((String) p.get("b"), equalTo("34"));
+ assertThat((String) p.get("c"), equalTo("56"));
+ } finally {
+ System.clearProperty(Constants.DUBBO_PROPERTIES_KEY);
+ }
+ }
+
+ @Test
+ public void testGetProperties2() throws Exception {
+ System.clearProperty(Constants.DUBBO_PROPERTIES_KEY);
+ Properties p = ConfigUtils.getProperties();
+ assertThat((String) p.get("dubbo"), equalTo("properties"));
+ }
+
+ @Test
+ public void testAddProperties() throws Exception {
+ Properties p = new Properties();
+ p.put("key1", "value1");
+ ConfigUtils.addProperties(p);
+ assertThat((String) ConfigUtils.getProperties().get("key1"), equalTo("value1"));
+ }
+
+ @Test
+ public void testLoadPropertiesNoFile() throws Exception {
Properties p = ConfigUtils.loadProperties("notExisted", true);
Properties expected = new Properties();
- Assert.assertEquals(expected, p);
+ assertEquals(expected, p);
p = ConfigUtils.loadProperties("notExisted", false);
- Assert.assertEquals(expected, p);
+ assertEquals(expected, p);
}
@Test
- public void test_loadProperties_oneFile() throws Exception {
+ public void testGetProperty() throws Exception {
+ assertThat(ConfigUtils.getProperty("dubbo"), equalTo("properties"));
+ }
+
+ @Test
+ public void testGetPropertyDefaultValue() throws Exception {
+ assertThat(ConfigUtils.getProperty("not-exist", "default"), equalTo("default"));
+ }
+
+ @Test
+ public void testGetPropertyFromSystem() throws Exception {
+ try {
+ System.setProperty("dubbo", "system");
+ assertThat(ConfigUtils.getProperty("dubbo"), equalTo("system"));
+ } finally {
+ System.clearProperty("dubbo");
+ }
+ }
+
+ @Test
+ public void testGetSystemProperty() throws Exception {
+ try {
+ System.setProperty("dubbo", "system-only");
+ assertThat(ConfigUtils.getSystemProperty("dubbo"), equalTo("system-only"));
+ } finally {
+ System.clearProperty("dubbo");
+ }
+ }
+
+ @Test
+ public void testLoadProperties() throws Exception {
+ Properties p = ConfigUtils.loadProperties("dubbo.properties");
+ assertThat((String)p.get("dubbo"), equalTo("properties"));
+ }
+
+ @Test
+ public void testLoadPropertiesOneFile() throws Exception {
Properties p = ConfigUtils.loadProperties("properties.load", false);
Properties expected = new Properties();
@@ -93,11 +199,11 @@
expected.put("b", "34");
expected.put("c", "56");
- Assert.assertEquals(expected, p);
+ assertEquals(expected, p);
}
@Test
- public void test_loadProperties_oneFile_allowMulti() throws Exception {
+ public void testLoadPropertiesOneFileAllowMulti() throws Exception {
Properties p = ConfigUtils.loadProperties("properties.load", true);
Properties expected = new Properties();
@@ -105,11 +211,11 @@
expected.put("b", "34");
expected.put("c", "56");
- Assert.assertEquals(expected, p);
+ assertEquals(expected, p);
}
@Test
- public void test_loadProperties_oneFile_notRootPath() throws Exception {
+ public void testLoadPropertiesOneFileNotRootPath() throws Exception {
Properties p = ConfigUtils.loadProperties("META-INF/dubbo/internal/com.alibaba.dubbo.common.threadpool.ThreadPool", false);
Properties expected = new Properties();
@@ -118,13 +224,13 @@
expected.put("limited", "com.alibaba.dubbo.common.threadpool.support.limited.LimitedThreadPool");
expected.put("eager", "com.alibaba.dubbo.common.threadpool.support.eager.EagerThreadPool");
- Assert.assertEquals(expected, p);
+ assertEquals(expected, p);
}
@Ignore("see http://code.alibabatech.com/jira/browse/DUBBO-133")
@Test
- public void test_loadProperties_multiFile_notRootPath_Exception() throws Exception {
+ public void testLoadPropertiesMultiFileNotRootPathException() throws Exception {
try {
ConfigUtils.loadProperties("META-INF/services/com.alibaba.dubbo.common.status.StatusChecker", false);
Assert.fail();
@@ -134,7 +240,7 @@
}
@Test
- public void test_loadProperties_multiFile_notRootPath() throws Exception {
+ public void testLoadPropertiesMultiFileNotRootPath() throws Exception {
Properties p = ConfigUtils.loadProperties("META-INF/dubbo/internal/com.alibaba.dubbo.common.status.StatusChecker", true);
@@ -143,7 +249,38 @@
expected.put("load", "com.alibaba.dubbo.common.status.support.LoadStatusChecker");
expected.put("aa", "12");
- Assert.assertEquals(expected, p);
+ assertEquals(expected, p);
}
+ @Test
+ public void testGetPid() throws Exception {
+ assertThat(ConfigUtils.getPid(), greaterThan(0));
+ }
+
+ @Test
+ public void testGetServerShutdownTimeoutFromShutdownWait() throws Exception {
+ System.setProperty(Constants.SHUTDOWN_WAIT_KEY, "1234");
+ try {
+ assertThat(ConfigUtils.getServerShutdownTimeout(), equalTo(1234));
+ } finally {
+ System.clearProperty(Constants.SHUTDOWN_WAIT_KEY);
+ }
+ }
+
+ @Test
+ public void testGetServerShutdownTimeoutFromShutdownWaitSeconds() throws Exception {
+ System.setProperty(Constants.SHUTDOWN_WAIT_SECONDS_KEY, "1234");
+ try {
+ assertThat(ConfigUtils.getServerShutdownTimeout(), equalTo(1234 * 1000));
+ } finally {
+ System.clearProperty(Constants.SHUTDOWN_WAIT_SECONDS_KEY);
+ }
+ }
+
+ @Test
+ public void testGetServerShutdownTimeoutFromDefault() throws Exception {
+ System.clearProperty(Constants.SHUTDOWN_WAIT_KEY);
+ System.clearProperty(Constants.SHUTDOWN_WAIT_SECONDS_KEY);
+ assertThat(ConfigUtils.getServerShutdownTimeout(), equalTo(Constants.DEFAULT_SERVER_SHUTDOWN_TIMEOUT));
+ }
}
\ No newline at end of file
diff --git a/dubbo-common/src/test/resources/dubbo.properties b/dubbo-common/src/test/resources/dubbo.properties
new file mode 100644
index 0000000..15936f9
--- /dev/null
+++ b/dubbo-common/src/test/resources/dubbo.properties
@@ -0,0 +1,18 @@
+#
+# 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.
+#
+
+dubbo=properties
\ No newline at end of file