Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
import org.apache.shardingsphere.test.e2e.env.container.atomic.storage.option.StorageContainerConfigurationOption;
import org.apache.shardingsphere.test.e2e.env.container.atomic.storage.type.docker.DockerStorageContainer;
import org.apache.shardingsphere.test.e2e.env.container.atomic.storage.type.docker.impl.HiveContainer;
import org.apache.shardingsphere.test.e2e.env.container.atomic.storage.type.embedded.impl.H2Container;
import org.apache.shardingsphere.test.e2e.env.container.atomic.storage.type.embedded.EmbeddedStorageContainer;
import org.apache.shardingsphere.test.e2e.env.runtime.E2ETestEnvironment;

/**
Expand Down Expand Up @@ -65,7 +65,7 @@ public static StorageContainer newInstance(final DatabaseType databaseType, fina
case "Hive":
return new HiveContainer(storageContainerImage, option, scenario);
case "H2":
return new H2Container(scenario);
return new EmbeddedStorageContainer(databaseType, scenario);
default:
throw new RuntimeException(String.format("Database `%s` is unknown.", databaseType.getType()));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,40 +18,52 @@
package org.apache.shardingsphere.test.e2e.env.container.atomic.storage.type.embedded;

import lombok.Getter;
import lombok.SneakyThrows;
import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
import org.apache.shardingsphere.test.e2e.env.container.atomic.EmbeddedITContainer;
import org.apache.shardingsphere.test.e2e.env.container.atomic.storage.StorageContainer;
import org.apache.shardingsphere.test.e2e.env.container.atomic.util.StorageContainerUtils;
import org.apache.shardingsphere.test.e2e.env.runtime.DataSourceEnvironment;
import org.apache.shardingsphere.test.e2e.env.runtime.E2ETestEnvironment;
import org.apache.shardingsphere.test.e2e.env.runtime.scenario.database.DatabaseEnvironmentManager;
import org.apache.shardingsphere.test.e2e.env.runtime.scenario.path.ScenarioDataPath;
import org.apache.shardingsphere.test.e2e.env.runtime.scenario.path.ScenarioDataPath.Type;
import org.h2.tools.RunScript;

import javax.sql.DataSource;
import java.io.FileReader;
import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Optional;
import java.util.stream.Collectors;

/**
* Embedded storage container.
*/
@Getter
public abstract class EmbeddedStorageContainer implements EmbeddedITContainer, StorageContainer {
public final class EmbeddedStorageContainer implements EmbeddedITContainer, StorageContainer {

private final DatabaseType databaseType;

private final String scenario;

private final ScenarioDataPath scenarioDataPath;

@Getter
private final Map<String, DataSource> actualDataSourceMap;

@Getter
private final Map<String, DataSource> expectedDataSourceMap;

protected EmbeddedStorageContainer(final DatabaseType databaseType, final String scenario) {
public EmbeddedStorageContainer(final DatabaseType databaseType, final String scenario) {
this.databaseType = databaseType;
this.scenario = scenario;
scenarioDataPath = new ScenarioDataPath(scenario);
actualDataSourceMap = createDataSourceMap(Type.ACTUAL);
expectedDataSourceMap = createDataSourceMap(Type.EXPECTED);
}
Expand All @@ -67,7 +79,38 @@ private Map<String, DataSource> createDataSourceMap(final Type type) {
}

@Override
public final String getAbbreviation() {
@SneakyThrows({IOException.class, SQLException.class})
public void start() {
fillActualDataSet();
fillExpectedDataSet();
}

private void fillActualDataSet() throws SQLException, IOException {
for (Entry<String, DataSource> entry : getActualDataSourceMap().entrySet()) {
executeInitSQL(entry.getValue(), scenarioDataPath.getInitSQLFile(Type.ACTUAL, databaseType));
Optional<String> dbInitSQLFile = scenarioDataPath.findActualDatabaseInitSQLFile(entry.getKey(), databaseType);
if (dbInitSQLFile.isPresent()) {
executeInitSQL(entry.getValue(), dbInitSQLFile.get());
}
}
}

private void fillExpectedDataSet() throws SQLException, IOException {
for (Entry<String, DataSource> entry : getExpectedDataSourceMap().entrySet()) {
executeInitSQL(entry.getValue(), scenarioDataPath.getInitSQLFile(Type.EXPECTED, databaseType));
}
}

private void executeInitSQL(final DataSource dataSource, final String initSQLFile) throws SQLException, IOException {
try (
Connection connection = dataSource.getConnection();
FileReader reader = new FileReader(initSQLFile)) {
RunScript.execute(connection, reader);
}
}

@Override
public String getAbbreviation() {
return databaseType.getType().toLowerCase();
}

Expand Down

This file was deleted.