From d313d338fbc6fe063cc557437f8819297296bb78 Mon Sep 17 00:00:00 2001 From: Ian Luo Date: Tue, 15 May 2018 09:59:15 +0800 Subject: [PATCH] unit test for com.alibaba.dubbo.common.status.support (#1796) * unit test for Status * remove unnecessary 'static' * unit test for StatusUtils * unit test for LoadStatusChecker * reformat the code * unit test for MemoryStatusChecker --- .../alibaba/dubbo/common/status/Status.java | 2 +- .../status/support/LoadStatusChecker.java | 3 +- .../dubbo/common/status/StatusTest.java | 52 ++++++++++++++ .../status/support/LoadStatusCheckerTest.java | 39 ++++++++++ .../support/MemoryStatusCheckerTest.java | 42 +++++++++++ .../status/support/StatusUtilsTest.java | 71 +++++++++++++++++++ 6 files changed, 207 insertions(+), 2 deletions(-) create mode 100644 dubbo-common/src/test/java/com/alibaba/dubbo/common/status/StatusTest.java create mode 100644 dubbo-common/src/test/java/com/alibaba/dubbo/common/status/support/LoadStatusCheckerTest.java create mode 100644 dubbo-common/src/test/java/com/alibaba/dubbo/common/status/support/MemoryStatusCheckerTest.java create mode 100644 dubbo-common/src/test/java/com/alibaba/dubbo/common/status/support/StatusUtilsTest.java diff --git a/dubbo-common/src/main/java/com/alibaba/dubbo/common/status/Status.java b/dubbo-common/src/main/java/com/alibaba/dubbo/common/status/Status.java index 940e17f5707..ad598c94db4 100644 --- a/dubbo-common/src/main/java/com/alibaba/dubbo/common/status/Status.java +++ b/dubbo-common/src/main/java/com/alibaba/dubbo/common/status/Status.java @@ -54,7 +54,7 @@ public String getDescription() { /** * Level */ - public static enum Level { + public enum Level { /** * OK */ diff --git a/dubbo-common/src/main/java/com/alibaba/dubbo/common/status/support/LoadStatusChecker.java b/dubbo-common/src/main/java/com/alibaba/dubbo/common/status/support/LoadStatusChecker.java index 018bce7807e..20715c5d71b 100644 --- a/dubbo-common/src/main/java/com/alibaba/dubbo/common/status/support/LoadStatusChecker.java +++ b/dubbo-common/src/main/java/com/alibaba/dubbo/common/status/support/LoadStatusChecker.java @@ -41,7 +41,8 @@ public Status check() { load = -1; } int cpu = operatingSystemMXBean.getAvailableProcessors(); - return new Status(load < 0 ? Status.Level.UNKNOWN : (load < cpu ? Status.Level.OK : Status.Level.WARN), (load < 0 ? "" : "load:" + load + ",") + "cpu:" + cpu); + return new Status(load < 0 ? Status.Level.UNKNOWN : (load < cpu ? Status.Level.OK : Status.Level.WARN), + (load < 0 ? "" : "load:" + load + ",") + "cpu:" + cpu); } } diff --git a/dubbo-common/src/test/java/com/alibaba/dubbo/common/status/StatusTest.java b/dubbo-common/src/test/java/com/alibaba/dubbo/common/status/StatusTest.java new file mode 100644 index 00000000000..bc8e5314834 --- /dev/null +++ b/dubbo-common/src/test/java/com/alibaba/dubbo/common/status/StatusTest.java @@ -0,0 +1,52 @@ +/* + * 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.status; + +import org.junit.Test; + +import static com.alibaba.dubbo.common.status.Status.Level.OK; +import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.is; +import static org.hamcrest.Matchers.isEmptyOrNullString; +import static org.junit.Assert.assertThat; + +public class StatusTest { + @Test + public void testConstructor1() throws Exception { + Status status = new Status(OK, "message", "description"); + assertThat(status.getLevel(), is(OK)); + assertThat(status.getMessage(), equalTo("message")); + assertThat(status.getDescription(), equalTo("description")); + } + + @Test + public void testConstructor2() throws Exception { + Status status = new Status(OK, "message"); + assertThat(status.getLevel(), is(OK)); + assertThat(status.getMessage(), equalTo("message")); + assertThat(status.getDescription(), isEmptyOrNullString()); + } + + @Test + public void testConstructor3() throws Exception { + Status status = new Status(OK); + assertThat(status.getLevel(), is(OK)); + assertThat(status.getMessage(), isEmptyOrNullString()); + assertThat(status.getDescription(), isEmptyOrNullString()); + } +} diff --git a/dubbo-common/src/test/java/com/alibaba/dubbo/common/status/support/LoadStatusCheckerTest.java b/dubbo-common/src/test/java/com/alibaba/dubbo/common/status/support/LoadStatusCheckerTest.java new file mode 100644 index 00000000000..121da3bb3bb --- /dev/null +++ b/dubbo-common/src/test/java/com/alibaba/dubbo/common/status/support/LoadStatusCheckerTest.java @@ -0,0 +1,39 @@ +/* + * 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.status.support; + +import com.alibaba.dubbo.common.logger.Logger; +import com.alibaba.dubbo.common.logger.LoggerFactory; +import com.alibaba.dubbo.common.status.Status; +import org.junit.Test; + +import static org.hamcrest.Matchers.notNullValue; +import static org.junit.Assert.assertThat; + +public class LoadStatusCheckerTest { + private static Logger logger = LoggerFactory.getLogger(LoadStatusCheckerTest.class); + + @Test + public void test() throws Exception { + LoadStatusChecker statusChecker = new LoadStatusChecker(); + Status status = statusChecker.check(); + assertThat(status, notNullValue()); + logger.info("load status level: " + status.getLevel()); + logger.info("load status message: " + status.getMessage()); + } +} diff --git a/dubbo-common/src/test/java/com/alibaba/dubbo/common/status/support/MemoryStatusCheckerTest.java b/dubbo-common/src/test/java/com/alibaba/dubbo/common/status/support/MemoryStatusCheckerTest.java new file mode 100644 index 00000000000..eb05b5cf941 --- /dev/null +++ b/dubbo-common/src/test/java/com/alibaba/dubbo/common/status/support/MemoryStatusCheckerTest.java @@ -0,0 +1,42 @@ +/* + * 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.status.support; + +import com.alibaba.dubbo.common.logger.Logger; +import com.alibaba.dubbo.common.logger.LoggerFactory; +import com.alibaba.dubbo.common.status.Status; +import org.junit.Test; + +import static com.alibaba.dubbo.common.status.Status.Level.OK; +import static com.alibaba.dubbo.common.status.Status.Level.WARN; +import static org.hamcrest.CoreMatchers.anyOf; +import static org.hamcrest.Matchers.is; +import static org.junit.Assert.assertThat; + +public class MemoryStatusCheckerTest { + private static final Logger logger = LoggerFactory.getLogger(MemoryStatusCheckerTest.class); + + @Test + public void test() throws Exception { + MemoryStatusChecker statusChecker = new MemoryStatusChecker(); + Status status = statusChecker.check(); + assertThat(status.getLevel(), anyOf(is(OK), is(WARN))); + logger.info("memory status level: " + status.getLevel()); + logger.info("memory status message: " + status.getMessage()); + } +} diff --git a/dubbo-common/src/test/java/com/alibaba/dubbo/common/status/support/StatusUtilsTest.java b/dubbo-common/src/test/java/com/alibaba/dubbo/common/status/support/StatusUtilsTest.java new file mode 100644 index 00000000000..83f5e4531c6 --- /dev/null +++ b/dubbo-common/src/test/java/com/alibaba/dubbo/common/status/support/StatusUtilsTest.java @@ -0,0 +1,71 @@ +/* + * 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.status.support; + +import com.alibaba.dubbo.common.status.Status; +import org.junit.Test; + +import java.util.HashMap; +import java.util.Map; + +import static org.hamcrest.Matchers.containsString; +import static org.hamcrest.Matchers.is; +import static org.hamcrest.Matchers.isEmptyOrNullString; +import static org.hamcrest.Matchers.not; +import static org.junit.Assert.assertThat; + +public class StatusUtilsTest { + @Test + public void testGetSummaryStatus1() throws Exception { + Status status1 = new Status(Status.Level.ERROR); + Status status2 = new Status(Status.Level.WARN); + Status status3 = new Status(Status.Level.OK); + Map statuses = new HashMap(); + statuses.put("status1", status1); + statuses.put("status2", status2); + statuses.put("status3", status3); + Status status = StatusUtils.getSummaryStatus(statuses); + assertThat(status.getLevel(), is(Status.Level.ERROR)); + assertThat(status.getMessage(), containsString("status1")); + assertThat(status.getMessage(), containsString("status2")); + assertThat(status.getMessage(), not(containsString("status3"))); + } + + @Test + public void testGetSummaryStatus2() throws Exception { + Status status1 = new Status(Status.Level.WARN); + Status status2 = new Status(Status.Level.OK); + Map statuses = new HashMap(); + statuses.put("status1", status1); + statuses.put("status2", status2); + Status status = StatusUtils.getSummaryStatus(statuses); + assertThat(status.getLevel(), is(Status.Level.WARN)); + assertThat(status.getMessage(), containsString("status1")); + assertThat(status.getMessage(), not(containsString("status2"))); + } + + @Test + public void testGetSummaryStatus3() throws Exception { + Status status1 = new Status(Status.Level.OK); + Map statuses = new HashMap(); + statuses.put("status1", status1); + Status status = StatusUtils.getSummaryStatus(statuses); + assertThat(status.getLevel(), is(Status.Level.OK)); + assertThat(status.getMessage(), isEmptyOrNullString()); + } +}