Skip to content

Commit a147092

Browse files
add more logs into TestDatabase
1 parent e2a990e commit a147092

File tree

1 file changed

+37
-6
lines changed
  • airbyte-cdk/java/airbyte-cdk/core/src/testFixtures/java/io/airbyte/cdk/testutils

1 file changed

+37
-6
lines changed

airbyte-cdk/java/airbyte-cdk/core/src/testFixtures/java/io/airbyte/cdk/testutils/TestDatabase.java

+37-6
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,15 @@
1919
import java.io.IOException;
2020
import java.io.UncheckedIOException;
2121
import java.sql.SQLException;
22+
import java.text.DateFormat;
23+
import java.text.SimpleDateFormat;
2224
import java.time.Duration;
2325
import java.util.ArrayList;
2426
import java.util.HashMap;
2527
import java.util.List;
2628
import java.util.Map;
29+
import java.util.concurrent.ConcurrentHashMap;
30+
import java.util.concurrent.atomic.AtomicInteger;
2731
import javax.sql.DataSource;
2832
import org.jooq.DSLContext;
2933
import org.jooq.SQLDialect;
@@ -51,12 +55,30 @@ abstract public class TestDatabase<C extends JdbcDatabaseContainer<?>, T extends
5155
final private ArrayList<String> cleanupSQL = new ArrayList<>();
5256
final private Map<String, String> connectionProperties = new HashMap<>();
5357

54-
private DataSource dataSource;
55-
private DSLContext dslContext;
58+
private volatile DataSource dataSource;
59+
private volatile DSLContext dslContext;
5660

61+
protected final int databaseId;
62+
private static final AtomicInteger nextDatabaseId = new AtomicInteger(0);
63+
64+
protected final int containerId;
65+
private static final AtomicInteger nextContainerId = new AtomicInteger(0);
66+
private static final Map<String, Integer> containerUidToId = new ConcurrentHashMap<>();
67+
68+
@SuppressWarnings("this-escape")
5769
protected TestDatabase(C container) {
5870
this.container = container;
5971
this.suffix = Strings.addRandomSuffix("", "_", 10);
72+
this.databaseId = nextDatabaseId.getAndIncrement();
73+
this.containerId = containerUidToId.computeIfAbsent(container.getContainerId(), k -> nextContainerId.getAndIncrement());
74+
LOGGER.info(formatLogLine("creating database " + getDatabaseName()));
75+
}
76+
77+
private final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
78+
79+
protected String formatLogLine(String logLine) {
80+
String retVal = "SGX TestDatabase databaseId=" + databaseId + ", containerId=" + containerId + " - " + logLine;
81+
return retVal;
6082
}
6183

6284
@SuppressWarnings("unchecked")
@@ -170,7 +192,14 @@ public Database getDatabase() {
170192
protected void execSQL(final List<String> sqls) {
171193
try {
172194
for (String sql : sqls) {
173-
getDslContext().execute(sql);
195+
LOGGER.info(formatLogLine("executing SQL: " + sql));
196+
try {
197+
getDslContext().execute(sql);
198+
LOGGER.info(formatLogLine("completed SQL: " + sql));
199+
} catch (Throwable t) {
200+
LOGGER.error(formatLogLine("error when executing SQL: " + sql + "e=\n" + t));
201+
throw t;
202+
}
174203
}
175204
} catch (DataAccessException e) {
176205
throw new RuntimeException(e);
@@ -182,12 +211,13 @@ protected void execInContainer(List<String> cmd) {
182211
return;
183212
}
184213
try {
185-
LOGGER.debug("executing {}", Strings.join(cmd, " "));
214+
LOGGER.info(formatLogLine(String.format("executing command %s", Strings.join(cmd, " "))));
186215
final var exec = getContainer().execInContainer(cmd.toArray(new String[0]));
187216
if (exec.getExitCode() == 0) {
188-
LOGGER.debug("execution success\nstdout:\n{}\nstderr:\n{}", exec.getStdout(), exec.getStderr());
217+
LOGGER.info(formatLogLine(String.format("execution success\nstdout:\n%s\nstderr:\n%s", exec.getStdout(), exec.getStderr())));
189218
} else {
190-
LOGGER.error("execution failure, code {}\nstdout:\n{}\nstderr:\n{}", exec.getExitCode(), exec.getStdout(), exec.getStderr());
219+
LOGGER.error(formatLogLine(
220+
String.format("execution failure, code %s\nstdout:\n%s\nstderr:\n%s", exec.getExitCode(), exec.getStdout(), exec.getStderr())));
191221
}
192222
} catch (IOException e) {
193223
throw new UncheckedIOException(e);
@@ -229,6 +259,7 @@ public B integrationTestConfigBuilder() {
229259
public void close() {
230260
execSQL(this.cleanupSQL);
231261
execInContainer(inContainerUndoBootstrapCmd());
262+
LOGGER.info("closing database databaseId=" + databaseId);
232263
}
233264

234265
static public class ConfigBuilder<T extends TestDatabase<?, ?, ?>, B extends ConfigBuilder<T, B>> {

0 commit comments

Comments
 (0)