* Created by xin on 2016/11/10.
*/
-public class NoopLogger implements ILog {
- public static final ILog INSTANCE = new NoopLogger();
+public enum NoopLogger implements ILog {
+ INSTANCE;
@Override
public void info(String message) {
diff --git a/skywalking-commons/skywalking-logging/skywalking-logging-api/src/test/java/com/a/eye/skywalking/api/logging/api/LogManagerTest.java b/skywalking-commons/skywalking-logging/skywalking-logging-api/src/test/java/com/a/eye/skywalking/api/logging/api/LogManagerTest.java
new file mode 100644
index 000000000..51ce2c81c
--- /dev/null
+++ b/skywalking-commons/skywalking-logging/skywalking-logging-api/src/test/java/com/a/eye/skywalking/api/logging/api/LogManagerTest.java
@@ -0,0 +1,93 @@
+package com.a.eye.skywalking.api.logging.api;
+
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.powermock.api.support.membermodification.MemberModifier;
+
+/**
+ * Created by wusheng on 2017/2/27.
+ */
+public class LogManagerTest {
+ @Test
+ public void testGetLogger() {
+ final TestLogger logger = new TestLogger();
+ LogManager.setLogResolver(new LogResolver() {
+ @Override
+ public ILog getLogger(Class> clazz) {
+ return logger;
+ }
+ });
+
+ Assert.assertEquals(logger, LogManager.getLogger(LogManagerTest.class));
+ }
+
+ @Test
+ public void testGetNoopLogger(){
+ ILog logger = LogManager.getLogger(LogManagerTest.class);
+ Assert.assertEquals(NoopLogger.INSTANCE, logger);
+ }
+
+ @Before
+ @After
+ public void clear() throws IllegalAccessException {
+ MemberModifier.field(LogManager.class, "resolver").set(null, null);
+ }
+
+
+ public class TestLogger implements ILog {
+
+ @Override public void info(String format) {
+
+ }
+
+ @Override public void info(String format, Object... arguments) {
+
+ }
+
+ @Override public void warn(String format, Object... arguments) {
+
+ }
+
+ @Override public void warn(String format, Object arguments, Throwable e) {
+
+ }
+
+ @Override public void error(String format, Throwable e) {
+
+ }
+
+ @Override public void error(String format, Object arguments, Throwable e) {
+
+ }
+
+ @Override public boolean isDebugEnable() {
+ return false;
+ }
+
+ @Override public boolean isInfoEnable() {
+ return false;
+ }
+
+ @Override public boolean isWarnEnable() {
+ return false;
+ }
+
+ @Override public boolean isErrorEnable() {
+ return false;
+ }
+
+ @Override public void debug(String format) {
+
+ }
+
+ @Override public void debug(String format, Object... arguments) {
+
+ }
+
+ @Override public void error(String format) {
+
+ }
+ }
+}
diff --git a/skywalking-commons/skywalking-logging/skywalking-logging-api/src/test/java/com/a/eye/skywalking/api/logging/api/NoopLoggerTest.java b/skywalking-commons/skywalking-logging/skywalking-logging-api/src/test/java/com/a/eye/skywalking/api/logging/api/NoopLoggerTest.java
new file mode 100644
index 000000000..7bbd3ab2f
--- /dev/null
+++ b/skywalking-commons/skywalking-logging/skywalking-logging-api/src/test/java/com/a/eye/skywalking/api/logging/api/NoopLoggerTest.java
@@ -0,0 +1,29 @@
+package com.a.eye.skywalking.api.logging.api;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+import static com.a.eye.skywalking.api.logging.api.NoopLogger.INSTANCE;
+
+/**
+ * Created by wusheng on 2017/2/27.
+ */
+public class NoopLoggerTest {
+ @Test
+ public void testOnNothing(){
+ Assert.assertFalse(INSTANCE.isDebugEnable());
+ Assert.assertFalse(INSTANCE.isInfoEnable());
+ Assert.assertFalse(INSTANCE.isErrorEnable());
+ Assert.assertFalse(INSTANCE.isWarnEnable());
+
+ INSTANCE.debug("Any string");
+ INSTANCE.debug("Any string", new Object[0]);
+ INSTANCE.info("Any string");
+ INSTANCE.info("Any string", new Object[0]);
+ INSTANCE.warn("Any string", new Object[0]);
+ INSTANCE.warn("Any string", new Object[0], new NullPointerException());
+ INSTANCE.error("Any string");
+ INSTANCE.error("Any string", new NullPointerException());
+ INSTANCE.error("Any string", new Object[0], new NullPointerException());
+ }
+}
diff --git a/skywalking-commons/skywalking-util/src/test/java/com/a/eye/skywalking/api/util/ConfigInitializerTest.java b/skywalking-commons/skywalking-util/src/test/java/com/a/eye/skywalking/api/util/ConfigInitializerTest.java
new file mode 100644
index 000000000..73fdad22e
--- /dev/null
+++ b/skywalking-commons/skywalking-util/src/test/java/com/a/eye/skywalking/api/util/ConfigInitializerTest.java
@@ -0,0 +1,59 @@
+package com.a.eye.skywalking.api.util;
+
+import java.util.Properties;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Created by wusheng on 2017/2/27.
+ */
+public class ConfigInitializerTest {
+ @Test
+ public void testInitialize() throws IllegalAccessException {
+ Properties properties = new Properties();
+ properties.put("Level1Object.strAttr".toLowerCase(), "stringValue");
+ properties.put("Level1Object.Level2Object.intAttr".toLowerCase(), "1000");
+ properties.put("Level1Object.Level2Object.longAttr".toLowerCase(), "1000");
+ properties.put("Level1Object.Level2Object.booleanAttr".toLowerCase(), "true");
+
+ ConfigInitializer.initialize(properties, TestPropertiesObject.class);
+
+ Assert.assertEquals("stringValue", TestPropertiesObject.Level1Object.strAttr);
+ Assert.assertEquals(1000, TestPropertiesObject.Level1Object.Level2Object.intAttr);
+ Assert.assertEquals(1000L, TestPropertiesObject.Level1Object.Level2Object.longAttr);
+ Assert.assertEquals(true, TestPropertiesObject.Level1Object.Level2Object.booleanAttr);
+ }
+
+ @Test
+ public void testInitializeWithUnsupportedConfig() throws IllegalAccessException {
+ Properties properties = new Properties();
+ properties.put("Level1Object.noExistAttr".toLowerCase(), "stringValue");
+
+ ConfigInitializer.initialize(properties, TestPropertiesObject.class);
+
+ Assert.assertNull(TestPropertiesObject.Level1Object.strAttr);
+ }
+
+ @Before
+ public void clear(){
+ TestPropertiesObject.Level1Object.strAttr = null;
+ TestPropertiesObject.Level1Object.Level2Object.intAttr = 0;
+ TestPropertiesObject.Level1Object.Level2Object.longAttr = 0;
+ TestPropertiesObject.Level1Object.Level2Object.booleanAttr = false;
+ }
+
+ public static class TestPropertiesObject {
+ public static class Level1Object {
+ public static String strAttr = null;
+
+ public static class Level2Object {
+ public static int intAttr = 0;
+
+ public static long longAttr;
+
+ public static boolean booleanAttr;
+ }
+ }
+ }
+}
diff --git a/skywalking-commons/skywalking-util/src/test/java/com/a/eye/skywalking/api/util/StringUtilTest.java b/skywalking-commons/skywalking-util/src/test/java/com/a/eye/skywalking/api/util/StringUtilTest.java
new file mode 100644
index 000000000..e4c59ee96
--- /dev/null
+++ b/skywalking-commons/skywalking-util/src/test/java/com/a/eye/skywalking/api/util/StringUtilTest.java
@@ -0,0 +1,24 @@
+package com.a.eye.skywalking.api.util;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ * Created by wusheng on 2017/2/27.
+ */
+public class StringUtilTest {
+ @Test
+ public void testIsEmpty(){
+ Assert.assertTrue(StringUtil.isEmpty(null));
+ Assert.assertTrue(StringUtil.isEmpty(""));
+ Assert.assertFalse(StringUtil.isEmpty(" "));
+ Assert.assertFalse(StringUtil.isEmpty("A String"));
+ }
+
+ @Test
+ public void testJoin(){
+ Assert.assertNull(StringUtil.join('.'));
+ Assert.assertEquals("Single part.", StringUtil.join('.', "Single part."));
+ Assert.assertEquals("part1.part2.p3", StringUtil.join('.', "part1", "part2", "p3"));
+ }
+}
diff --git a/skywalking-sniffer/skywalking-api/pom.xml b/skywalking-sniffer/skywalking-api/pom.xml
index eff87bd7e..615db5f4f 100644
--- a/skywalking-sniffer/skywalking-api/pom.xml
+++ b/skywalking-sniffer/skywalking-api/pom.xml
@@ -36,11 +36,6 @@