Skip to content

Commit 1e2971a

Browse files
add more logs into TestDatabase
1 parent faa513d commit 1e2971a

File tree

1 file changed

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

1 file changed

+39
-6
lines changed

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

+39-6
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,19 @@
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;
26+
import java.util.Date;
2427
import java.util.HashMap;
28+
import java.util.LinkedList;
2529
import java.util.List;
2630
import java.util.Map;
31+
import java.util.Queue;
32+
import java.util.concurrent.ConcurrentHashMap;
33+
import java.util.concurrent.ConcurrentLinkedDeque;
34+
import java.util.concurrent.atomic.AtomicInteger;
2735
import javax.sql.DataSource;
2836
import org.jooq.DSLContext;
2937
import org.jooq.SQLDialect;
@@ -51,12 +59,29 @@ abstract public class TestDatabase<C extends JdbcDatabaseContainer<?>, T extends
5159
final private ArrayList<String> cleanupSQL = new ArrayList<>();
5260
final private Map<String, String> connectionProperties = new HashMap<>();
5361

54-
private DataSource dataSource;
55-
private DSLContext dslContext;
62+
private volatile DataSource dataSource;
63+
private volatile DSLContext dslContext;
5664

65+
protected final int databaseId;
66+
private static final AtomicInteger nextDatabaseId= new AtomicInteger(0);
67+
68+
protected final int containerId;
69+
private static final AtomicInteger nextContainerId= new AtomicInteger(0);
70+
private static final Map<String, Integer> containerUidToId = new ConcurrentHashMap<>();
71+
72+
@SuppressWarnings("this-escape")
5773
protected TestDatabase(C container) {
5874
this.container = container;
5975
this.suffix = Strings.addRandomSuffix("", "_", 10);
76+
this.databaseId = nextDatabaseId.getAndIncrement();
77+
this.containerId = containerUidToId.computeIfAbsent(container.getContainerId(), k->nextContainerId.getAndIncrement());
78+
LOGGER.info(formatLogLine("creating database " + getDatabaseName()));
79+
}
80+
81+
private final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
82+
protected String formatLogLine(String logLine) {
83+
String retVal = "SGX TestDatabase databaseId=" + databaseId + ", containerId=" + containerId + " - " + logLine;
84+
return retVal;
6085
}
6186

6287
@SuppressWarnings("unchecked")
@@ -170,7 +195,14 @@ public Database getDatabase() {
170195
protected void execSQL(final List<String> sqls) {
171196
try {
172197
for (String sql : sqls) {
173-
getDslContext().execute(sql);
198+
LOGGER.info(formatLogLine("executing SQL: " + sql));
199+
try {
200+
getDslContext().execute(sql);
201+
LOGGER.info(formatLogLine("completed SQL: " + sql));
202+
} catch (Throwable t) {
203+
LOGGER.error(formatLogLine("error when executing SQL: " + sql + "e=\n" + t));
204+
throw t;
205+
}
174206
}
175207
} catch (DataAccessException e) {
176208
throw new RuntimeException(e);
@@ -182,12 +214,12 @@ protected void execInContainer(List<String> cmd) {
182214
return;
183215
}
184216
try {
185-
LOGGER.debug("executing {}", Strings.join(cmd, " "));
217+
LOGGER.info(formatLogLine(String.format("executing command %s", Strings.join(cmd, " "))));
186218
final var exec = getContainer().execInContainer(cmd.toArray(new String[0]));
187219
if (exec.getExitCode() == 0) {
188-
LOGGER.debug("execution success\nstdout:\n{}\nstderr:\n{}", exec.getStdout(), exec.getStderr());
220+
LOGGER.info(formatLogLine(String.format("execution success\nstdout:\n%s\nstderr:\n%s", exec.getStdout(), exec.getStderr())));
189221
} else {
190-
LOGGER.error("execution failure, code {}\nstdout:\n{}\nstderr:\n{}", exec.getExitCode(), exec.getStdout(), exec.getStderr());
222+
LOGGER.error(formatLogLine(String.format("execution failure, code %s\nstdout:\n%s\nstderr:\n%s", exec.getExitCode(), exec.getStdout(), exec.getStderr())));
191223
}
192224
} catch (IOException e) {
193225
throw new UncheckedIOException(e);
@@ -229,6 +261,7 @@ public B integrationTestConfigBuilder() {
229261
public void close() {
230262
execSQL(this.cleanupSQL);
231263
execInContainer(inContainerUndoBootstrapCmd());
264+
LOGGER.info ("closing database databaseId=" + databaseId);
232265
}
233266

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

0 commit comments

Comments
 (0)