1
0
mirror of synced 2025-12-23 21:03:15 -05:00

rename comprehensive test to typetest and add javadocs (#5675)

This commit is contained in:
Sherif A. Nada
2021-08-26 16:53:41 -07:00
committed by GitHub
parent cd5d6c47e9
commit 86bdb7e16f
16 changed files with 50 additions and 29 deletions

View File

@@ -55,7 +55,11 @@ import java.util.List;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
public abstract class SourceAbstractTest {
/**
* This abstract class contains helpful functionality and boilerplate for testing a source
* connector.
*/
public abstract class AbstractSourceConnectorTest {
private TestDestinationEnv environment;
private Path jobRoot;

View File

@@ -48,9 +48,14 @@ import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public abstract class SourceComprehensiveTest extends SourceAbstractTest {
/**
* This abstract class contains common helpers and boilerplate for comprehensively testing that all
* data types in a source can be read and handled correctly by the connector and within Airbyte's
* type system.
*/
public abstract class AbstractSourceDatabaseTypeTest extends AbstractSourceConnectorTest {
private static final Logger LOGGER = LoggerFactory.getLogger(SourceComprehensiveTest.class);
private static final Logger LOGGER = LoggerFactory.getLogger(AbstractSourceDatabaseTypeTest.class);
private final List<TestDataHolder> testDataHolders = new ArrayList<>();

View File

@@ -53,7 +53,7 @@ import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public abstract class SourceAcceptanceTest extends SourceAbstractTest {
public abstract class SourceAcceptanceTest extends AbstractSourceConnectorTest {
public static final String CDC_LSN = "_ab_cdc_lsn";
public static final String CDC_UPDATED_AT = "_ab_cdc_updated_at";

View File

@@ -36,7 +36,7 @@ import io.airbyte.commons.json.Jsons;
import io.airbyte.commons.string.Strings;
import io.airbyte.db.Database;
import io.airbyte.db.bigquery.TempBigQueryJoolDatabaseImpl;
import io.airbyte.integrations.standardtest.source.SourceComprehensiveTest;
import io.airbyte.integrations.standardtest.source.AbstractSourceDatabaseTypeTest;
import io.airbyte.integrations.standardtest.source.TestDataHolder;
import io.airbyte.integrations.standardtest.source.TestDestinationEnv;
import io.airbyte.protocol.models.JsonSchemaPrimitive;
@@ -47,7 +47,7 @@ import org.junit.jupiter.api.TestInstance;
import org.junit.jupiter.api.TestInstance.Lifecycle;
@TestInstance(Lifecycle.PER_CLASS)
public class BigQuerySourceComprehensiveTest extends SourceComprehensiveTest {
public class BigQuerySourceDatatypeTest extends AbstractSourceDatabaseTypeTest {
private static final Path CREDENTIALS_PATH = Path.of("secrets/credentials.json");
private static final String CREATE_SQL_PATTERN = "CREATE TABLE %1$s(%2$s NUMERIC(29), %3$s %4$s)";

View File

@@ -29,7 +29,7 @@ import com.google.common.collect.ImmutableMap;
import io.airbyte.commons.json.Jsons;
import io.airbyte.db.Database;
import io.airbyte.db.Databases;
import io.airbyte.integrations.standardtest.source.SourceComprehensiveTest;
import io.airbyte.integrations.standardtest.source.AbstractSourceDatabaseTypeTest;
import io.airbyte.integrations.standardtest.source.TestDataHolder;
import io.airbyte.integrations.standardtest.source.TestDestinationEnv;
import io.airbyte.protocol.models.JsonSchemaPrimitive;
@@ -39,12 +39,12 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testcontainers.containers.CockroachContainer;
public class CockroachDbSourceComprehensiveTest extends SourceComprehensiveTest {
public class CockroachDbSourceDatatypeTest extends AbstractSourceDatabaseTypeTest {
private CockroachContainer container;
private JsonNode config;
private static final Logger LOGGER = LoggerFactory
.getLogger(CockroachDbSourceComprehensiveTest.class);
.getLogger(CockroachDbSourceDatatypeTest.class);
@Override
protected Database setupDatabase() throws SQLException {

View File

@@ -30,14 +30,14 @@ import io.airbyte.commons.json.Jsons;
import io.airbyte.db.Database;
import io.airbyte.db.Databases;
import io.airbyte.integrations.source.db2.Db2Source;
import io.airbyte.integrations.standardtest.source.SourceComprehensiveTest;
import io.airbyte.integrations.standardtest.source.AbstractSourceDatabaseTypeTest;
import io.airbyte.integrations.standardtest.source.TestDataHolder;
import io.airbyte.integrations.standardtest.source.TestDestinationEnv;
import io.airbyte.protocol.models.JsonSchemaPrimitive;
import org.jooq.SQLDialect;
import org.testcontainers.containers.Db2Container;
public class Db2SourceComprehensiveTest extends SourceComprehensiveTest {
public class Db2SourceDatatypeTest extends AbstractSourceDatabaseTypeTest {
private static final String CREATE_TABLE_SQL = "CREATE TABLE %1$s(%2$s INTEGER NOT NULL PRIMARY KEY, %3$s %4$s)";
private static final String CREATE_TABLE_SQL_UNICODE = CREATE_TABLE_SQL + " CCSID UNICODE";

View File

@@ -58,6 +58,11 @@ import org.apache.commons.lang3.tuple.ImmutablePair;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* This class contains helper functions and boilerplate for implementing a source connector for a
* relational DB source which can be accessed via JDBC driver. If you are implementing a connector for
* a relational DB which has a JDBC driver, make an effort to use this class.
*/
public abstract class AbstractJdbcSource extends AbstractRelationalDbSource<JDBCType, JdbcDatabase> implements Source {
private static final Logger LOGGER = LoggerFactory.getLogger(AbstractJdbcSource.class);

View File

@@ -29,13 +29,13 @@ import com.google.common.collect.ImmutableMap;
import io.airbyte.commons.json.Jsons;
import io.airbyte.db.Database;
import io.airbyte.db.Databases;
import io.airbyte.integrations.standardtest.source.SourceComprehensiveTest;
import io.airbyte.integrations.standardtest.source.AbstractSourceDatabaseTypeTest;
import io.airbyte.integrations.standardtest.source.TestDataHolder;
import io.airbyte.integrations.standardtest.source.TestDestinationEnv;
import io.airbyte.protocol.models.JsonSchemaPrimitive;
import org.testcontainers.containers.MSSQLServerContainer;
public class CdcMssqlSourceComprehensiveTest extends SourceComprehensiveTest {
public class CdcMssqlSourceDatatypeTest extends AbstractSourceDatabaseTypeTest {
private MSSQLServerContainer<?> container;
private JsonNode config;

View File

@@ -31,13 +31,13 @@ import io.airbyte.commons.json.Jsons;
import io.airbyte.commons.string.Strings;
import io.airbyte.db.Database;
import io.airbyte.db.Databases;
import io.airbyte.integrations.standardtest.source.SourceComprehensiveTest;
import io.airbyte.integrations.standardtest.source.AbstractSourceDatabaseTypeTest;
import io.airbyte.integrations.standardtest.source.TestDataHolder;
import io.airbyte.integrations.standardtest.source.TestDestinationEnv;
import io.airbyte.protocol.models.JsonSchemaPrimitive;
import org.testcontainers.containers.MSSQLServerContainer;
public class MssqlSourceComprehensiveTest extends SourceComprehensiveTest {
public class MssqlSourceDatatypeTest extends AbstractSourceDatabaseTypeTest {
static final String DB_NAME = Strings.addRandomSuffix("db", "_", 10).toLowerCase();
protected static MSSQLServerContainer<?> container;

View File

@@ -29,14 +29,14 @@ import com.google.common.collect.ImmutableMap;
import io.airbyte.commons.json.Jsons;
import io.airbyte.db.Database;
import io.airbyte.db.Databases;
import io.airbyte.integrations.standardtest.source.SourceComprehensiveTest;
import io.airbyte.integrations.standardtest.source.AbstractSourceDatabaseTypeTest;
import io.airbyte.integrations.standardtest.source.TestDataHolder;
import io.airbyte.integrations.standardtest.source.TestDestinationEnv;
import io.airbyte.protocol.models.JsonSchemaPrimitive;
import org.jooq.SQLDialect;
import org.testcontainers.containers.MySQLContainer;
public class CdcMySqlSourceComprehensiveTest extends SourceComprehensiveTest {
public class CdcMySqlSourceDatatypeTest extends AbstractSourceDatabaseTypeTest {
private MySQLContainer<?> container;
private JsonNode config;

View File

@@ -30,14 +30,14 @@ import io.airbyte.commons.json.Jsons;
import io.airbyte.db.Database;
import io.airbyte.db.Databases;
import io.airbyte.integrations.source.mysql.MySqlSource.ReplicationMethod;
import io.airbyte.integrations.standardtest.source.SourceComprehensiveTest;
import io.airbyte.integrations.standardtest.source.AbstractSourceDatabaseTypeTest;
import io.airbyte.integrations.standardtest.source.TestDataHolder;
import io.airbyte.integrations.standardtest.source.TestDestinationEnv;
import io.airbyte.protocol.models.JsonSchemaPrimitive;
import org.jooq.SQLDialect;
import org.testcontainers.containers.MySQLContainer;
public class MySqlSourceComprehensiveTest extends SourceComprehensiveTest {
public class MySqlSourceDatatypeTest extends AbstractSourceDatabaseTypeTest {
private MySQLContainer<?> container;
private JsonNode config;

View File

@@ -29,7 +29,7 @@ import com.google.common.collect.ImmutableMap;
import io.airbyte.commons.json.Jsons;
import io.airbyte.db.Database;
import io.airbyte.db.Databases;
import io.airbyte.integrations.standardtest.source.SourceComprehensiveTest;
import io.airbyte.integrations.standardtest.source.AbstractSourceDatabaseTypeTest;
import io.airbyte.integrations.standardtest.source.TestDataHolder;
import io.airbyte.integrations.standardtest.source.TestDestinationEnv;
import io.airbyte.protocol.models.JsonSchemaPrimitive;
@@ -44,12 +44,12 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testcontainers.containers.OracleContainer;
public class OracleSourceComprehensiveTest extends SourceComprehensiveTest {
public class OracleSourceDatatypeTest extends AbstractSourceDatabaseTypeTest {
private OracleContainer container;
private JsonNode config;
private static final Logger LOGGER = LoggerFactory.getLogger(OracleSourceComprehensiveTest.class);
private static final Logger LOGGER = LoggerFactory.getLogger(OracleSourceDatatypeTest.class);
@Override
protected Database setupDatabase() throws Exception {

View File

@@ -29,7 +29,7 @@ import com.google.common.collect.ImmutableMap;
import io.airbyte.commons.json.Jsons;
import io.airbyte.db.Database;
import io.airbyte.db.Databases;
import io.airbyte.integrations.standardtest.source.SourceComprehensiveTest;
import io.airbyte.integrations.standardtest.source.AbstractSourceDatabaseTypeTest;
import io.airbyte.integrations.standardtest.source.TestDataHolder;
import io.airbyte.integrations.standardtest.source.TestDestinationEnv;
import io.airbyte.protocol.models.JsonSchemaPrimitive;
@@ -41,7 +41,7 @@ import org.testcontainers.utility.MountableFile;
* None of the tests in this class use the cdc path (run the tests and search for `using CDC: false`
* in logs). This is exact same as {@link PostgresSourceAcceptanceTest}
*/
public class CdcPostgresSourceComprehensiveTest extends SourceComprehensiveTest {
public class CdcPostgresSourceDatatypeTest extends AbstractSourceDatabaseTypeTest {
private static final String SLOT_NAME_BASE = "debezium_slot";
private static final String PUBLICATION = "publication";

View File

@@ -29,7 +29,7 @@ import com.google.common.collect.ImmutableMap;
import io.airbyte.commons.json.Jsons;
import io.airbyte.db.Database;
import io.airbyte.db.Databases;
import io.airbyte.integrations.standardtest.source.SourceComprehensiveTest;
import io.airbyte.integrations.standardtest.source.AbstractSourceDatabaseTypeTest;
import io.airbyte.integrations.standardtest.source.TestDataHolder;
import io.airbyte.integrations.standardtest.source.TestDestinationEnv;
import io.airbyte.protocol.models.JsonSchemaPrimitive;
@@ -39,12 +39,12 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testcontainers.containers.PostgreSQLContainer;
public class PostresSourceComprehensiveTest extends SourceComprehensiveTest {
public class PostresSourceDatatypeTest extends AbstractSourceDatabaseTypeTest {
private PostgreSQLContainer<?> container;
private JsonNode config;
private static final Logger LOGGER = LoggerFactory
.getLogger(PostresSourceComprehensiveTest.class);
.getLogger(PostresSourceDatatypeTest.class);
@Override
protected Database setupDatabase() throws SQLException {

View File

@@ -70,6 +70,13 @@ import java.util.stream.Stream;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* This class contains helper functions and boilerplate for implementing a source connector for a
* relational DB source.
*
* @see io.airbyte.integrations.source.jdbc.AbstractJdbcSource if you are implementing a relational DB which
* can be accessed via JDBC driver.
*/
public abstract class AbstractRelationalDbSource<DataType, Database extends SqlDatabase> extends BaseConnector implements Source {
private static final Logger LOGGER = LoggerFactory.getLogger(AbstractRelationalDbSource.class);

View File

@@ -30,14 +30,14 @@ import io.airbyte.commons.json.Jsons;
import io.airbyte.db.Database;
import io.airbyte.db.Databases;
import io.airbyte.integrations.source.snowflake.SnowflakeSource;
import io.airbyte.integrations.standardtest.source.SourceComprehensiveTest;
import io.airbyte.integrations.standardtest.source.AbstractSourceDatabaseTypeTest;
import io.airbyte.integrations.standardtest.source.TestDataHolder;
import io.airbyte.integrations.standardtest.source.TestDestinationEnv;
import io.airbyte.protocol.models.JsonSchemaPrimitive;
import java.nio.file.Path;
import org.jooq.SQLDialect;
public class SnowflakeSourceComprehensiveTest extends SourceComprehensiveTest {
public class SnowflakeSourceDatatypeTest extends AbstractSourceDatabaseTypeTest {
private static final String SCHEMA_NAME = "TEST";
private static final String INSERT_SEMI_STRUCTURED_SQL = "INSERT INTO %1$s (ID, TEST_COLUMN) SELECT %2$s, %3$s";