blob: 2db1ebef522d4fe84fbaededeeef05b1d6d82114 [file] [log] [blame]
package org.apache.flink.connector.jdbc.databases.derby;
import org.apache.flink.connector.jdbc.databases.DatabaseMetadata;
import org.apache.flink.connector.jdbc.databases.DatabaseTest;
import org.apache.flink.util.FlinkRuntimeException;
import java.io.OutputStream;
import java.sql.DriverManager;
import java.sql.SQLException;
/** Derby database for testing. */
public interface DerbyDatabase extends DatabaseTest {
@SuppressWarnings("unused") // used in string constant in prepareDatabase
OutputStream DEV_NULL =
new OutputStream() {
@Override
public void write(int b) {}
};
DatabaseMetadata METADATA = startDatabase();
@Override
default DatabaseMetadata getMetadata() {
return METADATA;
}
static DatabaseMetadata startDatabase() {
DatabaseMetadata metadata = new DerbyMetadata("test");
try {
System.setProperty(
"derby.stream.error.field",
DerbyDatabase.class.getCanonicalName() + ".DEV_NULL");
Class.forName(metadata.getDriverClass());
DriverManager.getConnection(String.format("%s;create=true", metadata.getJdbcUrl()))
.close();
} catch (Exception e) {
throw new FlinkRuntimeException(e);
}
return metadata;
}
default void stopDatabase() throws Exception {
DatabaseMetadata metadata = getMetadata();
try {
DriverManager.getConnection(String.format("%s;shutdown=true", metadata.getJdbcUrl()))
.close();
} catch (SQLException ignored) {
}
}
}