Skip to content

Commit

Permalink
for #601: simplify InItCreateSchema.DATABASE_SCHEMAS
Browse files Browse the repository at this point in the history
  • Loading branch information
terrymanu committed May 3, 2018
1 parent 306ffe2 commit d9f11b1
Show file tree
Hide file tree
Showing 5 changed files with 36 additions and 87 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

package io.shardingjdbc.dbtest;

import io.shardingjdbc.core.constant.DatabaseType;
import lombok.Getter;

import java.io.IOException;
Expand All @@ -38,7 +39,7 @@ public final class IntegrateTestRunningEnvironment {

private final String assertPath;

private final Collection<String> databaseTypes;
private final Collection<DatabaseType> databaseTypes;

private IntegrateTestRunningEnvironment() {
Properties prop = new Properties();
Expand All @@ -50,8 +51,8 @@ private IntegrateTestRunningEnvironment() {
initialized = Boolean.valueOf(prop.getProperty("initialized", Boolean.FALSE.toString()));
assertPath = prop.getProperty("assert.path");
databaseTypes = new LinkedList<>();
for (String each : prop.getProperty("databases", "h2").split(",")) {
databaseTypes.add(each.trim());
for (String each : prop.getProperty("databases", DatabaseType.H2.name()).split(",")) {
databaseTypes.add(DatabaseType.valueOf(each.trim()));
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,11 +46,11 @@

@RunWith(Parameterized.class)
@RequiredArgsConstructor
public class StartTest {
public final class StartTest {

private static boolean isInitialized = IntegrateTestRunningEnvironment.getInstance().isInitialized();

private static boolean isClean = IntegrateTestRunningEnvironment.getInstance().isInitialized();
private static boolean isCleaned = IntegrateTestRunningEnvironment.getInstance().isInitialized();

private static final List<String[]> RESULT_ASSERT = new ArrayList<>();

Expand All @@ -59,35 +59,30 @@ public class StartTest {
private final String id;

@Parameters(name = "{0} ({2}) -> {1}")
public static Collection<String[]> getParameters() {
public static Collection<String[]> getParameters() throws IOException, JAXBException {
String assertPath = IntegrateTestRunningEnvironment.getInstance().getAssertPath();
assertPath = PathUtil.getPath(assertPath);
List<String> paths = FileUtil.getAllFilePaths(new File(assertPath), "assert-", "xml");
for (String each : paths) {
AssertsDefinition assertsDefinition = AnalyzeConfig.analyze(each);

try {
for (String each : paths) {
AssertsDefinition assertsDefinition = AnalyzeConfig.analyze(each);

if (StringUtils.isNotBlank(assertsDefinition.getBaseConfig())) {
String[] dbs = StringUtils.split(assertsDefinition.getBaseConfig(), ",");
for (String db : dbs) {
InItCreateSchema.addDatabase(db);
}
} else {
for (String db : AssertEngine.DEFAULT_DATABASES) {
InItCreateSchema.addDatabase(db);
}
if (StringUtils.isNotBlank(assertsDefinition.getBaseConfig())) {
String[] dbs = StringUtils.split(assertsDefinition.getBaseConfig(), ",");
for (String db : dbs) {
InItCreateSchema.addDatabase(db);
}
} else {
for (String db : AssertEngine.DEFAULT_DATABASES) {
InItCreateSchema.addDatabase(db);
}
List<AssertDQLDefinition> assertDQLs = assertsDefinition.getAssertDQL();
collateData(RESULT_ASSERT, each, assertDQLs);
List<AssertDMLDefinition> assertDMLs = assertsDefinition.getAssertDML();
collateData(RESULT_ASSERT, each, assertDMLs);
List<AssertDDLDefinition> assertDDLs = assertsDefinition.getAssertDDL();
collateData(RESULT_ASSERT, each, assertDDLs);
AssertEngine.addAssertDefinition(each, assertsDefinition);
}
} catch (JAXBException | IOException e) {
e.printStackTrace();
List<AssertDQLDefinition> assertDQLs = assertsDefinition.getAssertDQL();
collateData(RESULT_ASSERT, each, assertDQLs);
List<AssertDMLDefinition> assertDMLs = assertsDefinition.getAssertDML();
collateData(RESULT_ASSERT, each, assertDMLs);
List<AssertDDLDefinition> assertDDLs = assertsDefinition.getAssertDDL();
collateData(RESULT_ASSERT, each, assertDDLs);
AssertEngine.addAssertDefinition(each, assertsDefinition);
}
return RESULT_ASSERT;
}
Expand Down Expand Up @@ -126,9 +121,9 @@ public void test() {

@AfterClass
public static void afterClass() {
if (isClean) {
if (isCleaned) {
InItCreateSchema.dropDatabase();
isClean = false;
isCleaned = false;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import io.shardingjdbc.core.api.ShardingDataSourceFactory;
import io.shardingjdbc.core.constant.DatabaseType;
import io.shardingjdbc.core.jdbc.core.datasource.ShardingDataSource;
import io.shardingjdbc.dbtest.IntegrateTestRunningEnvironment;
import io.shardingjdbc.dbtest.common.DatabaseUtil;
import io.shardingjdbc.dbtest.common.PathUtil;
import io.shardingjdbc.dbtest.config.AnalyzeDataset;
Expand Down Expand Up @@ -126,7 +127,7 @@ public static boolean runAssert(final String path, final String id) {
private static void onlyDatabaseRun(final String dbName, final String path, final String id, final AssertsDefinition assertsDefinition, final String rootPath, final String msg, final String initDataPath, final List<String> dbs) throws IOException, SQLException, SAXException, ParserConfigurationException, XPathExpressionException, ParseException {
DataSource dataSource = null;
try {
for (DatabaseType each : InItCreateSchema.getDatabaseSchemas()) {
for (DatabaseType each : IntegrateTestRunningEnvironment.getInstance().getDatabaseTypes()) {
Map<String, DataSource> dataSourceMaps = new HashMap<>();

for (String db : dbs) {
Expand All @@ -141,15 +142,8 @@ private static void onlyDatabaseRun(final String dbName, final String path, fina
String configPath = PathUtil.getPath(assertsDefinition.getShardingRuleConfig(), rootPath) + "-" + dbName + ".yaml";
dataSource = getDataSource(dataSourceMaps, configPath);
}


// dql run
dqlRun(each, initDataPath, dbName, path, id, assertsDefinition, rootPath, msg, dataSource, dataSourceMaps, dbs);

// dml run
dmlRun(each, initDataPath, dbName, path, id, assertsDefinition, rootPath, msg, dataSource, dataSourceMaps, dbs);

// ddl run
ddlRun(each, id, dbName, assertsDefinition, rootPath, msg, dataSource);
}
} finally {
Expand All @@ -168,7 +162,6 @@ private static void ddlRun(final DatabaseType databaseType, final String id, fin
if (!databaseTypes.contains(databaseType)) {
break;
}

AssertDDLDefinition anAssert = each;
String baseConfig = anAssert.getBaseConfig();
if (StringUtils.isNotBlank(baseConfig)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,12 +43,10 @@
import java.util.List;
import java.util.Set;

public class InItCreateSchema {

private static Set<DatabaseType> DATABASE_SCHEMAS = new HashSet<>();
public final class InItCreateSchema {

@Getter
public static final Set<String> DATABASES = new HashSet<>();
private static final Set<String> DATABASES = new HashSet<>();

/**
* add database.
Expand All @@ -59,25 +57,12 @@ public static void addDatabase(String database) {
DATABASES.add(database);
}

static {
Set<DatabaseType> databaseSchemas = InItCreateSchema.getDatabaseSchema();
InItCreateSchema.setDatabaseSchemas(databaseSchemas);
}

public static Set<DatabaseType> getDatabaseSchemas() {
return DATABASE_SCHEMAS;
}

public static void setDatabaseSchemas(final Set<DatabaseType> databaseSchemas) {
DATABASE_SCHEMAS = databaseSchemas;
}

/**
* Initialize the database table.
*/
public static synchronized void createTable() {
for (DatabaseType db : DATABASE_SCHEMAS) {
createSchema(db);
for (DatabaseType each : IntegrateTestRunningEnvironment.getInstance().getDatabaseTypes()) {
createSchema(each);
}
}

Expand All @@ -91,7 +76,7 @@ public static void createDatabase() {
for (String database : DATABASES) {
String sql = getCreateTableSql(DatabaseType.H2, AnalyzeDatabase.analyze(InItCreateSchema.class.getClassLoader()
.getResource("integrate/dbtest").getPath() + "/" + database + "/database.xml"));
for (DatabaseType each : DATABASE_SCHEMAS) {
for (DatabaseType each : IntegrateTestRunningEnvironment.getInstance().getDatabaseTypes()) {
if (each.equals(DatabaseType.H2)) {
continue;
}
Expand Down Expand Up @@ -143,7 +128,7 @@ public static synchronized void dropDatabase() {
for (String database : DATABASES) {
String sql = getDropTableSql(DatabaseType.H2, AnalyzeDatabase.analyze(InItCreateSchema.class.getClassLoader()
.getResource("integrate/dbtest").getPath() + "/" + database + "/database.xml"));
for (DatabaseType each : DATABASE_SCHEMAS) {
for (DatabaseType each : IntegrateTestRunningEnvironment.getInstance().getDatabaseTypes()) {
if (each.equals(DatabaseType.H2)) {
continue;
}
Expand Down Expand Up @@ -365,15 +350,6 @@ private static Connection initialConnection(final String dbName, final DatabaseT
return buildDataSource(dbName, type).getConnection();
}

public static Set<DatabaseType> getDatabaseSchema() {
Set<DatabaseType> dbset = new HashSet<>();
for (String each : IntegrateTestRunningEnvironment.getInstance().getDatabaseTypes()) {
DatabaseType databaseType = getDatabaseType(each);
dbset.add(databaseType);
}
return dbset;
}

private static String getCreateTableSql(final DatabaseType databaseType, final List<String> databases) {
String basesql = "CREATE DATABASE ";
if (DatabaseType.Oracle == databaseType) {
Expand All @@ -398,22 +374,6 @@ private static String getDropTableSql(final DatabaseType databaseType, final Lis
return StringUtils.join(sqls, "\n");
}

/**
* Get the database type enumeration.
*
* @param type String database type
* @return database enumeration
*/
public static DatabaseType getDatabaseType(final String type) {
DatabaseType[] databaseTypes = DatabaseType.values();
for (DatabaseType each : databaseTypes) {
if (type.equalsIgnoreCase(each.name())) {
return each;
}
}
return DatabaseType.H2;
}

/**
* Get the database type enumeration.
*
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
initialized=false
assert.path=classpath:asserts
#databases=mysql,postgresql,sqlserver,oracle
databases=h2
#databases=H2,MySQL,Oracle,SQLServer,PostgreSQL
databases=H2

0 comments on commit d9f11b1

Please sign in to comment.