From f8afe7938c4b94960e67476282b4b0eec4855b6d Mon Sep 17 00:00:00 2001 From: Enrico Risa Date: Wed, 24 May 2023 18:22:58 +0200 Subject: [PATCH] feat(EdrCache): module docs --- edc-extensions/edr-cache-sql/README.md | 30 +++++++++++++++++++ .../SqlEndpointDataReferenceCacheTest.java | 14 ++++----- .../EndpointDataReferenceCacheBaseTest.java | 7 +---- 3 files changed, 38 insertions(+), 13 deletions(-) create mode 100644 edc-extensions/edr-cache-sql/README.md diff --git a/edc-extensions/edr-cache-sql/README.md b/edc-extensions/edr-cache-sql/README.md new file mode 100644 index 000000000..fb9c9eb00 --- /dev/null +++ b/edc-extensions/edr-cache-sql/README.md @@ -0,0 +1,30 @@ +# SQL-based `EndpointDataReferenceCache` extension + +This extensions provide a persistent implementation of `EndpointDataReferenceCache`. + +It will store in the database this fields: + +- tranferProcessId +- agreementId +- assetId +- edrId + +It represent a single EDR negotiation done with the new Control Plane Adapter APIs. + +The EDR itself it is stored in the participant vault with a prefixed key `edr:`. + +**_Note that the SQL statements (DDL) are specific to and only tested with PostgreSQL. Using it with other RDBMS may +work but might have unexpected side effects!_** + +## 1. Table schema + +see [schema.sql](docs/schema.sql). + + +## 2. Configuration + +| Key | Description | Mandatory | Default | +|:---------------------------------------|:----------------------------------|-----------|---------| +| edc.datasource.edr.name | Datasource used by this extension | | edr | + + diff --git a/edc-extensions/edr-cache-sql/src/test/java/org/eclipse/tractusx/edc/edr/store/sql/SqlEndpointDataReferenceCacheTest.java b/edc-extensions/edr-cache-sql/src/test/java/org/eclipse/tractusx/edc/edr/store/sql/SqlEndpointDataReferenceCacheTest.java index c44f6b5d7..a612efbef 100644 --- a/edc-extensions/edr-cache-sql/src/test/java/org/eclipse/tractusx/edc/edr/store/sql/SqlEndpointDataReferenceCacheTest.java +++ b/edc-extensions/edr-cache-sql/src/test/java/org/eclipse/tractusx/edc/edr/store/sql/SqlEndpointDataReferenceCacheTest.java @@ -18,7 +18,6 @@ import org.eclipse.edc.spi.result.Result; import org.eclipse.edc.spi.security.Vault; import org.eclipse.edc.spi.types.TypeManager; -import org.eclipse.edc.spi.types.domain.edr.EndpointDataReference; import org.eclipse.edc.sql.testfixtures.PostgresqlStoreSetupExtension; import org.eclipse.tractusx.edc.edr.spi.EndpointDataReferenceCache; import org.eclipse.tractusx.edc.edr.spi.EndpointDataReferenceCacheBaseTest; @@ -34,7 +33,7 @@ import java.sql.SQLException; import java.time.Clock; -import static org.eclipse.tractusx.edc.edr.store.sql.SqlEndpointDataReferenceCache.VAULT_PREFIX; +import static org.eclipse.tractusx.edc.edr.spi.TestFunctions.edr; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -58,6 +57,7 @@ void setUp(PostgresqlStoreSetupExtension extension) throws IOException { when(vault.deleteSecret(any())).thenReturn(Result.success()); when(vault.storeSecret(any(), any())).thenReturn(Result.success()); + when(vault.resolveSecret(any())).then(a -> edrJson(a.getArgument(0))); cache = new SqlEndpointDataReferenceCache(extension.getDataSourceRegistry(), extension.getDatasourceName(), extension.getTransactionContext(), statements, typeManager.getMapper(), vault, clock); var schema = Files.readString(Paths.get("./docs/schema.sql")); @@ -65,11 +65,6 @@ void setUp(PostgresqlStoreSetupExtension extension) throws IOException { } - @Override - protected void onBeforeEdrSave(EndpointDataReference edr) { - when(vault.resolveSecret(VAULT_PREFIX + edr.getId())).thenReturn(typeManager.writeValueAsString(edr)); - } - @AfterEach void tearDown(PostgresqlStoreSetupExtension extension) throws SQLException { extension.runQuery("DROP TABLE " + statements.getEdrTable() + " CASCADE"); @@ -80,4 +75,9 @@ protected EndpointDataReferenceCache getStore() { return cache; } + + private String edrJson(String id) { + return typeManager.writeValueAsString(edr(id.split(":")[1])); + } + } diff --git a/spi/edr-cache-spi/src/testFixtures/java/org/eclipse/tractusx/edc/edr/spi/EndpointDataReferenceCacheBaseTest.java b/spi/edr-cache-spi/src/testFixtures/java/org/eclipse/tractusx/edc/edr/spi/EndpointDataReferenceCacheBaseTest.java index 05a313169..5a72a535a 100644 --- a/spi/edr-cache-spi/src/testFixtures/java/org/eclipse/tractusx/edc/edr/spi/EndpointDataReferenceCacheBaseTest.java +++ b/spi/edr-cache-spi/src/testFixtures/java/org/eclipse/tractusx/edc/edr/spi/EndpointDataReferenceCacheBaseTest.java @@ -41,7 +41,6 @@ void save() { var edrId = "edr1"; var edr = edr(edrId); - onBeforeEdrSave(edr); var entry = edrEntry(assetId, randomUUID().toString(), tpId); getStore().save(entry, edr); @@ -127,9 +126,5 @@ void deleteByTransferProcessId_shouldReturnError_whenNotFound() { .extracting(StoreResult::reason) .isEqualTo(StoreFailure.Reason.NOT_FOUND); } - - protected void onBeforeEdrSave(EndpointDataReference edr) { - - } - + }