Skip to content

Commit 649912f

Browse files
etsybaevrobbinhan
authored andcommitted
[13309] Destination-mssql: enabled DAT tests (airbytehq#16226)
1 parent 4c496a3 commit 649912f

File tree

3 files changed

+56
-39
lines changed

3 files changed

+56
-39
lines changed

airbyte-integrations/bases/base-java/src/main/java/io/airbyte/integrations/base/ssh/SshBastionContainer.java

+4
Original file line numberDiff line numberDiff line change
@@ -78,4 +78,8 @@ public void stopAndCloseContainers(final JdbcDatabaseContainer<?> db) {
7878
db.close();
7979
}
8080

81+
public GenericContainer getContainer() {
82+
return bastion;
83+
}
84+
8185
}

airbyte-integrations/connectors/destination-mssql/src/test-integration/java/io/airbyte/integrations/destination/mssql/MSSQLDestinationAcceptanceTestSSL.java

+25-19
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@
1515
import io.airbyte.db.jdbc.JdbcUtils;
1616
import io.airbyte.integrations.base.JavaBaseConstants;
1717
import io.airbyte.integrations.destination.ExtendedNameTransformer;
18-
import io.airbyte.integrations.standardtest.destination.DestinationAcceptanceTest;
18+
import io.airbyte.integrations.standardtest.destination.JdbcDestinationAcceptanceTest;
19+
import io.airbyte.integrations.standardtest.destination.comparator.TestDataComparator;
1920
import io.airbyte.integrations.util.HostPortResolver;
2021
import io.airbyte.test.utils.DatabaseConnectionHelper;
2122
import java.sql.SQLException;
22-
import java.util.ArrayList;
2323
import java.util.List;
2424
import java.util.stream.Collectors;
2525
import org.jooq.DSLContext;
@@ -29,7 +29,7 @@
2929
import org.testcontainers.containers.MSSQLServerContainer;
3030
import org.testcontainers.utility.DockerImageName;
3131

32-
public class MSSQLDestinationAcceptanceTestSSL extends DestinationAcceptanceTest {
32+
public class MSSQLDestinationAcceptanceTestSSL extends JdbcDestinationAcceptanceTest {
3333

3434
private static MSSQLServerContainer<?> db;
3535
private final ExtendedNameTransformer namingResolver = new ExtendedNameTransformer();
@@ -90,7 +90,7 @@ protected List<JsonNode> retrieveRecords(final TestDestinationEnv env,
9090
throws Exception {
9191
return retrieveRecordsFromTable(namingResolver.getRawTableName(streamName), namespace)
9292
.stream()
93-
.map(r -> Jsons.deserialize(r.get(JavaBaseConstants.COLUMN_NAME_DATA).asText()))
93+
.map(r -> r.get(JavaBaseConstants.COLUMN_NAME_DATA))
9494
.collect(Collectors.toList());
9595
}
9696

@@ -112,19 +112,6 @@ protected List<JsonNode> retrieveNormalizedRecords(final TestDestinationEnv env,
112112
return retrieveRecordsFromTable(tableName, namespace);
113113
}
114114

115-
@Override
116-
protected List<String> resolveIdentifier(final String identifier) {
117-
final List<String> result = new ArrayList<>();
118-
final String resolved = namingResolver.getIdentifier(identifier);
119-
result.add(identifier);
120-
result.add(resolved);
121-
if (!resolved.startsWith("\"")) {
122-
result.add(resolved.toLowerCase());
123-
result.add(resolved.toUpperCase());
124-
}
125-
return result;
126-
}
127-
128115
private List<JsonNode> retrieveRecordsFromTable(final String tableName, final String schemaName) throws SQLException {
129116
final DSLContext dslContext = DatabaseConnectionHelper.createDslContext(db, SQLDialect.DEFAULT);
130117
return new Database(dslContext).query(
@@ -133,8 +120,7 @@ private List<JsonNode> retrieveRecordsFromTable(final String tableName, final St
133120
return ctx
134121
.fetch(String.format("SELECT * FROM %s.%s ORDER BY %s ASC;", schemaName, tableName, JavaBaseConstants.COLUMN_NAME_EMITTED_AT))
135122
.stream()
136-
.map(r -> r.formatJSON(JdbcUtils.getDefaultJSONFormat()))
137-
.map(Jsons::deserialize)
123+
.map(this::getJsonFromRecord)
138124
.collect(Collectors.toList());
139125
});
140126
}
@@ -194,4 +180,24 @@ static void cleanUp() {
194180
db.close();
195181
}
196182

183+
@Override
184+
protected TestDataComparator getTestDataComparator() {
185+
return new MSSQLTestDataComparator();
186+
}
187+
188+
@Override
189+
protected boolean supportBasicDataTypeTest() {
190+
return true;
191+
}
192+
193+
@Override
194+
protected boolean supportArrayDataTypeTest() {
195+
return true;
196+
}
197+
198+
@Override
199+
protected boolean supportObjectDataTypeTest() {
200+
return true;
201+
}
202+
197203
}

airbyte-integrations/connectors/destination-mssql/src/test-integration/java/io/airbyte/integrations/destination/mssql/SshMSSQLDestinationAcceptanceTest.java

+27-20
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
import io.airbyte.integrations.base.ssh.SshBastionContainer;
1717
import io.airbyte.integrations.base.ssh.SshTunnel;
1818
import io.airbyte.integrations.destination.ExtendedNameTransformer;
19-
import io.airbyte.integrations.standardtest.destination.DestinationAcceptanceTest;
20-
import java.util.ArrayList;
19+
import io.airbyte.integrations.standardtest.destination.JdbcDestinationAcceptanceTest;
20+
import io.airbyte.integrations.standardtest.destination.comparator.TestDataComparator;
2121
import java.util.List;
2222
import java.util.stream.Collectors;
2323
import org.apache.commons.lang3.RandomStringUtils;
@@ -29,7 +29,7 @@
2929
* Abstract class that allows us to avoid duplicating testing logic for testing SSH with a key file
3030
* or with a password.
3131
*/
32-
public abstract class SshMSSQLDestinationAcceptanceTest extends DestinationAcceptanceTest {
32+
public abstract class SshMSSQLDestinationAcceptanceTest extends JdbcDestinationAcceptanceTest {
3333

3434
private final ExtendedNameTransformer namingResolver = new ExtendedNameTransformer();
3535

@@ -73,7 +73,7 @@ protected List<JsonNode> retrieveRecords(final TestDestinationEnv env,
7373
throws Exception {
7474
return retrieveRecordsFromTable(namingResolver.getRawTableName(streamName), namespace)
7575
.stream()
76-
.map(r -> Jsons.deserialize(r.get(JavaBaseConstants.COLUMN_NAME_DATA).asText()))
76+
.map(r -> r.get(JavaBaseConstants.COLUMN_NAME_DATA))
7777
.collect(Collectors.toList());
7878
}
7979

@@ -92,19 +92,6 @@ protected boolean supportsNormalization() {
9292
return true;
9393
}
9494

95-
@Override
96-
protected List<String> resolveIdentifier(final String identifier) {
97-
final List<String> result = new ArrayList<>();
98-
final String resolved = namingResolver.getIdentifier(identifier);
99-
result.add(identifier);
100-
result.add(resolved);
101-
if (!resolved.startsWith("\"")) {
102-
result.add(resolved.toLowerCase());
103-
result.add(resolved.toUpperCase());
104-
}
105-
return result;
106-
}
107-
10895
private static Database getDatabaseFromConfig(final JsonNode config) {
10996
final DSLContext dslContext = DSLContextFactory.create(
11097
config.get(JdbcUtils.USERNAME_KEY).asText(),
@@ -132,8 +119,7 @@ private List<JsonNode> retrieveRecordsFromTable(final String tableName, final St
132119
database, schema, tableName.toLowerCase(),
133120
JavaBaseConstants.COLUMN_NAME_EMITTED_AT))
134121
.stream()
135-
.map(r -> r.formatJSON(JdbcUtils.getDefaultJSONFormat()))
136-
.map(Jsons::deserialize)
122+
.map(this::getJsonFromRecord)
137123
.collect(Collectors.toList())));
138124
}
139125

@@ -164,7 +150,8 @@ private void startTestContainers() {
164150
private void initAndStartJdbcContainer() {
165151
db = new MSSQLServerContainer<>("mcr.microsoft.com/mssql/server:2019-CU16-ubuntu-20.04")
166152
.withNetwork(network)
167-
.acceptLicense();
153+
.acceptLicense()
154+
.dependsOn(bastion.getContainer());
168155
db.start();
169156
}
170157

@@ -173,4 +160,24 @@ protected void tearDown(final TestDestinationEnv testEnv) {
173160
bastion.stopAndCloseContainers(db);
174161
}
175162

163+
@Override
164+
protected TestDataComparator getTestDataComparator() {
165+
return new MSSQLTestDataComparator();
166+
}
167+
168+
@Override
169+
protected boolean supportBasicDataTypeTest() {
170+
return true;
171+
}
172+
173+
@Override
174+
protected boolean supportArrayDataTypeTest() {
175+
return true;
176+
}
177+
178+
@Override
179+
protected boolean supportObjectDataTypeTest() {
180+
return true;
181+
}
182+
176183
}

0 commit comments

Comments
 (0)