From 7493208335e959cd1da5e4eb0faea597be14e398 Mon Sep 17 00:00:00 2001 From: Jim Marino Date: Thu, 21 Mar 2024 21:39:10 +0100 Subject: [PATCH] feat: Introduce boot-lib and http-lib modules (#4030) * Introduce http-lib and boot-lib modules; break dependencies between the connector-core and junit modules * Fix merge problem * Fix dependencies * Fix more dependencies * Fix more dependencies * Fix more dependencies --- core/common/connector-core/build.gradle.kts | 3 +- .../core/CoreDefaultServicesExtension.java | 4 +- core/common/edr-store-core/build.gradle.kts | 2 + .../VaultEndpointDataReferenceCacheTest.java | 2 +- .../EndpointDataReferenceStoreImplTest.java | 4 +- core/common/junit/build.gradle.kts | 9 +- .../edc/junit/testfixtures/TestUtils.java | 66 +------------ .../edc/junit/extension/EdcExtensionTest.java | 2 +- .../edc/junit/testfixtures/TestUtilsTest.java | 62 ------------- core/common/lib/boot-lib/build.gradle.kts | 27 ++++++ .../edc/boot}/vault/InMemoryVault.java | 8 +- .../edc}/core/vault/InMemoryVaultTest.java | 3 +- core/common/lib/http-lib/build.gradle.kts | 32 +++++++ .../http/client}/EdcHttpClientImpl.java | 4 +- .../http/client}/EdcHttpClientImplTest.java | 20 +++- .../java/org/eclipse/edc/util/io/Ports.java | 92 +++++++++++++++++++ .../org/eclipse/edc/util/io/PortsTest.java | 62 +++++++++++++ .../catalog-core/build.gradle.kts | 1 + .../service/asset/AssetEventDispatchTest.java | 2 +- .../ContractDefinitionEventDispatchTest.java | 2 +- .../ContractNegotiationEventDispatchTest.java | 2 +- .../PolicyDefinitionEventDispatchTest.java | 2 +- .../TransferProcessEventDispatchTest.java | 2 +- .../common/api/api-core/build.gradle.kts | 1 + .../events/events-cloud-http/build.gradle.kts | 2 + .../http/CloudEventsHttpExtensionTest.java | 4 +- .../common/http/jersey-core/build.gradle.kts | 2 + .../edc/web/jersey/JerseyRestServiceTest.java | 2 +- .../ExceptionMappersIntegrationTest.java | 2 +- .../ValidationIntegrationTest.java | 2 +- .../testfixtures/RestControllerTestBase.java | 2 +- .../identity-did-core/build.gradle.kts | 2 + .../identity-trust-sts-core/build.gradle.kts | 4 + ...StsClientTokenIssuanceIntegrationTest.java | 2 +- .../oauth2/client/Oauth2ClientImplTest.java | 2 +- .../iam/oauth2/oauth2-daps/build.gradle.kts | 1 + .../edc/jsonld/TitaniumJsonLdTest.java | 2 +- .../vault/vault-hashicorp/build.gradle.kts | 2 + ...nsferProcessHttpClientIntegrationTest.java | 2 +- ...enericHttpRemoteDispatcherWrapperTest.java | 2 +- .../HttpProvisionerExtensionEndToEndTest.java | 2 +- ...amicEndpointDataReferenceReceiverTest.java | 2 +- ...HttpEndpointDataReferenceReceiverTest.java | 2 +- .../client/RemoteDataPlaneClientTest.java | 2 +- .../http/DataPlaneHttpExtensionTest.java | 2 +- .../http/DataPlaneHttpIntegrationTests.java | 2 +- ...erPullTransferDataAddressResolverTest.java | 2 +- .../client/DataPlaneSignalingClientTest.java | 2 +- settings.gradle.kts | 3 + .../tests/build.gradle.kts | 2 +- .../e2e/participant/DataPlaneParticipant.java | 2 +- .../e2e-transfer-test/runner/build.gradle.kts | 3 +- .../e2e/TransferStreamingEndToEndTest.java | 2 +- .../participant/BaseEndToEndParticipant.java | 2 +- .../EndToEndTransferParticipant.java | 2 +- .../SignalingEndToEndTransferTest.java | 2 +- .../e2e/managementapi/InMemoryRuntime.java | 2 +- .../ManagementApiEndToEndTestBase.java | 2 +- .../protocol/DspCatalogApiEndToEndTest.java | 4 +- .../DspNegotiationApiEndToEndTest.java | 4 +- .../protocol/DspTransferApiEndToEndTest.java | 4 +- .../protocol/DspVersionApiEndToEndTest.java | 4 +- .../sts-api-test-runner/build.gradle.kts | 2 +- .../e2e/sts/api/RemoteStsEndToEndTest.java | 2 +- .../test/e2e/sts/api/StsApiEndToEndTest.java | 2 +- .../sts-api-test-runtime/build.gradle.kts | 1 + .../tracing/BaseTelemetryEndToEndTest.java | 2 +- 67 files changed, 322 insertions(+), 190 deletions(-) delete mode 100644 core/common/junit/src/test/java/org/eclipse/edc/junit/testfixtures/TestUtilsTest.java create mode 100644 core/common/lib/boot-lib/build.gradle.kts rename core/common/{connector-core/src/main/java/org/eclipse/edc/connector/core => lib/boot-lib/src/main/java/org/eclipse/edc/boot}/vault/InMemoryVault.java (89%) rename core/common/{connector-core/src/test/java/org/eclipse/edc/connector => lib/boot-lib/src/test/java/org/eclipse/edc}/core/vault/InMemoryVaultTest.java (95%) create mode 100644 core/common/lib/http-lib/build.gradle.kts rename core/common/{connector-core/src/main/java/org/eclipse/edc/connector/core/base => lib/http-lib/src/main/java/org/eclipse/http/client}/EdcHttpClientImpl.java (98%) rename core/common/{connector-core/src/test/java/org/eclipse/edc/connector/core/base => lib/http-lib/src/test/java/org/eclipse/http/client}/EdcHttpClientImplTest.java (94%) create mode 100644 core/common/util/src/main/java/org/eclipse/edc/util/io/Ports.java create mode 100644 core/common/util/src/test/java/org/eclipse/edc/util/io/PortsTest.java diff --git a/core/common/connector-core/build.gradle.kts b/core/common/connector-core/build.gradle.kts index 4880d189b20..67894e32f9d 100644 --- a/core/common/connector-core/build.gradle.kts +++ b/core/common/connector-core/build.gradle.kts @@ -32,8 +32,9 @@ dependencies { implementation(project(":core:common:transform-core")) implementation(project(":core:common:util")) implementation(project(":core:common:validator-core")) + implementation(project(":core:common:lib:boot-lib")) + implementation(project(":core:common:lib:http-lib")) - implementation(libs.dnsOverHttps) implementation(libs.bouncyCastle.bcpkixJdk18on) implementation(libs.nimbus.jwt) implementation(libs.tink) diff --git a/core/common/connector-core/src/main/java/org/eclipse/edc/connector/core/CoreDefaultServicesExtension.java b/core/common/connector-core/src/main/java/org/eclipse/edc/connector/core/CoreDefaultServicesExtension.java index 5c2b1ef67fb..ea750ba6ca3 100644 --- a/core/common/connector-core/src/main/java/org/eclipse/edc/connector/core/CoreDefaultServicesExtension.java +++ b/core/common/connector-core/src/main/java/org/eclipse/edc/connector/core/CoreDefaultServicesExtension.java @@ -17,14 +17,13 @@ import dev.failsafe.RetryPolicy; import okhttp3.EventListener; import okhttp3.OkHttpClient; -import org.eclipse.edc.connector.core.base.EdcHttpClientImpl; +import org.eclipse.edc.boot.vault.InMemoryVault; import org.eclipse.edc.connector.core.base.OkHttpClientConfiguration; import org.eclipse.edc.connector.core.base.OkHttpClientFactory; import org.eclipse.edc.connector.core.base.RetryPolicyConfiguration; import org.eclipse.edc.connector.core.base.RetryPolicyFactory; import org.eclipse.edc.connector.core.base.agent.NoOpParticipantIdMapper; import org.eclipse.edc.connector.core.event.EventExecutorServiceContainer; -import org.eclipse.edc.connector.core.vault.InMemoryVault; import org.eclipse.edc.runtime.metamodel.annotation.Extension; import org.eclipse.edc.runtime.metamodel.annotation.Inject; import org.eclipse.edc.runtime.metamodel.annotation.Provider; @@ -39,6 +38,7 @@ import org.eclipse.edc.transaction.datasource.spi.DefaultDataSourceRegistry; import org.eclipse.edc.transaction.spi.NoopTransactionContext; import org.eclipse.edc.transaction.spi.TransactionContext; +import org.eclipse.http.client.EdcHttpClientImpl; import java.util.concurrent.Executors; diff --git a/core/common/edr-store-core/build.gradle.kts b/core/common/edr-store-core/build.gradle.kts index eee9b65a77e..4e5cbea9b00 100644 --- a/core/common/edr-store-core/build.gradle.kts +++ b/core/common/edr-store-core/build.gradle.kts @@ -22,5 +22,7 @@ dependencies { implementation(project(":core:common:connector-core")) testImplementation(project(":core:common:junit")) + testImplementation(project(":core:common:lib:boot-lib")) + testImplementation(testFixtures(project(":spi:common:edr-store-spi"))) } diff --git a/core/common/edr-store-core/src/test/java/org/eclipse/edc/core/edr/defaults/VaultEndpointDataReferenceCacheTest.java b/core/common/edr-store-core/src/test/java/org/eclipse/edc/core/edr/defaults/VaultEndpointDataReferenceCacheTest.java index ab2870b3b0e..421e72d948c 100644 --- a/core/common/edr-store-core/src/test/java/org/eclipse/edc/core/edr/defaults/VaultEndpointDataReferenceCacheTest.java +++ b/core/common/edr-store-core/src/test/java/org/eclipse/edc/core/edr/defaults/VaultEndpointDataReferenceCacheTest.java @@ -15,7 +15,7 @@ package org.eclipse.edc.core.edr.defaults; import com.fasterxml.jackson.databind.ObjectMapper; -import org.eclipse.edc.connector.core.vault.InMemoryVault; +import org.eclipse.edc.boot.vault.InMemoryVault; import org.eclipse.edc.edr.spi.store.EndpointDataReferenceCache; import org.eclipse.tractusx.edc.edr.spi.store.EndpointDataReferenceCacheTestBase; diff --git a/core/common/edr-store-core/src/test/java/org/eclipse/edc/core/edr/store/EndpointDataReferenceStoreImplTest.java b/core/common/edr-store-core/src/test/java/org/eclipse/edc/core/edr/store/EndpointDataReferenceStoreImplTest.java index 577252501ae..228048e0e1a 100644 --- a/core/common/edr-store-core/src/test/java/org/eclipse/edc/core/edr/store/EndpointDataReferenceStoreImplTest.java +++ b/core/common/edr-store-core/src/test/java/org/eclipse/edc/core/edr/store/EndpointDataReferenceStoreImplTest.java @@ -15,8 +15,8 @@ package org.eclipse.edc.core.edr.store; import com.fasterxml.jackson.databind.ObjectMapper; +import org.eclipse.edc.boot.vault.InMemoryVault; import org.eclipse.edc.connector.core.store.CriterionOperatorRegistryImpl; -import org.eclipse.edc.connector.core.vault.InMemoryVault; import org.eclipse.edc.core.edr.defaults.InMemoryEndpointDataReferenceEntryIndex; import org.eclipse.edc.core.edr.defaults.VaultEndpointDataReferenceCache; import org.eclipse.edc.edr.spi.store.EndpointDataReferenceStore; @@ -30,7 +30,7 @@ public class EndpointDataReferenceStoreImplTest extends EndpointDataReferenceSto private final InMemoryEndpointDataReferenceEntryIndex store = new InMemoryEndpointDataReferenceEntryIndex(CriterionOperatorRegistryImpl.ofDefaults()); private final VaultEndpointDataReferenceCache cache = new VaultEndpointDataReferenceCache(new InMemoryVault(mock()), "", new ObjectMapper()); private final EndpointDataReferenceStoreImpl endpointDataReferenceService = new EndpointDataReferenceStoreImpl(store, cache, new NoopTransactionContext()); - + @Override protected EndpointDataReferenceStore getStore() { return endpointDataReferenceService; diff --git a/core/common/junit/build.gradle.kts b/core/common/junit/build.gradle.kts index f8bfaebfefc..d8be1fcf253 100644 --- a/core/common/junit/build.gradle.kts +++ b/core/common/junit/build.gradle.kts @@ -21,16 +21,23 @@ plugins { dependencies { api(project(":spi:common:core-spi")) api(project(":core:common:boot")) - api(project(":core:common:connector-core")) api(project(":core:common:util")) + api(project(":core:common:lib:http-lib")) + implementation(project(":spi:common:http-spi")) + implementation(libs.okhttp) implementation(libs.mockito.core) implementation(libs.assertj) implementation(libs.junit.jupiter.api) + runtimeOnly(libs.junit.jupiter.engine) implementation(libs.junit.pioneer) implementation(libs.testcontainers.junit) + testImplementation(project(":core:common:connector-core")) + + + testImplementation(project(":core:common:lib:boot-lib")) } diff --git a/core/common/junit/src/main/java/org/eclipse/edc/junit/testfixtures/TestUtils.java b/core/common/junit/src/main/java/org/eclipse/edc/junit/testfixtures/TestUtils.java index e1a290cc69c..642592c107f 100644 --- a/core/common/junit/src/main/java/org/eclipse/edc/junit/testfixtures/TestUtils.java +++ b/core/common/junit/src/main/java/org/eclipse/edc/junit/testfixtures/TestUtils.java @@ -17,31 +17,26 @@ import dev.failsafe.RetryPolicy; import okhttp3.Interceptor; import okhttp3.OkHttpClient; -import org.eclipse.edc.connector.core.base.EdcHttpClientImpl; import org.eclipse.edc.spi.http.EdcHttpClient; import org.eclipse.edc.spi.monitor.Monitor; +import org.eclipse.http.client.EdcHttpClientImpl; import org.opentest4j.AssertionFailedError; import java.io.File; import java.io.IOException; -import java.net.ServerSocket; import java.net.URI; import java.net.URISyntaxException; import java.nio.file.Files; import java.util.Objects; -import java.util.Random; import java.util.Scanner; import java.util.concurrent.TimeUnit; -import static java.lang.String.format; import static org.mockito.Mockito.mock; public class TestUtils { - public static final int MAX_TCP_PORT = 65_535; public static final String GRADLE_WRAPPER; private static final String GRADLE_WRAPPER_UNIX = "gradlew"; private static final String GRADLE_WRAPPER_WINDOWS = "gradlew.bat"; - private static final Random RANDOM = new Random(); private static File buildRoot = null; static { @@ -73,65 +68,6 @@ public static String getResourceFileContentAsString(String resourceName) { } } - /** - * Gets a free port in the range 1024 - 65535 by trying them in ascending order. - * - * @return the first free port - * @throws IllegalArgumentException if no free port is available - */ - public static int getFreePort() { - var rnd = 1024 + RANDOM.nextInt(MAX_TCP_PORT - 1024); - return getFreePort(rnd); - } - - /** - * Gets a free port in the range lowerBound - 65535 by trying them in ascending order. - * - * @return the first free port - * @throws IllegalArgumentException if no free port is available - */ - public static int getFreePort(int lowerBound) { - if (lowerBound <= 0 || lowerBound >= MAX_TCP_PORT) { - throw new IllegalArgumentException("Lower bound must be > 0 and < " + MAX_TCP_PORT); - } - return getFreePort(lowerBound, MAX_TCP_PORT); - } - - /** - * Gets a free port in the range lowerBound - upperBound by trying them in ascending order. - * - * @return the first free port - * @throws IllegalArgumentException if no free port is available or if the bounds are invalid. - */ - public static int getFreePort(int lowerBound, int upperBound) { - - if (lowerBound <= 0 || lowerBound >= MAX_TCP_PORT || lowerBound >= upperBound) { - throw new IllegalArgumentException("Lower bound must be > 0 and < " + MAX_TCP_PORT + " and be < upperBound"); - } - if (upperBound > MAX_TCP_PORT) { - throw new IllegalArgumentException("Upper bound must be < " + MAX_TCP_PORT); - } - var port = lowerBound; - boolean found = false; - - while (!found && port <= upperBound) { - try (ServerSocket serverSocket = new ServerSocket(port)) { - serverSocket.setReuseAddress(true); - port = serverSocket.getLocalPort(); - - found = true; - } catch (IOException e) { - found = false; - port++; - } - } - - if (!found) { - throw new IllegalArgumentException(format("No free ports in the range [%d - %d]", lowerBound, upperBound)); - } - return port; - } - /** * Helper method to create a temporary directory. * diff --git a/core/common/junit/src/test/java/org/eclipse/edc/junit/extension/EdcExtensionTest.java b/core/common/junit/src/test/java/org/eclipse/edc/junit/extension/EdcExtensionTest.java index c06b5c9edb6..dd883d23823 100644 --- a/core/common/junit/src/test/java/org/eclipse/edc/junit/extension/EdcExtensionTest.java +++ b/core/common/junit/src/test/java/org/eclipse/edc/junit/extension/EdcExtensionTest.java @@ -14,7 +14,7 @@ package org.eclipse.edc.junit.extension; -import org.eclipse.edc.connector.core.vault.InMemoryVault; +import org.eclipse.edc.boot.vault.InMemoryVault; import org.eclipse.edc.junit.extensions.EdcExtension; import org.eclipse.edc.spi.EdcException; import org.eclipse.edc.spi.http.EdcHttpClient; diff --git a/core/common/junit/src/test/java/org/eclipse/edc/junit/testfixtures/TestUtilsTest.java b/core/common/junit/src/test/java/org/eclipse/edc/junit/testfixtures/TestUtilsTest.java deleted file mode 100644 index 19d5016a4e6..00000000000 --- a/core/common/junit/src/test/java/org/eclipse/edc/junit/testfixtures/TestUtilsTest.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2022 Microsoft Corporation - * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 - * - * Contributors: - * Microsoft Corporation - initial API and implementation - * - */ - -package org.eclipse.edc.junit.testfixtures; - -import org.junit.jupiter.api.Test; - -import java.io.IOException; -import java.net.ServerSocket; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatThrownBy; - -class TestUtilsTest { - - public static final int MAX_PORT = 65535; - public static final int MIN_PORT = 1024; - - @Test - void getFreePort() { - assertThat(TestUtils.getFreePort()).isGreaterThan(MIN_PORT).isLessThan(MAX_PORT); - } - - @Test - void getFreePort_lowerBound() { - assertThat(TestUtils.getFreePort(5000)).isGreaterThanOrEqualTo(5000).isLessThan(MAX_PORT); - - assertThatThrownBy(() -> TestUtils.getFreePort(-1)).isInstanceOf(IllegalArgumentException.class); - assertThatThrownBy(() -> TestUtils.getFreePort(0)).isInstanceOf(IllegalArgumentException.class); - assertThatThrownBy(() -> TestUtils.getFreePort(65536)).isInstanceOf(IllegalArgumentException.class); - } - - @Test - void getFreePort_withUpperAndLowerBound() { - assertThat(TestUtils.getFreePort(5000, 7000)).isGreaterThanOrEqualTo(5000).isLessThan(7000); - - assertThatThrownBy(() -> TestUtils.getFreePort(5000, 4999)).isInstanceOf(IllegalArgumentException.class); - assertThatThrownBy(() -> TestUtils.getFreePort(5000, 5000)).isInstanceOf(IllegalArgumentException.class); - assertThatThrownBy(() -> TestUtils.getFreePort(5000, 65536)).isInstanceOf(IllegalArgumentException.class); - assertThatThrownBy(() -> TestUtils.getFreePort(5000, 0)).isInstanceOf(IllegalArgumentException.class); - } - - @Test - void getFreePort_whenOccupied() throws IOException { - var port = TestUtils.getFreePort(MIN_PORT); - - try (var socket = new ServerSocket(port)) { - assertThat(TestUtils.getFreePort(MIN_PORT)).describedAs("Next free port").isGreaterThan(socket.getLocalPort()); - } - } -} \ No newline at end of file diff --git a/core/common/lib/boot-lib/build.gradle.kts b/core/common/lib/boot-lib/build.gradle.kts new file mode 100644 index 00000000000..88d37811574 --- /dev/null +++ b/core/common/lib/boot-lib/build.gradle.kts @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * + */ + +plugins { + `java-library` + `java-test-fixtures` + `maven-publish` +} + +dependencies { + + api(project(":spi:common:core-spi")) + +} + + diff --git a/core/common/connector-core/src/main/java/org/eclipse/edc/connector/core/vault/InMemoryVault.java b/core/common/lib/boot-lib/src/main/java/org/eclipse/edc/boot/vault/InMemoryVault.java similarity index 89% rename from core/common/connector-core/src/main/java/org/eclipse/edc/connector/core/vault/InMemoryVault.java rename to core/common/lib/boot-lib/src/main/java/org/eclipse/edc/boot/vault/InMemoryVault.java index fb1fcff72f8..d238f73ea21 100644 --- a/core/common/connector-core/src/main/java/org/eclipse/edc/connector/core/vault/InMemoryVault.java +++ b/core/common/lib/boot-lib/src/main/java/org/eclipse/edc/boot/vault/InMemoryVault.java @@ -12,7 +12,7 @@ * */ -package org.eclipse.edc.connector.core.vault; +package org.eclipse.edc.boot.vault; import org.eclipse.edc.spi.monitor.Monitor; import org.eclipse.edc.spi.result.Result; @@ -32,7 +32,7 @@ public InMemoryVault(Monitor monitor) { @Override public @Nullable String resolveSecret(String s) { - monitor.debug("resolving secret " + s); + monitor.debug("Resolving secret " + s); if (s == null) { monitor.warning("Secret name is null - skipping"); return null; @@ -42,14 +42,14 @@ public InMemoryVault(Monitor monitor) { @Override public Result storeSecret(String s, String s1) { - monitor.debug("storing secret " + s); + monitor.debug("Storing secret " + s); secrets.put(s, s1); return Result.success(); } @Override public Result deleteSecret(String s) { - monitor.debug("deleting secret " + s); + monitor.debug("Deleting secret " + s); return secrets.remove(s) == null ? Result.failure("Secret with key " + s + " does not exist") : Result.success(); diff --git a/core/common/connector-core/src/test/java/org/eclipse/edc/connector/core/vault/InMemoryVaultTest.java b/core/common/lib/boot-lib/src/test/java/org/eclipse/edc/core/vault/InMemoryVaultTest.java similarity index 95% rename from core/common/connector-core/src/test/java/org/eclipse/edc/connector/core/vault/InMemoryVaultTest.java rename to core/common/lib/boot-lib/src/test/java/org/eclipse/edc/core/vault/InMemoryVaultTest.java index c1fffff20ce..9d4c62d2a63 100644 --- a/core/common/connector-core/src/test/java/org/eclipse/edc/connector/core/vault/InMemoryVaultTest.java +++ b/core/common/lib/boot-lib/src/test/java/org/eclipse/edc/core/vault/InMemoryVaultTest.java @@ -12,8 +12,9 @@ * */ -package org.eclipse.edc.connector.core.vault; +package org.eclipse.edc.core.vault; +import org.eclipse.edc.boot.vault.InMemoryVault; import org.eclipse.edc.spi.monitor.Monitor; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; diff --git a/core/common/lib/http-lib/build.gradle.kts b/core/common/lib/http-lib/build.gradle.kts new file mode 100644 index 00000000000..2105c04154d --- /dev/null +++ b/core/common/lib/http-lib/build.gradle.kts @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * + */ + +plugins { + `java-library` + `java-test-fixtures` + `maven-publish` +} + +dependencies { + api(project(":spi:common:http-spi")) + + implementation(libs.okhttp) + implementation(libs.dnsOverHttps) + + testImplementation(project(":core:common:util")) + + testImplementation(libs.mockserver.netty) +} + + diff --git a/core/common/connector-core/src/main/java/org/eclipse/edc/connector/core/base/EdcHttpClientImpl.java b/core/common/lib/http-lib/src/main/java/org/eclipse/http/client/EdcHttpClientImpl.java similarity index 98% rename from core/common/connector-core/src/main/java/org/eclipse/edc/connector/core/base/EdcHttpClientImpl.java rename to core/common/lib/http-lib/src/main/java/org/eclipse/http/client/EdcHttpClientImpl.java index 5f8d11f3055..5c3ca09a834 100644 --- a/core/common/connector-core/src/main/java/org/eclipse/edc/connector/core/base/EdcHttpClientImpl.java +++ b/core/common/lib/http-lib/src/main/java/org/eclipse/http/client/EdcHttpClientImpl.java @@ -12,7 +12,7 @@ * */ -package org.eclipse.edc.connector.core.base; +package org.eclipse.http.client; import dev.failsafe.RetryPolicy; import okhttp3.HttpUrl; @@ -35,7 +35,7 @@ import static java.util.Objects.requireNonNull; public class EdcHttpClientImpl implements EdcHttpClient { - + private final OkHttpClient okHttpClient; private final RetryPolicy retryPolicy; private final Monitor monitor; diff --git a/core/common/connector-core/src/test/java/org/eclipse/edc/connector/core/base/EdcHttpClientImplTest.java b/core/common/lib/http-lib/src/test/java/org/eclipse/http/client/EdcHttpClientImplTest.java similarity index 94% rename from core/common/connector-core/src/test/java/org/eclipse/edc/connector/core/base/EdcHttpClientImplTest.java rename to core/common/lib/http-lib/src/test/java/org/eclipse/http/client/EdcHttpClientImplTest.java index 279a473c713..5a36dc42902 100644 --- a/core/common/connector-core/src/test/java/org/eclipse/edc/connector/core/base/EdcHttpClientImplTest.java +++ b/core/common/lib/http-lib/src/test/java/org/eclipse/http/client/EdcHttpClientImplTest.java @@ -12,9 +12,11 @@ * */ -package org.eclipse.edc.connector.core.base; +package org.eclipse.http.client; import dev.failsafe.RetryPolicy; +import okhttp3.Interceptor; +import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; import org.eclipse.edc.spi.http.EdcHttpClient; @@ -35,11 +37,10 @@ import static java.util.Collections.emptyList; import static org.assertj.core.api.AssertionsForClassTypes.assertThat; -import static org.eclipse.edc.junit.testfixtures.TestUtils.getFreePort; -import static org.eclipse.edc.junit.testfixtures.TestUtils.testOkHttpClient; import static org.eclipse.edc.spi.http.FallbackFactories.retryWhenStatusIsNot; import static org.eclipse.edc.spi.http.FallbackFactories.retryWhenStatusIsNotIn; import static org.eclipse.edc.spi.http.FallbackFactories.retryWhenStatusNot2xxOr4xx; +import static org.eclipse.edc.util.io.Ports.getFreePort; import static org.mockito.Mockito.mock; import static org.mockserver.matchers.Times.once; import static org.mockserver.matchers.Times.unlimited; @@ -284,4 +285,17 @@ private Function> handleResponse() { } }; } + + public static OkHttpClient testOkHttpClient(Interceptor... interceptors) { + var builder = new OkHttpClient.Builder() + .connectTimeout(1, TimeUnit.MINUTES) + .writeTimeout(1, TimeUnit.MINUTES) + .readTimeout(1, TimeUnit.MINUTES); + + for (Interceptor interceptor : interceptors) { + builder.addInterceptor(interceptor); + } + + return builder.build(); + } } diff --git a/core/common/util/src/main/java/org/eclipse/edc/util/io/Ports.java b/core/common/util/src/main/java/org/eclipse/edc/util/io/Ports.java new file mode 100644 index 00000000000..ebbf0a6e821 --- /dev/null +++ b/core/common/util/src/main/java/org/eclipse/edc/util/io/Ports.java @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * + */ + +package org.eclipse.edc.util.io; + +import java.io.IOException; +import java.net.ServerSocket; +import java.util.Random; + +import static java.lang.String.format; + +/** + * Utilities for assigning ports. + */ +public final class Ports { + public static final int MAX_TCP_PORT = 65_535; + private static final Random RANDOM = new Random(); + + /** + * Gets a free port in the range 1024 - 65535 by trying them in ascending order. + * + * @return the first free port + * @throws IllegalArgumentException if no free port is available + */ + public static int getFreePort() { + var rnd = 1024 + RANDOM.nextInt(MAX_TCP_PORT - 1024); + return getFreePort(rnd); + } + + /** + * Gets a free port in the range lowerBound - 65535 by trying them in ascending order. + * + * @return the first free port + * @throws IllegalArgumentException if no free port is available + */ + public static int getFreePort(int lowerBound) { + if (lowerBound <= 0 || lowerBound >= MAX_TCP_PORT) { + throw new IllegalArgumentException("Lower bound must be > 0 and < " + MAX_TCP_PORT); + } + return getFreePort(lowerBound, MAX_TCP_PORT); + } + + /** + * Gets a free port in the range lowerBound - upperBound by trying them in ascending order. + * + * @return the first free port + * @throws IllegalArgumentException if no free port is available or if the bounds are invalid. + */ + public static int getFreePort(int lowerBound, int upperBound) { + + if (lowerBound <= 0 || lowerBound >= MAX_TCP_PORT || lowerBound >= upperBound) { + throw new IllegalArgumentException("Lower bound must be > 0 and < " + MAX_TCP_PORT + " and be < upperBound"); + } + if (upperBound > MAX_TCP_PORT) { + throw new IllegalArgumentException("Upper bound must be < " + MAX_TCP_PORT); + } + var port = lowerBound; + boolean found = false; + + while (!found && port <= upperBound) { + try (ServerSocket serverSocket = new ServerSocket(port)) { + serverSocket.setReuseAddress(true); + port = serverSocket.getLocalPort(); + + found = true; + } catch (IOException e) { + found = false; + port++; + } + } + + if (!found) { + throw new IllegalArgumentException(format("No free ports in the range [%d - %d]", lowerBound, upperBound)); + } + return port; + } + + private Ports() { + } + +} diff --git a/core/common/util/src/test/java/org/eclipse/edc/util/io/PortsTest.java b/core/common/util/src/test/java/org/eclipse/edc/util/io/PortsTest.java new file mode 100644 index 00000000000..dbe6a615189 --- /dev/null +++ b/core/common/util/src/test/java/org/eclipse/edc/util/io/PortsTest.java @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2022 Microsoft Corporation + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * Microsoft Corporation - initial API and implementation + * + */ + +package org.eclipse.edc.util.io; + +import org.junit.jupiter.api.Test; + +import java.io.IOException; +import java.net.ServerSocket; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +class PortsTest { + + public static final int MAX_PORT = 65535; + public static final int MIN_PORT = 1024; + + @Test + void getFreePort() { + assertThat(Ports.getFreePort()).isGreaterThan(MIN_PORT).isLessThan(MAX_PORT); + } + + @Test + void getFreePort_lowerBound() { + assertThat(Ports.getFreePort(5000)).isGreaterThanOrEqualTo(5000).isLessThan(MAX_PORT); + + assertThatThrownBy(() -> Ports.getFreePort(-1)).isInstanceOf(IllegalArgumentException.class); + assertThatThrownBy(() -> Ports.getFreePort(0)).isInstanceOf(IllegalArgumentException.class); + assertThatThrownBy(() -> Ports.getFreePort(65536)).isInstanceOf(IllegalArgumentException.class); + } + + @Test + void getFreePort_withUpperAndLowerBound() { + assertThat(Ports.getFreePort(5000, 7000)).isGreaterThanOrEqualTo(5000).isLessThan(7000); + + assertThatThrownBy(() -> Ports.getFreePort(5000, 4999)).isInstanceOf(IllegalArgumentException.class); + assertThatThrownBy(() -> Ports.getFreePort(5000, 5000)).isInstanceOf(IllegalArgumentException.class); + assertThatThrownBy(() -> Ports.getFreePort(5000, 65536)).isInstanceOf(IllegalArgumentException.class); + assertThatThrownBy(() -> Ports.getFreePort(5000, 0)).isInstanceOf(IllegalArgumentException.class); + } + + @Test + void getFreePort_whenOccupied() throws IOException { + var port = Ports.getFreePort(MIN_PORT); + + try (var socket = new ServerSocket(port)) { + assertThat(Ports.getFreePort(MIN_PORT)).describedAs("Next free port").isGreaterThan(socket.getLocalPort()); + } + } +} \ No newline at end of file diff --git a/core/control-plane/catalog-core/build.gradle.kts b/core/control-plane/catalog-core/build.gradle.kts index 4bb13954a2e..8a3077fbb3b 100644 --- a/core/control-plane/catalog-core/build.gradle.kts +++ b/core/control-plane/catalog-core/build.gradle.kts @@ -22,6 +22,7 @@ dependencies { api(project(":spi:control-plane:transfer-spi")) testImplementation(project(":core:common:junit")) + testImplementation(project(":core:common:connector-core")) testImplementation(project(":core:control-plane:control-plane-core")) } diff --git a/core/control-plane/control-plane-aggregate-services/src/test/java/org/eclipse/edc/connector/service/asset/AssetEventDispatchTest.java b/core/control-plane/control-plane-aggregate-services/src/test/java/org/eclipse/edc/connector/service/asset/AssetEventDispatchTest.java index 567c08764a3..ae4fa9083c4 100644 --- a/core/control-plane/control-plane-aggregate-services/src/test/java/org/eclipse/edc/connector/service/asset/AssetEventDispatchTest.java +++ b/core/control-plane/control-plane-aggregate-services/src/test/java/org/eclipse/edc/connector/service/asset/AssetEventDispatchTest.java @@ -36,7 +36,7 @@ import static org.awaitility.Awaitility.await; import static org.eclipse.edc.junit.matchers.EventEnvelopeMatcher.isEnvelopeOf; -import static org.eclipse.edc.junit.testfixtures.TestUtils.getFreePort; +import static org.eclipse.edc.util.io.Ports.getFreePort; import static org.mockito.ArgumentMatchers.argThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; diff --git a/core/control-plane/control-plane-aggregate-services/src/test/java/org/eclipse/edc/connector/service/contractdefinition/ContractDefinitionEventDispatchTest.java b/core/control-plane/control-plane-aggregate-services/src/test/java/org/eclipse/edc/connector/service/contractdefinition/ContractDefinitionEventDispatchTest.java index f4f41be707f..ac589d6c00c 100644 --- a/core/control-plane/control-plane-aggregate-services/src/test/java/org/eclipse/edc/connector/service/contractdefinition/ContractDefinitionEventDispatchTest.java +++ b/core/control-plane/control-plane-aggregate-services/src/test/java/org/eclipse/edc/connector/service/contractdefinition/ContractDefinitionEventDispatchTest.java @@ -34,7 +34,7 @@ import static org.awaitility.Awaitility.await; import static org.eclipse.edc.junit.matchers.EventEnvelopeMatcher.isEnvelopeOf; -import static org.eclipse.edc.junit.testfixtures.TestUtils.getFreePort; +import static org.eclipse.edc.util.io.Ports.getFreePort; import static org.mockito.ArgumentMatchers.argThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; diff --git a/core/control-plane/control-plane-aggregate-services/src/test/java/org/eclipse/edc/connector/service/contractnegotiation/ContractNegotiationEventDispatchTest.java b/core/control-plane/control-plane-aggregate-services/src/test/java/org/eclipse/edc/connector/service/contractnegotiation/ContractNegotiationEventDispatchTest.java index f6e172249ea..b11ccdbeccd 100644 --- a/core/control-plane/control-plane-aggregate-services/src/test/java/org/eclipse/edc/connector/service/contractnegotiation/ContractNegotiationEventDispatchTest.java +++ b/core/control-plane/control-plane-aggregate-services/src/test/java/org/eclipse/edc/connector/service/contractnegotiation/ContractNegotiationEventDispatchTest.java @@ -56,7 +56,7 @@ import static java.util.concurrent.CompletableFuture.completedFuture; import static org.awaitility.Awaitility.await; import static org.eclipse.edc.junit.matchers.EventEnvelopeMatcher.isEnvelopeOf; -import static org.eclipse.edc.junit.testfixtures.TestUtils.getFreePort; +import static org.eclipse.edc.util.io.Ports.getFreePort; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.argThat; import static org.mockito.ArgumentMatchers.eq; diff --git a/core/control-plane/control-plane-aggregate-services/src/test/java/org/eclipse/edc/connector/service/policydefinition/PolicyDefinitionEventDispatchTest.java b/core/control-plane/control-plane-aggregate-services/src/test/java/org/eclipse/edc/connector/service/policydefinition/PolicyDefinitionEventDispatchTest.java index e9d26a192cb..3f658198633 100644 --- a/core/control-plane/control-plane-aggregate-services/src/test/java/org/eclipse/edc/connector/service/policydefinition/PolicyDefinitionEventDispatchTest.java +++ b/core/control-plane/control-plane-aggregate-services/src/test/java/org/eclipse/edc/connector/service/policydefinition/PolicyDefinitionEventDispatchTest.java @@ -35,7 +35,7 @@ import static org.awaitility.Awaitility.await; import static org.eclipse.edc.junit.matchers.EventEnvelopeMatcher.isEnvelopeOf; -import static org.eclipse.edc.junit.testfixtures.TestUtils.getFreePort; +import static org.eclipse.edc.util.io.Ports.getFreePort; import static org.mockito.ArgumentMatchers.argThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; diff --git a/core/control-plane/control-plane-aggregate-services/src/test/java/org/eclipse/edc/connector/service/transferprocess/TransferProcessEventDispatchTest.java b/core/control-plane/control-plane-aggregate-services/src/test/java/org/eclipse/edc/connector/service/transferprocess/TransferProcessEventDispatchTest.java index 19e6e2024a5..d37d6ee34b2 100644 --- a/core/control-plane/control-plane-aggregate-services/src/test/java/org/eclipse/edc/connector/service/transferprocess/TransferProcessEventDispatchTest.java +++ b/core/control-plane/control-plane-aggregate-services/src/test/java/org/eclipse/edc/connector/service/transferprocess/TransferProcessEventDispatchTest.java @@ -70,7 +70,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.awaitility.Awaitility.await; import static org.eclipse.edc.junit.matchers.EventEnvelopeMatcher.isEnvelopeOf; -import static org.eclipse.edc.junit.testfixtures.TestUtils.getFreePort; +import static org.eclipse.edc.util.io.Ports.getFreePort; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.argThat; import static org.mockito.ArgumentMatchers.eq; diff --git a/extensions/common/api/api-core/build.gradle.kts b/extensions/common/api/api-core/build.gradle.kts index dcfbc3459d9..8bc421cdda7 100644 --- a/extensions/common/api/api-core/build.gradle.kts +++ b/extensions/common/api/api-core/build.gradle.kts @@ -32,6 +32,7 @@ dependencies { testImplementation(libs.jersey.server) testImplementation(project(":core:common:junit")) + testImplementation(project(":core:common:connector-core")) testImplementation(project(":extensions:common:json-ld")) } diff --git a/extensions/common/events/events-cloud-http/build.gradle.kts b/extensions/common/events/events-cloud-http/build.gradle.kts index 12962216428..544da3b2c41 100644 --- a/extensions/common/events/events-cloud-http/build.gradle.kts +++ b/extensions/common/events/events-cloud-http/build.gradle.kts @@ -25,6 +25,8 @@ dependencies { implementation(libs.failsafe.core) testImplementation(testFixtures(project(":core:common:junit"))) + testImplementation(project(":core:common:connector-core")) + testImplementation(libs.mockserver.netty) testImplementation(libs.awaitility) } diff --git a/extensions/common/events/events-cloud-http/src/test/java/org/eclipse/edc/event/cloud/http/CloudEventsHttpExtensionTest.java b/extensions/common/events/events-cloud-http/src/test/java/org/eclipse/edc/event/cloud/http/CloudEventsHttpExtensionTest.java index 47d60a83a5f..2973bbcb61d 100644 --- a/extensions/common/events/events-cloud-http/src/test/java/org/eclipse/edc/event/cloud/http/CloudEventsHttpExtensionTest.java +++ b/extensions/common/events/events-cloud-http/src/test/java/org/eclipse/edc/event/cloud/http/CloudEventsHttpExtensionTest.java @@ -29,7 +29,7 @@ import java.util.Map; import static org.awaitility.Awaitility.await; -import static org.eclipse.edc.junit.testfixtures.TestUtils.getFreePort; +import static org.eclipse.edc.util.io.Ports.getFreePort; import static org.mockserver.integration.ClientAndServer.startClientAndServer; @ExtendWith(EdcExtension.class) @@ -53,7 +53,7 @@ void tearDown() { @Test void shouldSendEventAccordingToCloudEventSpec(EventRouter eventRouter, TypeManager typeManager) { var event = TestEvent.Builder.newInstance().data("useful information").build(); - + var envelope = EventEnvelope.Builder.newInstance() .id("event-id") .payload(event) diff --git a/extensions/common/http/jersey-core/build.gradle.kts b/extensions/common/http/jersey-core/build.gradle.kts index 7c207c5271e..f72abd3f05f 100644 --- a/extensions/common/http/jersey-core/build.gradle.kts +++ b/extensions/common/http/jersey-core/build.gradle.kts @@ -26,6 +26,8 @@ dependencies { implementation(libs.jetty.jakarta.servlet.api) testImplementation(project(":core:common:junit")) + testImplementation(project(":core:common:connector-core")) + testImplementation(libs.restAssured) testFixturesApi(project(":core:common:junit")) diff --git a/extensions/common/http/jersey-core/src/test/java/org/eclipse/edc/web/jersey/JerseyRestServiceTest.java b/extensions/common/http/jersey-core/src/test/java/org/eclipse/edc/web/jersey/JerseyRestServiceTest.java index 661a00d24cc..9902d7360c8 100644 --- a/extensions/common/http/jersey-core/src/test/java/org/eclipse/edc/web/jersey/JerseyRestServiceTest.java +++ b/extensions/common/http/jersey-core/src/test/java/org/eclipse/edc/web/jersey/JerseyRestServiceTest.java @@ -35,7 +35,7 @@ import static io.restassured.RestAssured.given; import static org.assertj.core.api.Assertions.assertThatThrownBy; -import static org.eclipse.edc.junit.testfixtures.TestUtils.getFreePort; +import static org.eclipse.edc.util.io.Ports.getFreePort; import static org.hamcrest.CoreMatchers.is; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.mock; diff --git a/extensions/common/http/jersey-core/src/test/java/org/eclipse/edc/web/jersey/mapper/ExceptionMappersIntegrationTest.java b/extensions/common/http/jersey-core/src/test/java/org/eclipse/edc/web/jersey/mapper/ExceptionMappersIntegrationTest.java index eeadaf82420..8c6ddbba276 100644 --- a/extensions/common/http/jersey-core/src/test/java/org/eclipse/edc/web/jersey/mapper/ExceptionMappersIntegrationTest.java +++ b/extensions/common/http/jersey-core/src/test/java/org/eclipse/edc/web/jersey/mapper/ExceptionMappersIntegrationTest.java @@ -35,7 +35,7 @@ import static io.restassured.RestAssured.given; import static io.restassured.http.ContentType.JSON; -import static org.eclipse.edc.junit.testfixtures.TestUtils.getFreePort; +import static org.eclipse.edc.util.io.Ports.getFreePort; import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.is; import static org.mockito.Mockito.doThrow; diff --git a/extensions/common/http/jersey-core/src/test/java/org/eclipse/edc/web/jersey/validation/integrationtest/ValidationIntegrationTest.java b/extensions/common/http/jersey-core/src/test/java/org/eclipse/edc/web/jersey/validation/integrationtest/ValidationIntegrationTest.java index 1a6d6adaec5..0ae13de3370 100644 --- a/extensions/common/http/jersey-core/src/test/java/org/eclipse/edc/web/jersey/validation/integrationtest/ValidationIntegrationTest.java +++ b/extensions/common/http/jersey-core/src/test/java/org/eclipse/edc/web/jersey/validation/integrationtest/ValidationIntegrationTest.java @@ -29,7 +29,7 @@ import static io.restassured.RestAssured.given; import static org.assertj.core.api.Assertions.assertThat; -import static org.eclipse.edc.junit.testfixtures.TestUtils.getFreePort; +import static org.eclipse.edc.util.io.Ports.getFreePort; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; diff --git a/extensions/common/http/jersey-core/src/testFixtures/java/org/eclipse/edc/web/jersey/testfixtures/RestControllerTestBase.java b/extensions/common/http/jersey-core/src/testFixtures/java/org/eclipse/edc/web/jersey/testfixtures/RestControllerTestBase.java index 0ca1677120e..f92a045bd30 100644 --- a/extensions/common/http/jersey-core/src/testFixtures/java/org/eclipse/edc/web/jersey/testfixtures/RestControllerTestBase.java +++ b/extensions/common/http/jersey-core/src/testFixtures/java/org/eclipse/edc/web/jersey/testfixtures/RestControllerTestBase.java @@ -27,7 +27,7 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; -import static org.eclipse.edc.junit.testfixtures.TestUtils.getFreePort; +import static org.eclipse.edc.util.io.Ports.getFreePort; import static org.mockito.Mockito.mock; /** diff --git a/extensions/common/iam/decentralized-identity/identity-did-core/build.gradle.kts b/extensions/common/iam/decentralized-identity/identity-did-core/build.gradle.kts index c13c4410765..a76333c85bb 100644 --- a/extensions/common/iam/decentralized-identity/identity-did-core/build.gradle.kts +++ b/extensions/common/iam/decentralized-identity/identity-did-core/build.gradle.kts @@ -7,6 +7,8 @@ dependencies { api(project(":spi:common:identity-did-spi")) implementation(project(":core:common:util")) + implementation(libs.bouncyCastle.bcpkixJdk18on) + testImplementation(project(":core:common:junit")) } diff --git a/extensions/common/iam/identity-trust/identity-trust-sts/identity-trust-sts-core/build.gradle.kts b/extensions/common/iam/identity-trust/identity-trust-sts/identity-trust-sts-core/build.gradle.kts index 69c5180dcc5..467a0426a76 100644 --- a/extensions/common/iam/identity-trust/identity-trust-sts/identity-trust-sts-core/build.gradle.kts +++ b/extensions/common/iam/identity-trust/identity-trust-sts/identity-trust-sts-core/build.gradle.kts @@ -7,10 +7,14 @@ dependencies { api(project(":spi:common:transaction-spi")) api(project(":spi:common:identity-trust-spi")) api(project(":spi:common:identity-trust-sts-spi")) + + implementation(project(":extensions:common:iam:identity-trust:identity-trust-sts:identity-trust-sts-embedded")) implementation(project(":core:common:token-core")) + testImplementation(project(":core:common:connector-core")) // TEMPORARY - REMOVE testImplementation(testFixtures(project(":spi:common:identity-trust-sts-spi"))) + testImplementation(project(":core:common:lib:boot-lib")) testImplementation(project(":core:common:junit")) testImplementation(libs.nimbus.jwt) } diff --git a/extensions/common/iam/identity-trust/identity-trust-sts/identity-trust-sts-core/src/test/java/org/eclipse/edc/iam/identitytrust/sts/core/defaults/StsClientTokenIssuanceIntegrationTest.java b/extensions/common/iam/identity-trust/identity-trust-sts/identity-trust-sts-core/src/test/java/org/eclipse/edc/iam/identitytrust/sts/core/defaults/StsClientTokenIssuanceIntegrationTest.java index 049e02a408f..1b995b1e5ad 100644 --- a/extensions/common/iam/identity-trust/identity-trust-sts/identity-trust-sts-core/src/test/java/org/eclipse/edc/iam/identitytrust/sts/core/defaults/StsClientTokenIssuanceIntegrationTest.java +++ b/extensions/common/iam/identity-trust/identity-trust-sts/identity-trust-sts-core/src/test/java/org/eclipse/edc/iam/identitytrust/sts/core/defaults/StsClientTokenIssuanceIntegrationTest.java @@ -16,10 +16,10 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.nimbusds.jwt.SignedJWT; +import org.eclipse.edc.boot.vault.InMemoryVault; import org.eclipse.edc.connector.core.security.KeyParserRegistryImpl; import org.eclipse.edc.connector.core.security.keyparsers.JwkParser; import org.eclipse.edc.connector.core.security.keyparsers.PemParser; -import org.eclipse.edc.connector.core.vault.InMemoryVault; import org.eclipse.edc.iam.identitytrust.sts.core.defaults.service.StsClientServiceImpl; import org.eclipse.edc.iam.identitytrust.sts.core.defaults.service.StsClientTokenGeneratorServiceImpl; import org.eclipse.edc.iam.identitytrust.sts.core.defaults.store.InMemoryStsClientStore; diff --git a/extensions/common/iam/oauth2/oauth2-client/src/test/java/org/eclipse/edc/iam/oauth2/client/Oauth2ClientImplTest.java b/extensions/common/iam/oauth2/oauth2-client/src/test/java/org/eclipse/edc/iam/oauth2/client/Oauth2ClientImplTest.java index 53140f667bb..d146061f38d 100644 --- a/extensions/common/iam/oauth2/oauth2-client/src/test/java/org/eclipse/edc/iam/oauth2/client/Oauth2ClientImplTest.java +++ b/extensions/common/iam/oauth2/oauth2-client/src/test/java/org/eclipse/edc/iam/oauth2/client/Oauth2ClientImplTest.java @@ -30,8 +30,8 @@ import java.util.stream.Collectors; import static org.assertj.core.api.Assertions.assertThat; -import static org.eclipse.edc.junit.testfixtures.TestUtils.getFreePort; import static org.eclipse.edc.junit.testfixtures.TestUtils.testHttpClient; +import static org.eclipse.edc.util.io.Ports.getFreePort; import static org.mockserver.integration.ClientAndServer.startClientAndServer; import static org.mockserver.model.MediaType.APPLICATION_JSON; diff --git a/extensions/common/iam/oauth2/oauth2-daps/build.gradle.kts b/extensions/common/iam/oauth2/oauth2-daps/build.gradle.kts index 19fc03dbd68..84f550af075 100644 --- a/extensions/common/iam/oauth2/oauth2-daps/build.gradle.kts +++ b/extensions/common/iam/oauth2/oauth2-daps/build.gradle.kts @@ -20,6 +20,7 @@ dependencies { api(project(":spi:common:core-spi")) api(project(":spi:common:oauth2-spi")) + testImplementation(project(":core:common:connector-core")) testImplementation(project(":extensions:common:vault:vault-filesystem")) testImplementation(project(":extensions:common:iam:oauth2:oauth2-core")) testImplementation(project(":core:common:junit")) diff --git a/extensions/common/json-ld/src/test/java/org/eclipse/edc/jsonld/TitaniumJsonLdTest.java b/extensions/common/json-ld/src/test/java/org/eclipse/edc/jsonld/TitaniumJsonLdTest.java index ff2a496681c..8ba108a621d 100644 --- a/extensions/common/json-ld/src/test/java/org/eclipse/edc/jsonld/TitaniumJsonLdTest.java +++ b/extensions/common/json-ld/src/test/java/org/eclipse/edc/jsonld/TitaniumJsonLdTest.java @@ -32,8 +32,8 @@ import static org.eclipse.edc.jsonld.spi.JsonLdKeywords.VALUE; import static org.eclipse.edc.junit.assertions.AbstractResultAssert.assertThat; import static org.eclipse.edc.junit.testfixtures.TestUtils.getFileFromResourceName; -import static org.eclipse.edc.junit.testfixtures.TestUtils.getFreePort; import static org.eclipse.edc.junit.testfixtures.TestUtils.getResourceFileContentAsString; +import static org.eclipse.edc.util.io.Ports.getFreePort; import static org.mockito.Mockito.mock; import static org.mockserver.integration.ClientAndServer.startClientAndServer; import static org.mockserver.model.HttpRequest.request; diff --git a/extensions/common/vault/vault-hashicorp/build.gradle.kts b/extensions/common/vault/vault-hashicorp/build.gradle.kts index 3de784f2ac5..b024a924e5e 100644 --- a/extensions/common/vault/vault-hashicorp/build.gradle.kts +++ b/extensions/common/vault/vault-hashicorp/build.gradle.kts @@ -21,7 +21,9 @@ dependencies { implementation(project(":core:common:util")) + testImplementation(project(":core:common:connector-core")) testImplementation(project(":core:common:junit")) + testImplementation(libs.jakartaJson) testImplementation(libs.testcontainers.junit) testImplementation(libs.testcontainers.vault) implementation(libs.bouncyCastle.bcpkixJdk18on) diff --git a/extensions/control-plane/api/control-plane-api-client/src/test/java/org/eclipse/edc/connector/api/client/transferprocess/TransferProcessHttpClientIntegrationTest.java b/extensions/control-plane/api/control-plane-api-client/src/test/java/org/eclipse/edc/connector/api/client/transferprocess/TransferProcessHttpClientIntegrationTest.java index 29c302a956a..d75afb64c13 100644 --- a/extensions/control-plane/api/control-plane-api-client/src/test/java/org/eclipse/edc/connector/api/client/transferprocess/TransferProcessHttpClientIntegrationTest.java +++ b/extensions/control-plane/api/control-plane-api-client/src/test/java/org/eclipse/edc/connector/api/client/transferprocess/TransferProcessHttpClientIntegrationTest.java @@ -55,7 +55,7 @@ import static org.awaitility.Awaitility.await; import static org.eclipse.edc.connector.transfer.spi.types.TransferProcessStates.COMPLETED; import static org.eclipse.edc.connector.transfer.spi.types.TransferProcessStates.TERMINATED; -import static org.eclipse.edc.junit.testfixtures.TestUtils.getFreePort; +import static org.eclipse.edc.util.io.Ports.getFreePort; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; diff --git a/extensions/control-plane/callback/callback-http-dispatcher/src/test/java/org/eclipse/edc/connector/callback/dispatcher/http/GenericHttpRemoteDispatcherWrapperTest.java b/extensions/control-plane/callback/callback-http-dispatcher/src/test/java/org/eclipse/edc/connector/callback/dispatcher/http/GenericHttpRemoteDispatcherWrapperTest.java index fee8d77262f..7e485f9cae4 100644 --- a/extensions/control-plane/callback/callback-http-dispatcher/src/test/java/org/eclipse/edc/connector/callback/dispatcher/http/GenericHttpRemoteDispatcherWrapperTest.java +++ b/extensions/control-plane/callback/callback-http-dispatcher/src/test/java/org/eclipse/edc/connector/callback/dispatcher/http/GenericHttpRemoteDispatcherWrapperTest.java @@ -40,8 +40,8 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.eclipse.edc.connector.callback.dispatcher.http.GenericHttpRemoteDispatcherImpl.CALLBACK_EVENT_HTTP; -import static org.eclipse.edc.junit.testfixtures.TestUtils.getFreePort; import static org.eclipse.edc.junit.testfixtures.TestUtils.testHttpClient; +import static org.eclipse.edc.util.io.Ports.getFreePort; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.atMostOnce; import static org.mockito.Mockito.mock; diff --git a/extensions/control-plane/provision/provision-http/src/test/java/org/eclipse/edc/connector/provision/http/impl/HttpProvisionerExtensionEndToEndTest.java b/extensions/control-plane/provision/provision-http/src/test/java/org/eclipse/edc/connector/provision/http/impl/HttpProvisionerExtensionEndToEndTest.java index d82533711ba..9c7abdaedfb 100644 --- a/extensions/control-plane/provision/provision-http/src/test/java/org/eclipse/edc/connector/provision/http/impl/HttpProvisionerExtensionEndToEndTest.java +++ b/extensions/control-plane/provision/provision-http/src/test/java/org/eclipse/edc/connector/provision/http/impl/HttpProvisionerExtensionEndToEndTest.java @@ -66,8 +66,8 @@ import static org.eclipse.edc.connector.provision.http.HttpProvisionerFixtures.createResponse; import static org.eclipse.edc.connector.transfer.spi.types.TransferProcessStates.PROVISIONING_REQUESTED; import static org.eclipse.edc.junit.assertions.AbstractResultAssert.assertThat; -import static org.eclipse.edc.junit.testfixtures.TestUtils.getFreePort; import static org.eclipse.edc.junit.testfixtures.TestUtils.testHttpClient; +import static org.eclipse.edc.util.io.Ports.getFreePort; import static org.junit.jupiter.api.Assertions.fail; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.isA; diff --git a/extensions/control-plane/transfer/transfer-pull-http-dynamic-receiver/src/test/java/org/eclipse/edc/connector/receiver/http/dynamic/HttpDynamicEndpointDataReferenceReceiverTest.java b/extensions/control-plane/transfer/transfer-pull-http-dynamic-receiver/src/test/java/org/eclipse/edc/connector/receiver/http/dynamic/HttpDynamicEndpointDataReferenceReceiverTest.java index 28f297ede86..6b752e8ef82 100644 --- a/extensions/control-plane/transfer/transfer-pull-http-dynamic-receiver/src/test/java/org/eclipse/edc/connector/receiver/http/dynamic/HttpDynamicEndpointDataReferenceReceiverTest.java +++ b/extensions/control-plane/transfer/transfer-pull-http-dynamic-receiver/src/test/java/org/eclipse/edc/connector/receiver/http/dynamic/HttpDynamicEndpointDataReferenceReceiverTest.java @@ -40,8 +40,8 @@ import static org.eclipse.edc.connector.receiver.http.dynamic.HttpDynamicEndpointDataReferenceReceiver.HTTP_RECEIVER_ENDPOINT; import static org.eclipse.edc.connector.receiver.http.dynamic.TestFunctions.createTransferProcess; import static org.eclipse.edc.connector.receiver.http.dynamic.TestFunctions.transferProperties; -import static org.eclipse.edc.junit.testfixtures.TestUtils.getFreePort; import static org.eclipse.edc.junit.testfixtures.TestUtils.testOkHttpClient; +import static org.eclipse.edc.util.io.Ports.getFreePort; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.atMostOnce; diff --git a/extensions/control-plane/transfer/transfer-pull-http-receiver/src/test/java/org/eclipse/edc/connector/receiver/http/HttpEndpointDataReferenceReceiverTest.java b/extensions/control-plane/transfer/transfer-pull-http-receiver/src/test/java/org/eclipse/edc/connector/receiver/http/HttpEndpointDataReferenceReceiverTest.java index 2590342953e..5d37523c3ed 100644 --- a/extensions/control-plane/transfer/transfer-pull-http-receiver/src/test/java/org/eclipse/edc/connector/receiver/http/HttpEndpointDataReferenceReceiverTest.java +++ b/extensions/control-plane/transfer/transfer-pull-http-receiver/src/test/java/org/eclipse/edc/connector/receiver/http/HttpEndpointDataReferenceReceiverTest.java @@ -34,8 +34,8 @@ import java.util.concurrent.ExecutionException; import static org.assertj.core.api.Assertions.assertThat; -import static org.eclipse.edc.junit.testfixtures.TestUtils.getFreePort; import static org.eclipse.edc.junit.testfixtures.TestUtils.testHttpClient; +import static org.eclipse.edc.util.io.Ports.getFreePort; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.Mockito.mock; import static org.mockserver.integration.ClientAndServer.startClientAndServer; diff --git a/extensions/data-plane/data-plane-client/src/test/java/org/eclipse/edc/connector/dataplane/client/RemoteDataPlaneClientTest.java b/extensions/data-plane/data-plane-client/src/test/java/org/eclipse/edc/connector/dataplane/client/RemoteDataPlaneClientTest.java index 2d68f2e7602..11f38b75101 100644 --- a/extensions/data-plane/data-plane-client/src/test/java/org/eclipse/edc/connector/dataplane/client/RemoteDataPlaneClientTest.java +++ b/extensions/data-plane/data-plane-client/src/test/java/org/eclipse/edc/connector/dataplane/client/RemoteDataPlaneClientTest.java @@ -40,8 +40,8 @@ import static java.lang.String.format; import static org.assertj.core.api.Assertions.assertThat; import static org.eclipse.edc.junit.assertions.AbstractResultAssert.assertThat; -import static org.eclipse.edc.junit.testfixtures.TestUtils.getFreePort; import static org.eclipse.edc.junit.testfixtures.TestUtils.testHttpClient; +import static org.eclipse.edc.util.io.Ports.getFreePort; import static org.mockserver.integration.ClientAndServer.startClientAndServer; import static org.mockserver.matchers.Times.once; import static org.mockserver.model.HttpResponse.response; diff --git a/extensions/data-plane/data-plane-http/src/test/java/org/eclipse/edc/connector/dataplane/http/DataPlaneHttpExtensionTest.java b/extensions/data-plane/data-plane-http/src/test/java/org/eclipse/edc/connector/dataplane/http/DataPlaneHttpExtensionTest.java index 526f0cf2bcf..fcb36c6de40 100644 --- a/extensions/data-plane/data-plane-http/src/test/java/org/eclipse/edc/connector/dataplane/http/DataPlaneHttpExtensionTest.java +++ b/extensions/data-plane/data-plane-http/src/test/java/org/eclipse/edc/connector/dataplane/http/DataPlaneHttpExtensionTest.java @@ -32,7 +32,7 @@ import static java.util.Collections.emptyMap; import static java.util.concurrent.TimeUnit.SECONDS; import static org.assertj.core.api.Assertions.assertThat; -import static org.eclipse.edc.junit.testfixtures.TestUtils.getFreePort; +import static org.eclipse.edc.util.io.Ports.getFreePort; import static org.mockserver.integration.ClientAndServer.startClientAndServer; import static org.mockserver.model.HttpRequest.request; import static org.mockserver.stop.Stop.stopQuietly; diff --git a/extensions/data-plane/data-plane-integration-tests/src/test/java/org/eclipse/edc/connector/dataplane/http/DataPlaneHttpIntegrationTests.java b/extensions/data-plane/data-plane-integration-tests/src/test/java/org/eclipse/edc/connector/dataplane/http/DataPlaneHttpIntegrationTests.java index 13ba0854d17..763d3ef058c 100644 --- a/extensions/data-plane/data-plane-integration-tests/src/test/java/org/eclipse/edc/connector/dataplane/http/DataPlaneHttpIntegrationTests.java +++ b/extensions/data-plane/data-plane-integration-tests/src/test/java/org/eclipse/edc/connector/dataplane/http/DataPlaneHttpIntegrationTests.java @@ -57,7 +57,7 @@ import static org.awaitility.Awaitility.await; import static org.eclipse.edc.connector.dataplane.http.testfixtures.TestFunctions.createRequest; import static org.eclipse.edc.connector.dataplane.spi.DataFlowStates.NOTIFIED; -import static org.eclipse.edc.junit.testfixtures.TestUtils.getFreePort; +import static org.eclipse.edc.util.io.Ports.getFreePort; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.Matchers.containsString; import static org.mockserver.integration.ClientAndServer.startClientAndServer; diff --git a/extensions/data-plane/data-plane-public-api/src/test/java/org/eclipse/edc/connector/dataplane/api/validation/ConsumerPullTransferDataAddressResolverTest.java b/extensions/data-plane/data-plane-public-api/src/test/java/org/eclipse/edc/connector/dataplane/api/validation/ConsumerPullTransferDataAddressResolverTest.java index a6c38561e78..d1526364aef 100644 --- a/extensions/data-plane/data-plane-public-api/src/test/java/org/eclipse/edc/connector/dataplane/api/validation/ConsumerPullTransferDataAddressResolverTest.java +++ b/extensions/data-plane/data-plane-public-api/src/test/java/org/eclipse/edc/connector/dataplane/api/validation/ConsumerPullTransferDataAddressResolverTest.java @@ -32,8 +32,8 @@ import java.util.UUID; import static org.assertj.core.api.Assertions.assertThat; -import static org.eclipse.edc.junit.testfixtures.TestUtils.getFreePort; import static org.eclipse.edc.junit.testfixtures.TestUtils.testHttpClient; +import static org.eclipse.edc.util.io.Ports.getFreePort; import static org.mockserver.integration.ClientAndServer.startClientAndServer; import static org.mockserver.matchers.Times.once; import static org.mockserver.stop.Stop.stopQuietly; diff --git a/extensions/data-plane/data-plane-signaling/data-plane-signaling-client/src/test/java/org/eclipse/edc/connector/dataplane/client/DataPlaneSignalingClientTest.java b/extensions/data-plane/data-plane-signaling/data-plane-signaling-client/src/test/java/org/eclipse/edc/connector/dataplane/client/DataPlaneSignalingClientTest.java index 9be52dcc523..6c3903ca1b2 100644 --- a/extensions/data-plane/data-plane-signaling/data-plane-signaling-client/src/test/java/org/eclipse/edc/connector/dataplane/client/DataPlaneSignalingClientTest.java +++ b/extensions/data-plane/data-plane-signaling/data-plane-signaling-client/src/test/java/org/eclipse/edc/connector/dataplane/client/DataPlaneSignalingClientTest.java @@ -62,9 +62,9 @@ import static org.eclipse.edc.jsonld.spi.JsonLdKeywords.VOCAB; import static org.eclipse.edc.jsonld.util.JacksonJsonLd.createObjectMapper; import static org.eclipse.edc.junit.assertions.AbstractResultAssert.assertThat; -import static org.eclipse.edc.junit.testfixtures.TestUtils.getFreePort; import static org.eclipse.edc.junit.testfixtures.TestUtils.testHttpClient; import static org.eclipse.edc.spi.CoreConstants.EDC_NAMESPACE; +import static org.eclipse.edc.util.io.Ports.getFreePort; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; diff --git a/settings.gradle.kts b/settings.gradle.kts index 4e80e86422d..8707478b24a 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -54,6 +54,9 @@ include(":core:common:validator-core") include(":core:common:util") include(":core:common:edr-store-core") +include(":core:common:lib:boot-lib") +include(":core:common:lib:http-lib") + include(":core:control-plane:catalog-core") include(":core:control-plane:contract-core") include(":core:control-plane:control-plane-core") diff --git a/system-tests/e2e-dataplane-tests/tests/build.gradle.kts b/system-tests/e2e-dataplane-tests/tests/build.gradle.kts index 6f6d290c63e..c16f0def002 100644 --- a/system-tests/e2e-dataplane-tests/tests/build.gradle.kts +++ b/system-tests/e2e-dataplane-tests/tests/build.gradle.kts @@ -22,8 +22,8 @@ dependencies { testImplementation(project(":spi:data-plane:data-plane-spi")) testImplementation(project(":extensions:data-plane:data-plane-signaling:data-plane-signaling-transform")) - testImplementation(project(":core:common:junit")) testImplementation(testFixtures(project(":extensions:control-plane:api:management-api:management-api-test-fixtures"))) + testImplementation(project(":core:common:connector-core")) testImplementation(project(":core:common:junit")) testImplementation(project(":extensions:common:json-ld")) testImplementation(libs.jakartaJson) diff --git a/system-tests/e2e-dataplane-tests/tests/src/test/java/org/eclipse/edc/test/e2e/participant/DataPlaneParticipant.java b/system-tests/e2e-dataplane-tests/tests/src/test/java/org/eclipse/edc/test/e2e/participant/DataPlaneParticipant.java index e0bbdb27d66..341692a81d8 100644 --- a/system-tests/e2e-dataplane-tests/tests/src/test/java/org/eclipse/edc/test/e2e/participant/DataPlaneParticipant.java +++ b/system-tests/e2e-dataplane-tests/tests/src/test/java/org/eclipse/edc/test/e2e/participant/DataPlaneParticipant.java @@ -23,7 +23,7 @@ import java.util.Map; import static java.io.File.separator; -import static org.eclipse.edc.junit.testfixtures.TestUtils.getFreePort; +import static org.eclipse.edc.util.io.Ports.getFreePort; public class DataPlaneParticipant extends Participant { diff --git a/system-tests/e2e-transfer-test/runner/build.gradle.kts b/system-tests/e2e-transfer-test/runner/build.gradle.kts index 753e8b2c624..d4589511636 100644 --- a/system-tests/e2e-transfer-test/runner/build.gradle.kts +++ b/system-tests/e2e-transfer-test/runner/build.gradle.kts @@ -21,10 +21,11 @@ dependencies { testImplementation(project(":spi:data-plane:data-plane-spi")) testImplementation(project(":extensions:common:sql:sql-core")) + testImplementation(project(":spi:common:web-spi")) + testImplementation(project(":core:common:connector-core")) testImplementation(project(":core:common:junit")) testImplementation(testFixtures(project(":extensions:common:sql:sql-core"))) testImplementation(testFixtures(project(":extensions:control-plane:api:management-api:management-api-test-fixtures"))) - testImplementation(project(":core:common:junit")) testImplementation(project(":extensions:common:json-ld")) testImplementation(libs.jakartaJson) diff --git a/system-tests/e2e-transfer-test/runner/src/test/java/org/eclipse/edc/test/e2e/TransferStreamingEndToEndTest.java b/system-tests/e2e-transfer-test/runner/src/test/java/org/eclipse/edc/test/e2e/TransferStreamingEndToEndTest.java index 62a3bf2d01e..8c1c3e080a5 100644 --- a/system-tests/e2e-transfer-test/runner/src/test/java/org/eclipse/edc/test/e2e/TransferStreamingEndToEndTest.java +++ b/system-tests/e2e-transfer-test/runner/src/test/java/org/eclipse/edc/test/e2e/TransferStreamingEndToEndTest.java @@ -56,13 +56,13 @@ import static org.eclipse.edc.connector.transfer.spi.types.TransferProcessStates.SUSPENDED; import static org.eclipse.edc.connector.transfer.spi.types.TransferProcessStates.TERMINATED; import static org.eclipse.edc.jsonld.spi.JsonLdKeywords.TYPE; -import static org.eclipse.edc.junit.testfixtures.TestUtils.getFreePort; import static org.eclipse.edc.spi.CoreConstants.EDC_NAMESPACE; import static org.eclipse.edc.test.e2e.Runtimes.backendService; import static org.eclipse.edc.test.e2e.Runtimes.controlPlaneSignaling; import static org.eclipse.edc.test.e2e.Runtimes.dataPlane; import static org.eclipse.edc.test.system.utils.PolicyFixtures.contractExpiresIn; import static org.eclipse.edc.test.system.utils.PolicyFixtures.noConstraintPolicy; +import static org.eclipse.edc.util.io.Ports.getFreePort; import static org.mockserver.integration.ClientAndServer.startClientAndServer; import static org.mockserver.model.HttpRequest.request; import static org.mockserver.model.HttpResponse.response; diff --git a/system-tests/e2e-transfer-test/runner/src/test/java/org/eclipse/edc/test/e2e/participant/BaseEndToEndParticipant.java b/system-tests/e2e-transfer-test/runner/src/test/java/org/eclipse/edc/test/e2e/participant/BaseEndToEndParticipant.java index c91bfc36699..7af06269810 100644 --- a/system-tests/e2e-transfer-test/runner/src/test/java/org/eclipse/edc/test/e2e/participant/BaseEndToEndParticipant.java +++ b/system-tests/e2e-transfer-test/runner/src/test/java/org/eclipse/edc/test/e2e/participant/BaseEndToEndParticipant.java @@ -40,10 +40,10 @@ import static org.eclipse.edc.boot.BootServicesExtension.PARTICIPANT_ID; import static org.eclipse.edc.jsonld.spi.JsonLdKeywords.CONTEXT; import static org.eclipse.edc.jsonld.spi.JsonLdKeywords.ID; -import static org.eclipse.edc.junit.testfixtures.TestUtils.getFreePort; import static org.eclipse.edc.spi.CoreConstants.EDC_NAMESPACE; import static org.eclipse.edc.spi.CoreConstants.EDC_PREFIX; import static org.eclipse.edc.sql.testfixtures.PostgresqlEndToEndInstance.defaultDatasourceConfiguration; +import static org.eclipse.edc.util.io.Ports.getFreePort; public class BaseEndToEndParticipant extends Participant { diff --git a/system-tests/e2e-transfer-test/runner/src/test/java/org/eclipse/edc/test/e2e/participant/EndToEndTransferParticipant.java b/system-tests/e2e-transfer-test/runner/src/test/java/org/eclipse/edc/test/e2e/participant/EndToEndTransferParticipant.java index 67348ec12ef..c7e99d306a8 100644 --- a/system-tests/e2e-transfer-test/runner/src/test/java/org/eclipse/edc/test/e2e/participant/EndToEndTransferParticipant.java +++ b/system-tests/e2e-transfer-test/runner/src/test/java/org/eclipse/edc/test/e2e/participant/EndToEndTransferParticipant.java @@ -18,7 +18,7 @@ import java.net.URI; -import static org.eclipse.edc.junit.testfixtures.TestUtils.getFreePort; +import static org.eclipse.edc.util.io.Ports.getFreePort; public class EndToEndTransferParticipant extends BaseEndToEndParticipant { diff --git a/system-tests/e2e-transfer-test/runner/src/test/java/org/eclipse/edc/test/e2e/signaling/SignalingEndToEndTransferTest.java b/system-tests/e2e-transfer-test/runner/src/test/java/org/eclipse/edc/test/e2e/signaling/SignalingEndToEndTransferTest.java index 5b0f01f6148..f6090cf28cd 100644 --- a/system-tests/e2e-transfer-test/runner/src/test/java/org/eclipse/edc/test/e2e/signaling/SignalingEndToEndTransferTest.java +++ b/system-tests/e2e-transfer-test/runner/src/test/java/org/eclipse/edc/test/e2e/signaling/SignalingEndToEndTransferTest.java @@ -55,11 +55,11 @@ import static org.eclipse.edc.connector.transfer.spi.types.TransferProcessStates.COMPLETED; import static org.eclipse.edc.connector.transfer.spi.types.TransferProcessStates.STARTED; import static org.eclipse.edc.jsonld.spi.JsonLdKeywords.TYPE; -import static org.eclipse.edc.junit.testfixtures.TestUtils.getFreePort; import static org.eclipse.edc.spi.CoreConstants.EDC_NAMESPACE; import static org.eclipse.edc.sql.testfixtures.PostgresqlEndToEndInstance.createDatabase; import static org.eclipse.edc.test.system.utils.PolicyFixtures.inForceDatePolicy; import static org.eclipse.edc.test.system.utils.PolicyFixtures.noConstraintPolicy; +import static org.eclipse.edc.util.io.Ports.getFreePort; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.Matchers.anyOf; import static org.hamcrest.Matchers.is; diff --git a/system-tests/management-api/management-api-test-runner/src/test/java/org/eclipse/edc/test/e2e/managementapi/InMemoryRuntime.java b/system-tests/management-api/management-api-test-runner/src/test/java/org/eclipse/edc/test/e2e/managementapi/InMemoryRuntime.java index 7946a9c3099..cae02ac1740 100644 --- a/system-tests/management-api/management-api-test-runner/src/test/java/org/eclipse/edc/test/e2e/managementapi/InMemoryRuntime.java +++ b/system-tests/management-api/management-api-test-runner/src/test/java/org/eclipse/edc/test/e2e/managementapi/InMemoryRuntime.java @@ -21,7 +21,7 @@ import java.util.HashMap; -import static org.eclipse.edc.junit.testfixtures.TestUtils.getFreePort; +import static org.eclipse.edc.util.io.Ports.getFreePort; public interface InMemoryRuntime { diff --git a/system-tests/management-api/management-api-test-runner/src/test/java/org/eclipse/edc/test/e2e/managementapi/ManagementApiEndToEndTestBase.java b/system-tests/management-api/management-api-test-runner/src/test/java/org/eclipse/edc/test/e2e/managementapi/ManagementApiEndToEndTestBase.java index 88ee188abb7..1b261366f23 100644 --- a/system-tests/management-api/management-api-test-runner/src/test/java/org/eclipse/edc/test/e2e/managementapi/ManagementApiEndToEndTestBase.java +++ b/system-tests/management-api/management-api-test-runner/src/test/java/org/eclipse/edc/test/e2e/managementapi/ManagementApiEndToEndTestBase.java @@ -30,8 +30,8 @@ import static org.eclipse.edc.jsonld.spi.JsonLdKeywords.CONTEXT; import static org.eclipse.edc.jsonld.spi.JsonLdKeywords.TYPE; import static org.eclipse.edc.jsonld.spi.JsonLdKeywords.VOCAB; -import static org.eclipse.edc.junit.testfixtures.TestUtils.getFreePort; import static org.eclipse.edc.spi.CoreConstants.EDC_NAMESPACE; +import static org.eclipse.edc.util.io.Ports.getFreePort; public abstract class ManagementApiEndToEndTestBase { diff --git a/system-tests/protocol-test/src/test/java/org/eclipse/edc/test/e2e/protocol/DspCatalogApiEndToEndTest.java b/system-tests/protocol-test/src/test/java/org/eclipse/edc/test/e2e/protocol/DspCatalogApiEndToEndTest.java index 55d2154e6a8..9e674ed8e45 100644 --- a/system-tests/protocol-test/src/test/java/org/eclipse/edc/test/e2e/protocol/DspCatalogApiEndToEndTest.java +++ b/system-tests/protocol-test/src/test/java/org/eclipse/edc/test/e2e/protocol/DspCatalogApiEndToEndTest.java @@ -17,7 +17,7 @@ import org.eclipse.edc.connector.spi.protocol.ProtocolVersionRegistry; import org.eclipse.edc.junit.annotations.EndToEndTest; import org.eclipse.edc.junit.extensions.EdcRuntimeExtension; -import org.eclipse.edc.junit.testfixtures.TestUtils; +import org.eclipse.edc.util.io.Ports; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -38,7 +38,7 @@ @EndToEndTest public class DspCatalogApiEndToEndTest { - private static final int PROTOCOL_PORT = TestUtils.getFreePort(); + private static final int PROTOCOL_PORT = Ports.getFreePort(); @RegisterExtension static EdcRuntimeExtension runtime = new EdcRuntimeExtension( diff --git a/system-tests/protocol-test/src/test/java/org/eclipse/edc/test/e2e/protocol/DspNegotiationApiEndToEndTest.java b/system-tests/protocol-test/src/test/java/org/eclipse/edc/test/e2e/protocol/DspNegotiationApiEndToEndTest.java index 7d47218026d..f3039eface1 100644 --- a/system-tests/protocol-test/src/test/java/org/eclipse/edc/test/e2e/protocol/DspNegotiationApiEndToEndTest.java +++ b/system-tests/protocol-test/src/test/java/org/eclipse/edc/test/e2e/protocol/DspNegotiationApiEndToEndTest.java @@ -19,9 +19,9 @@ import org.eclipse.edc.connector.spi.protocol.ProtocolVersionRegistry; import org.eclipse.edc.junit.annotations.EndToEndTest; import org.eclipse.edc.junit.extensions.EdcRuntimeExtension; -import org.eclipse.edc.junit.testfixtures.TestUtils; import org.eclipse.edc.policy.model.Policy; import org.eclipse.edc.spi.types.domain.offer.ContractOffer; +import org.eclipse.edc.util.io.Ports; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -37,7 +37,7 @@ @EndToEndTest public class DspNegotiationApiEndToEndTest { - private static final int PROTOCOL_PORT = TestUtils.getFreePort(); + private static final int PROTOCOL_PORT = Ports.getFreePort(); @RegisterExtension static EdcRuntimeExtension runtime = new EdcRuntimeExtension( diff --git a/system-tests/protocol-test/src/test/java/org/eclipse/edc/test/e2e/protocol/DspTransferApiEndToEndTest.java b/system-tests/protocol-test/src/test/java/org/eclipse/edc/test/e2e/protocol/DspTransferApiEndToEndTest.java index 38a6787d2e2..ec57eaf15ee 100644 --- a/system-tests/protocol-test/src/test/java/org/eclipse/edc/test/e2e/protocol/DspTransferApiEndToEndTest.java +++ b/system-tests/protocol-test/src/test/java/org/eclipse/edc/test/e2e/protocol/DspTransferApiEndToEndTest.java @@ -22,11 +22,11 @@ import org.eclipse.edc.connector.transfer.spi.types.TransferProcess; import org.eclipse.edc.junit.annotations.EndToEndTest; import org.eclipse.edc.junit.extensions.EdcRuntimeExtension; -import org.eclipse.edc.junit.testfixtures.TestUtils; import org.eclipse.edc.policy.model.Policy; import org.eclipse.edc.spi.types.domain.DataAddress; import org.eclipse.edc.spi.types.domain.agreement.ContractAgreement; import org.eclipse.edc.spi.types.domain.offer.ContractOffer; +import org.eclipse.edc.util.io.Ports; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -42,7 +42,7 @@ @EndToEndTest public class DspTransferApiEndToEndTest { - private static final int PROTOCOL_PORT = TestUtils.getFreePort(); + private static final int PROTOCOL_PORT = Ports.getFreePort(); @RegisterExtension static EdcRuntimeExtension runtime = new EdcRuntimeExtension( diff --git a/system-tests/protocol-test/src/test/java/org/eclipse/edc/test/e2e/protocol/DspVersionApiEndToEndTest.java b/system-tests/protocol-test/src/test/java/org/eclipse/edc/test/e2e/protocol/DspVersionApiEndToEndTest.java index a62314f26bd..46fcd06d78d 100644 --- a/system-tests/protocol-test/src/test/java/org/eclipse/edc/test/e2e/protocol/DspVersionApiEndToEndTest.java +++ b/system-tests/protocol-test/src/test/java/org/eclipse/edc/test/e2e/protocol/DspVersionApiEndToEndTest.java @@ -23,8 +23,8 @@ import org.eclipse.edc.jsonld.spi.JsonLd; import org.eclipse.edc.junit.annotations.EndToEndTest; import org.eclipse.edc.junit.extensions.EdcRuntimeExtension; -import org.eclipse.edc.junit.testfixtures.TestUtils; import org.eclipse.edc.spi.monitor.ConsoleMonitor; +import org.eclipse.edc.util.io.Ports; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -41,7 +41,7 @@ @EndToEndTest public class DspVersionApiEndToEndTest { - private static final int PROTOCOL_PORT = TestUtils.getFreePort(); + private static final int PROTOCOL_PORT = Ports.getFreePort(); private final JsonLd jsonLd = new TitaniumJsonLd(new ConsoleMonitor()); @RegisterExtension diff --git a/system-tests/sts-api/sts-api-test-runner/build.gradle.kts b/system-tests/sts-api/sts-api-test-runner/build.gradle.kts index 3ad75262931..7ab434fcc65 100644 --- a/system-tests/sts-api/sts-api-test-runner/build.gradle.kts +++ b/system-tests/sts-api/sts-api-test-runner/build.gradle.kts @@ -31,7 +31,7 @@ dependencies { testCompileOnly(project(":system-tests:sts-api:sts-api-test-runtime")) testImplementation(testFixtures(project(":spi:common:identity-trust-sts-spi"))) testImplementation(libs.nimbus.jwt) - + testImplementation(libs.bouncyCastle.bcpkixJdk18on) } edcBuild { diff --git a/system-tests/sts-api/sts-api-test-runner/src/test/java/org/eclipse/edc/test/e2e/sts/api/RemoteStsEndToEndTest.java b/system-tests/sts-api/sts-api-test-runner/src/test/java/org/eclipse/edc/test/e2e/sts/api/RemoteStsEndToEndTest.java index 24f86df4cd5..8a81684ce22 100644 --- a/system-tests/sts-api/sts-api-test-runner/src/test/java/org/eclipse/edc/test/e2e/sts/api/RemoteStsEndToEndTest.java +++ b/system-tests/sts-api/sts-api-test-runner/src/test/java/org/eclipse/edc/test/e2e/sts/api/RemoteStsEndToEndTest.java @@ -39,9 +39,9 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.eclipse.edc.identitytrust.SelfIssuedTokenConstants.PRESENTATION_TOKEN_CLAIM; import static org.eclipse.edc.junit.assertions.AbstractResultAssert.assertThat; -import static org.eclipse.edc.junit.testfixtures.TestUtils.getFreePort; import static org.eclipse.edc.junit.testfixtures.TestUtils.testHttpClient; import static org.eclipse.edc.jwt.spi.JwtRegisteredClaimNames.CLIENT_ID; +import static org.eclipse.edc.util.io.Ports.getFreePort; @EndToEndTest public class RemoteStsEndToEndTest extends StsEndToEndTestBase { diff --git a/system-tests/sts-api/sts-api-test-runner/src/test/java/org/eclipse/edc/test/e2e/sts/api/StsApiEndToEndTest.java b/system-tests/sts-api/sts-api-test-runner/src/test/java/org/eclipse/edc/test/e2e/sts/api/StsApiEndToEndTest.java index a5ede29a54f..7a836b286f5 100644 --- a/system-tests/sts-api/sts-api-test-runner/src/test/java/org/eclipse/edc/test/e2e/sts/api/StsApiEndToEndTest.java +++ b/system-tests/sts-api/sts-api-test-runner/src/test/java/org/eclipse/edc/test/e2e/sts/api/StsApiEndToEndTest.java @@ -37,8 +37,8 @@ import static io.restassured.http.ContentType.JSON; import static org.assertj.core.api.Assertions.assertThat; import static org.eclipse.edc.identitytrust.SelfIssuedTokenConstants.PRESENTATION_TOKEN_CLAIM; -import static org.eclipse.edc.junit.testfixtures.TestUtils.getFreePort; import static org.eclipse.edc.jwt.spi.JwtRegisteredClaimNames.CLIENT_ID; +import static org.eclipse.edc.util.io.Ports.getFreePort; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.notNullValue; diff --git a/system-tests/sts-api/sts-api-test-runtime/build.gradle.kts b/system-tests/sts-api/sts-api-test-runtime/build.gradle.kts index a83e19b186f..d574ea8ea3c 100644 --- a/system-tests/sts-api/sts-api-test-runtime/build.gradle.kts +++ b/system-tests/sts-api/sts-api-test-runtime/build.gradle.kts @@ -17,6 +17,7 @@ plugins { } dependencies { + implementation(project(":core:common:connector-core")) implementation(project(":core:common:token-core")) implementation(project(":extensions:common:http")) implementation(project(":extensions:common:iam:identity-trust:identity-trust-sts:identity-trust-sts-core")) diff --git a/system-tests/telemetry/telemetry-test-runner/src/test/java/org/eclipse/edc/test/e2e/tracing/BaseTelemetryEndToEndTest.java b/system-tests/telemetry/telemetry-test-runner/src/test/java/org/eclipse/edc/test/e2e/tracing/BaseTelemetryEndToEndTest.java index b526aaddfdf..391c35af2df 100644 --- a/system-tests/telemetry/telemetry-test-runner/src/test/java/org/eclipse/edc/test/e2e/tracing/BaseTelemetryEndToEndTest.java +++ b/system-tests/telemetry/telemetry-test-runner/src/test/java/org/eclipse/edc/test/e2e/tracing/BaseTelemetryEndToEndTest.java @@ -19,7 +19,7 @@ import java.util.HashMap; -import static org.eclipse.edc.junit.testfixtures.TestUtils.getFreePort; +import static org.eclipse.edc.util.io.Ports.getFreePort; public abstract class BaseTelemetryEndToEndTest {