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