diff --git a/kafka-manager-core/pom.xml b/kafka-manager-core/pom.xml
index 81675a43..0d678447 100644
--- a/kafka-manager-core/pom.xml
+++ b/kafka-manager-core/pom.xml
@@ -98,5 +98,23 @@
com.fasterxml.jackson.core
jackson-databind
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ org.testng
+ testng
+ 6.9.10
+
+
\ No newline at end of file
diff --git a/kafka-manager-core/src/test/java/com/xiaojukeji/kafka/manager/service/DemoTest.java b/kafka-manager-core/src/test/java/com/xiaojukeji/kafka/manager/service/DemoTest.java
new file mode 100644
index 00000000..d7dbe162
--- /dev/null
+++ b/kafka-manager-core/src/test/java/com/xiaojukeji/kafka/manager/service/DemoTest.java
@@ -0,0 +1,43 @@
+package com.xiaojukeji.kafka.manager.service;
+
+import com.xiaojukeji.kafka.manager.common.entity.ResultStatus;
+import com.xiaojukeji.kafka.manager.common.entity.pojo.ClusterDO;
+import com.xiaojukeji.kafka.manager.common.entity.pojo.gateway.AppDO;
+import com.xiaojukeji.kafka.manager.service.config.BaseTest;
+import com.xiaojukeji.kafka.manager.service.service.ClusterService;
+import com.xiaojukeji.kafka.manager.service.service.gateway.AppService;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.testng.Assert;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import static org.mockito.Mockito.when;
+
+public class DemoTest extends BaseTest {
+
+ @Autowired
+ private ClusterService clusterService;
+
+ @Mock
+ private AppService appServiceMock;
+
+ @BeforeMethod
+ public void setup() {
+ MockitoAnnotations.initMocks(this);
+ }
+
+ @Test
+ public void test() {
+ Assert.assertNull(clusterService.getById(100L));
+ }
+
+ @Test
+ public void testMock() {
+ when(appServiceMock.getByAppId("100")).thenReturn(new AppDO());
+ Assert.assertNotNull(appServiceMock.getByAppId("100"));
+ }
+
+
+}
diff --git a/kafka-manager-core/src/test/java/com/xiaojukeji/kafka/manager/service/FutureTest.java b/kafka-manager-core/src/test/java/com/xiaojukeji/kafka/manager/service/FutureTest.java
deleted file mode 100644
index f0091f9e..00000000
--- a/kafka-manager-core/src/test/java/com/xiaojukeji/kafka/manager/service/FutureTest.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package com.xiaojukeji.kafka.manager.service;
-
-import java.util.concurrent.Callable;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.FutureTask;
-
-import org.junit.Test;
-
-public class FutureTest {
-
- @Test
- public void test() throws InterruptedException, ExecutionException {
-
- FutureTask f1 = new FutureTask(new Callable() {
-
- @Override
- public Integer call() throws InterruptedException {
- Thread.sleep(1000L);
- return 1;
- }
-
- });
-
- FutureTask f2 = new FutureTask(new Callable() {
-
- @Override
- public Integer call() throws InterruptedException {
- Thread.sleep(1000L);
- return 2;
- }
-
- });
-
- ExecutorService threadPool = Executors.newCachedThreadPool();
-
- long ct = System.currentTimeMillis();
-
- threadPool.submit(f1);
- threadPool.submit(f2);
- threadPool.shutdown();
-
- System.out.println(f1.get() + " : " + f2.get() + " use:"
- + (System.currentTimeMillis() - ct));
- }
-}
diff --git a/kafka-manager-core/src/test/java/com/xiaojukeji/kafka/manager/service/config/BaseTest.java b/kafka-manager-core/src/test/java/com/xiaojukeji/kafka/manager/service/config/BaseTest.java
new file mode 100644
index 00000000..b9de2025
--- /dev/null
+++ b/kafka-manager-core/src/test/java/com/xiaojukeji/kafka/manager/service/config/BaseTest.java
@@ -0,0 +1,11 @@
+package com.xiaojukeji.kafka.manager.service.config;
+
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
+
+@SpringBootTest(classes = CoreSpringBootStartUp.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
+@ContextConfiguration(classes = CoreSpringBootStartUp.class)
+public class BaseTest extends AbstractTestNGSpringContextTests {
+
+}
diff --git a/kafka-manager-core/src/test/java/com/xiaojukeji/kafka/manager/service/config/CoreSpringBootStartUp.java b/kafka-manager-core/src/test/java/com/xiaojukeji/kafka/manager/service/config/CoreSpringBootStartUp.java
new file mode 100644
index 00000000..3c6c1ac2
--- /dev/null
+++ b/kafka-manager-core/src/test/java/com/xiaojukeji/kafka/manager/service/config/CoreSpringBootStartUp.java
@@ -0,0 +1,21 @@
+package com.xiaojukeji.kafka.manager.service.config;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.web.servlet.ServletComponentScan;
+import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.scheduling.annotation.EnableScheduling;
+
+@EnableAsync
+@EnableScheduling
+@ServletComponentScan
+@EnableAutoConfiguration
+@SpringBootApplication(scanBasePackages = {"com.xiaojukeji.kafka.manager"})
+public class CoreSpringBootStartUp {
+ public static void main(String[] args) {
+ SpringApplication sa = new SpringApplication(CoreSpringBootStartUp.class);
+ sa.run(args);
+ }
+
+}
diff --git a/kafka-manager-core/src/test/java/com/xiaojukeji/kafka/manager/service/config/DataSourceConfig.java b/kafka-manager-core/src/test/java/com/xiaojukeji/kafka/manager/service/config/DataSourceConfig.java
new file mode 100644
index 00000000..ffe637e7
--- /dev/null
+++ b/kafka-manager-core/src/test/java/com/xiaojukeji/kafka/manager/service/config/DataSourceConfig.java
@@ -0,0 +1,51 @@
+package com.xiaojukeji.kafka.manager.service.config;
+
+import org.apache.ibatis.session.SqlSessionFactory;
+import org.mybatis.spring.SqlSessionFactoryBean;
+import org.mybatis.spring.SqlSessionTemplate;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.boot.jdbc.DataSourceBuilder;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
+import org.springframework.jdbc.datasource.DataSourceTransactionManager;
+
+import javax.sql.DataSource;
+
+/**
+ * @author zengqiao
+ * @date 20/3/17
+ */
+@Configuration
+public class DataSourceConfig {
+ @Bean(name = "dataSource")
+ @ConfigurationProperties(prefix = "spring.datasource.kafka-manager")
+ @Primary
+ public DataSource dataSource() {
+ return DataSourceBuilder.create().build();
+ }
+
+ @Bean(name = "sqlSessionFactory")
+ @Primary
+ public SqlSessionFactory sqlSessionFactory(@Qualifier("dataSource") DataSource dataSource) throws Exception {
+ SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
+ bean.setDataSource(dataSource);
+ bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml"));
+ bean.setConfigLocation(new PathMatchingResourcePatternResolver().getResource("classpath:mybatis-config.xml"));
+ return bean.getObject();
+ }
+
+ @Bean(name = "transactionManager")
+ @Primary
+ public DataSourceTransactionManager transactionManager(@Qualifier("dataSource") DataSource dataSource) {
+ return new DataSourceTransactionManager(dataSource);
+ }
+
+ @Bean(name = "sqlSession")
+ @Primary
+ public SqlSessionTemplate sqlSessionTemplate(@Qualifier("sqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
+ return new SqlSessionTemplate(sqlSessionFactory);
+ }
+}
diff --git a/kafka-manager-core/src/test/java/com/xiaojukeji/kafka/manager/service/utils/SpringTestBase.java b/kafka-manager-core/src/test/java/com/xiaojukeji/kafka/manager/service/utils/SpringTestBase.java
deleted file mode 100644
index fb4595e1..00000000
--- a/kafka-manager-core/src/test/java/com/xiaojukeji/kafka/manager/service/utils/SpringTestBase.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.xiaojukeji.kafka.manager.service.utils;
-
-import org.junit.runner.RunWith;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
-/**
- * Created by arthur on 2017/5/31.
- */
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(locations = { "classpath:biz-test.xml" })
-public class SpringTestBase {
-}
diff --git a/kafka-manager-core/src/test/resources/application.yml b/kafka-manager-core/src/test/resources/application.yml
new file mode 100644
index 00000000..a331676a
--- /dev/null
+++ b/kafka-manager-core/src/test/resources/application.yml
@@ -0,0 +1,98 @@
+server:
+ port: 8080
+ tomcat:
+ accept-count: 1000
+ max-connections: 10000
+ max-threads: 800
+ min-spare-threads: 100
+
+spring:
+ application:
+ name: kafkamanager
+ profiles:
+ active: dev
+ datasource:
+ kafka-manager:
+ jdbc-url: jdbc:mysql://116.85.6.115:3306/logi_kafka_manager?characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8
+ username: root
+ password: Work2019
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ main:
+ allow-bean-definition-overriding: true
+
+ servlet:
+ multipart:
+ max-file-size: 100MB
+ max-request-size: 100MB
+
+logging:
+ config: classpath:logback-spring.xml
+
+custom:
+ idc: cn
+ jmx:
+ max-conn: 10 # 2.3版本配置不在这个地方生效
+ store-metrics-task:
+ community:
+ broker-metrics-enabled: true
+ topic-metrics-enabled: true
+ didi:
+ app-topic-metrics-enabled: false
+ topic-request-time-metrics-enabled: false
+ topic-throttled-metrics: false
+ save-days: 7
+
+# 任务相关的开关
+task:
+ op:
+ sync-topic-enabled: false # 未落盘的Topic定期同步到DB中
+ order-auto-exec: # 工单自动化审批线程的开关
+ topic-enabled: false # Topic工单自动化审批开关, false:关闭自动化审批, true:开启
+ app-enabled: false # App工单自动化审批开关, false:关闭自动化审批, true:开启
+
+account:
+ ldap:
+ enabled: false
+ url: ldap://127.0.0.1:389/
+ basedn: dc=tsign,dc=cn
+ factory: com.sun.jndi.ldap.LdapCtxFactory
+ filter: sAMAccountName
+ security:
+ authentication: simple
+ principal: cn=admin,dc=tsign,dc=cn
+ credentials: admin
+ auth-user-registration: true
+ auth-user-registration-role: normal
+
+kcm:
+ enabled: false
+ s3:
+ endpoint: s3.didiyunapi.com
+ access-key: 1234567890
+ secret-key: 0987654321
+ bucket: logi-kafka
+ n9e:
+ base-url: http://127.0.0.1:8004
+ user-token: 12345678
+ timeout: 300
+ account: root
+ script-file: kcm_script.sh
+
+monitor:
+ enabled: false
+ n9e:
+ nid: 2
+ user-token: 1234567890
+ mon:
+ base-url: http://127.0.0.1:8000 # 夜莺v4版本,默认端口统一调整为了8000
+ sink:
+ base-url: http://127.0.0.1:8000 # 夜莺v4版本,默认端口统一调整为了8000
+ rdb:
+ base-url: http://127.0.0.1:8000 # 夜莺v4版本,默认端口统一调整为了8000
+
+notify:
+ kafka:
+ cluster-id: 95
+ topic-name: didi-kafka-notify
+ order:
+ detail-url: http://127.0.0.1
diff --git a/kafka-manager-core/src/test/resources/distribution/kafka-manager-springboot-distribution.xml b/kafka-manager-core/src/test/resources/distribution/kafka-manager-springboot-distribution.xml
new file mode 100755
index 00000000..51c9a632
--- /dev/null
+++ b/kafka-manager-core/src/test/resources/distribution/kafka-manager-springboot-distribution.xml
@@ -0,0 +1,63 @@
+
+ assembly
+
+ tar
+ zip
+
+
+
+ src/main/resources/bin
+ bin
+
+ control.sh
+ start.bat
+
+ 0755
+
+
+ src/main/resources
+ config
+
+ *.properties
+ *.xml
+ *.yml
+ env/dev/*
+ env/qa/*
+ env/uat/*
+ env/prod/*
+
+
+
+ target
+ lib
+
+
+ kafka-manager-web*.jar
+
+
+
+ *sources.jar
+
+
+
+ src/main/resources
+ logs
+ 0755
+
+ **/*
+
+
+
+
+
\ No newline at end of file
diff --git a/kafka-manager-core/src/test/resources/logback-spring.xml b/kafka-manager-core/src/test/resources/logback-spring.xml
new file mode 100644
index 00000000..c1c16136
--- /dev/null
+++ b/kafka-manager-core/src/test/resources/logback-spring.xml
@@ -0,0 +1,215 @@
+
+
+ logback
+
+
+
+
+
+
+
+
+
+
+
+
+
+ info
+
+
+ ${CONSOLE_LOG_PATTERN}
+ UTF-8
+
+
+
+
+
+
+
+
+ ${log.path}/log_debug.log
+
+
+ %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
+ UTF-8
+
+
+
+
+ ${log.path}/log_debug_%d{yyyy-MM-dd}.%i.log
+
+ 100MB
+
+
+ 7
+
+
+
+ debug
+ ACCEPT
+ DENY
+
+
+
+
+
+
+ ${log.path}/log_info.log
+
+
+ %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
+ UTF-8
+
+
+
+
+ ${log.path}/log_info_%d{yyyy-MM-dd}.%i.log
+
+ 100MB
+
+
+ 7
+
+
+
+ info
+ ACCEPT
+ DENY
+
+
+
+
+
+
+ ${log.path}/log_warn.log
+
+
+ %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
+ UTF-8
+
+
+
+ ${log.path}/log_warn_%d{yyyy-MM-dd}.%i.log
+
+ 100MB
+
+
+ 7
+
+
+
+ warn
+ ACCEPT
+ DENY
+
+
+
+
+
+
+
+ ${log.path}/log_error.log
+
+
+ %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
+ UTF-8
+
+
+
+ ${log.path}/log_error_%d{yyyy-MM-dd}.%i.log
+
+ 100MB
+
+
+ 7
+
+
+
+ ERROR
+ ACCEPT
+ DENY
+
+
+
+
+
+ ${log.path}/metrics/collector_metrics.log
+
+ %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
+ UTF-8
+
+
+ ${log.path}/metrics/collector_metrics_%d{yyyy-MM-dd}.%i.log
+
+ 100MB
+
+ 3
+
+
+
+
+
+ ${log.path}/metrics/api_metrics.log
+
+ %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
+ UTF-8
+
+
+ ${log.path}/metrics/api_metrics_%d{yyyy-MM-dd}.%i.log
+
+ 100MB
+
+ 3
+
+
+
+
+
+ ${log.path}/metrics/scheduled_tasks.log
+
+ %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
+ UTF-8
+
+
+ ${log.path}/metrics/scheduled_tasks_%d{yyyy-MM-dd}.%i.log
+
+ 100MB
+
+ 5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file