From 87f70ef08a7fa85abfd521fc779e228038a23092 Mon Sep 17 00:00:00 2001 From: Enrico Risa Date: Fri, 25 Oct 2024 10:55:42 +0200 Subject: [PATCH] chore: bumped to EDC 0.10.0 (#8) --- gradle/libs.stable.versions.toml | 8 +-- gradle/libs.versions.toml | 7 +-- .../dataplane-snapshot/build.gradle.kts | 10 ++-- .../tests/transfer/TransferEndToEndTest.java | 52 +++++++++++++++++-- 4 files changed, 63 insertions(+), 14 deletions(-) diff --git a/gradle/libs.stable.versions.toml b/gradle/libs.stable.versions.toml index 31cba3c..e8e584e 100644 --- a/gradle/libs.stable.versions.toml +++ b/gradle/libs.stable.versions.toml @@ -2,7 +2,7 @@ format.version = "1.1" [versions] -edc = "0.9.1" +edc = "0.10.0" postgres = "42.7.4" # add here @@ -31,6 +31,7 @@ edc-junit = { module = "org.eclipse.edc:junit", version.ref = "edc" } edc-jersey-core = { module = "org.eclipse.edc:jersey-core", version.ref = "edc" } edc-jetty-core = { module = "org.eclipse.edc:jetty-core", version.ref = "edc" } edc-configuration-filesystem = { module = "org.eclipse.edc:configuration-filesystem", version.ref = "edc" } +edc-token-core = { module = "org.eclipse.edc:token-core", version.ref = "edc" } # Control Plane-specific dependencies edc-controlplane-core = { module = "org.eclipse.edc:control-plane-core", version.ref = "edc" } @@ -105,10 +106,11 @@ controlplane = ["edc-configuration-filesystem", "edc-controlplane-core", "edc-au "edc-api-management", "edc-api-management-config", "edc-api-management-edr", "edc-api-management-dataplaneselector", "edc-api-observability", "edc-dsp", "edc-spi-jwt", "edc-http", "edc-controlplane-callback-dispatcher-event", "edc-controlplane-callback-dispatcher-http", "edc-identity-core-did", "edc-iam-mock", "edc-identity-trust-transform", - "edc-api-control-configuration", "edc-lib-transform", "edc-identity-vc-ldp", "edc-did-web", "edc-lib-jws2020", "edc-core-edrstore", "edc-edr-storereceiver"] + "edc-api-control-configuration", "edc-lib-transform", "edc-identity-vc-ldp", "edc-did-web", "edc-lib-jws2020", "edc-core-edrstore", + "edc-edr-storereceiver", "edc-token-core"] dataplane = ["edc-configuration-filesystem", "edc-jersey-core", "edc-jetty-core", "edc-dataplane-core", "edc-dataplane-api-control-config", "edc-dataplane-api-control-client", "edc-dataplane-selfregistration", - "edc-dataplane-http", "edc-dataplane-http-oauth2", "edc-dataplane-api-public", "edc-dataplane-api-signaling", "edc-dataplane-iam"] + "edc-dataplane-http", "edc-dataplane-http-oauth2", "edc-dataplane-api-public", "edc-dataplane-api-signaling", "edc-dataplane-iam", "edc-token-core"] sql-controlplane = ["edc-sql-assetindex", "edc-sql-contractdef", "edc-sql-contractneg", "edc-sql-policydef", "edc-sql-edrcache", "edc-sql-transferprocess", "edc-sql-dataplane-instancestore", "edc-sql-core", "edc-sql-lease", "edc-sql-policymonitor", diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 49dd88c..25e99a5 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,7 +2,7 @@ format.version = "1.1" [versions] -edc = "0.10.0-SNAPSHOT" +edc = "0.11.0-SNAPSHOT" postgres = "42.7.4" jakarta-json = "2.1.3" jackson = "2.18.0" @@ -33,6 +33,7 @@ edc-jsonld = { module = "org.eclipse.edc:json-ld", version.ref = "edc" } edc-junit = { module = "org.eclipse.edc:junit", version.ref = "edc" } edc-jersey-core = { module = "org.eclipse.edc:jersey-core", version.ref = "edc" } edc-jetty-core = { module = "org.eclipse.edc:jetty-core", version.ref = "edc" } +edc-token-core = { module = "org.eclipse.edc:token-core", version.ref = "edc" } # Control Plane-specific dependencies edc-controlplane-core = { module = "org.eclipse.edc:control-plane-core", version.ref = "edc" } @@ -111,14 +112,14 @@ testcontainers-postgres = { module = "org.testcontainers:postgresql", version.re [bundles] dpf = ["edc-dpf-selector-core", "edc-spi-dataplane-selector", "edc-dpf-selector-control-api", "edc-dpf-signaling-client", "edc-dpf-transfer-signaling"] -controlplane = ["edc-controlplane-core", "edc-auth-tokenbased", "edc-auth-configuration", "edc-policy-monitor-core", +controlplane = ["edc-token-core", "edc-controlplane-core", "edc-auth-tokenbased", "edc-auth-configuration", "edc-policy-monitor-core", "edc-api-management", "edc-api-management-config", "edc-api-management-edr", "edc-api-management-dataplaneselector", "edc-api-observability", "edc-dsp", "edc-spi-jwt", "edc-http", "edc-controlplane-callback-dispatcher-event", "edc-controlplane-callback-dispatcher-http", "edc-identity-core-did", "edc-iam-mock", "edc-identity-trust-transform", "edc-api-control-configuration", "edc-lib-transform", "edc-identity-vc-ldp", "edc-did-web", "edc-lib-jws2020", "edc-core-edrstore", "edc-edr-storereceiver"] dataplane = ["edc-jersey-core", "edc-jetty-core", "edc-dataplane-core", "edc-dataplane-api-control-config", "edc-dataplane-api-control-client", "edc-dataplane-selfregistration", - "edc-dataplane-http", "edc-dataplane-http-oauth2", "edc-dataplane-api-public", "edc-dataplane-api-signaling", "edc-dataplane-iam"] + "edc-dataplane-http", "edc-dataplane-http-oauth2", "edc-dataplane-api-public", "edc-dataplane-api-signaling", "edc-dataplane-iam", "edc-token-core"] sql-controlplane = ["edc-sql-assetindex", "edc-sql-contractdef", "edc-sql-contractneg", "edc-sql-policydef", "edc-sql-edrcache", "edc-sql-transferprocess", "edc-sql-dataplane-instancestore", "edc-sql-core", "edc-sql-lease", "edc-sql-policymonitor", diff --git a/runtimes/snapshot/dataplane-snapshot/build.gradle.kts b/runtimes/snapshot/dataplane-snapshot/build.gradle.kts index 33168ea..1f6a678 100644 --- a/runtimes/snapshot/dataplane-snapshot/build.gradle.kts +++ b/runtimes/snapshot/dataplane-snapshot/build.gradle.kts @@ -19,14 +19,14 @@ plugins { } dependencies { - runtimeOnly(stableLibs.edc.api.observability) - runtimeOnly(stableLibs.bundles.dataplane) - runtimeOnly(stableLibs.edc.jsonld) // needed by the DataPlaneSignalingApi - runtimeOnly(stableLibs.edc.dpf.selector.client) // for the selector service -> self registration + runtimeOnly(libs.edc.api.observability) + runtimeOnly(libs.bundles.dataplane) + runtimeOnly(libs.edc.jsonld) // needed by the DataPlaneSignalingApi + runtimeOnly(libs.edc.dpf.selector.client) // for the selector service -> self registration // uncomment the following lines to compile with Hashicorp Vault and Postgres persistence // runtimeOnly(stableLibs.edc.vault.hashicorp) - runtimeOnly(stableLibs.bundles.sql.dataplane) + runtimeOnly(libs.bundles.sql.dataplane) } diff --git a/tests/compatibility-tests/src/test/java/org/eclipse/edc/compatibility/tests/transfer/TransferEndToEndTest.java b/tests/compatibility-tests/src/test/java/org/eclipse/edc/compatibility/tests/transfer/TransferEndToEndTest.java index f77bdf1..03261f4 100644 --- a/tests/compatibility-tests/src/test/java/org/eclipse/edc/compatibility/tests/transfer/TransferEndToEndTest.java +++ b/tests/compatibility-tests/src/test/java/org/eclipse/edc/compatibility/tests/transfer/TransferEndToEndTest.java @@ -53,6 +53,7 @@ import static org.awaitility.Awaitility.await; import static org.eclipse.edc.connector.controlplane.test.system.utils.PolicyFixtures.noConstraintPolicy; import static org.eclipse.edc.connector.controlplane.transfer.spi.types.TransferProcessStates.STARTED; +import static org.eclipse.edc.connector.controlplane.transfer.spi.types.TransferProcessStates.SUSPENDED; import static org.eclipse.edc.spi.constants.CoreConstants.EDC_NAMESPACE; import static org.eclipse.edc.sql.testfixtures.PostgresqlEndToEndInstance.createDatabase; import static org.eclipse.edc.util.io.Ports.getFreePort; @@ -128,7 +129,9 @@ void storeKeys() { @ParameterizedTest @ArgumentsSource(ParticipantsArgProvider.class) - void httpPullTransfer(BaseParticipant consumer, BaseParticipant provider) { + void httpPullTransfer(BaseParticipant consumer, BaseParticipant provider, String protocol) { + consumer.setProtocol(protocol); + provider.setProtocol(protocol); provider.waitForDataPlane(); providerDataSource.when(HttpRequest.request()).respond(HttpResponse.response().withBody("data")); var assetId = UUID.randomUUID().toString(); @@ -161,6 +164,47 @@ void httpPullTransfer(BaseParticipant consumer, BaseParticipant provider) { } + @ParameterizedTest + @ArgumentsSource(ParticipantsArgProvider.class) + void suspendAndResume_httpPull_dataTransfer(BaseParticipant consumer, BaseParticipant provider, String protocol) { + consumer.setProtocol(protocol); + provider.setProtocol(protocol); + provider.waitForDataPlane(); + providerDataSource.when(HttpRequest.request()).respond(HttpResponse.response().withBody("data")); + var assetId = UUID.randomUUID().toString(); + createResourcesOnProvider(provider, assetId, PolicyFixtures.noConstraintPolicy(), httpSourceDataAddress()); + + var transferProcessId = consumer.requestAssetFrom(assetId, provider) + .withTransferType("HttpData-PULL") + .execute(); + + consumer.awaitTransferToBeInState(transferProcessId, STARTED); + + var edr = await().atMost(consumer.getTimeout()).until(() -> consumer.getEdr(transferProcessId), Objects::nonNull); + + var msg = UUID.randomUUID().toString(); + await().atMost(consumer.getTimeout()).untilAsserted(() -> consumer.pullData(edr, Map.of("message", msg), body -> assertThat(body).isEqualTo("data"))); + + consumer.suspendTransfer(transferProcessId, "supension"); + + consumer.awaitTransferToBeInState(transferProcessId, SUSPENDED); + + // checks that the EDR is gone once the transfer has been suspended + await().atMost(consumer.getTimeout()).untilAsserted(() -> assertThatThrownBy(() -> consumer.getEdr(transferProcessId))); + // checks that transfer fails + await().atMost(consumer.getTimeout()).untilAsserted(() -> assertThatThrownBy(() -> consumer.pullData(edr, Map.of("message", msg), body -> assertThat(body).isEqualTo("data")))); + + consumer.resumeTransfer(transferProcessId); + + // check that transfer is available again + consumer.awaitTransferToBeInState(transferProcessId, STARTED); + var secondEdr = await().atMost(consumer.getTimeout()).until(() -> consumer.getEdr(transferProcessId), Objects::nonNull); + var secondMessage = UUID.randomUUID().toString(); + await().atMost(consumer.getTimeout()).untilAsserted(() -> consumer.pullData(secondEdr, Map.of("message", secondMessage), body -> assertThat(body).isEqualTo("data"))); + + providerDataSource.verify(HttpRequest.request("/source").withMethod("GET")); + } + protected void createResourcesOnProvider(BaseParticipant provider, String assetId, JsonObject contractPolicy, Map dataAddressProperties) { provider.createAsset(assetId, Map.of("description", "description"), dataAddressProperties); var contractPolicyId = provider.createPolicyDefinition(contractPolicy); @@ -173,8 +217,10 @@ private static class ParticipantsArgProvider implements ArgumentsProvider { @Override public Stream provideArguments(ExtensionContext context) throws Exception { return Stream.of( - Arguments.of(REMOTE_PARTICIPANT, LOCAL_PARTICIPANT), - Arguments.of(LOCAL_PARTICIPANT, REMOTE_PARTICIPANT) + Arguments.of(REMOTE_PARTICIPANT, LOCAL_PARTICIPANT, "dataspace-protocol-http"), + Arguments.of(LOCAL_PARTICIPANT, REMOTE_PARTICIPANT, "dataspace-protocol-http"), + Arguments.of(REMOTE_PARTICIPANT, LOCAL_PARTICIPANT, "dataspace-protocol-http:2024/1"), + Arguments.of(LOCAL_PARTICIPANT, REMOTE_PARTICIPANT, "dataspace-protocol-http:2024/1") ); } }