add > test case for V1.1.2

This commit is contained in:
lihengming
2017-07-23 20:41:46 +08:00
parent 13003a8039
commit 23596d10a8
13 changed files with 294 additions and 18 deletions
@@ -0,0 +1,23 @@
package com.alibaba.druid.spring.boot.demo.configurer;
import com.alibaba.druid.spring.boot.demo.dao.UserDao;
import com.alibaba.druid.spring.boot.demo.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import javax.annotation.PostConstruct;
@Configuration
@Profile("default")
public class InitConfigurer{
@Autowired
private UserDao userDao;
@PostConstruct
public void init(){
for (int i = 1; i <= 100; i++) {
userDao.save(new User("TEST-NAME-" + i));
}
}
}
@@ -0,0 +1,21 @@
package com.alibaba.druid.spring.boot.demo.configurer;
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.core.env.Environment;
import javax.sql.DataSource;
@Configuration
@Profile("issue-1796")
public class Issue1796Configurer {
@Bean
public DataSource dataSource(Environment environment) {
return DruidDataSourceBuilder
.create()
.build(environment, "spring.datasource.druid.");
}
}
@@ -0,0 +1,26 @@
package com.alibaba.druid.spring.boot.demo.configurer;
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.context.annotation.Profile;
import javax.sql.DataSource;
@Configuration
@Profile("multi-datasource")
public class MultiDataSourceConfigurer {
@Primary
@Bean
@ConfigurationProperties("spring.datasource.druid.one")
public DataSource dataSourceOne(){
return DruidDataSourceBuilder.create().build();
}
@Bean
@ConfigurationProperties("spring.datasource.druid.two")
public DataSource dataSourceTwo(){
return DruidDataSourceBuilder.create().build();
}
}
@@ -3,12 +3,11 @@ package com.alibaba.druid.spring.boot.demo.service;
import com.alibaba.druid.spring.boot.demo.dao.UserDao;
import com.alibaba.druid.spring.boot.demo.model.User;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl implements UserService,InitializingBean {
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
@@ -17,10 +16,4 @@ public class UserServiceImpl implements UserService,InitializingBean {
return userDao.findOne(id);
}
@Override
public void afterPropertiesSet() throws Exception {
for (int i = 1; i <= 100; i++) {
userDao.save(new User("TEST-NAME-" + i));
}
}
}
@@ -13,7 +13,8 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.alibaba.druid.spring.boot;
package com.alibaba.druid.spring.boot.testcase;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure;
import org.junit.Test;
@@ -62,8 +63,8 @@ public class DruidDataSourceTestCase {
EnvironmentTestUtils.addEnvironment(this.context, PREFIX + "test-on-return=true");
EnvironmentTestUtils.addEnvironment(this.context, PREFIX + "time-between-eviction-runs-millis=10000");
EnvironmentTestUtils.addEnvironment(this.context, PREFIX + "min-evictable-idle-time-millis=12345");
EnvironmentTestUtils.addEnvironment(this.context, PREFIX + "max-evictable-idle-time-millis=123456");
EnvironmentTestUtils.addEnvironment(this.context, PREFIX + "filters=stat,log4j");
EnvironmentTestUtils.addEnvironment(this.context, PREFIX + "connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000");
EnvironmentTestUtils.addEnvironment(this.context, PREFIX + "async-close-connection-enable=true");
this.context.refresh();
DruidDataSource ds = this.context.getBean(DruidDataSource.class);
@@ -83,8 +84,8 @@ public class DruidDataSourceTestCase {
assertThat(ds.isTestOnReturn()).isTrue();
assertThat(ds.getTimeBetweenEvictionRunsMillis()).isEqualTo(10000);
assertThat(ds.getMinEvictableIdleTimeMillis()).isEqualTo(12345);
assertThat(ds.getMaxEvictableIdleTimeMillis()).isEqualTo(123456);
assertThat(ds.getProxyFilters().size()).isEqualTo(2);
assertThat(ds.getConnectProperties().size()).isEqualTo(2);
assertThat(ds.isAsyncCloseConnectionEnable()).isEqualTo(true);
}
@@ -0,0 +1,32 @@
package com.alibaba.druid.spring.boot.testcase;
import com.alibaba.druid.filter.Filter;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.spring.boot.demo.DemoApplication;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit4.SpringRunner;
import javax.annotation.Resource;
import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
/**
* @author lihengming [89921218@qq.com]
*/
@RunWith(SpringRunner.class)
@SpringBootTest(classes = DemoApplication.class)
@ActiveProfiles("filter")
public class DruidFilterTestCase {
@Resource
private DruidDataSource dataSource;
@Test
public void test() {
List<Filter> filters = dataSource.getProxyFilters();
assertThat(filters.size()).isEqualTo(4);
}
}
@@ -0,0 +1,68 @@
/*
* Copyright 1999-2017 Alibaba Group Holding Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.alibaba.druid.spring.boot.testcase;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.spring.boot.demo.DemoApplication;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit4.SpringRunner;
import javax.annotation.Resource;
import static org.assertj.core.api.Assertions.assertThat;
/**
* @author lihengming [89921218@qq.com]
*/
@RunWith(SpringRunner.class)
@SpringBootTest(classes = DemoApplication.class)
@ActiveProfiles("multi-datasource")
public class DruidMultiDataSourceTestCase {
@Resource
private DruidDataSource dataSourceOne;
@Resource
private DruidDataSource dataSourceTwo;
@Test
public void testDataSourceOne() {
assertThat(dataSourceOne.getUrl()).isEqualTo("jdbc:h2:file:./demo-db");
assertThat(dataSourceOne.getUsername()).isEqualTo("sa");
assertThat(dataSourceOne.getPassword()).isEqualTo("sa");
assertThat(dataSourceOne.getDriverClassName()).isEqualTo("org.h2.Driver");
assertThat(dataSourceOne.getInitialSize()).isEqualTo(5);
assertThat(dataSourceOne.getMaxActive()).isEqualTo(10);
assertThat(dataSourceOne.getMaxWait()).isEqualTo(10000);
}
@Test
public void testDataSourceTwo() {
assertThat(dataSourceTwo.getUrl()).isEqualTo("jdbc:h2:file:./demo-db");
assertThat(dataSourceTwo.getUsername()).isEqualTo("sa");
assertThat(dataSourceTwo.getPassword()).isEqualTo("sa");
assertThat(dataSourceTwo.getDriverClassName()).isEqualTo("org.h2.Driver");
assertThat(dataSourceTwo.getInitialSize()).isEqualTo(5);
assertThat(dataSourceTwo.getMaxActive()).isEqualTo(20);
assertThat(dataSourceTwo.getMaxWait()).isEqualTo(20000);
}
}
@@ -0,0 +1,35 @@
package com.alibaba.druid.spring.boot.testcase;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.spring.boot.demo.DemoApplication;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit4.SpringRunner;
import javax.annotation.Resource;
import static org.assertj.core.api.Assertions.assertThat;
/**
* @author lihengming [89921218@qq.com]
*/
@RunWith(SpringRunner.class)
@SpringBootTest(classes = DemoApplication.class)
@ActiveProfiles("issue-1796")
public class Issue1796TestCase {
@Resource
private DruidDataSource dataSource;
@Test
public void test() {
assertThat(dataSource.getUrl()).isEqualTo("jdbc:h2:file:./demo-db");
assertThat(dataSource.getUsername()).isEqualTo("sa");
assertThat(dataSource.getPassword()).isEqualTo("sa");
assertThat(dataSource.getDriverClassName()).isEqualTo("org.h2.Driver");
assertThat(dataSource.getMinEvictableIdleTimeMillis()).isEqualTo(100000);
assertThat(dataSource.getMaxEvictableIdleTimeMillis()).isEqualTo(200000);
}
}
@@ -0,0 +1,16 @@
# 只有下面三个是必填项,其他配置不是必须的
spring.datasource.url=jdbc:h2:file:./demo-db
spring.datasource.username=sa
spring.datasource.password=sa
# driver-class-name 非必填可根据url推断
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.druid.filter.stat.enabled=true
spring.datasource.druid.filter.config.enabled=true
spring.datasource.druid.filter.encoding.enabled=true
spring.datasource.druid.filter.wall.enabled=true
# JPA
spring.jpa.show-sql= true
spring.jpa.hibernate.ddl-auto=create-drop
@@ -0,0 +1,13 @@
# 只有下面三个是必填项,其他配置不是必须的
spring.datasource.url=jdbc:h2:file:./demo-db
spring.datasource.username=sa
spring.datasource.password=sa
# driver-class-name 非必填可根据url推断
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.druid.min-evictable-idle-time-millis=100000
spring.datasource.druid.max-evictable-idle-time-millis=200000
# JPA
spring.jpa.show-sql= true
spring.jpa.hibernate.ddl-auto=create-drop
@@ -0,0 +1,27 @@
# 只有下面三个是必填项,其他配置不是必须的
spring.datasource.url=jdbc:h2:file:./demo-db
spring.datasource.username=sa
spring.datasource.password=sa
# driver-class-name 非必填可根据url推断
spring.datasource.driver-class-name=org.h2.Driver
# Druid 数据源配置,继承spring.datasource.* 配置,相同则覆盖
spring.datasource.druid.initial-size=5
spring.datasource.druid.max-active=5
spring.datasource.druid.aop-patterns=com.alibaba.druid.spring.boot.demo.service.*
# Druid 数据源 1 配置,继承spring.datasource.druid.* 配置,相同则覆盖
spring.datasource.druid.one.max-active=10
spring.datasource.druid.one.max-wait=10000
# Druid 数据源 2 配置,继承spring.datasource.druid.* 配置,相同则覆盖
spring.datasource.druid.two.max-active=20
spring.datasource.druid.two.max-wait=20000
# JPA
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=create-drop
# 更多配置属性见 DruidDataSource 内成员变量(只要有set方法便支持),或者根据IDE提示,或者查看官方文档
# 注:配置文件可以根据习惯更换为 .yml
@@ -1,14 +1,33 @@
# JDBC
# 只有下面三个是必填项,其他配置不是必须的
spring.datasource.url=jdbc:h2:file:./demo-db
spring.datasource.username=sa
spring.datasource.password=sa
# driver-class-name 非必填可根据url推断
spring.datasource.driver-class-name=org.h2.Driver
#启用Spring关联监控配置
spring.datasource.druid.aop-patterns=com.alibaba.druid.spring.boot.demo.service.*
#其他配置,参考config-template.properties
spring.datasource.druid.max-active=11
#Druid 数据源配置,继承spring.datasource.* 配置,相同则覆盖
spring.datasource.druid.username=sa
spring.datasource.druid.password=sa
spring.datasource.druid.initial-size=5
spring.datasource.druid.max-active=10
spring.datasource.druid.min-evictable-idle-time-millis=100000
spring.datasource.druid.aop-patterns=com.alibaba.druid.spring.boot.demo.service.*
# 自定义StatFilter 配置
spring.datasource.druid.filter.stat.db-type=h2
spring.datasource.druid.filter.stat.log-slow-sql=true
spring.datasource.druid.filter.stat.slow-sql-millis=2000
# 自定义WallFilter 配置,其他 Filter 不再演示
spring.datasource.druid.filter.wall.enabled=true
spring.datasource.druid.filter.wall.db-type=h2
spring.datasource.druid.filter.wall.config.delete-allow=false
spring.datasource.druid.filter.wall.config.drop-table-allow=false
# JPA
spring.jpa.show-sql= true
spring.jpa.hibernate.ddl-auto=create-drop
# 更多配置属性见 DruidDataSource 内成员变量(只要有set方法便支持),或者根据IDE提示,或者查看官方文档
# 注:配置文件可以根据习惯更换为 .yml
@@ -22,6 +22,8 @@ spring.datasource.druid.time-between-eviction-runs-millis=
spring.datasource.druid.min-evictable-idle-time-millis=
spring.datasource.druid.max-evictable-idle-time-millis=
spring.datasource.druid.filters= #默认值stat,配置多个英文逗号分隔
...
# 更多配置属性见 DruidDataSource 内成员变量(只要有set方法便支持),或者根据IDE提示,或者查看官方文档
######Druid监控配置######
#下面配置说明请参考Druid Github Wiki,配置_配置WebStatFilter