Skip to content

Commit

Permalink
Oracle & MongoDb destinations : Enable DAT tests (#11965)
Browse files Browse the repository at this point in the history
* add Boolean, Number, DateTimeWithTZ compare methods

* Improve value comparison

* Compare inherit objects element by element

* Move comparison methods to a new class not to overload the test class.
Basic - old implementation which provides backward compatibility of this PR.
Advanced - comparator required for destinations with enabled DAT tests.

* format

* Move common method to ComparatorUtils. + Review update

* format

* review

* review

* enable DAT tests for destination-oracle

* mark resolveIdentifier method as deprecated

* enable DAT tests for destination-mongodb

* remove size objects validation. We iterate expected elements and compare it with actualObject elements. Expected might have empty elements and they are equal missing element in the actual Object. Also, actualObject might contain additional elements which is not an exception.
  • Loading branch information
DoNotPanicUA authored Apr 19, 2022
1 parent 57d059f commit 0004cfa
Show file tree
Hide file tree
Showing 4 changed files with 90 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@
import io.airbyte.integrations.standardtest.destination.DestinationAcceptanceTest;
import java.util.ArrayList;
import java.util.List;

import io.airbyte.integrations.standardtest.destination.comparator.AdvancedTestDataComparator;
import io.airbyte.integrations.standardtest.destination.comparator.TestDataComparator;
import org.bson.Document;
import org.testcontainers.containers.MongoDBContainer;

Expand Down Expand Up @@ -89,6 +92,26 @@ protected void tearDown(final TestDestinationEnv testEnv) {
container.close();
}

@Override
protected TestDataComparator getTestDataComparator() {
return new AdvancedTestDataComparator();
}

@Override
protected boolean supportBasicDataTypeTest() {
return true;
}

@Override
protected boolean supportArrayDataTypeTest() {
return true;
}

@Override
protected boolean supportObjectDataTypeTest() {
return true;
}

/* Helpers */

private JsonNode getAuthTypeConfig() {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package io.airbyte.integrations.destination.oracle;

import io.airbyte.integrations.destination.ExtendedNameTransformer;
import io.airbyte.integrations.standardtest.destination.comparator.AdvancedTestDataComparator;

import java.util.ArrayList;
import java.util.List;

public class OracleTestDataComparator extends AdvancedTestDataComparator {

private final ExtendedNameTransformer namingResolver = new OracleNameTransformer();

@Override
protected List<String> resolveIdentifier(final String identifier) {
final List<String> result = new ArrayList<>();
final String resolved = namingResolver.getIdentifier(identifier);
result.add(identifier);
result.add(resolved);
if (!resolved.startsWith("\"")) {
result.add(resolved.toLowerCase());
result.add(resolved.toUpperCase());
}
return result;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;

import io.airbyte.integrations.standardtest.destination.comparator.TestDataComparator;
import org.testcontainers.containers.Network;

public abstract class SshOracleDestinationAcceptanceTest extends DestinationAcceptanceTest {
Expand Down Expand Up @@ -64,16 +66,23 @@ public ImmutableMap.Builder<Object, Object> getBasicOracleDbConfigBuilder(final
}

@Override
protected List<String> resolveIdentifier(final String identifier) {
final List<String> result = new ArrayList<>();
final String resolved = namingResolver.getIdentifier(identifier);
result.add(identifier);
result.add(resolved);
if (!resolved.startsWith("\"")) {
result.add(resolved.toLowerCase());
result.add(resolved.toUpperCase());
}
return result;
protected TestDataComparator getTestDataComparator() {
return new OracleTestDataComparator();
}

@Override
protected boolean supportBasicDataTypeTest() {
return true;
}

@Override
protected boolean supportArrayDataTypeTest() {
return true;
}

@Override
protected boolean supportObjectDataTypeTest() {
return true;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

import io.airbyte.integrations.standardtest.destination.comparator.AdvancedTestDataComparator;
import io.airbyte.integrations.standardtest.destination.comparator.TestDataComparator;
import org.junit.Test;

public class UnencryptedOracleDestinationAcceptanceTest extends DestinationAcceptanceTest {
Expand Down Expand Up @@ -78,6 +81,26 @@ protected boolean supportsDBT() {
return false;
}

@Override
protected TestDataComparator getTestDataComparator() {
return new OracleTestDataComparator();
}

@Override
protected boolean supportBasicDataTypeTest() {
return true;
}

@Override
protected boolean supportArrayDataTypeTest() {
return true;
}

@Override
protected boolean supportObjectDataTypeTest() {
return true;
}

@Override
protected List<JsonNode> retrieveNormalizedRecords(final TestDestinationEnv env,
final String streamName,
Expand All @@ -94,19 +117,6 @@ protected JsonNode getFailCheckConfig() {
return invalidConfig;
}

@Override
protected List<String> resolveIdentifier(final String identifier) {
final List<String> result = new ArrayList<>();
final String resolved = namingResolver.getIdentifier(identifier);
result.add(identifier);
result.add(resolved);
if (!resolved.startsWith("\"")) {
result.add(resolved.toLowerCase());
result.add(resolved.toUpperCase());
}
return result;
}

private List<JsonNode> retrieveRecordsFromTable(final String tableName, final String schemaName)
throws SQLException {
final List<org.jooq.Record> result = getDatabase(config)
Expand Down

0 comments on commit 0004cfa

Please sign in to comment.