You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2020/07/23 05:46:08 UTC

[shardingsphere-elasticjob] branch master updated: Clean up codes (#1260)

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

zhangliang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere-elasticjob.git


The following commit(s) were added to refs/heads/master by this push:
     new 18ccc97  Clean up codes (#1260)
18ccc97 is described below

commit 18ccc979dd1b985532ebd2ca20f28f495cfe46de
Author: Liang Zhang <te...@163.com>
AuthorDate: Thu Jul 23 13:46:00 2020 +0800

    Clean up codes (#1260)
---
 docs/content/features/elastic.en.md                |  2 +-
 .../elasticjob-lite/operation/dump.en.md           |  2 +-
 .../type/job/JobExecutionTypeStatistics.java       |  8 +--
 .../cloud/executor/prod/TaskExecutor.java          |  1 -
 .../cloud/executor/fixture/TestDataflowJob.java    |  2 +-
 .../executor/prod/DaemonTaskSchedulerTest.java     |  2 +-
 .../cloud/executor/prod/TaskExecutorTest.java      |  7 +--
 .../cloud/console/config/FilterRegisterConfig.java |  7 ++-
 .../console/controller/CloudJobController.java     | 35 ++++++------
 .../controller/search/JobEventRdbSearch.java       | 28 ++++------
 .../elasticjob/cloud/scheduler/Bootstrap.java      |  4 +-
 .../config/job/CloudJobConfigurationListener.java  |  2 +-
 .../cloud/scheduler/env/BootstrapEnvironment.java  |  2 +-
 .../scheduler/mesos/AppConstraintEvaluator.java    | 13 +++--
 .../cloud/scheduler/mesos/ReconcileService.java    |  2 +-
 .../cloud/scheduler/mesos/SchedulerService.java    |  2 +-
 .../mesos/TaskLaunchScheduledService.java          |  2 +-
 .../producer/TransientProducerRepository.java      |  2 +-
 .../state/disable/app/DisableAppService.java       |  2 +-
 .../state/disable/job/DisableJobService.java       |  2 +-
 .../scheduler/state/failover/FailoverService.java  |  2 +-
 .../cloud/scheduler/state/ready/ReadyService.java  |  2 +-
 .../cloud/console/AbstractCloudControllerTest.java |  5 +-
 .../console/controller/CloudAppControllerTest.java | 31 ++++++-----
 .../console/controller/CloudJobControllerTest.java | 65 +++++++++++-----------
 .../controller/CloudOperationControllerTest.java   |  8 +--
 .../scheduler/env/BootstrapEnvironmentTest.java    |  2 +-
 .../cloud/scheduler/fixture/TaskNode.java          | 10 ++--
 .../mesos/AppConstraintEvaluatorTest.java          | 15 ++---
 .../cloud/scheduler/mesos/FacadeServiceTest.java   |  2 +-
 .../cloud/scheduler/mesos/LaunchingTasksTest.java  |  4 +-
 .../cloud/scheduler/mesos/LeasesQueueTest.java     |  2 +-
 .../scheduler/mesos/MesosStateServiceTest.java     | 11 ++--
 .../scheduler/mesos/ReconcileServiceTest.java      |  6 +-
 .../fixture/master/MesosMasterServerMock.java      |  6 +-
 .../mesos/fixture/slave/MesosSlaveServerMock.java  |  8 +--
 .../cloud/scheduler/producer/ProducerJobTest.java  |  5 +-
 .../producer/TransientProducerRepositoryTest.java  | 11 ++--
 .../state/failover/FailoverServiceTest.java        |  2 +-
 .../scheduler/state/ready/ReadyServiceTest.java    |  4 +-
 .../statistics/job/TaskResultStatisticJobTest.java |  2 +-
 .../scheduler/statistics/job/TestStatisticJob.java |  9 ++-
 .../elasticjob/dataflow/job/BatchDataflowJob.java  | 51 -----------------
 .../dataflow/job/StreamingDataflowJob.java         | 51 -----------------
 .../concurrent/ElasticJobExecutorServiceTest.java  |  2 +-
 .../elasticjob/infra/context/fixture/TaskNode.java | 10 ++--
 .../elasticjob/infra/env/TimeServiceTest.java      |  2 +-
 .../OdevitySortByNameJobShardingStrategyTest.java  |  2 +-
 .../RotateServerByNameJobShardingStrategyTest.java |  2 +-
 .../reg/zookeeper/ZookeeperRegistryCenter.java     |  2 +-
 .../tracing/rdb/storage/RDBJobEventStorage.java    |  2 +-
 .../AbstractDistributeOnceElasticJobListener.java  |  9 +--
 .../internal/failover/FailoverListenerManager.java |  6 +-
 .../lite/internal/reconcile/ReconcileService.java  |  4 +-
 .../lite/internal/schedule/JobRegistry.java        | 10 ++--
 .../lite/internal/setup/SetUpFacade.java           |  2 +-
 .../lite/internal/sharding/ExecutionService.java   |  2 +-
 .../lite/integrate/BaseIntegrateTest.java          | 18 +++---
 .../disable/DisabledJobIntegrateTest.java          |  6 +-
 .../disable/ScheduleDisabledJobIntegrateTest.java  |  8 +--
 .../integrate/enable/EnabledJobIntegrateTest.java  | 10 ++--
 .../enable/OneOffEnabledJobIntegrateTest.java      |  2 +-
 .../enable/ScheduleEnabledJobIntegrateTest.java    |  2 +-
 .../internal/config/ConfigurationNodeTest.java     |  2 +-
 .../lite/internal/election/LeaderNodeTest.java     |  2 +-
 .../lite/internal/failover/FailoverNodeTest.java   |  2 +-
 .../lite/internal/guarantee/GuaranteeNodeTest.java |  2 +-
 .../lite/internal/server/ServerNodeTest.java       |  2 +-
 .../lite/internal/sharding/ShardingNodeTest.java   |  2 +-
 .../internal/snapshot/BaseSnapshotServiceTest.java | 14 ++---
 .../lite/internal/storage/JobNodePathTest.java     |  2 +-
 .../lite/lifecycle/fixture/TestDataflowJob.java    | 35 ------------
 .../lite/lifecycle/fixture/TestSimpleJob.java      | 28 ----------
 .../example/fixture/repository/FooRepository.java  |  2 +-
 .../lite/example/job/dataflow/JavaDataflowJob.java |  2 +-
 .../lite/example/job/simple/JavaSimpleJob.java     |  2 +-
 .../lite/example/repository/FooRepository.java     |  2 +-
 77 files changed, 234 insertions(+), 407 deletions(-)

diff --git a/docs/content/features/elastic.en.md b/docs/content/features/elastic.en.md
index 55daf11..ef76631 100644
--- a/docs/content/features/elastic.en.md
+++ b/docs/content/features/elastic.en.md
@@ -45,7 +45,7 @@ If the server C is down, then server A = 0,1,2,3,4 and B = 5,6,7,8,9, maximizing
 
 ## High Availability
 
-When a server is down when executing a sharding item, the registry is also aware of that and the sharding item will be transferred to another living server, thus achieve the goal of high availability.
+When a server is down when executing a sharding item, the registry is also aware of that, and the sharding item will be transferred to another living server, thus achieve the goal of high availability.
 The unfinished job from a crashed server will be transferred and executed continuously, as follows.
 
 ![HA](https://shardingsphere.apache.org/elasticjob/current/img/elastic/ha.png)
diff --git a/docs/content/user-manual/elasticjob-lite/operation/dump.en.md b/docs/content/user-manual/elasticjob-lite/operation/dump.en.md
index ee9bc38..d9e05ac 100644
--- a/docs/content/user-manual/elasticjob-lite/operation/dump.en.md
+++ b/docs/content/user-manual/elasticjob-lite/operation/dump.en.md
@@ -6,7 +6,7 @@ chapter = true
 
 Using ElasticJob may meet some distributed problem which is not easy to observe.
 
-Because of developer can not debug in production environment, ElasticJob provide `dump` command to export job runtime information for debugging.
+Because of developer cannot debug in production environment, ElasticJob provide `dump` command to export job runtime information for debugging.
 
 For security reason, the information dumped had already mask sensitive information, it instead of real IP address to `ip1`, `ip2` ...  
 
diff --git a/elasticjob-cloud/elasticjob-cloud-common/src/main/java/org/apache/shardingsphere/elasticjob/cloud/statistics/type/job/JobExecutionTypeStatistics.java b/elasticjob-cloud/elasticjob-cloud-common/src/main/java/org/apache/shardingsphere/elasticjob/cloud/statistics/type/job/JobExecutionTypeStatistics.java
index 706fe32..fd69ba0 100755
--- a/elasticjob-cloud/elasticjob-cloud-common/src/main/java/org/apache/shardingsphere/elasticjob/cloud/statistics/type/job/JobExecutionTypeStatistics.java
+++ b/elasticjob-cloud/elasticjob-cloud-common/src/main/java/org/apache/shardingsphere/elasticjob/cloud/statistics/type/job/JobExecutionTypeStatistics.java
@@ -17,17 +17,17 @@
 
 package org.apache.shardingsphere.elasticjob.cloud.statistics.type.job;
 
-import lombok.AllArgsConstructor;
 import lombok.Getter;
+import lombok.RequiredArgsConstructor;
 
 /**
  * Job execution type statistics.
  */
 @Getter
-@AllArgsConstructor
+@RequiredArgsConstructor
 public final class JobExecutionTypeStatistics {
     
-    private int transientJobCount;
+    private final int transientJobCount;
     
-    private int daemonJobCount;
+    private final int daemonJobCount;
 }
diff --git a/elasticjob-cloud/elasticjob-cloud-executor/src/main/java/org/apache/shardingsphere/elasticjob/cloud/executor/prod/TaskExecutor.java b/elasticjob-cloud/elasticjob-cloud-executor/src/main/java/org/apache/shardingsphere/elasticjob/cloud/executor/prod/TaskExecutor.java
index 4b5a9d3..ee720b2 100755
--- a/elasticjob-cloud/elasticjob-cloud-executor/src/main/java/org/apache/shardingsphere/elasticjob/cloud/executor/prod/TaskExecutor.java
+++ b/elasticjob-cloud/elasticjob-cloud-executor/src/main/java/org/apache/shardingsphere/elasticjob/cloud/executor/prod/TaskExecutor.java
@@ -125,7 +125,6 @@ public final class TaskExecutor implements Executor {
         
         private final TaskInfo taskInfo;
         
-        @SuppressWarnings("unchecked")
         @Override
         public void run() {
             Thread.currentThread().setContextClassLoader(TaskThread.class.getClassLoader());
diff --git a/elasticjob-cloud/elasticjob-cloud-executor/src/test/java/org/apache/shardingsphere/elasticjob/cloud/executor/fixture/TestDataflowJob.java b/elasticjob-cloud/elasticjob-cloud-executor/src/test/java/org/apache/shardingsphere/elasticjob/cloud/executor/fixture/TestDataflowJob.java
index 2a20b26..7445d82 100755
--- a/elasticjob-cloud/elasticjob-cloud-executor/src/test/java/org/apache/shardingsphere/elasticjob/cloud/executor/fixture/TestDataflowJob.java
+++ b/elasticjob-cloud/elasticjob-cloud-executor/src/test/java/org/apache/shardingsphere/elasticjob/cloud/executor/fixture/TestDataflowJob.java
@@ -28,7 +28,7 @@ import java.util.List;
 @Getter
 public final class TestDataflowJob implements DataflowJob<String> {
     
-    private List<String> output = new LinkedList<>();
+    private final List<String> output = new LinkedList<>();
     
     @Override
     public List<String> fetchData(final ShardingContext shardingContext) {
diff --git a/elasticjob-cloud/elasticjob-cloud-executor/src/test/java/org/apache/shardingsphere/elasticjob/cloud/executor/prod/DaemonTaskSchedulerTest.java b/elasticjob-cloud/elasticjob-cloud-executor/src/test/java/org/apache/shardingsphere/elasticjob/cloud/executor/prod/DaemonTaskSchedulerTest.java
index b54ed91..555e25a 100755
--- a/elasticjob-cloud/elasticjob-cloud-executor/src/test/java/org/apache/shardingsphere/elasticjob/cloud/executor/prod/DaemonTaskSchedulerTest.java
+++ b/elasticjob-cloud/elasticjob-cloud-executor/src/test/java/org/apache/shardingsphere/elasticjob/cloud/executor/prod/DaemonTaskSchedulerTest.java
@@ -65,7 +65,7 @@ public final class DaemonTaskSchedulerTest {
     @Mock
     private ElasticJob elasticJob;
     
-    private TaskID taskId = TaskID.newBuilder().setValue(String.format("%s@-@0@-@%s@-@fake_slave_id@-@0", "test_job", ExecutionType.READY)).build();
+    private final TaskID taskId = TaskID.newBuilder().setValue(String.format("%s@-@0@-@%s@-@fake_slave_id@-@0", "test_job", ExecutionType.READY)).build();
     
     private DaemonJob daemonJob;
     
diff --git a/elasticjob-cloud/elasticjob-cloud-executor/src/test/java/org/apache/shardingsphere/elasticjob/cloud/executor/prod/TaskExecutorTest.java b/elasticjob-cloud/elasticjob-cloud-executor/src/test/java/org/apache/shardingsphere/elasticjob/cloud/executor/prod/TaskExecutorTest.java
index b1ec6cd..06a915c 100755
--- a/elasticjob-cloud/elasticjob-cloud-executor/src/test/java/org/apache/shardingsphere/elasticjob/cloud/executor/prod/TaskExecutorTest.java
+++ b/elasticjob-cloud/elasticjob-cloud-executor/src/test/java/org/apache/shardingsphere/elasticjob/cloud/executor/prod/TaskExecutorTest.java
@@ -41,7 +41,6 @@ import java.util.concurrent.ExecutorService;
 import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertThat;
-import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.verify;
 
 @RunWith(MockitoJUnitRunner.class)
@@ -55,9 +54,9 @@ public final class TaskExecutorTest {
     
     private ExecutorInfo executorInfo;
     
-    private SlaveInfo slaveInfo = SlaveInfo.getDefaultInstance();
+    private final SlaveInfo slaveInfo = SlaveInfo.getDefaultInstance();
     
-    private FrameworkInfo frameworkInfo = FrameworkInfo.getDefaultInstance();
+    private final FrameworkInfo frameworkInfo = FrameworkInfo.getDefaultInstance();
     
     private TaskExecutor taskExecutor;
     
@@ -141,7 +140,7 @@ public final class TaskExecutorTest {
         fieldElasticJob.setAccessible(true);
         Field fieldElasticJobType = TaskExecutor.class.getDeclaredField("elasticJobType");
         fieldElasticJobType.setAccessible(true);
-        assertTrue(fieldElasticJob.get(taskExecutor) == testSimpleJob);
+        assertThat(fieldElasticJob.get(taskExecutor), is(testSimpleJob));
         assertNull(fieldElasticJobType.get(taskExecutor));
         taskExecutor = new TaskExecutor("simpleJob");
         assertThat(fieldElasticJobType.get(taskExecutor), is("simpleJob"));
diff --git a/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/console/config/FilterRegisterConfig.java b/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/console/config/FilterRegisterConfig.java
index f8db541..e1b1229 100644
--- a/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/console/config/FilterRegisterConfig.java
+++ b/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/console/config/FilterRegisterConfig.java
@@ -17,8 +17,6 @@
 
 package org.apache.shardingsphere.elasticjob.cloud.console.config;
 
-import java.util.EnumSet;
-import javax.servlet.DispatcherType;
 import org.apache.shardingsphere.elasticjob.cloud.console.security.UserAuthenticationService;
 import org.apache.shardingsphere.elasticjob.cloud.console.security.WwwAuthFilter;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -26,13 +24,16 @@ import org.springframework.boot.web.servlet.FilterRegistrationBean;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
+import javax.servlet.DispatcherType;
+import java.util.EnumSet;
+
 /**
  * Filter register config.
  **/
 @Configuration
 public class FilterRegisterConfig {
     
-    private UserAuthenticationService userAuthenticationService;
+    private final UserAuthenticationService userAuthenticationService;
     
     @Autowired
     public FilterRegisterConfig(final UserAuthenticationService userAuthenticationService) {
diff --git a/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/console/controller/CloudJobController.java b/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/console/controller/CloudJobController.java
index 83f8df7..ce357b1 100755
--- a/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/console/controller/CloudJobController.java
+++ b/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/console/controller/CloudJobController.java
@@ -19,20 +19,6 @@ package org.apache.shardingsphere.elasticjob.cloud.console.controller;
 
 import com.google.common.base.Preconditions;
 import com.google.common.base.Strings;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Optional;
-import java.util.Set;
-import javax.sql.DataSource;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.shardingsphere.elasticjob.cloud.config.CloudJobExecutionType;
 import org.apache.shardingsphere.elasticjob.cloud.config.pojo.CloudJobConfigurationPOJO;
@@ -66,6 +52,21 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.sql.DataSource;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Optional;
+import java.util.Set;
+
 /**
  * Cloud job restful api.
  */
@@ -101,7 +102,7 @@ public final class CloudJobController {
     public static void init(final CoordinatorRegistryCenter regCenter, final ProducerManager producerManager) {
         CloudJobController.regCenter = regCenter;
         CloudJobController.producerManager = producerManager;
-        Optional<TracingConfiguration> tracingConfiguration = BootstrapEnvironment.getInstance().getTracingConfiguration();
+        Optional<TracingConfiguration> tracingConfiguration = BootstrapEnvironment.getINSTANCE().getTracingConfiguration();
         jobEventRdbSearch = tracingConfiguration.map(tracingConfiguration1 -> new JobEventRdbSearch((DataSource) tracingConfiguration1.getStorage())).orElse(null);
     }
     
@@ -252,7 +253,7 @@ public final class CloudJobController {
     @GetMapping("events/executions")
     public JobEventRdbSearch.Result<JobExecutionEvent> findJobExecutionEvents(@RequestParam final MultiValueMap<String, String> requestParams) throws ParseException {
         if (!isRdbConfigured()) {
-            return new JobEventRdbSearch.Result<>(0, Collections.<JobExecutionEvent>emptyList());
+            return new JobEventRdbSearch.Result<>(0, Collections.emptyList());
         }
         return jobEventRdbSearch.findJobExecutionEvents(buildCondition(requestParams, new String[]{"jobName", "taskId", "ip", "isSuccess"}));
     }
@@ -266,7 +267,7 @@ public final class CloudJobController {
     @GetMapping("events/statusTraces")
     public JobEventRdbSearch.Result<JobStatusTraceEvent> findJobStatusTraceEvents(@RequestParam final MultiValueMap<String, String> requestParams) throws ParseException {
         if (!isRdbConfigured()) {
-            return new JobEventRdbSearch.Result<>(0, Collections.<JobStatusTraceEvent>emptyList());
+            return new JobEventRdbSearch.Result<>(0, Collections.emptyList());
         }
         return jobEventRdbSearch.findJobStatusTraceEvents(buildCondition(requestParams, new String[]{"jobName", "taskId", "slaveId", "source", "executionType", "state"}));
     }
diff --git a/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/console/controller/search/JobEventRdbSearch.java b/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/console/controller/search/JobEventRdbSearch.java
index f654ae6..bd775df 100755
--- a/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/console/controller/search/JobEventRdbSearch.java
+++ b/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/console/controller/search/JobEventRdbSearch.java
@@ -19,6 +19,13 @@ package org.apache.shardingsphere.elasticjob.cloud.console.controller.search;
 
 import com.google.common.base.CaseFormat;
 import com.google.common.base.Strings;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shardingsphere.elasticjob.tracing.event.JobExecutionEvent;
+import org.apache.shardingsphere.elasticjob.tracing.event.JobStatusTraceEvent;
+
+import javax.sql.DataSource;
 import java.sql.Connection;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
@@ -30,12 +37,6 @@ import java.util.Date;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
-import javax.sql.DataSource;
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.shardingsphere.elasticjob.tracing.event.JobExecutionEvent;
-import org.apache.shardingsphere.elasticjob.tracing.event.JobStatusTraceEvent;
 
 /**
  * Job event RDB search.
@@ -85,7 +86,7 @@ public final class JobEventRdbSearch {
                 ) {
             while (resultSet.next()) {
                 JobExecutionEvent jobExecutionEvent = new JobExecutionEvent(resultSet.getString(1), resultSet.getString(2), resultSet.getString(3), resultSet.getString(4),
-                        resultSet.getString(5), JobExecutionEvent.ExecutionSource.valueOf(resultSet.getString(6)), Integer.valueOf(resultSet.getString(7)), 
+                        resultSet.getString(5), JobExecutionEvent.ExecutionSource.valueOf(resultSet.getString(6)), Integer.parseInt(resultSet.getString(7)), 
                         new Date(resultSet.getTimestamp(8).getTime()), resultSet.getTimestamp(9) == null ? null : new Date(resultSet.getTimestamp(9).getTime()), 
                         resultSet.getBoolean(10), resultSet.getString(11));
                 result.add(jobExecutionEvent);
@@ -238,15 +239,10 @@ public final class JobEventRdbSearch {
         }
         StringBuilder sqlBuilder = new StringBuilder();
         sqlBuilder.append(" ORDER BY ").append(lowerUnderscore);
-        switch (sortOrder.toUpperCase()) {
-            case "ASC":
-                sqlBuilder.append(" ASC");
-                break;
-            case "DESC":
-                sqlBuilder.append(" DESC");
-                break;
-            default :
-                sqlBuilder.append(" ASC");
+        if ("DESC".equals(sortOrder.toUpperCase())) {
+            sqlBuilder.append(" DESC");
+        } else {
+            sqlBuilder.append(" ASC");
         }
         return sqlBuilder.toString();
     }
diff --git a/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/Bootstrap.java b/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/Bootstrap.java
index c6cc96b..57a7228 100755
--- a/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/Bootstrap.java
+++ b/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/Bootstrap.java
@@ -46,10 +46,10 @@ public final class Bootstrap {
     // CHECKSTYLE:OFF
     public static void main(final String[] args) throws InterruptedException {
         // CHECKSTYLE:ON
-        CoordinatorRegistryCenter regCenter = new ZookeeperRegistryCenter(BootstrapEnvironment.getInstance().getZookeeperConfiguration());
+        CoordinatorRegistryCenter regCenter = new ZookeeperRegistryCenter(BootstrapEnvironment.getINSTANCE().getZookeeperConfiguration());
         regCenter.init();
         final ZookeeperElectionService electionService = new ZookeeperElectionService(
-                BootstrapEnvironment.getInstance().getFrameworkHostPort(), (CuratorFramework) regCenter.getRawClient(), HANode.ELECTION_NODE, new SchedulerElectionCandidate(regCenter));
+                BootstrapEnvironment.getINSTANCE().getFrameworkHostPort(), (CuratorFramework) regCenter.getRawClient(), HANode.ELECTION_NODE, new SchedulerElectionCandidate(regCenter));
         electionService.start();
         final CountDownLatch latch = new CountDownLatch(1);
         latch.await();
diff --git a/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/config/job/CloudJobConfigurationListener.java b/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/config/job/CloudJobConfigurationListener.java
index 945a8f6..dc13531 100755
--- a/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/config/job/CloudJobConfigurationListener.java
+++ b/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/config/job/CloudJobConfigurationListener.java
@@ -72,7 +72,7 @@ public final class CloudJobConfigurationListener implements CuratorCacheListener
             }
             producerManager.reschedule(cloudJobConfig.getJobName());
         } else if (Type.NODE_DELETED == type && isJobConfigNode(path)) {
-            String jobName = path.substring(CloudJobConfigurationNode.ROOT.length() + 1, path.length());
+            String jobName = path.substring(CloudJobConfigurationNode.ROOT.length() + 1);
             producerManager.unschedule(jobName);
         }
     }
diff --git a/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/env/BootstrapEnvironment.java b/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/env/BootstrapEnvironment.java
index 31b6682..34a7f19 100755
--- a/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/env/BootstrapEnvironment.java
+++ b/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/env/BootstrapEnvironment.java
@@ -39,7 +39,7 @@ import java.util.Properties;
 public final class BootstrapEnvironment {
     
     @Getter
-    private static BootstrapEnvironment instance = new BootstrapEnvironment();
+    private static final BootstrapEnvironment INSTANCE = new BootstrapEnvironment();
     
     private static final String PROPERTIES_PATH = "conf/elasticjob-cloud-scheduler.properties";
     
diff --git a/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/AppConstraintEvaluator.java b/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/AppConstraintEvaluator.java
index 7eb97bc..0cfe09b 100755
--- a/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/AppConstraintEvaluator.java
+++ b/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/AppConstraintEvaluator.java
@@ -24,11 +24,6 @@ import com.netflix.fenzo.TaskAssignmentResult;
 import com.netflix.fenzo.TaskRequest;
 import com.netflix.fenzo.TaskTrackerState;
 import com.netflix.fenzo.VirtualMachineCurrentState;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Optional;
-import java.util.Set;
 import lombok.AccessLevel;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -38,6 +33,12 @@ import org.apache.shardingsphere.elasticjob.cloud.scheduler.config.app.pojo.Clou
 import org.apache.shardingsphere.elasticjob.cloud.scheduler.mesos.MesosStateService.ExecutorStateInfo;
 import org.apache.shardingsphere.elasticjob.infra.context.TaskContext;
 
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Optional;
+import java.util.Set;
+
 /**
  * App constrain evaluator.
  */
@@ -152,7 +153,7 @@ public final class AppConstraintEvaluator implements ConstraintEvaluator {
         return cloudJobConfig.get().toCloudJobConfiguration();
     }
     
-    private class LackConfigException extends Exception {
+    private static class LackConfigException extends Exception {
         
         LackConfigException(final String scope, final String configName) {
             super(String.format("Lack %s's config %s", scope, configName));
diff --git a/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/ReconcileService.java b/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/ReconcileService.java
index c13b977..4b7d7e7 100755
--- a/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/ReconcileService.java
+++ b/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/ReconcileService.java
@@ -95,7 +95,7 @@ public class ReconcileService extends AbstractScheduledService {
     
     @Override
     protected Scheduler scheduler() {
-        FrameworkConfiguration configuration = BootstrapEnvironment.getInstance().getFrameworkConfiguration();
+        FrameworkConfiguration configuration = BootstrapEnvironment.getINSTANCE().getFrameworkConfiguration();
         return Scheduler.newFixedDelaySchedule(configuration.getReconcileIntervalMinutes(), configuration.getReconcileIntervalMinutes(), TimeUnit.MINUTES);
     }
 }
diff --git a/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/SchedulerService.java b/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/SchedulerService.java
index 9234651..b33c41a 100755
--- a/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/SchedulerService.java
+++ b/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/SchedulerService.java
@@ -64,7 +64,7 @@ public final class SchedulerService {
     private final ReconcileService reconcileService;
     
     public SchedulerService(final CoordinatorRegistryCenter regCenter) {
-        env = BootstrapEnvironment.getInstance();
+        env = BootstrapEnvironment.getINSTANCE();
         facadeService = new FacadeService(regCenter);
         statisticManager = StatisticManager.getInstance(regCenter, env.getTracingConfiguration().orElse(null));
         TaskScheduler taskScheduler = getTaskScheduler();
diff --git a/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/TaskLaunchScheduledService.java b/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/TaskLaunchScheduledService.java
index 13578ab..cf4fb87 100755
--- a/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/TaskLaunchScheduledService.java
+++ b/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/TaskLaunchScheduledService.java
@@ -73,7 +73,7 @@ public final class TaskLaunchScheduledService extends AbstractScheduledService {
     
     private final JobEventBus jobEventBus;
     
-    private final BootstrapEnvironment env = BootstrapEnvironment.getInstance();
+    private final BootstrapEnvironment env = BootstrapEnvironment.getINSTANCE();
     
     @Override
     protected String serviceName() {
diff --git a/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/producer/TransientProducerRepository.java b/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/producer/TransientProducerRepository.java
index 9380d5a..3a63304 100755
--- a/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/producer/TransientProducerRepository.java
+++ b/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/producer/TransientProducerRepository.java
@@ -59,7 +59,7 @@ final class TransientProducerRepository {
     
     List<String> get(final JobKey jobKey) {
         List<String> result = cronTasks.get(jobKey);
-        return null == result ? Collections.<String>emptyList() : result;
+        return null == result ? Collections.emptyList() : result;
     }
     
     boolean containsKey(final JobKey jobKey) {
diff --git a/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/state/disable/app/DisableAppService.java b/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/state/disable/app/DisableAppService.java
index d8b9a20..9a7febe 100755
--- a/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/state/disable/app/DisableAppService.java
+++ b/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/state/disable/app/DisableAppService.java
@@ -27,7 +27,7 @@ import org.apache.shardingsphere.elasticjob.reg.base.CoordinatorRegistryCenter;
 @Slf4j
 public class DisableAppService {
     
-    private final BootstrapEnvironment env = BootstrapEnvironment.getInstance();
+    private final BootstrapEnvironment env = BootstrapEnvironment.getINSTANCE();
     
     private final CoordinatorRegistryCenter regCenter;
     
diff --git a/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/state/disable/job/DisableJobService.java b/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/state/disable/job/DisableJobService.java
index 1301ad0..a77c0fd 100755
--- a/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/state/disable/job/DisableJobService.java
+++ b/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/state/disable/job/DisableJobService.java
@@ -27,7 +27,7 @@ import org.apache.shardingsphere.elasticjob.reg.base.CoordinatorRegistryCenter;
 @Slf4j
 public class DisableJobService {
     
-    private final BootstrapEnvironment env = BootstrapEnvironment.getInstance();
+    private final BootstrapEnvironment env = BootstrapEnvironment.getINSTANCE();
     
     private final CoordinatorRegistryCenter regCenter;
     
diff --git a/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/state/failover/FailoverService.java b/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/state/failover/FailoverService.java
index 677dffc..434a3c9 100755
--- a/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/state/failover/FailoverService.java
+++ b/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/state/failover/FailoverService.java
@@ -48,7 +48,7 @@ import java.util.Set;
 @Slf4j
 public final class FailoverService {
     
-    private final BootstrapEnvironment env = BootstrapEnvironment.getInstance();
+    private final BootstrapEnvironment env = BootstrapEnvironment.getINSTANCE();
     
     private final CoordinatorRegistryCenter regCenter;
     
diff --git a/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/state/ready/ReadyService.java b/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/state/ready/ReadyService.java
index 48689e4..13a1ed5 100755
--- a/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/state/ready/ReadyService.java
+++ b/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/state/ready/ReadyService.java
@@ -43,7 +43,7 @@ import java.util.stream.Collectors;
 @Slf4j
 public final class ReadyService {
     
-    private final BootstrapEnvironment env = BootstrapEnvironment.getInstance();
+    private final BootstrapEnvironment env = BootstrapEnvironment.getINSTANCE();
     
     private final CoordinatorRegistryCenter regCenter;
     
diff --git a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/console/AbstractCloudControllerTest.java b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/console/AbstractCloudControllerTest.java
index 4f19a29..28cfd78 100644
--- a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/console/AbstractCloudControllerTest.java
+++ b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/console/AbstractCloudControllerTest.java
@@ -17,7 +17,6 @@
 
 package org.apache.shardingsphere.elasticjob.cloud.console;
 
-import java.io.IOException;
 import lombok.AccessLevel;
 import lombok.Getter;
 import org.apache.mesos.SchedulerDriver;
@@ -72,7 +71,7 @@ public abstract class AbstractCloudControllerTest {
         consoleBootstrap.start();
     }
     
-    private static void initMesosServer() throws Exception {
+    private static void initMesosServer() {
         MesosStateService.register("127.0.0.1", 9050);
         ConsoleBootstrap.ConsoleApplication.setPort(9050);
         ConsoleBootstrap.ConsoleApplication.setExtraSources(new Class[]{MesosMasterServerMockConfiguration.class});
@@ -83,7 +82,7 @@ public abstract class AbstractCloudControllerTest {
     }
     
     @AfterClass
-    public static void tearDown() throws IOException {
+    public static void tearDown() {
         consoleBootstrap.stop();
         masterServer.stop();
         slaveServer.stop();
diff --git a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/console/controller/CloudAppControllerTest.java b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/console/controller/CloudAppControllerTest.java
index 5d687ef..6cb3bfd 100644
--- a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/console/controller/CloudAppControllerTest.java
+++ b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/console/controller/CloudAppControllerTest.java
@@ -17,17 +17,18 @@
 
 package org.apache.shardingsphere.elasticjob.cloud.console.controller;
 
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
 import org.apache.shardingsphere.elasticjob.cloud.console.AbstractCloudControllerTest;
+import org.apache.shardingsphere.elasticjob.cloud.console.HttpTestUtil;
 import org.apache.shardingsphere.elasticjob.cloud.scheduler.fixture.CloudAppJsonConstants;
 import org.apache.shardingsphere.elasticjob.cloud.scheduler.fixture.CloudJsonConstants;
-import org.apache.shardingsphere.elasticjob.cloud.console.HttpTestUtil;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.junit.MockitoJUnitRunner;
 
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
 import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.assertThat;
 import static org.mockito.Mockito.verify;
@@ -45,14 +46,14 @@ public class CloudAppControllerTest extends AbstractCloudControllerTest {
             + "memoryMB: 128.0\n";
     
     @Test
-    public void assertRegister() throws Exception {
+    public void assertRegister() {
         when(getRegCenter().isExisted("/config/app/test_app")).thenReturn(false);
         assertThat(HttpTestUtil.post("http://127.0.0.1:19000/api/app", CloudAppJsonConstants.getAppJson("test_app")), is(200));
         verify(getRegCenter()).persist("/config/app/test_app", YAML);
     }
     
     @Test
-    public void assertRegisterWithExistedName() throws Exception {
+    public void assertRegisterWithExistedName() {
         when(getRegCenter().isExisted("/config/app/test_app")).thenReturn(false);
         assertThat(HttpTestUtil.post("http://127.0.0.1:19000/api/app", CloudAppJsonConstants.getAppJson("test_app")), is(200));
         when(getRegCenter().get("/config/app/test_app")).thenReturn(CloudAppJsonConstants.getAppJson("test_app"));
@@ -60,12 +61,12 @@ public class CloudAppControllerTest extends AbstractCloudControllerTest {
     }
     
     @Test
-    public void assertRegisterWithBadRequest() throws Exception {
+    public void assertRegisterWithBadRequest() {
         assertThat(HttpTestUtil.post("http://127.0.0.1:19000/api/app", "\"{\"appName\":\"wrong_job\"}"), is(500));
     }
     
     @Test
-    public void assertUpdate() throws Exception {
+    public void assertUpdate() {
         when(getRegCenter().isExisted("/config/app/test_app")).thenReturn(true);
         when(getRegCenter().get("/config/app/test_app")).thenReturn(CloudAppJsonConstants.getAppJson("test_app"));
         assertThat(HttpTestUtil.put("http://127.0.0.1:19000/api/app", CloudAppJsonConstants.getAppJson("test_app")), is(200));
@@ -73,21 +74,21 @@ public class CloudAppControllerTest extends AbstractCloudControllerTest {
     }
     
     @Test
-    public void assertDetail() throws Exception {
+    public void assertDetail() {
         when(getRegCenter().get("/config/app/test_app")).thenReturn(CloudAppJsonConstants.getAppJson("test_app"));
         assertThat(HttpTestUtil.get("http://127.0.0.1:19000/api/app/test_app"), is(CloudAppJsonConstants.getAppJson("test_app")));
         verify(getRegCenter()).get("/config/app/test_app");
     }
     
     @Test
-    public void assertDetailWithNotExistedJob() throws Exception {
+    public void assertDetailWithNotExistedJob() {
         Map<String, String> content = new HashMap<>(1);
         content.put("appName", "");
         assertThat(HttpTestUtil.get("http://127.0.0.1:19000/api/app/notExistedJobName", content), is(""));
     }
     
     @Test
-    public void assertFindAllJobs() throws Exception {
+    public void assertFindAllJobs() {
         when(getRegCenter().isExisted("/config/app")).thenReturn(true);
         when(getRegCenter().getChildrenKeys("/config/app")).thenReturn(Collections.singletonList("test_app"));
         when(getRegCenter().get("/config/app/test_app")).thenReturn(CloudAppJsonConstants.getAppJson("test_app"));
@@ -98,20 +99,20 @@ public class CloudAppControllerTest extends AbstractCloudControllerTest {
     }
     
     @Test
-    public void assertDeregister() throws Exception {
+    public void assertDeregister() {
         when(getRegCenter().get("/config/app/test_app")).thenReturn(CloudAppJsonConstants.getAppJson("test_app"));
         assertThat(HttpTestUtil.delete("http://127.0.0.1:19000/api/app/test_app"), is(200));
         verify(getRegCenter()).get("/config/app/test_app");
     }
     
     @Test
-    public void assertIsDisabled() throws Exception {
+    public void assertIsDisabled() {
         when(getRegCenter().isExisted("/state/disable/app/test_app")).thenReturn(true);
         assertThat(HttpTestUtil.get("http://127.0.0.1:19000/api/app/test_app/disable"), is("true"));
     }
     
     @Test
-    public void assertDisable() throws Exception {
+    public void assertDisable() {
         when(getRegCenter().isExisted("/config/job")).thenReturn(true);
         when(getRegCenter().getChildrenKeys("/config/job")).thenReturn(Collections.singletonList("test_job"));
         when(getRegCenter().get("/config/app/test_app")).thenReturn(CloudAppJsonConstants.getAppJson("test_app"));
@@ -122,7 +123,7 @@ public class CloudAppControllerTest extends AbstractCloudControllerTest {
     }
     
     @Test
-    public void assertEnable() throws Exception {
+    public void assertEnable() {
         when(getRegCenter().isExisted("/config/job")).thenReturn(true);
         when(getRegCenter().getChildrenKeys("/config/job")).thenReturn(Collections.singletonList("test_job"));
         when(getRegCenter().get("/config/app/test_app")).thenReturn(CloudAppJsonConstants.getAppJson("test_app"));
diff --git a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/console/controller/CloudJobControllerTest.java b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/console/controller/CloudJobControllerTest.java
index 9e52ee0..d635240 100644
--- a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/console/controller/CloudJobControllerTest.java
+++ b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/console/controller/CloudJobControllerTest.java
@@ -17,11 +17,6 @@
 
 package org.apache.shardingsphere.elasticjob.cloud.console.controller;
 
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.UUID;
 import org.apache.shardingsphere.elasticjob.cloud.ReflectionUtils;
 import org.apache.shardingsphere.elasticjob.cloud.config.CloudJobExecutionType;
 import org.apache.shardingsphere.elasticjob.cloud.console.AbstractCloudControllerTest;
@@ -41,6 +36,12 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.junit.MockitoJUnitRunner;
 
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
 import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.assertThat;
 import static org.mockito.Mockito.times;
@@ -69,7 +70,7 @@ public class CloudJobControllerTest extends AbstractCloudControllerTest {
             + "shardingTotalCount: 10\n";
     
     @Test
-    public void assertRegister() throws Exception {
+    public void assertRegister() {
         when(getRegCenter().get("/config/app/test_app")).thenReturn(CloudAppJsonConstants.getAppJson("test_app"));
         when(getRegCenter().isExisted("/config/job/test_job")).thenReturn(false);
         assertThat(HttpTestUtil.post("http://127.0.0.1:19000/api/job/register", CloudJsonConstants.getJobJson()), is(200));
@@ -78,13 +79,13 @@ public class CloudJobControllerTest extends AbstractCloudControllerTest {
     }
     
     @Test
-    public void assertRegisterWithoutApp() throws Exception {
+    public void assertRegisterWithoutApp() {
         when(getRegCenter().isExisted("/config/job/test_job")).thenReturn(false);
         assertThat(HttpTestUtil.post("http://127.0.0.1:19000/api/job/register", CloudJsonConstants.getJobJson()), is(500));
     }
     
     @Test
-    public void assertRegisterWithExistedName() throws Exception {
+    public void assertRegisterWithExistedName() {
         when(getRegCenter().get("/config/app/test_app")).thenReturn(CloudAppJsonConstants.getAppJson("test_app"));
         when(getRegCenter().isExisted("/config/test_job")).thenReturn(false);
         assertThat(HttpTestUtil.post("http://127.0.0.1:19000/api/job/register", CloudJsonConstants.getJobJson()), is(200));
@@ -94,13 +95,13 @@ public class CloudJobControllerTest extends AbstractCloudControllerTest {
     }
     
     @Test
-    public void assertRegisterWithBadRequest() throws Exception {
+    public void assertRegisterWithBadRequest() {
         when(getRegCenter().get("/config/app/test_app")).thenReturn(CloudAppJsonConstants.getAppJson("test_app"));
         assertThat(HttpTestUtil.post("http://127.0.0.1:19000/api/job/register", "\"{\"jobName\":\"wrong_job\"}"), is(500));
     }
     
     @Test
-    public void assertUpdate() throws Exception {
+    public void assertUpdate() {
         when(getRegCenter().isExisted("/config/job/test_job")).thenReturn(true);
         when(getRegCenter().get("/config/job/test_job")).thenReturn(CloudJsonConstants.getJobJson());
         assertThat(HttpTestUtil.put("http://127.0.0.1:19000/api/job/update", CloudJsonConstants.getJobJson()), is(200));
@@ -109,33 +110,33 @@ public class CloudJobControllerTest extends AbstractCloudControllerTest {
     }
     
     @Test
-    public void assertDeregister() throws Exception {
+    public void assertDeregister() {
         when(getRegCenter().isExisted("/config/job/test_job")).thenReturn(false);
         assertThat(HttpTestUtil.delete("http://127.0.0.1:19000/api/job/test_job/deregister"), is(200));
         verify(getRegCenter(), times(3)).get("/config/job/test_job");
     }
     
     @Test
-    public void assertTriggerWithDaemonJob() throws Exception {
+    public void assertTriggerWithDaemonJob() {
         when(getRegCenter().get("/config/job/test_job")).thenReturn(CloudJsonConstants.getJobJson(CloudJobExecutionType.DAEMON));
         assertThat(HttpTestUtil.post("http://127.0.0.1:19000/api/job/trigger", "test_job"), is(500));
     }
     
     @Test
-    public void assertTriggerWithTransientJob() throws Exception {
+    public void assertTriggerWithTransientJob() {
         when(getRegCenter().get("/config/job/test_job")).thenReturn(CloudJsonConstants.getJobJson());
         assertThat(HttpTestUtil.post("http://127.0.0.1:19000/api/job/trigger", "test_job"), is(200));
     }
     
     @Test
-    public void assertDetail() throws Exception {
+    public void assertDetail() {
         when(getRegCenter().get("/config/job/test_job")).thenReturn(CloudJsonConstants.getJobJson());
         assertThat(HttpTestUtil.get("http://127.0.0.1:19000/api/job/jobs/test_job"), is(CloudJsonConstants.getJobJson()));
         verify(getRegCenter()).get("/config/job/test_job");
     }
     
     @Test
-    public void assertFindAllJobs() throws Exception {
+    public void assertFindAllJobs() {
         when(getRegCenter().isExisted("/config/job")).thenReturn(true);
         when(getRegCenter().getChildrenKeys("/config/job")).thenReturn(Collections.singletonList("test_job"));
         when(getRegCenter().get("/config/job/test_job")).thenReturn(CloudJsonConstants.getJobJson());
@@ -146,7 +147,7 @@ public class CloudJobControllerTest extends AbstractCloudControllerTest {
     }
     
     @Test
-    public void assertFindAllRunningTasks() throws Exception {
+    public void assertFindAllRunningTasks() {
         RunningService runningService = new RunningService(getRegCenter());
         TaskContext actualTaskContext = TaskContext.from(TaskNode.builder().build().getTaskNodeValue());
         when(getRegCenter().get("/config/job/" + actualTaskContext.getMetaInfo().getJobName())).thenReturn(CloudJsonConstants.getJobJson());
@@ -155,7 +156,7 @@ public class CloudJobControllerTest extends AbstractCloudControllerTest {
     }
     
     @Test
-    public void assertFindAllReadyTasks() throws Exception {
+    public void assertFindAllReadyTasks() {
         when(getRegCenter().isExisted("/state/ready")).thenReturn(true);
         when(getRegCenter().getChildrenKeys("/state/ready")).thenReturn(Collections.singletonList("test_job"));
         when(getRegCenter().get("/state/ready/test_job")).thenReturn("1");
@@ -170,7 +171,7 @@ public class CloudJobControllerTest extends AbstractCloudControllerTest {
     }
     
     @Test
-    public void assertFindAllFailoverTasks() throws Exception {
+    public void assertFindAllFailoverTasks() {
         when(getRegCenter().isExisted("/state/failover")).thenReturn(true);
         when(getRegCenter().getChildrenKeys("/state/failover")).thenReturn(Collections.singletonList("test_job"));
         when(getRegCenter().getChildrenKeys("/state/failover/test_job")).thenReturn(Collections.singletonList("test_job@-@0"));
@@ -186,26 +187,26 @@ public class CloudJobControllerTest extends AbstractCloudControllerTest {
     }
     
     @Test
-    public void assertFindJobExecutionEventsWhenNotConfigRDB() throws Exception {
+    public void assertFindJobExecutionEventsWhenNotConfigRDB() {
         ReflectionUtils.setStaticFieldValue(CloudJobController.class, "jobEventRdbSearch", null);
         assertThat(HttpTestUtil.get("http://127.0.0.1:19000/api/job/events/executions"), is(GsonFactory.getGson().toJson(new JobEventRdbSearch.Result<>(0,
                 Collections.<JobExecutionEvent>emptyList()))));
     }
     
     @Test
-    public void assertGetTaskResultStatistics() throws Exception {
+    public void assertGetTaskResultStatistics() {
         assertThat(HttpTestUtil.get("http://127.0.0.1:19000/api/job/statistics/tasks/results"),
                 is(GsonFactory.getGson().toJson(Collections.emptyList())));
     }
     
     @Test
-    public void assertGetTaskResultStatisticsWithSinceParameter() throws Exception {
+    public void assertGetTaskResultStatisticsWithSinceParameter() {
         assertThat(HttpTestUtil.get("http://127.0.0.1:19000/api/job/statistics/tasks/results?since=last24hours"),
                 is(GsonFactory.getGson().toJson(Collections.emptyList())));
     }
     
     @Test
-    public void assertGetTaskResultStatisticsWithPathParameter() throws Exception {
+    public void assertGetTaskResultStatisticsWithPathParameter() {
         String[] parameters = {"online", "lastWeek", "lastHour", "lastMinute"};
         for (String each : parameters) {
             String result = HttpTestUtil.get("http://127.0.0.1:19000/api/job/statistics/tasks/results/" + each);
@@ -216,7 +217,7 @@ public class CloudJobControllerTest extends AbstractCloudControllerTest {
     }
     
     @Test
-    public void assertGetTaskResultStatisticsWithErrorPathParameter() throws Exception {
+    public void assertGetTaskResultStatisticsWithErrorPathParameter() {
         String result = HttpTestUtil.get("http://127.0.0.1:19000/api/job/statistics/tasks/results/errorPath");
         TaskResultStatistics taskResultStatistics = GsonFactory.getGson().fromJson(result, TaskResultStatistics.class);
         assertThat(taskResultStatistics.getSuccessCount(), is(0));
@@ -224,7 +225,7 @@ public class CloudJobControllerTest extends AbstractCloudControllerTest {
     }
     
     @Test
-    public void assertGetJobExecutionTypeStatistics() throws Exception {
+    public void assertGetJobExecutionTypeStatistics() {
         String result = HttpTestUtil.get("http://127.0.0.1:19000/api/job/statistics/jobs/executionType");
         JobExecutionTypeStatistics jobExecutionTypeStatistics = GsonFactory.getGson().fromJson(result, JobExecutionTypeStatistics.class);
         assertThat(jobExecutionTypeStatistics.getDaemonJobCount(), is(0));
@@ -232,43 +233,43 @@ public class CloudJobControllerTest extends AbstractCloudControllerTest {
     }
     
     @Test
-    public void assertFindTaskRunningStatistics() throws Exception {
+    public void assertFindTaskRunningStatistics() {
         assertThat(HttpTestUtil.get("http://127.0.0.1:19000/api/job/statistics/tasks/running"),
                 is(GsonFactory.getGson().toJson(Collections.emptyList())));
     }
     
     @Test
-    public void assertFindTaskRunningStatisticsWeekly() throws Exception {
+    public void assertFindTaskRunningStatisticsWeekly() {
         assertThat(HttpTestUtil.get("http://127.0.0.1:19000/api/job/statistics/tasks/running?since=lastWeek"),
                 is(GsonFactory.getGson().toJson(Collections.emptyList())));
     }
     
     @Test
-    public void assertFindJobRunningStatistics() throws Exception {
+    public void assertFindJobRunningStatistics() {
         assertThat(HttpTestUtil.get("http://127.0.0.1:19000/api/job/statistics/jobs/running"),
                 is(GsonFactory.getGson().toJson(Collections.emptyList())));
     }
     
     @Test
-    public void assertFindJobRunningStatisticsWeekly() throws Exception {
+    public void assertFindJobRunningStatisticsWeekly() {
         assertThat(HttpTestUtil.get("http://127.0.0.1:19000/api/job/statistics/jobs/running?since=lastWeek"),
                 is(GsonFactory.getGson().toJson(Collections.emptyList())));
     }
     
     @Test
-    public void assertFindJobRegisterStatisticsSinceOnline() throws Exception {
+    public void assertFindJobRegisterStatisticsSinceOnline() {
         assertThat(HttpTestUtil.get("http://127.0.0.1:19000/api/job/statistics/jobs/register"),
                 is(GsonFactory.getGson().toJson(Collections.emptyList())));
     }
     
     @Test
-    public void assertIsDisabled() throws Exception {
+    public void assertIsDisabled() {
         when(getRegCenter().isExisted("/state/disable/job/test_job")).thenReturn(true);
         assertThat(HttpTestUtil.get("http://127.0.0.1:19000/api/job/test_job/disable"), is("true"));
     }
     
     @Test
-    public void assertDisable() throws Exception {
+    public void assertDisable() {
         when(getRegCenter().isExisted("/config/job")).thenReturn(true);
         when(getRegCenter().getChildrenKeys("/config/job")).thenReturn(Collections.singletonList("test_job"));
         when(getRegCenter().get("/config/app/test_app")).thenReturn(CloudAppJsonConstants.getAppJson("test_app"));
@@ -278,7 +279,7 @@ public class CloudJobControllerTest extends AbstractCloudControllerTest {
     }
     
     @Test
-    public void assertEnable() throws Exception {
+    public void assertEnable() {
         when(getRegCenter().isExisted("/config/job")).thenReturn(true);
         when(getRegCenter().getChildrenKeys("/config/job")).thenReturn(Collections.singletonList("test_job"));
         when(getRegCenter().get("/config/app/test_app")).thenReturn(CloudAppJsonConstants.getAppJson("test_app"));
diff --git a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/console/controller/CloudOperationControllerTest.java b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/console/controller/CloudOperationControllerTest.java
index 38685b1..2f4d5c7 100644
--- a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/console/controller/CloudOperationControllerTest.java
+++ b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/console/controller/CloudOperationControllerTest.java
@@ -33,21 +33,21 @@ import static org.mockito.Mockito.when;
 public class CloudOperationControllerTest extends AbstractCloudControllerTest {
     
     @Test
-    public void assertExplicitReconcile() throws Exception {
+    public void assertExplicitReconcile() {
         ReflectionUtils.setFieldValue(new CloudOperationController(), "lastReconcileTime", 0);
         assertThat(HttpTestUtil.post("http://127.0.0.1:19000/api/operate/reconcile/explicit", ""), is(200));
         assertThat(HttpTestUtil.post("http://127.0.0.1:19000/api/operate/reconcile/explicit", ""), is(500));
     }
     
     @Test
-    public void assertImplicitReconcile() throws Exception {
+    public void assertImplicitReconcile() {
         ReflectionUtils.setFieldValue(new CloudOperationController(), "lastReconcileTime", 0);
         assertThat(HttpTestUtil.post("http://127.0.0.1:19000/api/operate/reconcile/implicit", ""), is(200));
         assertThat(HttpTestUtil.post("http://127.0.0.1:19000/api/operate/reconcile/implicit", ""), is(500));
     }
     
     @Test
-    public void assertSandbox() throws Exception {
+    public void assertSandbox() {
         when(getRegCenter().getDirectly(HANode.FRAMEWORK_ID_NODE)).thenReturn("d8701508-41b7-471e-9b32-61cf824a660d-0000");
         assertThat(HttpTestUtil.get("http://127.0.0.1:19000/api/operate/sandbox?appName=foo_app"), is("[{\"hostname\":\"127.0.0.1\","
                 + "\"path\":\"/slaves/d8701508-41b7-471e-9b32-61cf824a660d-S0/frameworks/d8701508-41b7-471e-9b32-61cf824a660d-0000/executors/foo_app@-@"
@@ -55,7 +55,7 @@ public class CloudOperationControllerTest extends AbstractCloudControllerTest {
     }
     
     @Test
-    public void assertNoFrameworkSandbox() throws Exception {
+    public void assertNoFrameworkSandbox() {
         assertThat(HttpTestUtil.get("http://127.0.0.1:19000/api/operate/sandbox?appName=foo_app"), is("[]"));
         when(getRegCenter().getDirectly(HANode.FRAMEWORK_ID_NODE)).thenReturn("not-exists");
         assertThat(HttpTestUtil.get("http://127.0.0.1:19000/api/operate/sandbox?appName=foo_app"), is("[]"));
diff --git a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/env/BootstrapEnvironmentTest.java b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/env/BootstrapEnvironmentTest.java
index 654b6e8..f662dbf 100755
--- a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/env/BootstrapEnvironmentTest.java
+++ b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/env/BootstrapEnvironmentTest.java
@@ -34,7 +34,7 @@ import static org.junit.Assert.assertThat;
 
 public final class BootstrapEnvironmentTest {
     
-    private final BootstrapEnvironment bootstrapEnvironment = BootstrapEnvironment.getInstance();
+    private final BootstrapEnvironment bootstrapEnvironment = BootstrapEnvironment.getINSTANCE();
     
     @Test
     public void assertGetMesosConfiguration() {
diff --git a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/fixture/TaskNode.java b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/fixture/TaskNode.java
index a3e9a8a..bb492ee 100755
--- a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/fixture/TaskNode.java
+++ b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/fixture/TaskNode.java
@@ -26,15 +26,15 @@ public final class TaskNode {
     
     private static final String DELIMITER = "@-@";
     
-    private String jobName;
+    private final String jobName;
     
-    private int shardingItem;
+    private final int shardingItem;
     
-    private ExecutionType type;
+    private final ExecutionType type;
     
-    private String slaveId;
+    private final String slaveId;
     
-    private String uuid;
+    private final String uuid;
     
     /**
      * Get task node path.
diff --git a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/AppConstraintEvaluatorTest.java b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/AppConstraintEvaluatorTest.java
index 13de62e..ac943c5 100755
--- a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/AppConstraintEvaluatorTest.java
+++ b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/AppConstraintEvaluatorTest.java
@@ -25,11 +25,6 @@ import com.netflix.fenzo.TaskScheduler;
 import com.netflix.fenzo.VMAssignmentResult;
 import com.netflix.fenzo.VirtualMachineLease;
 import com.netflix.fenzo.plugins.VMLeaseObject;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
 import org.apache.mesos.Protos;
 import org.apache.shardingsphere.elasticjob.cloud.scheduler.fixture.CloudAppConfigurationBuilder;
 import org.apache.shardingsphere.elasticjob.cloud.scheduler.fixture.CloudJobConfigurationBuilder;
@@ -42,6 +37,12 @@ import org.junit.BeforeClass;
 import org.junit.Test;
 import org.mockito.stubbing.Answer;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
+
 import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
@@ -102,7 +103,7 @@ public final class AppConstraintEvaluatorTest {
     }
     
     @Test
-    public void assertExistExecutorOnS0() throws Exception {
+    public void assertExistExecutorOnS0() {
         when(facadeService.loadExecutorInfo()).thenReturn(Collections.singletonList(new ExecutorStateInfo("foo-app@-@S0", "S0")));
         AppConstraintEvaluator.getInstance().loadAppRunningState();
         SchedulingResult result = taskScheduler.scheduleOnce(getTasks(), Arrays.asList(getLease(0, INSUFFICIENT_CPU, INSUFFICIENT_MEM), getLease(1, INSUFFICIENT_CPU, INSUFFICIENT_MEM)));
@@ -111,7 +112,7 @@ public final class AppConstraintEvaluatorTest {
     }
     
     @Test
-    public void assertGetExecutorError() throws Exception {
+    public void assertGetExecutorError() {
         when(facadeService.loadExecutorInfo()).thenThrow(JsonParseException.class);
         AppConstraintEvaluator.getInstance().loadAppRunningState();
         SchedulingResult result = taskScheduler.scheduleOnce(getTasks(), Arrays.asList(getLease(0, INSUFFICIENT_CPU, INSUFFICIENT_MEM), getLease(1, INSUFFICIENT_CPU, INSUFFICIENT_MEM)));
diff --git a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/FacadeServiceTest.java b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/FacadeServiceTest.java
index 25900a6..30299bc 100755
--- a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/FacadeServiceTest.java
+++ b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/FacadeServiceTest.java
@@ -321,7 +321,7 @@ public final class FacadeServiceTest {
     }
     
     @Test
-    public void assertLoadExecutor() throws Exception {
+    public void assertLoadExecutor() {
         facadeService.loadExecutorInfo();
         verify(mesosStateService).executors();
     }
diff --git a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/LaunchingTasksTest.java b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/LaunchingTasksTest.java
index 3f8df72..c87528a 100755
--- a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/LaunchingTasksTest.java
+++ b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/LaunchingTasksTest.java
@@ -58,13 +58,11 @@ public final class LaunchingTasksTest {
     @Mock
     private FailoverService failoverService;
     
-    private FacadeService facadeService;
-    
     private LaunchingTasks launchingTasks;
     
     @Before
     public void setUp() {
-        facadeService = new FacadeService(regCenter);
+        FacadeService facadeService = new FacadeService(regCenter);
         ReflectionUtils.setFieldValue(facadeService, "jobConfigService", jobConfigService);
         ReflectionUtils.setFieldValue(facadeService, "readyService", readyService);
         ReflectionUtils.setFieldValue(facadeService, "runningService", runningService);
diff --git a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/LeasesQueueTest.java b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/LeasesQueueTest.java
index 8c52860..3de8dcd 100755
--- a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/LeasesQueueTest.java
+++ b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/LeasesQueueTest.java
@@ -26,7 +26,7 @@ import static org.junit.Assert.assertTrue;
 
 public final class LeasesQueueTest {
     
-    private LeasesQueue leasesQueue = LeasesQueue.getInstance();
+    private final LeasesQueue leasesQueue = LeasesQueue.getInstance();
     
     @Test
     public void assertOperate() {
diff --git a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/MesosStateServiceTest.java b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/MesosStateServiceTest.java
index 5a805e9..c13a34d 100755
--- a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/MesosStateServiceTest.java
+++ b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/MesosStateServiceTest.java
@@ -17,8 +17,6 @@
 
 package org.apache.shardingsphere.elasticjob.cloud.scheduler.mesos;
 
-import java.util.Collection;
-import java.util.Map;
 import org.apache.shardingsphere.elasticjob.cloud.console.AbstractCloudControllerTest;
 import org.apache.shardingsphere.elasticjob.cloud.scheduler.ha.HANode;
 import org.apache.shardingsphere.elasticjob.cloud.scheduler.mesos.MesosStateService.ExecutorStateInfo;
@@ -28,6 +26,9 @@ import org.junit.runner.RunWith;
 import org.mockito.Mock;
 import org.mockito.junit.MockitoJUnitRunner;
 
+import java.util.Collection;
+import java.util.Map;
+
 import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.assertThat;
 import static org.mockito.Mockito.when;
@@ -39,7 +40,7 @@ public class MesosStateServiceTest extends AbstractCloudControllerTest {
     private CoordinatorRegistryCenter registryCenter;
     
     @Test
-    public void assertSandbox() throws Exception {
+    public void assertSandbox() {
         when(registryCenter.getDirectly(HANode.FRAMEWORK_ID_NODE)).thenReturn("d8701508-41b7-471e-9b32-61cf824a660d-0000");
         MesosStateService service = new MesosStateService(registryCenter);
         Collection<Map<String, String>> sandbox = service.sandbox("foo_app");
@@ -50,7 +51,7 @@ public class MesosStateServiceTest extends AbstractCloudControllerTest {
     }
     
     @Test
-    public void assertExecutors() throws Exception {
+    public void assertExecutors() {
         when(registryCenter.getDirectly(HANode.FRAMEWORK_ID_NODE)).thenReturn("d8701508-41b7-471e-9b32-61cf824a660d-0000");
         MesosStateService service = new MesosStateService(registryCenter);
         Collection<ExecutorStateInfo> executorStateInfo = service.executors("foo_app");
@@ -61,7 +62,7 @@ public class MesosStateServiceTest extends AbstractCloudControllerTest {
     }
     
     @Test
-    public void assertAllExecutors() throws Exception {
+    public void assertAllExecutors() {
         when(registryCenter.getDirectly(HANode.FRAMEWORK_ID_NODE)).thenReturn("d8701508-41b7-471e-9b32-61cf824a660d-0000");
         MesosStateService service = new MesosStateService(registryCenter);
         Collection<ExecutorStateInfo> executorStateInfo = service.executors();
diff --git a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/ReconcileServiceTest.java b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/ReconcileServiceTest.java
index f28e554..9e4bece 100755
--- a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/ReconcileServiceTest.java
+++ b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/ReconcileServiceTest.java
@@ -60,15 +60,15 @@ public final class ReconcileServiceTest {
     }
     
     @Test
-    public void assertRunOneIteration() throws Exception {
+    public void assertRunOneIteration() {
         reconcileService.runOneIteration();
-        verify(schedulerDriver).reconcileTasks(Collections.<Protos.TaskStatus>emptyList());
+        verify(schedulerDriver).reconcileTasks(Collections.emptyList());
     }
     
     @Test
     public void assertImplicitReconcile() {
         reconcileService.implicitReconcile();
-        verify(schedulerDriver).reconcileTasks(Collections.<Protos.TaskStatus>emptyList());
+        verify(schedulerDriver).reconcileTasks(Collections.emptyList());
     }
     
     @Test
diff --git a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/fixture/master/MesosMasterServerMock.java b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/fixture/master/MesosMasterServerMock.java
index 04de3da..c9a53fc 100755
--- a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/fixture/master/MesosMasterServerMock.java
+++ b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/fixture/master/MesosMasterServerMock.java
@@ -35,7 +35,7 @@ public class MesosMasterServerMock {
     @ResponseBody
     @GetMapping(value = "/state", produces = MediaType.APPLICATION_JSON_VALUE)
     public String state() {
-        return "{\"version\":\"1.1.0\",\"build_date\":\"2017-02-27 10:51:31\",\"build_time\":1488163891.0,\"build_user\":\"gaohongtao\",\"start_time\""
+        return "{\"version\":\"1.1.0\",\"build_date\":\"2017-02-27 10:51:31\",\"build_time\":1488163891.0,\"build_user\":\"user\",\"start_time\""
                 + ":1488179758.62289,\"elected_time\":1488179758.69795,\"id\":\"d8701508-41b7-471e-9b32-61cf824a660d\",\"pid\":\"master@127.0.0.1:9050\",\"hostname\":\"127.0.0.1\","
                 + "\"activated_slaves\":1.0,\"deactivated_slaves\":0.0,\"leader\":\"master@127.0.0.1:9050\",\"leader_info\":{\"id\":\"d8701508-41b7-471e-9b32-61cf824a660d\","
                 + "\"pid\":\"master@127.0.0.1:9050\",\"port\":9050,\"hostname\":\"127.0.0.1\"},\"flags\":{\"agent_ping_timeout\":\"15secs\",\"agent_reregister_timeout\":\"10mins\","
@@ -46,7 +46,7 @@ public class MesosMasterServerMock {
                 + "\"max_completed_frameworks\":\"50\",\"max_completed_tasks_per_framework\":\"1000\",\"port\":\"9050\",\"quiet\":\"false\",\"quorum\":\"1\",\"recovery_agent_removal_limit\":\"100%\","
                 + "\"registry\":\"replicated_log\",\"registry_fetch_timeout\":\"1mins\",\"registry_gc_interval\":\"15mins\",\"registry_max_agent_age\":\"2weeks\",\"registry_max_agent_count\""
                 + ":\"102400\",\"registry_store_timeout\":\"20secs\",\"registry_strict\":\"false\",\"root_submissions\":\"true\",\"user_sorter\":\"drf\",\"version\":\"false\",\"webui_dir\":\"\\/home"
-                + "\\/gaohongtao\\/mesos\\/mesos-1.1.0\\/build\\/..\\/src\\/webui\",\"work_dir\":\"\\/home\\/gaohongtao\\/mesos\\/work-1.1.0\",\"zk\":\"zk:\\/\\/localhost:4181,\\/mesos\","
+                + "\\/user\\/mesos\\/mesos-1.1.0\\/build\\/..\\/src\\/webui\",\"work_dir\":\"\\/home\\/user\\/mesos\\/work-1.1.0\",\"zk\":\"zk:\\/\\/localhost:4181,\\/mesos\","
                 + "\"zk_session_timeout\":\"10secs\"},\"slaves\":[{\"id\":\"d8701508-41b7-471e-9b32-61cf824a660d-S0\",\"pid\":\"slave(1)@127.0.0.1:9051\",\"hostname\":\"127.0.0.1\","
                 + "\"registered_time\":1488179768.08728,\"resources\":{\"disk\":416050.0,\"mem\":6883.0,\"gpus\":0.0,\"cpus\":4.0,\"ports\":\"[31000-32000]\"},\"used_resources\":"
                 + "{\"disk\":0.0,\"mem\":512.0,\"gpus\":0.0,\"cpus\":2.5},\"offered_resources\":{\"disk\":416050.0,\"mem\":6371.0,\"gpus\":0.0,\"cpus\":1.5,\"ports\":\"[31000-32000]\"},"
@@ -54,7 +54,7 @@ public class MesosMasterServerMock {
                 + "\"version\":\"1.1.0\"}],\"frameworks\":[{\"id\":\"d8701508-41b7-471e-9b32-61cf824a660d-0000\",\"name\":\"ElasticJob-Cloud\",\"pid\":"
                 + "\"scheduler-da326b36-34ed-4b6e-ac40-0c936f76be4e@127.0.0.1:53639\",\"used_resources\":{\"disk\":0.0,\"mem\":512.0,\"gpus\":0.0,\"cpus\":2.5},\"offered_resources\""
                 + ":{\"disk\":416050.0,\"mem\":6371.0,\"gpus\":0.0,\"cpus\":1.5,\"ports\":\"[31000-32000]\"},\"capabilities\":[],\"hostname\":\"127.0.0.1\",\"webui_url\":\"http:\\/"
-                + "\\/127.0.0.1:8899\",\"active\":true,\"user\":\"gaohongtao\",\"failover_timeout\":604800.0,\"checkpoint\":false,\"role\":\"*\",\"registered_time\":1488179830.94584,"
+                + "\\/127.0.0.1:8899\",\"active\":true,\"user\":\"user\",\"failover_timeout\":604800.0,\"checkpoint\":false,\"role\":\"*\",\"registered_time\":1488179830.94584,"
                 + "\"unregistered_time\":0.0,\"resources\":{\"disk\":416050.0,\"mem\":6883.0,\"gpus\":0.0,\"cpus\":4.0,\"ports\":\"[31000-32000]\"},\"tasks\":[{\"id\":"
                 + "\"cpu_job_1@-@2@-@READY@-@d8701508-41b7-471e-9b32-61cf824a660d-S0@-@a03017a7-f520-483b-afce-2a5685d0ca2e\",\"name\":\"cpu_job_1@-@2@-@READY@-@d8701508-41b7-471e-"
                 + "9b32-61cf824a660d-S0\",\"framework_id\":\"d8701508-41b7-471e-9b32-61cf824a660d-0000\",\"executor_id\":\"foo_app@-@d8701508-41b7-471e-9b32-61cf824a660d-S0\",\"slave_id\":"
diff --git a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/fixture/slave/MesosSlaveServerMock.java b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/fixture/slave/MesosSlaveServerMock.java
index 04a47b1..9de423d 100755
--- a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/fixture/slave/MesosSlaveServerMock.java
+++ b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/fixture/slave/MesosSlaveServerMock.java
@@ -54,18 +54,18 @@ public class MesosSlaveServerMock {
                 + "frameworks_home\":\"\",\"gc_delay\":\"1weeks\",\"gc_disk_headroom\":\"0.1\",\"hadoop_home\":\"\",\"help\":\"false\",\"ho"
                 + "stname_lookup\":\"true\",\"http_authenticators\":\"basic\",\"http_command_executor\":\"false\",\"image_provision"
                 + "er_backend\":\"copy\",\"initialize_driver_logging\":\"true\",\"ip\":\"127.0.0.1\",\"isolation\":\"cgroups\\/cpu"
-                + ",cgroups\\/mem\",\"launcher\":\"linux\",\"launcher_dir\":\"\\/home\\/gaohongtao\\/mesos\\/mesos-1.1.0\\/build\\/src"
+                + ",cgroups\\/mem\",\"launcher\":\"linux\",\"launcher_dir\":\"\\/home\\/user\\/mesos\\/mesos-1.1.0\\/build\\/src"
                 + "\",\"logbufsecs\":\"0\",\"logging_level\":\"INFO\",\"master\":\"zk:\\/\\/localhost:4181,\\/mesos\",\"max_completed_ex"
                 + "ecutors_per_framework\":\"150\",\"oversubscribed_resources_interval\":\"15secs\",\"perf_duration\":\"10secs\",\""
                 + "perf_interval\":\"1mins\",\"port\":\"9051\",\"qos_correction_interval_min\":\"0ns\",\"quiet\":\"false\",\"recover\":\""
                 + "reconnect\",\"recovery_timeout\":\"15mins\",\"registration_backoff_factor\":\"1secs\",\"revocable_cpu_low_prio"
                 + "rity\":\"true\",\"runtime_dir\":\"\\/var\\/run\\/mesos\",\"sandbox_directory\":\"\\/mnt\\/mesos\\/sandbox\",\"strict\":"
                 + "\"true\",\"switch_user\":\"true\",\"systemd_enable_support\":\"true\",\"systemd_runtime_directory\":\"\\/run\\/syst"
-                + "emd\\/system\",\"version\":\"false\",\"work_dir\":\"\\/home\\/gaohongtao\\/mesos\\/work-1.1.0\"},\"frameworks\":[{\"i"
-                + "d\":\"d8701508-41b7-471e-9b32-61cf824a660d-0000\",\"name\":\"ElasticJob-Cloud\",\"user\":\"gaohongtao\",\"failo"
+                + "emd\\/system\",\"version\":\"false\",\"work_dir\":\"\\/home\\/user\\/mesos\\/work-1.1.0\"},\"frameworks\":[{\"i"
+                + "d\":\"d8701508-41b7-471e-9b32-61cf824a660d-0000\",\"name\":\"ElasticJob-Cloud\",\"user\":\"user\",\"failo"
                 + "ver_timeout\":604800.0,\"checkpoint\":false,\"role\":\"*\",\"hostname\":\"127.0.0.1\",\"executors\":[{\"id\":\""
                 + "foo_app@-@d8701508-41b7-471e-9b32-61cf824a660d-S0\",\"name\":\"\",\"source\":\"\",\"container\":\"53fb4af7-aee2-"
-                + "44f6-9e47-6f418d9f27e1\",\"directory\":\"\\/home\\/gaohongtao\\/mesos\\/work-1.1.0\\/slaves\\/d8701508-41b7-47"
+                + "44f6-9e47-6f418d9f27e1\",\"directory\":\"\\/home\\/user\\/mesos\\/work-1.1.0\\/slaves\\/d8701508-41b7-47"
                 + "1e-9b32-61cf824a660d-S0\\/frameworks\\/d8701508-41b7-471e-9b32-61cf824a660d-0000\\/executors\\/foo_app@-"
                 + "@d8701508-41b7-471e-9b32-61cf824a660d-S0\\/runs\\/53fb4af7-aee2-44f6-9e47-6f418d9f27e1\",\"resources\":{\""
                 + "disk\":0.0,\"mem\":512.0,\"gpus\":0.0,\"cpus\":2.5},\"tasks\":[{\"id\":\"cpu_job_1@-@1@-@READY@-@d8701508-41b7-4"
diff --git a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/producer/ProducerJobTest.java b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/producer/ProducerJobTest.java
index 7470ba6..f890ffd 100755
--- a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/producer/ProducerJobTest.java
+++ b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/producer/ProducerJobTest.java
@@ -25,7 +25,6 @@ import org.mockito.Mock;
 import org.mockito.junit.MockitoJUnitRunner;
 import org.quartz.JobBuilder;
 import org.quartz.JobExecutionContext;
-import org.quartz.JobExecutionException;
 import org.quartz.JobKey;
 
 import static org.mockito.Mockito.verify;
@@ -40,7 +39,7 @@ public final class ProducerJobTest {
     @Mock
     private ReadyService readyService;
     
-    private TransientProducerRepository repository = new TransientProducerRepository();
+    private final TransientProducerRepository repository = new TransientProducerRepository();
     
     private TransientProducerScheduler.ProducerJob producerJob;
     
@@ -52,7 +51,7 @@ public final class ProducerJobTest {
     }
     
     @Test
-    public void assertExecute() throws JobExecutionException {
+    public void assertExecute() {
         when(jobExecutionContext.getJobDetail()).thenReturn(JobBuilder.newJob(TransientProducerScheduler.ProducerJob.class).withIdentity("0/30 * * * * ?").build());
         repository.put(JobKey.jobKey("0/30 * * * * ?"), "test_job");
         producerJob.execute(jobExecutionContext);
diff --git a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/producer/TransientProducerRepositoryTest.java b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/producer/TransientProducerRepositoryTest.java
index 4c04201..85737b5 100755
--- a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/producer/TransientProducerRepositoryTest.java
+++ b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/producer/TransientProducerRepositoryTest.java
@@ -20,7 +20,6 @@ package org.apache.shardingsphere.elasticjob.cloud.scheduler.producer;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.junit.MockitoJUnitRunner;
-import org.quartz.JobExecutionException;
 import org.quartz.JobKey;
 
 import static org.hamcrest.CoreMatchers.is;
@@ -35,17 +34,17 @@ public final class TransientProducerRepositoryTest {
     
     private final String jobName = "test_job";
     
-    private TransientProducerRepository transientProducerRepository = new TransientProducerRepository();
+    private final TransientProducerRepository transientProducerRepository = new TransientProducerRepository();
     
     @Test
-    public void assertPutJobKey() throws JobExecutionException {
+    public void assertPutJobKey() {
         transientProducerRepository.put(jobKey, jobName);
         assertThat(transientProducerRepository.get(jobKey).get(0), is(jobName));
         transientProducerRepository.remove(jobName);
     }
     
     @Test
-    public void assertPutJobWithChangedCron() throws JobExecutionException {
+    public void assertPutJobWithChangedCron() {
         transientProducerRepository.put(jobKey, jobName);
         JobKey newJobKey = JobKey.jobKey("0/15 * * * * ?");
         transientProducerRepository.put(newJobKey, jobName);
@@ -55,7 +54,7 @@ public final class TransientProducerRepositoryTest {
     }
     
     @Test
-    public void assertPutMoreJobWithChangedCron() throws JobExecutionException {
+    public void assertPutMoreJobWithChangedCron() {
         String jobName2 = "other_test_job";
         transientProducerRepository.put(jobKey, jobName);
         transientProducerRepository.put(jobKey, jobName2);
@@ -68,7 +67,7 @@ public final class TransientProducerRepositoryTest {
     }
     
     @Test
-    public void assertRemoveJobKey() throws JobExecutionException {
+    public void assertRemoveJobKey() {
         transientProducerRepository.put(jobKey, jobName);
         transientProducerRepository.remove(jobName);
         assertTrue(transientProducerRepository.get(jobKey).isEmpty());
diff --git a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/state/failover/FailoverServiceTest.java b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/state/failover/FailoverServiceTest.java
index eef4525..f57da41 100755
--- a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/state/failover/FailoverServiceTest.java
+++ b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/state/failover/FailoverServiceTest.java
@@ -71,7 +71,7 @@ public final class FailoverServiceTest {
     
     @Test
     public void assertAddWhenJobIsOverQueueSize() {
-        when(regCenter.getNumChildren(FailoverNode.ROOT)).thenReturn(BootstrapEnvironment.getInstance().getFrameworkConfiguration().getJobStateQueueSize() + 1);
+        when(regCenter.getNumChildren(FailoverNode.ROOT)).thenReturn(BootstrapEnvironment.getINSTANCE().getFrameworkConfiguration().getJobStateQueueSize() + 1);
         TaskNode taskNode = TaskNode.builder().type(ExecutionType.FAILOVER).build();
         failoverService.add(TaskContext.from(taskNode.getTaskNodeValue()));
         verify(regCenter, times(0)).persist("/state/failover/test_job/" + taskNode.getTaskNodePath(), taskNode.getTaskNodeValue());
diff --git a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/state/ready/ReadyServiceTest.java b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/state/ready/ReadyServiceTest.java
index 3fb898f..6621a7d 100755
--- a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/state/ready/ReadyServiceTest.java
+++ b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/state/ready/ReadyServiceTest.java
@@ -108,14 +108,14 @@ public final class ReadyServiceTest {
     
     @Test
     public void assertAddTransientWithOverJobQueueSize() {
-        when(regCenter.getNumChildren(ReadyNode.ROOT)).thenReturn(BootstrapEnvironment.getInstance().getFrameworkConfiguration().getJobStateQueueSize() + 1);
+        when(regCenter.getNumChildren(ReadyNode.ROOT)).thenReturn(BootstrapEnvironment.getINSTANCE().getFrameworkConfiguration().getJobStateQueueSize() + 1);
         readyService.addTransient("test_job");
         verify(regCenter, times(0)).persist("/state/ready/test_job", "1");
     }
     
     @Test
     public void assertAddDaemonWithOverJobQueueSize() {
-        when(regCenter.getNumChildren(ReadyNode.ROOT)).thenReturn(BootstrapEnvironment.getInstance().getFrameworkConfiguration().getJobStateQueueSize() + 1);
+        when(regCenter.getNumChildren(ReadyNode.ROOT)).thenReturn(BootstrapEnvironment.getINSTANCE().getFrameworkConfiguration().getJobStateQueueSize() + 1);
         readyService.addDaemon("test_job");
         verify(regCenter, times(0)).persist("/state/ready/test_job", "1");
     }
diff --git a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/statistics/job/TaskResultStatisticJobTest.java b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/statistics/job/TaskResultStatisticJobTest.java
index 3a391d5..cc07ad7 100755
--- a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/statistics/job/TaskResultStatisticJobTest.java
+++ b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/statistics/job/TaskResultStatisticJobTest.java
@@ -41,7 +41,7 @@ import static org.mockito.Mockito.when;
 @RunWith(MockitoJUnitRunner.class)
 public class TaskResultStatisticJobTest {
     
-    private StatisticInterval statisticInterval = StatisticInterval.MINUTE;
+    private final StatisticInterval statisticInterval = StatisticInterval.MINUTE;
     
     private TaskResultMetaData sharedData;
     
diff --git a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/statistics/job/TestStatisticJob.java b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/statistics/job/TestStatisticJob.java
index 75e04ef..b25d7cb 100755
--- a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/statistics/job/TestStatisticJob.java
+++ b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/statistics/job/TestStatisticJob.java
@@ -17,18 +17,17 @@
 
 package org.apache.shardingsphere.elasticjob.cloud.scheduler.statistics.job;
 
-import java.util.HashMap;
-import java.util.Map;
-
 import org.apache.shardingsphere.elasticjob.cloud.statistics.StatisticInterval;
 import org.quartz.CronScheduleBuilder;
 import org.quartz.JobBuilder;
 import org.quartz.JobDetail;
 import org.quartz.JobExecutionContext;
-import org.quartz.JobExecutionException;
 import org.quartz.Trigger;
 import org.quartz.TriggerBuilder;
 
+import java.util.HashMap;
+import java.util.Map;
+
 public class TestStatisticJob extends AbstractStatisticJob {
     
     @Override
@@ -52,7 +51,7 @@ public class TestStatisticJob extends AbstractStatisticJob {
     }
     
     @Override
-    public void execute(final JobExecutionContext context) throws JobExecutionException {
+    public void execute(final JobExecutionContext context) {
         System.out.println("do something...");
     }
 }
diff --git a/elasticjob-executor/elasticjob-executor-type/elasticjob-dataflow-executor/src/test/java/org/apache/shardingsphere/elasticjob/dataflow/job/BatchDataflowJob.java b/elasticjob-executor/elasticjob-executor-type/elasticjob-dataflow-executor/src/test/java/org/apache/shardingsphere/elasticjob/dataflow/job/BatchDataflowJob.java
deleted file mode 100644
index be6ca88..0000000
--- a/elasticjob-executor/elasticjob-executor-type/elasticjob-dataflow-executor/src/test/java/org/apache/shardingsphere/elasticjob/dataflow/job/BatchDataflowJob.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * 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 org.apache.shardingsphere.elasticjob.dataflow.job;
-
-import org.apache.shardingsphere.elasticjob.api.ShardingContext;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.CopyOnWriteArraySet;
-
-public final class BatchDataflowJob implements DataflowJob<String> {
-    
-    private final Set<String> processedData = new CopyOnWriteArraySet<>();
-    
-    private final List<String> result = Arrays.asList("data0", "data1", "data2", "data3", "data4", "data5", "data6", "data7", "data8", "data9");
-    
-    @Override
-    public List<String> fetchData(final ShardingContext shardingContext) {
-        return result;
-    }
-    
-    @Override
-    public void processData(final ShardingContext shardingContext, final List<String> data) {
-        processedData.addAll(data);
-    }
-    
-    /**
-     * Is completed.
-     *
-     * @return true if is completed
-     */
-    public boolean isCompleted() {
-        return result.size() == processedData.size();
-    }
-}
diff --git a/elasticjob-executor/elasticjob-executor-type/elasticjob-dataflow-executor/src/test/java/org/apache/shardingsphere/elasticjob/dataflow/job/StreamingDataflowJob.java b/elasticjob-executor/elasticjob-executor-type/elasticjob-dataflow-executor/src/test/java/org/apache/shardingsphere/elasticjob/dataflow/job/StreamingDataflowJob.java
deleted file mode 100644
index 16efc82..0000000
--- a/elasticjob-executor/elasticjob-executor-type/elasticjob-dataflow-executor/src/test/java/org/apache/shardingsphere/elasticjob/dataflow/job/StreamingDataflowJob.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * 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 org.apache.shardingsphere.elasticjob.dataflow.job;
-
-import org.apache.shardingsphere.elasticjob.api.ShardingContext;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.CopyOnWriteArraySet;
-
-public final class StreamingDataflowJob implements DataflowJob<String> {
-    
-    private final Set<String> processedData = new CopyOnWriteArraySet<>();
-    
-    private final List<String> result = Arrays.asList("data0", "data1", "data2", "data3", "data4", "data5", "data6", "data7", "data8", "data9");
-    
-    @Override
-    public List<String> fetchData(final ShardingContext shardingContext) {
-        return processedData.isEmpty() ? result : null;
-    }
-    
-    @Override
-    public void processData(final ShardingContext shardingContext, final List<String> data) {
-        processedData.addAll(data);
-    }
-    
-    /**
-     * Is completed.
-     *
-     * @return true if is completed
-     */
-    public boolean isCompleted() {
-        return result.size() == processedData.size();
-    }
-}
diff --git a/elasticjob-infra/elasticjob-infra-common/src/test/java/org/apache/shardingsphere/elasticjob/infra/concurrent/ElasticJobExecutorServiceTest.java b/elasticjob-infra/elasticjob-infra-common/src/test/java/org/apache/shardingsphere/elasticjob/infra/concurrent/ElasticJobExecutorServiceTest.java
index 1ed4bd4..c7ffe38 100644
--- a/elasticjob-infra/elasticjob-infra-common/src/test/java/org/apache/shardingsphere/elasticjob/infra/concurrent/ElasticJobExecutorServiceTest.java
+++ b/elasticjob-infra/elasticjob-infra-common/src/test/java/org/apache/shardingsphere/elasticjob/infra/concurrent/ElasticJobExecutorServiceTest.java
@@ -50,7 +50,7 @@ public final class ElasticJobExecutorServiceTest {
         assertTrue(executorServiceObject.isShutdown());
     }
     
-    class FooTask implements Runnable {
+    static class FooTask implements Runnable {
         
         @Override
         public void run() {
diff --git a/elasticjob-infra/elasticjob-infra-common/src/test/java/org/apache/shardingsphere/elasticjob/infra/context/fixture/TaskNode.java b/elasticjob-infra/elasticjob-infra-common/src/test/java/org/apache/shardingsphere/elasticjob/infra/context/fixture/TaskNode.java
index c3c8672..8e9a87d 100644
--- a/elasticjob-infra/elasticjob-infra-common/src/test/java/org/apache/shardingsphere/elasticjob/infra/context/fixture/TaskNode.java
+++ b/elasticjob-infra/elasticjob-infra-common/src/test/java/org/apache/shardingsphere/elasticjob/infra/context/fixture/TaskNode.java
@@ -23,15 +23,15 @@ import org.apache.shardingsphere.elasticjob.infra.context.ExecutionType;
 @Builder
 public final class TaskNode {
     
-    private String jobName;
+    private final String jobName;
     
-    private int shardingItem;
+    private final int shardingItem;
     
-    private ExecutionType type;
+    private final ExecutionType type;
     
-    private String slaveId;
+    private final String slaveId;
     
-    private String uuid;
+    private final String uuid;
     
     /**
      * Get the value of task node.
diff --git a/elasticjob-infra/elasticjob-infra-common/src/test/java/org/apache/shardingsphere/elasticjob/infra/env/TimeServiceTest.java b/elasticjob-infra/elasticjob-infra-common/src/test/java/org/apache/shardingsphere/elasticjob/infra/env/TimeServiceTest.java
index e7e13bd..8f133a4 100644
--- a/elasticjob-infra/elasticjob-infra-common/src/test/java/org/apache/shardingsphere/elasticjob/infra/env/TimeServiceTest.java
+++ b/elasticjob-infra/elasticjob-infra-common/src/test/java/org/apache/shardingsphere/elasticjob/infra/env/TimeServiceTest.java
@@ -23,7 +23,7 @@ import static org.junit.Assert.assertTrue;
 
 public class TimeServiceTest {
     
-    private TimeService timeService = new TimeService();
+    private final TimeService timeService = new TimeService();
     
     @Test
     public void assertGetCurrentMillis() {
diff --git a/elasticjob-infra/elasticjob-infra-common/src/test/java/org/apache/shardingsphere/elasticjob/infra/handler/sharding/impl/OdevitySortByNameJobShardingStrategyTest.java b/elasticjob-infra/elasticjob-infra-common/src/test/java/org/apache/shardingsphere/elasticjob/infra/handler/sharding/impl/OdevitySortByNameJobShardingStrategyTest.java
index f7a2c8e..cc4c055 100644
--- a/elasticjob-infra/elasticjob-infra-common/src/test/java/org/apache/shardingsphere/elasticjob/infra/handler/sharding/impl/OdevitySortByNameJobShardingStrategyTest.java
+++ b/elasticjob-infra/elasticjob-infra-common/src/test/java/org/apache/shardingsphere/elasticjob/infra/handler/sharding/impl/OdevitySortByNameJobShardingStrategyTest.java
@@ -31,7 +31,7 @@ import static org.junit.Assert.assertThat;
 
 public final class OdevitySortByNameJobShardingStrategyTest {
     
-    private OdevitySortByNameJobShardingStrategy odevitySortByNameJobShardingStrategy = new OdevitySortByNameJobShardingStrategy();
+    private final OdevitySortByNameJobShardingStrategy odevitySortByNameJobShardingStrategy = new OdevitySortByNameJobShardingStrategy();
     
     @Test
     public void assertShardingByAsc() {
diff --git a/elasticjob-infra/elasticjob-infra-common/src/test/java/org/apache/shardingsphere/elasticjob/infra/handler/sharding/impl/RotateServerByNameJobShardingStrategyTest.java b/elasticjob-infra/elasticjob-infra-common/src/test/java/org/apache/shardingsphere/elasticjob/infra/handler/sharding/impl/RotateServerByNameJobShardingStrategyTest.java
index 8e14bd1..8dbae74 100644
--- a/elasticjob-infra/elasticjob-infra-common/src/test/java/org/apache/shardingsphere/elasticjob/infra/handler/sharding/impl/RotateServerByNameJobShardingStrategyTest.java
+++ b/elasticjob-infra/elasticjob-infra-common/src/test/java/org/apache/shardingsphere/elasticjob/infra/handler/sharding/impl/RotateServerByNameJobShardingStrategyTest.java
@@ -31,7 +31,7 @@ import static org.junit.Assert.assertThat;
 
 public final class RotateServerByNameJobShardingStrategyTest {
     
-    private RoundRobinByNameJobShardingStrategy rotateServerByNameJobShardingStrategy = new RoundRobinByNameJobShardingStrategy();
+    private final RoundRobinByNameJobShardingStrategy rotateServerByNameJobShardingStrategy = new RoundRobinByNameJobShardingStrategy();
     
     @Test
     public void assertSharding1() {
diff --git a/elasticjob-infra/elasticjob-registry-center/src/main/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperRegistryCenter.java b/elasticjob-infra/elasticjob-registry-center/src/main/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperRegistryCenter.java
index dfd611a..2fbaad8 100644
--- a/elasticjob-infra/elasticjob-registry-center/src/main/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperRegistryCenter.java
+++ b/elasticjob-infra/elasticjob-registry-center/src/main/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperRegistryCenter.java
@@ -55,7 +55,7 @@ import java.util.concurrent.TimeUnit;
 public final class ZookeeperRegistryCenter implements CoordinatorRegistryCenter {
     
     @Getter(AccessLevel.PROTECTED)
-    private ZookeeperConfiguration zkConfig;
+    private final ZookeeperConfiguration zkConfig;
     
     private final Map<String, CuratorCache> caches = new ConcurrentHashMap<>();
     
diff --git a/elasticjob-infra/elasticjob-tracing/elasticjob-tracing-rdb/src/main/java/org/apache/shardingsphere/elasticjob/tracing/rdb/storage/RDBJobEventStorage.java b/elasticjob-infra/elasticjob-tracing/elasticjob-tracing-rdb/src/main/java/org/apache/shardingsphere/elasticjob/tracing/rdb/storage/RDBJobEventStorage.java
index d521745..0aedf54 100644
--- a/elasticjob-infra/elasticjob-tracing/elasticjob-tracing-rdb/src/main/java/org/apache/shardingsphere/elasticjob/tracing/rdb/storage/RDBJobEventStorage.java
+++ b/elasticjob-infra/elasticjob-tracing/elasticjob-tracing-rdb/src/main/java/org/apache/shardingsphere/elasticjob/tracing/rdb/storage/RDBJobEventStorage.java
@@ -58,7 +58,7 @@ public final class RDBJobEventStorage {
     
     private final DataSource dataSource;
     
-    private DatabaseType databaseType;
+    private final DatabaseType databaseType;
     
     private final RDBStorageSQLMapper sqlMapper;
     
diff --git a/elasticjob-lite/elasticjob-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/api/listener/AbstractDistributeOnceElasticJobListener.java b/elasticjob-lite/elasticjob-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/api/listener/AbstractDistributeOnceElasticJobListener.java
index d5c95bc..12e5345 100644
--- a/elasticjob-lite/elasticjob-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/api/listener/AbstractDistributeOnceElasticJobListener.java
+++ b/elasticjob-lite/elasticjob-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/api/listener/AbstractDistributeOnceElasticJobListener.java
@@ -17,14 +17,15 @@
 
 package org.apache.shardingsphere.elasticjob.lite.api.listener;
 
-import java.util.Set;
 import lombok.Setter;
 import org.apache.shardingsphere.elasticjob.api.listener.ElasticJobListener;
-import org.apache.shardingsphere.elasticjob.infra.exception.JobSystemException;
 import org.apache.shardingsphere.elasticjob.api.listener.ShardingContexts;
-import org.apache.shardingsphere.elasticjob.lite.internal.guarantee.GuaranteeService;
 import org.apache.shardingsphere.elasticjob.infra.concurrent.BlockUtils;
 import org.apache.shardingsphere.elasticjob.infra.env.TimeService;
+import org.apache.shardingsphere.elasticjob.infra.exception.JobSystemException;
+import org.apache.shardingsphere.elasticjob.lite.internal.guarantee.GuaranteeService;
+
+import java.util.Set;
 
 /**
  * Distributed once elasticjob listener.
@@ -42,7 +43,7 @@ public abstract class AbstractDistributeOnceElasticJobListener implements Elasti
     @Setter
     private GuaranteeService guaranteeService;
     
-    private TimeService timeService = new TimeService();
+    private final TimeService timeService = new TimeService();
     
     public AbstractDistributeOnceElasticJobListener(final long startedTimeoutMilliseconds, final long completedTimeoutMilliseconds) {
         this.startedTimeoutMilliseconds = startedTimeoutMilliseconds <= 0L ? Long.MAX_VALUE : startedTimeoutMilliseconds;
diff --git a/elasticjob-lite/elasticjob-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/failover/FailoverListenerManager.java b/elasticjob-lite/elasticjob-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/failover/FailoverListenerManager.java
index b669c9e..2eedab3 100644
--- a/elasticjob-lite/elasticjob-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/failover/FailoverListenerManager.java
+++ b/elasticjob-lite/elasticjob-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/failover/FailoverListenerManager.java
@@ -17,11 +17,10 @@
 
 package org.apache.shardingsphere.elasticjob.lite.internal.failover;
 
-import org.apache.shardingsphere.elasticjob.api.JobConfiguration;
+import org.apache.shardingsphere.elasticjob.infra.pojo.JobConfigurationPOJO;
 import org.apache.shardingsphere.elasticjob.infra.yaml.YamlEngine;
 import org.apache.shardingsphere.elasticjob.lite.internal.config.ConfigurationNode;
 import org.apache.shardingsphere.elasticjob.lite.internal.config.ConfigurationService;
-import org.apache.shardingsphere.elasticjob.infra.pojo.JobConfigurationPOJO;
 import org.apache.shardingsphere.elasticjob.lite.internal.instance.InstanceNode;
 import org.apache.shardingsphere.elasticjob.lite.internal.listener.AbstractJobListener;
 import org.apache.shardingsphere.elasticjob.lite.internal.listener.AbstractListenerManager;
@@ -65,8 +64,7 @@ public final class FailoverListenerManager extends AbstractListenerManager {
     }
     
     private boolean isFailoverEnabled() {
-        JobConfiguration jobConfig = configService.load(true);
-        return null != jobConfig && jobConfig.isFailover();
+        return configService.load(true).isFailover();
     }
     
     class JobCrashedJobListener extends AbstractJobListener {
diff --git a/elasticjob-lite/elasticjob-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/reconcile/ReconcileService.java b/elasticjob-lite/elasticjob-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/reconcile/ReconcileService.java
index 37bdb87..6069c2f 100644
--- a/elasticjob-lite/elasticjob-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/reconcile/ReconcileService.java
+++ b/elasticjob-lite/elasticjob-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/reconcile/ReconcileService.java
@@ -19,7 +19,6 @@ package org.apache.shardingsphere.elasticjob.lite.internal.reconcile;
 
 import com.google.common.util.concurrent.AbstractScheduledService;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.shardingsphere.elasticjob.api.JobConfiguration;
 import org.apache.shardingsphere.elasticjob.lite.internal.config.ConfigurationService;
 import org.apache.shardingsphere.elasticjob.lite.internal.election.LeaderService;
 import org.apache.shardingsphere.elasticjob.lite.internal.sharding.ShardingService;
@@ -50,8 +49,7 @@ public final class ReconcileService extends AbstractScheduledService {
     
     @Override
     protected void runOneIteration() {
-        JobConfiguration config = configService.load(true);
-        int reconcileIntervalMinutes = null == config ? -1 : config.getReconcileIntervalMinutes();
+        int reconcileIntervalMinutes = configService.load(true).getReconcileIntervalMinutes();
         if (reconcileIntervalMinutes > 0 && (System.currentTimeMillis() - lastReconcileTime >= reconcileIntervalMinutes * 60 * 1000)) {
             lastReconcileTime = System.currentTimeMillis();
             if (leaderService.isLeaderUntilBlock() && !shardingService.isNeedSharding() && shardingService.hasShardingInfoInOfflineServers()) {
diff --git a/elasticjob-lite/elasticjob-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/schedule/JobRegistry.java b/elasticjob-lite/elasticjob-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/schedule/JobRegistry.java
index 86cfe1b..c9e01f2 100644
--- a/elasticjob-lite/elasticjob-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/schedule/JobRegistry.java
+++ b/elasticjob-lite/elasticjob-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/schedule/JobRegistry.java
@@ -33,15 +33,15 @@ public final class JobRegistry {
     
     private static volatile JobRegistry instance;
     
-    private Map<String, JobScheduleController> schedulerMap = new ConcurrentHashMap<>();
+    private final Map<String, JobScheduleController> schedulerMap = new ConcurrentHashMap<>();
     
-    private Map<String, CoordinatorRegistryCenter> regCenterMap = new ConcurrentHashMap<>();
+    private final Map<String, CoordinatorRegistryCenter> regCenterMap = new ConcurrentHashMap<>();
     
-    private Map<String, JobInstance> jobInstanceMap = new ConcurrentHashMap<>();
+    private final Map<String, JobInstance> jobInstanceMap = new ConcurrentHashMap<>();
     
-    private Map<String, Boolean> jobRunningMap = new ConcurrentHashMap<>();
+    private final Map<String, Boolean> jobRunningMap = new ConcurrentHashMap<>();
     
-    private Map<String, Integer> currentShardingTotalCountMap = new ConcurrentHashMap<>();
+    private final Map<String, Integer> currentShardingTotalCountMap = new ConcurrentHashMap<>();
     
     /**
      * Get instance of job registry.
diff --git a/elasticjob-lite/elasticjob-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/setup/SetUpFacade.java b/elasticjob-lite/elasticjob-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/setup/SetUpFacade.java
index e18e195..175a3dc 100644
--- a/elasticjob-lite/elasticjob-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/setup/SetUpFacade.java
+++ b/elasticjob-lite/elasticjob-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/setup/SetUpFacade.java
@@ -47,7 +47,7 @@ public final class SetUpFacade {
     
     private final ReconcileService reconcileService;
     
-    private ListenerManager listenerManager;
+    private final ListenerManager listenerManager;
     
     public SetUpFacade(final CoordinatorRegistryCenter regCenter, final String jobName, final List<ElasticJobListener> elasticJobListeners) {
         configService = new ConfigurationService(regCenter, jobName);
diff --git a/elasticjob-lite/elasticjob-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/sharding/ExecutionService.java b/elasticjob-lite/elasticjob-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/sharding/ExecutionService.java
index 1487842..de8a711 100644
--- a/elasticjob-lite/elasticjob-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/sharding/ExecutionService.java
+++ b/elasticjob-lite/elasticjob-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/sharding/ExecutionService.java
@@ -101,7 +101,7 @@ public final class ExecutionService {
      */
     public boolean hasRunningItems(final Collection<Integer> items) {
         JobConfiguration jobConfig = configService.load(true);
-        if (null == jobConfig || !jobConfig.isMonitorExecution()) {
+        if (!jobConfig.isMonitorExecution()) {
             return false;
         }
         for (int each : items) {
diff --git a/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/integrate/BaseIntegrateTest.java b/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/integrate/BaseIntegrateTest.java
index e59992c..a00e1fe 100644
--- a/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/integrate/BaseIntegrateTest.java
+++ b/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/integrate/BaseIntegrateTest.java
@@ -41,10 +41,10 @@ import org.junit.BeforeClass;
 @Getter(AccessLevel.PROTECTED)
 public abstract class BaseIntegrateTest {
     
-    private static ZookeeperConfiguration zkConfig = new ZookeeperConfiguration(EmbedTestingServer.getConnectionString(), "zkRegTestCenter");
+    private static final ZookeeperConfiguration ZOOKEEPER_CONFIG = new ZookeeperConfiguration(EmbedTestingServer.getConnectionString(), "zkRegTestCenter");
     
     @Getter(AccessLevel.PROTECTED)
-    private static CoordinatorRegistryCenter regCenter = new ZookeeperRegistryCenter(zkConfig);
+    private static final CoordinatorRegistryCenter REGISTRY_CENTER = new ZookeeperRegistryCenter(ZOOKEEPER_CONFIG);
     
     private final ElasticJob elasticJob;
             
@@ -60,7 +60,7 @@ public abstract class BaseIntegrateTest {
         this.elasticJob = elasticJob;
         jobConfiguration = getJobConfiguration(jobName);
         jobBootstrap = createJobBootstrap(type, elasticJob);
-        leaderService = new LeaderService(regCenter, jobName);
+        leaderService = new LeaderService(REGISTRY_CENTER, jobName);
     }
     
     protected abstract JobConfiguration getJobConfiguration(String jobName);
@@ -68,9 +68,9 @@ public abstract class BaseIntegrateTest {
     private JobBootstrap createJobBootstrap(final TestType type, final ElasticJob elasticJob) {
         switch (type) {
             case SCHEDULE:
-                return new ScheduleJobBootstrap(regCenter, elasticJob, jobConfiguration, new TestElasticJobListener(), new TestDistributeOnceElasticJobListener());
+                return new ScheduleJobBootstrap(REGISTRY_CENTER, elasticJob, jobConfiguration, new TestElasticJobListener(), new TestDistributeOnceElasticJobListener());
             case ONE_OFF:
-                return new OneOffJobBootstrap(regCenter, elasticJob, jobConfiguration, new TestElasticJobListener(), new TestDistributeOnceElasticJobListener());
+                return new OneOffJobBootstrap(REGISTRY_CENTER, elasticJob, jobConfiguration, new TestElasticJobListener(), new TestDistributeOnceElasticJobListener());
             default:
                 throw new RuntimeException(String.format("Cannot support `%s`", type));
         }
@@ -79,8 +79,8 @@ public abstract class BaseIntegrateTest {
     @BeforeClass
     public static void init() {
         EmbedTestingServer.start();
-        zkConfig.setConnectionTimeoutMilliseconds(30000);
-        regCenter.init();
+        ZOOKEEPER_CONFIG.setConnectionTimeoutMilliseconds(30000);
+        REGISTRY_CENTER.init();
     }
     
     @Before
@@ -107,7 +107,7 @@ public abstract class BaseIntegrateTest {
         
         @Override
         public void beforeJobExecuted(final ShardingContexts shardingContexts) {
-            regCenter.persist("/" + jobName + "/listener/every", "test");
+            REGISTRY_CENTER.persist("/" + jobName + "/listener/every", "test");
         }
         
         @Override
@@ -123,7 +123,7 @@ public abstract class BaseIntegrateTest {
         
         @Override
         public void doBeforeJobExecutedAtLastStarted(final ShardingContexts shardingContexts) {
-            regCenter.persist("/" + jobName + "/listener/once", "test");
+            REGISTRY_CENTER.persist("/" + jobName + "/listener/once", "test");
         }
     
         @Override
diff --git a/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/integrate/disable/DisabledJobIntegrateTest.java b/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/integrate/disable/DisabledJobIntegrateTest.java
index b9ffb89..c1a2a35 100644
--- a/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/integrate/disable/DisabledJobIntegrateTest.java
+++ b/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/integrate/disable/DisabledJobIntegrateTest.java
@@ -41,7 +41,7 @@ public abstract class DisabledJobIntegrateTest extends BaseIntegrateTest {
     protected final void assertDisabledRegCenterInfo() {
         assertThat(JobRegistry.getInstance().getCurrentShardingTotalCount(getJobName()), is(3));
         assertThat(JobRegistry.getInstance().getJobInstance(getJobName()).getIp(), is(IpUtils.getIp()));
-        JobConfiguration jobConfig = YamlEngine.unmarshal(getRegCenter().get("/" + getJobName() + "/config"), JobConfigurationPOJO.class).toJobConfiguration();
+        JobConfiguration jobConfig = YamlEngine.unmarshal(getREGISTRY_CENTER().get("/" + getJobName() + "/config"), JobConfigurationPOJO.class).toJobConfiguration();
         assertThat(jobConfig.getShardingTotalCount(), is(3));
         if (getJobBootstrap() instanceof ScheduleJobBootstrap) {
             assertThat(jobConfig.getCron(), is("0/1 * * * * ?"));
@@ -49,8 +49,8 @@ public abstract class DisabledJobIntegrateTest extends BaseIntegrateTest {
             assertNull(jobConfig.getCron());
         }
         assertThat(jobConfig.getShardingItemParameters(), is("0=A,1=B,2=C"));
-        assertThat(getRegCenter().get("/" + getJobName() + "/servers/" + JobRegistry.getInstance().getJobInstance(getJobName()).getIp()), is(ServerStatus.DISABLED.name()));
-        while (null != getRegCenter().get("/" + getJobName() + "/leader/election/instance")) {
+        assertThat(getREGISTRY_CENTER().get("/" + getJobName() + "/servers/" + JobRegistry.getInstance().getJobInstance(getJobName()).getIp()), is(ServerStatus.DISABLED.name()));
+        while (null != getREGISTRY_CENTER().get("/" + getJobName() + "/leader/election/instance")) {
             BlockUtils.waitingShortTime();
         }
     }
diff --git a/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/integrate/disable/ScheduleDisabledJobIntegrateTest.java b/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/integrate/disable/ScheduleDisabledJobIntegrateTest.java
index a15bfe9..e362194 100644
--- a/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/integrate/disable/ScheduleDisabledJobIntegrateTest.java
+++ b/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/integrate/disable/ScheduleDisabledJobIntegrateTest.java
@@ -49,12 +49,12 @@ public final class ScheduleDisabledJobIntegrateTest extends DisabledJobIntegrate
     }
     
     private void setJobEnable() {
-        getRegCenter().persist("/" + getJobName() + "/servers/" + JobRegistry.getInstance().getJobInstance(getJobName()).getIp(), ServerStatus.ENABLED.name());
+        getREGISTRY_CENTER().persist("/" + getJobName() + "/servers/" + JobRegistry.getInstance().getJobInstance(getJobName()).getIp(), ServerStatus.ENABLED.name());
     }
     
     private void assertEnabledRegCenterInfo() {
-        assertTrue(getRegCenter().isExisted("/" + getJobName() + "/instances/" + JobRegistry.getInstance().getJobInstance(getJobName()).getJobInstanceId()));
-        getRegCenter().remove("/" + getJobName() + "/leader/election");
-        assertTrue(getRegCenter().isExisted("/" + getJobName() + "/sharding"));
+        assertTrue(getREGISTRY_CENTER().isExisted("/" + getJobName() + "/instances/" + JobRegistry.getInstance().getJobInstance(getJobName()).getJobInstanceId()));
+        getREGISTRY_CENTER().remove("/" + getJobName() + "/leader/election");
+        assertTrue(getREGISTRY_CENTER().isExisted("/" + getJobName() + "/sharding"));
     }
 }
diff --git a/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/integrate/enable/EnabledJobIntegrateTest.java b/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/integrate/enable/EnabledJobIntegrateTest.java
index 2e8b1d3..4766fe7 100644
--- a/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/integrate/enable/EnabledJobIntegrateTest.java
+++ b/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/integrate/enable/EnabledJobIntegrateTest.java
@@ -43,7 +43,7 @@ public abstract class EnabledJobIntegrateTest extends BaseIntegrateTest {
     public final void assertEnabledRegCenterInfo() {
         assertThat(JobRegistry.getInstance().getCurrentShardingTotalCount(getJobName()), is(3));
         assertThat(JobRegistry.getInstance().getJobInstance(getJobName()).getIp(), is(IpUtils.getIp()));
-        JobConfiguration jobConfig = YamlEngine.unmarshal(getRegCenter().get("/" + getJobName() + "/config"), JobConfigurationPOJO.class).toJobConfiguration();
+        JobConfiguration jobConfig = YamlEngine.unmarshal(getREGISTRY_CENTER().get("/" + getJobName() + "/config"), JobConfigurationPOJO.class).toJobConfiguration();
         assertThat(jobConfig.getShardingTotalCount(), is(3));
         if (getJobBootstrap() instanceof ScheduleJobBootstrap) {
             assertThat(jobConfig.getCron(), is("0/1 * * * * ?"));
@@ -51,10 +51,10 @@ public abstract class EnabledJobIntegrateTest extends BaseIntegrateTest {
             assertNull(jobConfig.getCron());
         }
         assertThat(jobConfig.getShardingItemParameters(), is("0=A,1=B,2=C"));
-        assertThat(getRegCenter().get("/" + getJobName() + "/servers/" + JobRegistry.getInstance().getJobInstance(getJobName()).getIp()), is(ServerStatus.ENABLED.name()));
-        assertThat(getRegCenter().get("/" + getJobName() + "/leader/election/instance"), is(JobRegistry.getInstance().getJobInstance(getJobName()).getJobInstanceId()));
-        assertTrue(getRegCenter().isExisted("/" + getJobName() + "/instances/" + JobRegistry.getInstance().getJobInstance(getJobName()).getJobInstanceId()));
-        getRegCenter().remove("/" + getJobName() + "/leader/election");
+        assertThat(getREGISTRY_CENTER().get("/" + getJobName() + "/servers/" + JobRegistry.getInstance().getJobInstance(getJobName()).getIp()), is(ServerStatus.ENABLED.name()));
+        assertThat(getREGISTRY_CENTER().get("/" + getJobName() + "/leader/election/instance"), is(JobRegistry.getInstance().getJobInstance(getJobName()).getJobInstanceId()));
+        assertTrue(getREGISTRY_CENTER().isExisted("/" + getJobName() + "/instances/" + JobRegistry.getInstance().getJobInstance(getJobName()).getJobInstanceId()));
+        getREGISTRY_CENTER().remove("/" + getJobName() + "/leader/election");
         assertTrue(getLeaderService().isLeaderUntilBlock());
     }
 }
diff --git a/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/integrate/enable/OneOffEnabledJobIntegrateTest.java b/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/integrate/enable/OneOffEnabledJobIntegrateTest.java
index 4059b30..016c254 100644
--- a/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/integrate/enable/OneOffEnabledJobIntegrateTest.java
+++ b/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/integrate/enable/OneOffEnabledJobIntegrateTest.java
@@ -40,6 +40,6 @@ public final class OneOffEnabledJobIntegrateTest extends EnabledJobIntegrateTest
         while (!((DetailedFooJob) getElasticJob()).isCompleted()) {
             BlockUtils.waitingShortTime();
         }
-        assertTrue(getRegCenter().isExisted("/" + getJobName() + "/sharding"));
+        assertTrue(getREGISTRY_CENTER().isExisted("/" + getJobName() + "/sharding"));
     }
 }
diff --git a/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/integrate/enable/ScheduleEnabledJobIntegrateTest.java b/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/integrate/enable/ScheduleEnabledJobIntegrateTest.java
index fd13714..c6c42ca 100644
--- a/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/integrate/enable/ScheduleEnabledJobIntegrateTest.java
+++ b/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/integrate/enable/ScheduleEnabledJobIntegrateTest.java
@@ -40,6 +40,6 @@ public final class ScheduleEnabledJobIntegrateTest extends EnabledJobIntegrateTe
         while (!((DetailedFooJob) getElasticJob()).isCompleted()) {
             BlockUtils.waitingShortTime();
         }
-        assertTrue(getRegCenter().isExisted("/" + getJobName() + "/sharding"));
+        assertTrue(getREGISTRY_CENTER().isExisted("/" + getJobName() + "/sharding"));
     }
 }
diff --git a/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/config/ConfigurationNodeTest.java b/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/config/ConfigurationNodeTest.java
index 19ea9e8..1fa4e06 100644
--- a/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/config/ConfigurationNodeTest.java
+++ b/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/config/ConfigurationNodeTest.java
@@ -23,7 +23,7 @@ import static org.junit.Assert.assertTrue;
 
 public final class ConfigurationNodeTest {
     
-    private ConfigurationNode configurationNode = new ConfigurationNode("test_job");
+    private final ConfigurationNode configurationNode = new ConfigurationNode("test_job");
     
     @Test
     public void assertIsConfigPath() {
diff --git a/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/election/LeaderNodeTest.java b/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/election/LeaderNodeTest.java
index d5bcefc..75bb74b 100644
--- a/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/election/LeaderNodeTest.java
+++ b/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/election/LeaderNodeTest.java
@@ -24,7 +24,7 @@ import static org.junit.Assert.assertTrue;
 
 public final class LeaderNodeTest {
     
-    private LeaderNode leaderNode = new LeaderNode("test_job");
+    private final LeaderNode leaderNode = new LeaderNode("test_job");
     
     @Test
     public void assertIsLeaderInstancePath() {
diff --git a/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/failover/FailoverNodeTest.java b/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/failover/FailoverNodeTest.java
index ba887b7..c215c7b 100644
--- a/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/failover/FailoverNodeTest.java
+++ b/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/failover/FailoverNodeTest.java
@@ -25,7 +25,7 @@ import static org.junit.Assert.assertThat;
 
 public final class FailoverNodeTest {
     
-    private FailoverNode failoverNode = new FailoverNode("test_job");
+    private final FailoverNode failoverNode = new FailoverNode("test_job");
     
     @Test
     public void assertGetItemsNode() {
diff --git a/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/guarantee/GuaranteeNodeTest.java b/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/guarantee/GuaranteeNodeTest.java
index 407d32e..06cbc51 100644
--- a/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/guarantee/GuaranteeNodeTest.java
+++ b/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/guarantee/GuaranteeNodeTest.java
@@ -26,7 +26,7 @@ import static org.junit.Assert.assertTrue;
 
 public final class GuaranteeNodeTest {
     
-    private GuaranteeNode guaranteeNode = new GuaranteeNode("test_job");
+    private final GuaranteeNode guaranteeNode = new GuaranteeNode("test_job");
     
     @Test
     public void assertGetStartedNode() {
diff --git a/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/server/ServerNodeTest.java b/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/server/ServerNodeTest.java
index 3e1d852..f0e07fd 100644
--- a/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/server/ServerNodeTest.java
+++ b/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/server/ServerNodeTest.java
@@ -29,7 +29,7 @@ import static org.junit.Assert.assertTrue;
 
 public final class ServerNodeTest {
     
-    private ServerNode serverNode = new ServerNode("test_job");
+    private final ServerNode serverNode = new ServerNode("test_job");
     
     @BeforeClass
     public static void setUp() {
diff --git a/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/sharding/ShardingNodeTest.java b/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/sharding/ShardingNodeTest.java
index 1abd1a3..8f540f1 100644
--- a/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/sharding/ShardingNodeTest.java
+++ b/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/sharding/ShardingNodeTest.java
@@ -25,7 +25,7 @@ import static org.junit.Assert.assertThat;
 
 public final class ShardingNodeTest {
     
-    private ShardingNode shardingNode = new ShardingNode("test_job");
+    private final ShardingNode shardingNode = new ShardingNode("test_job");
     
     @Test
     public void assertGetRunningNode() {
diff --git a/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/snapshot/BaseSnapshotServiceTest.java b/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/snapshot/BaseSnapshotServiceTest.java
index fae573c..0a8fae5 100644
--- a/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/snapshot/BaseSnapshotServiceTest.java
+++ b/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/snapshot/BaseSnapshotServiceTest.java
@@ -36,12 +36,12 @@ public abstract class BaseSnapshotServiceTest {
     
     static final int DUMP_PORT = 9000;
     
-    private static ZookeeperConfiguration zkConfig = new ZookeeperConfiguration(EmbedTestingServer.getConnectionString(), "zkRegTestCenter");
+    private static final ZookeeperConfiguration ZOOKEEPER_CONFIG = new ZookeeperConfiguration(EmbedTestingServer.getConnectionString(), "zkRegTestCenter");
     
-    private static CoordinatorRegistryCenter regCenter = new ZookeeperRegistryCenter(zkConfig);
+    private static final CoordinatorRegistryCenter REG_CENTER = new ZookeeperRegistryCenter(ZOOKEEPER_CONFIG);
     
     @Getter(value = AccessLevel.PROTECTED)
-    private static SnapshotService snapshotService = new SnapshotService(regCenter, DUMP_PORT);
+    private static SnapshotService snapshotService = new SnapshotService(REG_CENTER, DUMP_PORT);
     
     private final ScheduleJobBootstrap bootstrap;
     
@@ -49,19 +49,19 @@ public abstract class BaseSnapshotServiceTest {
     private final String jobName = System.nanoTime() + "_test_job";
     
     public BaseSnapshotServiceTest(final ElasticJob elasticJob) {
-        bootstrap = new ScheduleJobBootstrap(regCenter, elasticJob, JobConfiguration.newBuilder(jobName, 3).cron("0/1 * * * * ?").overwrite(true).build());
+        bootstrap = new ScheduleJobBootstrap(REG_CENTER, elasticJob, JobConfiguration.newBuilder(jobName, 3).cron("0/1 * * * * ?").overwrite(true).build());
     }
     
     @BeforeClass
     public static void init() {
         EmbedTestingServer.start();
-        zkConfig.setConnectionTimeoutMilliseconds(30000);
-        regCenter.init();
+        ZOOKEEPER_CONFIG.setConnectionTimeoutMilliseconds(30000);
+        REG_CENTER.init();
     }
     
     @Before
     public final void setUp() {
-        regCenter.init();
+        REG_CENTER.init();
         bootstrap.schedule();
     }
     
diff --git a/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/storage/JobNodePathTest.java b/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/storage/JobNodePathTest.java
index 1e7e297..942843d 100644
--- a/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/storage/JobNodePathTest.java
+++ b/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/storage/JobNodePathTest.java
@@ -24,7 +24,7 @@ import static org.junit.Assert.assertThat;
 
 public final class JobNodePathTest {
     
-    private JobNodePath jobNodePath = new JobNodePath("test_job");
+    private final JobNodePath jobNodePath = new JobNodePath("test_job");
     
     @Test
     public void assertGetFullPath() {
diff --git a/elasticjob-lite/elasticjob-lite-lifecycle/src/test/java/org/apache/shardingsphere/elasticjob/lite/lifecycle/fixture/TestDataflowJob.java b/elasticjob-lite/elasticjob-lite-lifecycle/src/test/java/org/apache/shardingsphere/elasticjob/lite/lifecycle/fixture/TestDataflowJob.java
deleted file mode 100644
index 5864423..0000000
--- a/elasticjob-lite/elasticjob-lite-lifecycle/src/test/java/org/apache/shardingsphere/elasticjob/lite/lifecycle/fixture/TestDataflowJob.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * 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 org.apache.shardingsphere.elasticjob.lite.lifecycle.fixture;
-
-import org.apache.shardingsphere.elasticjob.api.ShardingContext;
-import org.apache.shardingsphere.elasticjob.dataflow.job.DataflowJob;
-
-import java.util.List;
-
-public class TestDataflowJob implements DataflowJob {
-    
-    @Override
-    public List fetchData(final ShardingContext shardingContext) {
-        return null;
-    }
-    
-    @Override
-    public void processData(final ShardingContext shardingContext, final List data) {
-    }
-}
diff --git a/elasticjob-lite/elasticjob-lite-lifecycle/src/test/java/org/apache/shardingsphere/elasticjob/lite/lifecycle/fixture/TestSimpleJob.java b/elasticjob-lite/elasticjob-lite-lifecycle/src/test/java/org/apache/shardingsphere/elasticjob/lite/lifecycle/fixture/TestSimpleJob.java
deleted file mode 100644
index 7dbc4d4..0000000
--- a/elasticjob-lite/elasticjob-lite-lifecycle/src/test/java/org/apache/shardingsphere/elasticjob/lite/lifecycle/fixture/TestSimpleJob.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * 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 org.apache.shardingsphere.elasticjob.lite.lifecycle.fixture;
-
-import org.apache.shardingsphere.elasticjob.api.ShardingContext;
-import org.apache.shardingsphere.elasticjob.simple.job.SimpleJob;
-
-public class TestSimpleJob implements SimpleJob {
-    
-    @Override
-    public void execute(final ShardingContext shardingContext) {
-    }
-}
diff --git a/examples/elasticjob-example-jobs/src/main/java/org/apache/shardingsphere/elasticjob/lite/example/fixture/repository/FooRepository.java b/examples/elasticjob-example-jobs/src/main/java/org/apache/shardingsphere/elasticjob/lite/example/fixture/repository/FooRepository.java
index 163e53e..b9c069c 100644
--- a/examples/elasticjob-example-jobs/src/main/java/org/apache/shardingsphere/elasticjob/lite/example/fixture/repository/FooRepository.java
+++ b/examples/elasticjob-example-jobs/src/main/java/org/apache/shardingsphere/elasticjob/lite/example/fixture/repository/FooRepository.java
@@ -28,7 +28,7 @@ import java.util.concurrent.ConcurrentHashMap;
 @Repository
 public class FooRepository {
     
-    private Map<Long, Foo> data = new ConcurrentHashMap<>(300, 1);
+    private final Map<Long, Foo> data = new ConcurrentHashMap<>(300, 1);
     
     public FooRepository() {
         init();
diff --git a/examples/elasticjob-example-jobs/src/main/java/org/apache/shardingsphere/elasticjob/lite/example/job/dataflow/JavaDataflowJob.java b/examples/elasticjob-example-jobs/src/main/java/org/apache/shardingsphere/elasticjob/lite/example/job/dataflow/JavaDataflowJob.java
index 0f06871..b731588 100644
--- a/examples/elasticjob-example-jobs/src/main/java/org/apache/shardingsphere/elasticjob/lite/example/job/dataflow/JavaDataflowJob.java
+++ b/examples/elasticjob-example-jobs/src/main/java/org/apache/shardingsphere/elasticjob/lite/example/job/dataflow/JavaDataflowJob.java
@@ -29,7 +29,7 @@ import java.util.List;
 
 public class JavaDataflowJob implements DataflowJob<Foo> {
     
-    private FooRepository fooRepository = FooRepositoryFactory.getFooRepository();
+    private final FooRepository fooRepository = FooRepositoryFactory.getFooRepository();
     
     @Override
     public List<Foo> fetchData(final ShardingContext shardingContext) {
diff --git a/examples/elasticjob-example-jobs/src/main/java/org/apache/shardingsphere/elasticjob/lite/example/job/simple/JavaSimpleJob.java b/examples/elasticjob-example-jobs/src/main/java/org/apache/shardingsphere/elasticjob/lite/example/job/simple/JavaSimpleJob.java
index 9443ddc..a2cbed4 100644
--- a/examples/elasticjob-example-jobs/src/main/java/org/apache/shardingsphere/elasticjob/lite/example/job/simple/JavaSimpleJob.java
+++ b/examples/elasticjob-example-jobs/src/main/java/org/apache/shardingsphere/elasticjob/lite/example/job/simple/JavaSimpleJob.java
@@ -29,7 +29,7 @@ import java.util.List;
 
 public class JavaSimpleJob implements SimpleJob {
     
-    private FooRepository fooRepository = FooRepositoryFactory.getFooRepository();
+    private final FooRepository fooRepository = FooRepositoryFactory.getFooRepository();
     
     @Override
     public void execute(final ShardingContext shardingContext) {
diff --git a/examples/elasticjob-example-lite-springboot/src/main/java/org/apache/shardingsphere/elasticjob/lite/example/repository/FooRepository.java b/examples/elasticjob-example-lite-springboot/src/main/java/org/apache/shardingsphere/elasticjob/lite/example/repository/FooRepository.java
index 81f7940..b68a04a 100644
--- a/examples/elasticjob-example-lite-springboot/src/main/java/org/apache/shardingsphere/elasticjob/lite/example/repository/FooRepository.java
+++ b/examples/elasticjob-example-lite-springboot/src/main/java/org/apache/shardingsphere/elasticjob/lite/example/repository/FooRepository.java
@@ -28,7 +28,7 @@ import java.util.concurrent.ConcurrentHashMap;
 @Repository
 public class FooRepository {
 
-    private Map<Long, Foo> data = new ConcurrentHashMap<>(300, 1);
+    private final Map<Long, Foo> data = new ConcurrentHashMap<>(300, 1);
 
     public FooRepository() {
         init();