Add ut for ExternalDataSourceProperties

This commit is contained in:
zhanglong 2020-06-14 17:55:25 +08:00
parent 768713ec05
commit 8295a3ef96

View File

@ -0,0 +1,113 @@
package com.alibaba.nacos.config.server.service.datasource;
import java.util.List;
import org.junit.Assert;
import org.junit.Test;
import org.springframework.mock.env.MockEnvironment;
import com.zaxxer.hikari.HikariDataSource;
public class ExternalDataSourcePropertiesTest {
public static final String JDBC_URL =
"jdbc:mysql://127.0.0.1:3306/nacos_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC";
public static final String PASSWORD = "nacos";
public static final String USERNAME = "nacos_devtest";
@Test
public void external_datasource_normaly() {
HikariDataSource expectedDataSource = new HikariDataSource();
expectedDataSource.setJdbcUrl(JDBC_URL);
expectedDataSource.setUsername(USERNAME);
expectedDataSource.setPassword(PASSWORD);
MockEnvironment environment = new MockEnvironment();
environment.setProperty("db.num", "1");
environment.setProperty("db.user", USERNAME);
environment.setProperty("db.password", PASSWORD);
environment.setProperty("db.url.0", JDBC_URL);
List<HikariDataSource> dataSources = new ExternalDataSourceProperties().build(environment, (dataSource -> {
Assert.assertEquals(dataSource.getJdbcUrl(), expectedDataSource.getJdbcUrl());
Assert.assertEquals(dataSource.getUsername(), expectedDataSource.getUsername());
Assert.assertEquals(dataSource.getPassword(), expectedDataSource.getPassword());
}));
Assert.assertEquals(dataSources.size(), 1);
}
@Test
public void external_datasource_to_assert_multi_jdbc_url() {
HikariDataSource expectedDataSource = new HikariDataSource();
expectedDataSource.setJdbcUrl(JDBC_URL);
expectedDataSource.setUsername(USERNAME);
expectedDataSource.setPassword(PASSWORD);
MockEnvironment environment = new MockEnvironment();
environment.setProperty("db.num", "2");
environment.setProperty("db.user", USERNAME);
environment.setProperty("db.password", PASSWORD);
environment.setProperty("db.url.0", JDBC_URL);
environment.setProperty("db.url.1", JDBC_URL);
List<HikariDataSource> dataSources = new ExternalDataSourceProperties().build(environment, (dataSource -> {
Assert.assertEquals(dataSource.getJdbcUrl(), expectedDataSource.getJdbcUrl());
Assert.assertEquals(dataSource.getUsername(), expectedDataSource.getUsername());
Assert.assertEquals(dataSource.getPassword(), expectedDataSource.getPassword());
}));
Assert.assertEquals(dataSources.size(), 2);
}
@Test
public void external_datasource_to_assert_multi_password_and_username() {
HikariDataSource expectedDataSource = new HikariDataSource();
expectedDataSource.setJdbcUrl(JDBC_URL);
expectedDataSource.setUsername(USERNAME);
expectedDataSource.setPassword(PASSWORD);
MockEnvironment environment = new MockEnvironment();
environment.setProperty("db.num", "2");
environment.setProperty("db.user.0", USERNAME);
environment.setProperty("db.user.1", USERNAME);
environment.setProperty("db.password.0", PASSWORD);
environment.setProperty("db.password.1", PASSWORD);
environment.setProperty("db.url.0", JDBC_URL);
environment.setProperty("db.url.1", JDBC_URL);
List<HikariDataSource> dataSources = new ExternalDataSourceProperties().build(environment, (dataSource -> {
Assert.assertEquals(dataSource.getJdbcUrl(), expectedDataSource.getJdbcUrl());
Assert.assertEquals(dataSource.getUsername(), expectedDataSource.getUsername());
Assert.assertEquals(dataSource.getPassword(), expectedDataSource.getPassword());
}));
Assert.assertEquals(dataSources.size(), 2);
}
@Test(expected = IllegalArgumentException.class)
public void external_datasource_to_assert_illegal_argument() {
MockEnvironment environment = new MockEnvironment();
new ExternalDataSourceProperties().build(environment, null);
}
@Test(expected = IllegalArgumentException.class)
public void external_datasource_to_assert_illegal_argument_2() {
HikariDataSource expectedDataSource = new HikariDataSource();
expectedDataSource.setJdbcUrl(JDBC_URL);
expectedDataSource.setUsername(USERNAME);
expectedDataSource.setPassword(PASSWORD);
MockEnvironment environment = new MockEnvironment();
// error num of db
environment.setProperty("db.num", "2");
environment.setProperty("db.user", USERNAME);
environment.setProperty("db.password", PASSWORD);
environment.setProperty("db.url.0", JDBC_URL);
List<HikariDataSource> dataSources = new ExternalDataSourceProperties().build(environment, (dataSource -> {
Assert.assertEquals(dataSource.getJdbcUrl(), expectedDataSource.getJdbcUrl());
Assert.assertEquals(dataSource.getUsername(), expectedDataSource.getUsername());
Assert.assertEquals(dataSource.getPassword(), expectedDataSource.getPassword());
}));
}
}