diff --git a/airbyte-cdk/java/airbyte-cdk/core/src/main/kotlin/io/airbyte/cdk/integrations/BaseConnector.kt b/airbyte-cdk/java/airbyte-cdk/core/src/main/kotlin/io/airbyte/cdk/integrations/BaseConnector.kt index b3b6587d0d64..ef1d80ea635f 100644 --- a/airbyte-cdk/java/airbyte-cdk/core/src/main/kotlin/io/airbyte/cdk/integrations/BaseConnector.kt +++ b/airbyte-cdk/java/airbyte-cdk/core/src/main/kotlin/io/airbyte/cdk/integrations/BaseConnector.kt @@ -4,11 +4,19 @@ package io.airbyte.cdk.integrations import io.airbyte.cdk.integrations.base.Integration +import io.airbyte.cdk.integrations.base.adaptive.AdaptiveSourceRunner +import io.airbyte.commons.features.EnvVariableFeatureFlags +import io.airbyte.commons.features.FeatureFlags import io.airbyte.commons.json.Jsons import io.airbyte.commons.resources.MoreResources import io.airbyte.protocol.models.v0.ConnectorSpecification abstract class BaseConnector : Integration { + open val featureFlags: FeatureFlags = EnvVariableFeatureFlags() + + val isCloudDeployment + get() = + AdaptiveSourceRunner.CLOUD_MODE.equals(featureFlags.deploymentMode(), ignoreCase = true) /** * By convention the spec is stored as a resource for java connectors. That resource is called * spec.json. diff --git a/airbyte-cdk/java/airbyte-cdk/db-destinations/src/testFixtures/kotlin/io/airbyte/cdk/integrations/standardtest/destination/DestinationAcceptanceTest.kt b/airbyte-cdk/java/airbyte-cdk/db-destinations/src/testFixtures/kotlin/io/airbyte/cdk/integrations/standardtest/destination/DestinationAcceptanceTest.kt index d6deb02e60dd..f11ad9865d95 100644 --- a/airbyte-cdk/java/airbyte-cdk/db-destinations/src/testFixtures/kotlin/io/airbyte/cdk/integrations/standardtest/destination/DestinationAcceptanceTest.kt +++ b/airbyte-cdk/java/airbyte-cdk/db-destinations/src/testFixtures/kotlin/io/airbyte/cdk/integrations/standardtest/destination/DestinationAcceptanceTest.kt @@ -17,6 +17,8 @@ import io.airbyte.cdk.integrations.standardtest.destination.argproviders.util.Ar import io.airbyte.cdk.integrations.standardtest.destination.comparator.BasicTestDataComparator import io.airbyte.cdk.integrations.standardtest.destination.comparator.TestDataComparator import io.airbyte.commons.features.EnvVariableFeatureFlags +import io.airbyte.commons.features.FeatureFlags +import io.airbyte.commons.features.FeatureFlagsWrapper import io.airbyte.commons.jackson.MoreMappers import io.airbyte.commons.json.Jsons import io.airbyte.commons.lang.Exceptions @@ -98,6 +100,13 @@ abstract class DestinationAcceptanceTest( protected var testSchemas: HashSet = HashSet() private lateinit var testEnv: TestDestinationEnv + protected open val isCloudTest: Boolean = true + protected val featureFlags: FeatureFlags = + if (isCloudTest) { + FeatureFlagsWrapper.overridingDeploymentMode(EnvVariableFeatureFlags(), "CLOUD") + } else { + FeatureFlagsWrapper.overridingDeploymentMode(EnvVariableFeatureFlags(), "OSS") + } private lateinit var jobRoot: Path private lateinit var processFactory: ProcessFactory @@ -1911,7 +1920,7 @@ abstract class DestinationAcceptanceTest( null, null, false, - EnvVariableFeatureFlags() + featureFlags ) ) .run(JobGetSpecConfig().withDockerImage(imageName), jobRoot) @@ -1931,7 +1940,7 @@ abstract class DestinationAcceptanceTest( null, null, false, - EnvVariableFeatureFlags() + featureFlags ), mConnectorConfigUpdater ) @@ -1953,7 +1962,7 @@ abstract class DestinationAcceptanceTest( null, null, false, - EnvVariableFeatureFlags() + featureFlags ), mConnectorConfigUpdater ) @@ -1981,7 +1990,7 @@ abstract class DestinationAcceptanceTest( null, null, false, - EnvVariableFeatureFlags() + featureFlags ) ) } @@ -1997,7 +2006,7 @@ abstract class DestinationAcceptanceTest( null, null, false, - EnvVariableFeatureFlags() + featureFlags ) ) } diff --git a/airbyte-cdk/java/airbyte-cdk/db-sources/src/main/kotlin/io/airbyte/cdk/integrations/source/relationaldb/AbstractDbSource.kt b/airbyte-cdk/java/airbyte-cdk/db-sources/src/main/kotlin/io/airbyte/cdk/integrations/source/relationaldb/AbstractDbSource.kt index 1e67982a5e94..6372c1be6ded 100644 --- a/airbyte-cdk/java/airbyte-cdk/db-sources/src/main/kotlin/io/airbyte/cdk/integrations/source/relationaldb/AbstractDbSource.kt +++ b/airbyte-cdk/java/airbyte-cdk/db-sources/src/main/kotlin/io/airbyte/cdk/integrations/source/relationaldb/AbstractDbSource.kt @@ -22,8 +22,6 @@ import io.airbyte.cdk.integrations.util.ApmTraceUtils.addExceptionToTrace import io.airbyte.cdk.integrations.util.ConnectorExceptionUtil import io.airbyte.commons.exceptions.ConfigErrorException import io.airbyte.commons.exceptions.ConnectionErrorException -import io.airbyte.commons.features.EnvVariableFeatureFlags -import io.airbyte.commons.features.FeatureFlags import io.airbyte.commons.functional.CheckedConsumer import io.airbyte.commons.lang.Exceptions import io.airbyte.commons.stream.AirbyteStreamUtils @@ -49,8 +47,6 @@ private val LOGGER = KotlinLogging.logger {} abstract class AbstractDbSource protected constructor(driverClassName: String) : JdbcConnector(driverClassName), Source, AutoCloseable { - // TODO: Remove when the flag is not use anymore - var featureFlags: FeatureFlags = EnvVariableFeatureFlags() @Trace(operationName = CHECK_TRACE_OPERATION_NAME) @Throws(Exception::class) diff --git a/airbyte-integrations/connectors/destination-dev-null/README.md b/airbyte-integrations/connectors/destination-dev-null/README.md deleted file mode 100644 index 95f0acc09cc2..000000000000 --- a/airbyte-integrations/connectors/destination-dev-null/README.md +++ /dev/null @@ -1,66 +0,0 @@ -# Destination Dev Null - -This destination is a "safe" version of the [E2E Test destination](https://docs.airbyte.io/integrations/destinations/e2e-test). It only allows the "silent" mode. - -## Local development - -#### Building via Gradle - -From the Airbyte repository root, run: - -``` -./gradlew :airbyte-integrations:connectors:destination-dev-null:build -``` - -### Locally running the connector docker image - -#### Build - -Build the connector image via Gradle: - -``` -./gradlew :airbyte-integrations:connectors:destination-dev-null:buildConnectorImage -``` - -Once built, the docker image name and tag on your host will be `airbyte/destination-dev-null:dev`. -the Dockerfile. - -#### Run - -Then run any of the connector commands as follows: - -``` -docker run --rm airbyte/destination-dev-null:dev spec -docker run --rm -v $(pwd)/secrets:/secrets airbyte/destination-dev-null:dev check --config /secrets/config.json -docker run --rm -v $(pwd)/secrets:/secrets airbyte/destination-dev-null:dev discover --config /secrets/config.json -docker run --rm -v $(pwd)/secrets:/secrets -v $(pwd)/integration_tests:/integration_tests airbyte/destination-dev-null:dev read --config /secrets/config.json --catalog /integration_tests/configured_catalog.json -``` - -### Using gradle to run tests - -All commands should be run from airbyte project root. -To run unit tests: - -``` -./gradlew :airbyte-integrations:connectors:destination-dev-null:unitTest -``` - -To run acceptance and custom integration tests: - -``` -./gradlew :airbyte-integrations:connectors:destination-dev-null:integrationTest -``` - -## Dependency Management - -### Publishing a new version of the connector - -You've checked out the repo, implemented a million dollar feature, and you're ready to share your changes with the world. Now what? - -1. Make sure your changes are passing our test suite: `airbyte-ci connectors --name=destination-dev-null test` -2. Bump the connector version in `metadata.yaml`: increment the `dockerImageTag` value. Please follow [semantic versioning for connectors](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#semantic-versioning-for-connectors). -3. Make sure the `metadata.yaml` content is up to date. -4. Make the connector documentation and its changelog is up to date (`docs/integrations/destinations/e2e-test.md`). -5. Create a Pull Request: use [our PR naming conventions](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#pull-request-title-convention). -6. Pat yourself on the back for being an awesome contributor. -7. Someone from Airbyte will take a look at your PR and iterate with you to merge it into master. diff --git a/airbyte-integrations/connectors/destination-dev-null/build.gradle b/airbyte-integrations/connectors/destination-dev-null/build.gradle deleted file mode 100644 index dff97c133d29..000000000000 --- a/airbyte-integrations/connectors/destination-dev-null/build.gradle +++ /dev/null @@ -1,18 +0,0 @@ -plugins { - id 'airbyte-java-connector' -} - -airbyteJavaConnector { - cdkVersionRequired = '0.45.0' - features = ['db-destinations'] - useLocalCdk = true -} - -application { - mainClass = 'io.airbyte.integrations.destination.dev_null.DevNullDestination' - applicationDefaultJvmArgs = ['-XX:+ExitOnOutOfMemoryError', '-XX:MaxRAMPercentage=75.0'] -} - -dependencies { - implementation project(':airbyte-integrations:connectors:destination-e2e-test') -} diff --git a/airbyte-integrations/connectors/destination-dev-null/icon.svg b/airbyte-integrations/connectors/destination-dev-null/icon.svg deleted file mode 100644 index 36c7f62a33c1..000000000000 --- a/airbyte-integrations/connectors/destination-dev-null/icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/airbyte-integrations/connectors/destination-dev-null/metadata.yaml b/airbyte-integrations/connectors/destination-dev-null/metadata.yaml deleted file mode 100644 index d01d46fd0def..000000000000 --- a/airbyte-integrations/connectors/destination-dev-null/metadata.yaml +++ /dev/null @@ -1,28 +0,0 @@ -data: - connectorSubtype: file - connectorType: destination - definitionId: a7bcc9d8-13b3-4e49-b80d-d020b90045e3 - dockerImageTag: 0.5.0 - dockerRepository: airbyte/destination-dev-null - githubIssueLabel: destination-dev-null - icon: airbyte.svg - license: MIT - name: End-to-End Testing (/dev/null) - registryOverrides: - cloud: - enabled: true - oss: - enabled: false - releaseStage: alpha - documentationUrl: https://docs.airbyte.com/integrations/destinations/e2e-test - tags: - - language:java - ab_internal: - sl: 100 - ql: 100 - supportLevel: community - supportsRefreshes: true - connectorTestSuitesOptions: - - suite: unitTests - - suite: integrationTests -metadataSpecVersion: "1.0" diff --git a/airbyte-integrations/connectors/destination-dev-null/src/main/kotlin/io/airbyte/integrations/destination/dev_null/DevNullDestination.kt b/airbyte-integrations/connectors/destination-dev-null/src/main/kotlin/io/airbyte/integrations/destination/dev_null/DevNullDestination.kt deleted file mode 100644 index 9f0ccbaca6b4..000000000000 --- a/airbyte-integrations/connectors/destination-dev-null/src/main/kotlin/io/airbyte/integrations/destination/dev_null/DevNullDestination.kt +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 2023 Airbyte, Inc., all rights reserved. - */ -package io.airbyte.integrations.destination.dev_null - -import com.fasterxml.jackson.databind.node.ArrayNode -import com.fasterxml.jackson.databind.node.ObjectNode -import io.airbyte.cdk.integrations.base.Destination -import io.airbyte.cdk.integrations.base.IntegrationRunner -import io.airbyte.cdk.integrations.base.spec_modification.SpecModifyingDestination -import io.airbyte.commons.json.Jsons -import io.airbyte.integrations.destination.e2e_test.TestingDestinations -import io.airbyte.protocol.models.v0.ConnectorSpecification -import org.slf4j.Logger -import org.slf4j.LoggerFactory - -class DevNullDestination : SpecModifyingDestination(TestingDestinations()), Destination { - /** 1. Update the title. 2. Only keep the "silent" mode. */ - override fun modifySpec(originalSpec: ConnectorSpecification): ConnectorSpecification { - val spec = Jsons.clone(originalSpec) - - (spec.connectionSpecification as ObjectNode).put("title", DEV_NULL_DESTINATION_TITLE) - - val properties = - spec.connectionSpecification["properties"]["test_destination"] as ObjectNode - val types = properties["oneOf"] as ArrayNode - val typesIterator = types.elements() - while (typesIterator.hasNext()) { - val typeNode = typesIterator.next() - if ( - !typeNode["properties"]["test_destination_type"]["const"] - .asText() - .equals("silent", ignoreCase = true) - ) { - typesIterator.remove() - } - } - return spec - } - - companion object { - private val LOGGER: Logger = LoggerFactory.getLogger(DevNullDestination::class.java) - private const val DEV_NULL_DESTINATION_TITLE = "E2E Test (/dev/null) Destination Spec" - - @Throws(Exception::class) - @JvmStatic - fun main(args: Array) { - LOGGER.info("Starting destination: {}", DevNullDestination::class.java) - IntegrationRunner(DevNullDestination()).run(args) - LOGGER.info("Completed destination: {}", DevNullDestination::class.java) - } - } -} diff --git a/airbyte-integrations/connectors/destination-e2e-test/metadata.yaml b/airbyte-integrations/connectors/destination-e2e-test/metadata.yaml index ff58dea88f1d..7b5c1b5791c8 100644 --- a/airbyte-integrations/connectors/destination-e2e-test/metadata.yaml +++ b/airbyte-integrations/connectors/destination-e2e-test/metadata.yaml @@ -2,7 +2,7 @@ data: connectorSubtype: unknown connectorType: destination definitionId: 2eb65e87-983a-4fd7-b3e3-9d9dc6eb8537 - dockerImageTag: 0.5.0 + dockerImageTag: 0.6.0 dockerRepository: airbyte/destination-e2e-test githubIssueLabel: destination-e2e-test icon: airbyte.svg diff --git a/airbyte-integrations/connectors/destination-e2e-test/src/main/kotlin/io/airbyte/integrations/destination/e2e_test/TestingDestinations.kt b/airbyte-integrations/connectors/destination-e2e-test/src/main/kotlin/io/airbyte/integrations/destination/e2e_test/TestingDestinations.kt index 4fe45119e713..ba0d36f81c3e 100644 --- a/airbyte-integrations/connectors/destination-e2e-test/src/main/kotlin/io/airbyte/integrations/destination/e2e_test/TestingDestinations.kt +++ b/airbyte-integrations/connectors/destination-e2e-test/src/main/kotlin/io/airbyte/integrations/destination/e2e_test/TestingDestinations.kt @@ -4,11 +4,15 @@ package io.airbyte.integrations.destination.e2e_test import com.fasterxml.jackson.databind.JsonNode +import com.fasterxml.jackson.databind.node.ArrayNode +import com.fasterxml.jackson.databind.node.ObjectNode import com.google.common.collect.ImmutableMap import io.airbyte.cdk.integrations.BaseConnector import io.airbyte.cdk.integrations.base.AirbyteMessageConsumer import io.airbyte.cdk.integrations.base.Destination import io.airbyte.cdk.integrations.base.IntegrationRunner +import io.airbyte.commons.features.EnvVariableFeatureFlags +import io.airbyte.commons.features.FeatureFlags import io.airbyte.protocol.models.v0.AirbyteConnectionStatus import io.airbyte.protocol.models.v0.AirbyteMessage import io.airbyte.protocol.models.v0.ConfiguredAirbyteCatalog @@ -19,13 +23,14 @@ import org.slf4j.LoggerFactory class TestingDestinations @JvmOverloads constructor( + override val featureFlags: FeatureFlags = EnvVariableFeatureFlags(), private val destinationMap: Map = ImmutableMap.builder() .put(TestDestinationType.LOGGING, LoggingDestination()) .put(TestDestinationType.THROTTLED, ThrottledDestination()) .put(TestDestinationType.SILENT, SilentDestination()) .put(TestDestinationType.FAILING, FailAfterNDestination()) - .build() + .build(), ) : BaseConnector(), Destination { enum class TestDestinationType { LOGGING, @@ -42,6 +47,33 @@ constructor( ] } + override fun spec(): ConnectorSpecification { + if (isCloudDeployment) { + return super.spec() + } else { + /** 1. Update the title. 2. Only keep the "silent" mode. */ + val spec = super.spec() + + (spec.connectionSpecification as ObjectNode).put("title", DEV_NULL_DESTINATION_TITLE) + + val properties = + spec.connectionSpecification["properties"]["test_destination"] as ObjectNode + val types = properties["oneOf"] as ArrayNode + val typesIterator = types.elements() + while (typesIterator.hasNext()) { + val typeNode = typesIterator.next() + if ( + !typeNode["properties"]["test_destination_type"]["const"] + .asText() + .equals("silent", ignoreCase = true) + ) { + typesIterator.remove() + } + } + return spec + } + } + @Throws(Exception::class) override fun getConsumer( config: JsonNode, @@ -64,6 +96,7 @@ constructor( companion object { private val LOGGER: Logger = LoggerFactory.getLogger(TestingDestinations::class.java) + private const val DEV_NULL_DESTINATION_TITLE = "E2E Test (/dev/null) Destination Spec" @Throws(Exception::class) @JvmStatic diff --git a/airbyte-integrations/connectors/destination-e2e-test/src/main/kotlin/io/airbyte/integrations/destination/e2e_test/ThrottledDestination.kt b/airbyte-integrations/connectors/destination-e2e-test/src/main/kotlin/io/airbyte/integrations/destination/e2e_test/ThrottledDestination.kt index 7d95fc956ffc..a82c74e204a8 100644 --- a/airbyte-integrations/connectors/destination-e2e-test/src/main/kotlin/io/airbyte/integrations/destination/e2e_test/ThrottledDestination.kt +++ b/airbyte-integrations/connectors/destination-e2e-test/src/main/kotlin/io/airbyte/integrations/destination/e2e_test/ThrottledDestination.kt @@ -18,7 +18,7 @@ import org.slf4j.LoggerFactory * This destination logs each record it receives. It sleeps for millis_per_record between accepting * each record. Useful for simulating backpressure / slow destination writes. */ -class ThrottledDestination : BaseConnector(), Destination { +class ThrottledDestination() : BaseConnector(), Destination { override fun check(config: JsonNode): AirbyteConnectionStatus { return AirbyteConnectionStatus().withStatus(AirbyteConnectionStatus.Status.SUCCEEDED) } diff --git a/airbyte-integrations/connectors/destination-dev-null/src/test-integration/kotlin/io/airbyte/integrations/destination/dev_null/DevNullDestinationAcceptanceTest.kt b/airbyte-integrations/connectors/destination-e2e-test/src/test-integration/kotlin/io/airbyte/integrations/destination/e2e_test/DevNullDestinationAcceptanceTest.kt similarity index 87% rename from airbyte-integrations/connectors/destination-dev-null/src/test-integration/kotlin/io/airbyte/integrations/destination/dev_null/DevNullDestinationAcceptanceTest.kt rename to airbyte-integrations/connectors/destination-e2e-test/src/test-integration/kotlin/io/airbyte/integrations/destination/e2e_test/DevNullDestinationAcceptanceTest.kt index 4af0e6f96aa7..c781fd06b953 100644 --- a/airbyte-integrations/connectors/destination-dev-null/src/test-integration/kotlin/io/airbyte/integrations/destination/dev_null/DevNullDestinationAcceptanceTest.kt +++ b/airbyte-integrations/connectors/destination-e2e-test/src/test-integration/kotlin/io/airbyte/integrations/destination/e2e_test/DevNullDestinationAcceptanceTest.kt @@ -1,10 +1,9 @@ /* * Copyright (c) 2023 Airbyte, Inc., all rights reserved. */ -package io.airbyte.integrations.destination.dev_null +package io.airbyte.integrations.destination.e2e_test import com.fasterxml.jackson.databind.JsonNode -import io.airbyte.cdk.integrations.standardtest.destination.DestinationAcceptanceTest import io.airbyte.commons.json.Jsons import io.airbyte.protocol.models.v0.AirbyteMessage import io.airbyte.protocol.models.v0.AirbyteRecordMessage @@ -13,8 +12,8 @@ import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.Disabled import org.junit.jupiter.api.Test -class DevNullDestinationAcceptanceTest : DestinationAcceptanceTest() { - override val imageName = "airbyte/destination-dev-null:dev" +class DevNullDestinationAcceptanceTest : TestingSilentDestinationAcceptanceTest() { + override val isCloudTest = false override fun getConfig(): JsonNode { return Jsons.jsonNode( diff --git a/airbyte-integrations/connectors/destination-e2e-test/src/test-integration/kotlin/io/airbyte/integrations/destination/e2e_test/TestingSilentDestinationAcceptanceTest.kt b/airbyte-integrations/connectors/destination-e2e-test/src/test-integration/kotlin/io/airbyte/integrations/destination/e2e_test/TestingSilentDestinationAcceptanceTest.kt index 4c2979138a19..4d58ae101368 100644 --- a/airbyte-integrations/connectors/destination-e2e-test/src/test-integration/kotlin/io/airbyte/integrations/destination/e2e_test/TestingSilentDestinationAcceptanceTest.kt +++ b/airbyte-integrations/connectors/destination-e2e-test/src/test-integration/kotlin/io/airbyte/integrations/destination/e2e_test/TestingSilentDestinationAcceptanceTest.kt @@ -14,8 +14,9 @@ import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.Disabled import org.junit.jupiter.api.Test -class TestingSilentDestinationAcceptanceTest : DestinationAcceptanceTest() { +open class TestingSilentDestinationAcceptanceTest : DestinationAcceptanceTest() { override val imageName = "airbyte/destination-e2e-test:dev" + override val isCloudTest = true override fun getConfig(): JsonNode { return Jsons.jsonNode( diff --git a/airbyte-integrations/connectors/destination-dev-null/src/test/kotlin/io/airbyte/integrations/destination/dev_null/DevNullDestinationTest.kt b/airbyte-integrations/connectors/destination-e2e-test/src/test/kotlin/io/airbyte/integrations/destination/e2e_test/DevNullDestinationTest.kt similarity index 56% rename from airbyte-integrations/connectors/destination-dev-null/src/test/kotlin/io/airbyte/integrations/destination/dev_null/DevNullDestinationTest.kt rename to airbyte-integrations/connectors/destination-e2e-test/src/test/kotlin/io/airbyte/integrations/destination/e2e_test/DevNullDestinationTest.kt index e301f29d48a1..e013eb2e32e0 100644 --- a/airbyte-integrations/connectors/destination-dev-null/src/test/kotlin/io/airbyte/integrations/destination/dev_null/DevNullDestinationTest.kt +++ b/airbyte-integrations/connectors/destination-e2e-test/src/test/kotlin/io/airbyte/integrations/destination/e2e_test/DevNullDestinationTest.kt @@ -1,8 +1,10 @@ /* * Copyright (c) 2023 Airbyte, Inc., all rights reserved. */ -package io.airbyte.integrations.destination.dev_null +package io.airbyte.integrations.destination.e2e_test +import io.airbyte.commons.features.EnvVariableFeatureFlags +import io.airbyte.commons.features.FeatureFlagsWrapper import io.airbyte.commons.json.Jsons import io.airbyte.commons.resources.MoreResources import io.airbyte.protocol.models.v0.ConnectorSpecification @@ -13,13 +15,16 @@ internal class DevNullDestinationTest { @Test @Throws(Exception::class) fun testSpec() { - val actual = DevNullDestination().spec() + val actual = + TestingDestinations( + FeatureFlagsWrapper.overridingDeploymentMode(EnvVariableFeatureFlags(), "OSS") + ) + .spec() val expected = Jsons.deserialize( - MoreResources.readResource("expected_spec.json"), + MoreResources.readResource("expected_spec_oss.json"), ConnectorSpecification::class.java ) - Assertions.assertEquals(expected, actual) } } diff --git a/airbyte-integrations/connectors/destination-dev-null/src/test/resources/expected_spec.json b/airbyte-integrations/connectors/destination-e2e-test/src/test/resources/expected_spec_oss.json similarity index 100% rename from airbyte-integrations/connectors/destination-dev-null/src/test/resources/expected_spec.json rename to airbyte-integrations/connectors/destination-e2e-test/src/test/resources/expected_spec_oss.json diff --git a/docs/integrations/destinations/e2e-test.md b/docs/integrations/destinations/e2e-test.md index 37e0294df2cc..43bc798ddbbe 100644 --- a/docs/integrations/destinations/e2e-test.md +++ b/docs/integrations/destinations/e2e-test.md @@ -49,7 +49,8 @@ The OSS and Cloud variants have the same version number starting from version `0 | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :-------------------------------------------------------- | -| 0.5.0 | 2024-09-18 | [45650](https://github.com/airbytehq/airbyte/pull/45650) | upgrade cdk | +| 0.6.0 | 2024-09-18 | [45651](https://github.com/airbytehq/airbyte/pull/45651) | merge destination-e2e(OSS) and destination-dev-null(cloud) | +| 0.5.0 | 2024-09-18 | [45650](https://github.com/airbytehq/airbyte/pull/45650) | upgrade cdk | | 0.4.1 | 2024-09-18 | [45649](https://github.com/airbytehq/airbyte/pull/45649) | convert test code to kotlin | | 0.4.0 | 2024-09-18 | [45648](https://github.com/airbytehq/airbyte/pull/45648) | convert production code to kotlin | | 0.3.6 | 2024-05-09 | [38097](https://github.com/airbytehq/airbyte/pull/38097) | Support dedup |