From 028413136ee3e379e7296a90ac7aef4addc5b544 Mon Sep 17 00:00:00 2001 From: Jonas Bulcke Date: Thu, 18 Apr 2024 14:14:40 +0200 Subject: [PATCH 1/3] chore: delete test-033 --- .github/workflows/run-tests.yml | 5 +- cypress/e2e/discoverer.feature | 2 +- cypress/e2e/workbench.archiving.feature | 26 -- tests/033.archiving/.env | 3 - tests/033.archiving/README.md | 125 ------ tests/033.archiving/artwork/test-33.drawio | 67 ---- .../033.archiving/artwork/test-33.drawio.png | Bin 73305 -> 0 bytes .../config/ldes-server.config.yml | 16 - .../033.archiving/config/occupancy.paged.ttl | 8 - tests/033.archiving/config/occupancy.ttl | 10 - tests/033.archiving/config/seed.sh | 14 - tests/033.archiving/data/.gitignore | 1 - tests/033.archiving/data/create-alias.json | 4 - tests/033.archiving/docker-compose.yml | 89 ----- tests/033.archiving/ldio-create-archive.yml | 17 - tests/033.archiving/ldio-read-archive.yml | 16 - .../nifi-create-archive-workflow.json | 372 ------------------ .../nifi-read-archive-workflow.json | 1 - 18 files changed, 4 insertions(+), 772 deletions(-) delete mode 100644 cypress/e2e/workbench.archiving.feature delete mode 100644 tests/033.archiving/.env delete mode 100644 tests/033.archiving/README.md delete mode 100644 tests/033.archiving/artwork/test-33.drawio delete mode 100644 tests/033.archiving/artwork/test-33.drawio.png delete mode 100644 tests/033.archiving/config/ldes-server.config.yml delete mode 100644 tests/033.archiving/config/occupancy.paged.ttl delete mode 100644 tests/033.archiving/config/occupancy.ttl delete mode 100755 tests/033.archiving/config/seed.sh delete mode 100644 tests/033.archiving/data/.gitignore delete mode 100644 tests/033.archiving/data/create-alias.json delete mode 100644 tests/033.archiving/docker-compose.yml delete mode 100644 tests/033.archiving/ldio-create-archive.yml delete mode 100644 tests/033.archiving/ldio-read-archive.yml delete mode 100644 tests/033.archiving/nifi-create-archive-workflow.json delete mode 100644 tests/033.archiving/nifi-read-archive-workflow.json diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index 87598d9c..1f5be709 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -44,11 +44,12 @@ jobs: - "@test-031" - "@test-032 and @ldio" - "@test-032 and @nifi" - - "@test-033 and @ldio" - - "@test-033 and @nifi" - "@test-034 and @ldio and @basic-connector-flow" - "@test-034 and @federated-catalog" - "@test-035" + - "@test-037" + - "@test-038" + - "@test-039" runs-on: ubuntu-latest diff --git a/cypress/e2e/discoverer.feature b/cypress/e2e/discoverer.feature index 398ea187..0949f96c 100644 --- a/cypress/e2e/discoverer.feature +++ b/cypress/e2e/discoverer.feature @@ -1,7 +1,7 @@ @discoverer Feature: LDI LDES Discoverer - @test-038 @discover @geomobility + @test-038 @discoverer @geomobility Scenario: 038: LDES Discoverer Can Discover The Structure of an LDES Given context 'tests/038.discover-ldes-structure' is started And I have aliased the 'geomobility' simulator data set diff --git a/cypress/e2e/workbench.archiving.feature b/cypress/e2e/workbench.archiving.feature deleted file mode 100644 index 8923a205..00000000 --- a/cypress/e2e/workbench.archiving.feature +++ /dev/null @@ -1,26 +0,0 @@ -@workbench @archiving -Feature: LDES Workbench Archiving - - @test-033 @parkAndRide @archiving - Scenario Outline: 033: Can create and read from a file archive from the server using the '' Workbench - Given the members are stored in database 'Gent' - And I have configured the archive directory - And context 'tests/033.archiving' is started - And I have aliased the 'parkAndRide' simulator data set - When I start the create archive '' workbench - And I wait until the '' workbench finished archiving - And the LDES server is available and configured - Then the LDES contains 0 members - When I start the read archive '' workbench - Then the LDES contains 1016 members - And I clean up the '' workbench archive - - @nifi - Examples: - | workbench | - | NIFI | - - @ldio - Examples: - | workbench | - | LDIO | diff --git a/tests/033.archiving/.env b/tests/033.archiving/.env deleted file mode 100644 index fd3b411f..00000000 --- a/tests/033.archiving/.env +++ /dev/null @@ -1,3 +0,0 @@ -# NOTE: empty, add any environment overrides here, e.g. -# USECASE_NAME=my-use-case -# ARCHIVE_DIR=/tmp/archive diff --git a/tests/033.archiving/README.md b/tests/033.archiving/README.md deleted file mode 100644 index 373e17cc..00000000 --- a/tests/033.archiving/README.md +++ /dev/null @@ -1,125 +0,0 @@ -# The LDES workbench can be used to archive the LDES Server - -This test verifies: -- A file archive can be created from an LDES on the server using the workbench. -- A server can be seeded from a file archive using the workbench. - -![img](artwork/test-33.drawio.png) - -The Ldes server simulator serves an LDES based on a small subset of the Gent P+R data set. -The 'create-archive-workbench' has an LDES Client that consumes the LDES server and uses the archive file out component to write the members to a file archive. -The 'read-archive-workbench' has an archive file in component to consume the archive and post the members to the server using the Http out component. - -## Test Setup -> **Note**: if needed, copy the [environment file (.env)](./.env) to a personal file (e.g. `user.env`) and change the settings as needed. If you do, you need to add ` --env-file user.env` to each `docker compose` command. - -Run all systems except the workflow by executing the following (bash) command: -```bash -docker compose up -d -``` - -Prepare the archive location: -```bash -mkdir ./data/archive -sudo chmod 0777 -R ./data/archive -``` - -On linux, also set the user to run the archive creation LDIO: -```bash -export LDIO_USER=$(id -u):$(id -g) -``` - -## Test Execution - -1. Seed the LDES Server Simulator with a part of the Gent P+R data set and [alias it](./create-alias.json): - ```bash - for f in ../../data/parkAndRide/*; do curl -X POST "http://localhost:9011/ldes" -H "Content-Type: text/turtle" -d "@$f"; done - curl -X POST "http://localhost:9011/alias" -H "Content-Type: application/json" -d '@data/create-alias.json' - ``` - To verify that the [simulator](http://localhost:9011/) is correctly seeded you can run this command: - ```bash - curl http://localhost:9011/ - ``` - -2. Archive the members from the simulator by starting the archiving workflow - ```bash - docker compose up ldio-create-archive -d - while ! docker logs $(docker ps -q -f "name=ldio-create-archive$") | grep 'Started Application in' ; do sleep 1; done - ``` - or: - ```bash - docker compose up nifi-workbench -d - while ! curl -s -I "http://localhost:8000/nifi/"; do sleep 5; done - ``` - With nifi you also need to upload the [workflow](./nifi-create-archive-workflow.json) and start it - -3. Verify the archive in directory 'archive' - You should see a new directory structure: - - 2022 - - 4 - - 19 - - 20 - - ... - - 5 - - 2 - - 3 - - ... - - These directories represent year/month/day. The days contain the actual members that have been archived in the - following format: `2022-04-29-09-32-30-080000000.nq` - - These timestamps are extracted from the members by the time-stamp-path that we provide to the archive component. - Duplicate timestamps are resolved by adding a sequence suffix: `2022-04-29-09-32-30-080000000-1.nq` - -4. Prepare the LDES Server - Please ensure that the LDES Server is ready to ingest by following the container log until you see the following message `Cancelled mongock lock daemon`: - ```bash - docker logs --tail 1000 -f $(docker ps -q --filter "name=ldes-server$") - ``` - Press `CTRL-C` to stop following the log. - - > **Note**: as of server v1.0 which uses dynamic configuration you need to execute the [seed script](./config/seed.sh) to setup the LDES with its views: - ```bash - chmod +x ./config/seed.sh - sh ./config/seed.sh - ``` - -5. Verify LDES Server is empty - ```bash - curl http://localhost:9019/Gent/ingest_ldesmember - ``` - Should return `{"count":0}` - -6. Restore the archive - ```bash - docker compose up ldio-read-archive -d - while ! docker logs $(docker ps -q -f "name=read-archive$") | grep 'Started Application in' ; do sleep 1; done - ``` - or: - Upload the [workflow](./nifi-read-archive-workflow.json) and start it. - -7. Verify server - ```bash - while : ; do curl http://localhost:9019/Gent/ingest_ldesmember ; echo '' ; sleep 1 ; done - ``` - Should eventually return `{"count":1016}`. Press `CTRL-C` to stop following the count. - -## Test Teardown -To stop all systems use: -```bash -docker compose rm -s -f -v ldio-create-archive -docker compose rm -s -f -v ldio-read-archive -docker compose rm -s -f -v ldes-server -docker compose down -``` -or: -```bash -docker compose rm -s -f -v nifi-workbench -docker compose rm -s -f -v ldes-server -docker compose down -``` - -And clean up the archive directory: -```bash -sudo rm -rf ./data/archive -``` diff --git a/tests/033.archiving/artwork/test-33.drawio b/tests/033.archiving/artwork/test-33.drawio deleted file mode 100644 index bf0905f4..00000000 --- a/tests/033.archiving/artwork/test-33.drawio +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/033.archiving/artwork/test-33.drawio.png b/tests/033.archiving/artwork/test-33.drawio.png deleted file mode 100644 index fe84575f19cbc994f6023ba854959c79521cdd37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73305 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�ugaWmMVEN|63~ByQ(d7CpI`gKYxXI)D|z5 zO7~V~7LdJU=VhsK-QE)KY76)GS^NYXaouAj8fG9#TeINw(Fr{;Ba5G&4my2OZVIC9 zk)rVu_d!<_JuKD4#6&U3Jy|YA>OSpkXG_$R$uj}6l-F{3NZj#QQs>2Npc6tT|yrrdhTLG<%P`n@j zI_M#`$BllDv20*rn#IO!<7LM$DBiiYNN`7<(fBE0cRtMTULIXA`L_z!x495sLfkq2 z4ah(}iA4Hs1|w#YzwiP6Tv$_6JHD%W$64nne*_f*RYOqg70Lw^=hnZuTh$&=b794G zSHj#k_vZT(z#0U){{X(tX&Mb_f(fX|R!*<4Fv_%7(|>ktQO%eQv9nf3BOOmBB!Q&+ zkq+Cn^pwa;acOZ{xg^%ux=O#7`|xdB27V{KUH@d&sG&B3LLW3TKejb`9mUu?qAm!sH7YO0sQR;WRF>O>_qh8KtH+=0E>9ux59N2&;hd^bubp4cc0tzOt zSAeRh=P@yhKsx8`9Rgh9g9ArOkoc7DdWZ#X19&XLgKi}5F|)J`?Ck86ba!7I8yicE zOplRUT37_Y;c%QYAl73fRe&_+<>=^$;PlugER}*`Fg;x*zFd(AD^<+v zZ@~VuG2oK6%`>gL^}|hfL%~K??6bh_jlIUzK^bT?AM?=^jTX!Rsgj&(E?@rqPDglkH1i?uhV(v@c{&Rb_&Fz$P{7acfS*I;mV38c@P~|$+HMsd4AQ^)%@U2WK(mq zV&y9sYI9wfMysMJK(>&B$ex`ZBI@buSAsLuyxx8gf^x8ZKB;kwS4B{U>i62(T4M(3 z#5%0TF959bCFZE~$Ms+!&NBQ9$j*X1+r;})97wUDetz|@BK`f@=ZoMq@cM%m7B)Gu t0o3_oMR*;kNWk3hbB62TQ~zVn6f8+YrBvtY;#~-MP8@TxFDCfW{sRU8{G0#) diff --git a/tests/033.archiving/config/ldes-server.config.yml b/tests/033.archiving/config/ldes-server.config.yml deleted file mode 100644 index fd1b5707..00000000 --- a/tests/033.archiving/config/ldes-server.config.yml +++ /dev/null @@ -1,16 +0,0 @@ -mongock: - migration-scan-package: VSDS -springdoc: - swagger-ui: - path: /v1/swagger -management: - tracing: - enabled: false -ldes-server: - host-name: http://localhost:8080 -spring: - data: - mongodb: - database: Gent - host: ldes-mongodb - port: 27017 diff --git a/tests/033.archiving/config/occupancy.paged.ttl b/tests/033.archiving/config/occupancy.paged.ttl deleted file mode 100644 index 2fde175c..00000000 --- a/tests/033.archiving/config/occupancy.paged.ttl +++ /dev/null @@ -1,8 +0,0 @@ -@prefix tree: . -@prefix xsd: . - - a tree:Node ; - tree:viewDescription [ a tree:ViewDescription ; - tree:fragmentationStrategy () ; - tree:pageSize "1500"^^xsd:integer ; -] . diff --git a/tests/033.archiving/config/occupancy.ttl b/tests/033.archiving/config/occupancy.ttl deleted file mode 100644 index 72e9b0b0..00000000 --- a/tests/033.archiving/config/occupancy.ttl +++ /dev/null @@ -1,10 +0,0 @@ -@prefix ldes: . -@prefix tree: . -@prefix dcterms: . -@prefix prov: . -@prefix sh: . - - a ldes:EventStream ; - tree:shape [ a sh:NodeShape ] ; - ldes:timestampPath dcterms:modified ; - ldes:versionOfPath dcterms:isVersionOf . diff --git a/tests/033.archiving/config/seed.sh b/tests/033.archiving/config/seed.sh deleted file mode 100755 index 288c525c..00000000 --- a/tests/033.archiving/config/seed.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash -export SCRIPT_PATH=$(dirname -- "$( readlink -f -- "${BASH_SOURCE:-$0}"; )") - -curl --fail -X POST 'http://localhost:8080/admin/api/v1/eventstreams' -H 'Content-Type: text/turtle' -d "@$SCRIPT_PATH/occupancy.ttl" -code=$? -if [ $code != 0 ] - then exit $code -fi - -curl --fail -X POST 'http://localhost:8080/admin/api/v1/eventstreams/occupancy/views' -H 'Content-Type: text/turtle' -d "@$SCRIPT_PATH/occupancy.paged.ttl" -code=$? -if [ $code != 0 ] - then exit $code -fi diff --git a/tests/033.archiving/data/.gitignore b/tests/033.archiving/data/.gitignore deleted file mode 100644 index 93a5ef64..00000000 --- a/tests/033.archiving/data/.gitignore +++ /dev/null @@ -1 +0,0 @@ -archive/** diff --git a/tests/033.archiving/data/create-alias.json b/tests/033.archiving/data/create-alias.json deleted file mode 100644 index d736f548..00000000 --- a/tests/033.archiving/data/create-alias.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "original": "http://ldes-server-simulator/ldes/occupancy/by-page?pageNumber=1", - "alias": "http://ldes-server-simulator/ldes/occupancy" -} \ No newline at end of file diff --git a/tests/033.archiving/docker-compose.yml b/tests/033.archiving/docker-compose.yml deleted file mode 100644 index 0835e452..00000000 --- a/tests/033.archiving/docker-compose.yml +++ /dev/null @@ -1,89 +0,0 @@ -version: '3.3' -services: - - ldes-server-simulator: - image: ghcr.io/informatievlaanderen/ldes-server-simulator:${LDES_SERVER_SIMULATOR_TAG:-latest} - container_name: ${USECASE_NAME:-ldes-archiving}_ldes-server-simulator - environment: - - BASEURL=http://ldes-server-simulator - ports: - - ${LDES_SERVER_SIMULATOR_PORT:-9011}:80 - networks: - - ldes - - ldio-create-archive: - image: ${LDI_ORCHESTRATOR:-ghcr.io/informatievlaanderen/ldi-orchestrator}:${LDI_ORCHESTRATOR_TAG:-latest} - container_name: ${USECASE_NAME:-ldes-archiving}_ldio-create-archive - volumes: - - ./ldio-create-archive.yml:/ldio/config/application.yml:ro - - ${ARCHIVE_DIR:-./data/archive}/ldio:/tmp/archive:rw - user: ${WORKFLOW_USER:-} - networks: - - ldes - profiles: - - delay-started - - ldio-read-archive: - image: ${LDI_ORCHESTRATOR:-ghcr.io/informatievlaanderen/ldi-orchestrator}:${LDI_ORCHESTRATOR_TAG:-latest} - container_name: ${USECASE_NAME:-ldes-archiving}_ldio-read-archive - volumes: - - ./ldio-read-archive.yml:/ldio/config/application.yml:ro - - ${ARCHIVE_DIR:-./data/archive}/ldio:/tmp/archive:ro - user: ${WORKFLOW_USER:-} - networks: - - ldes - profiles: - - delay-started - - ldes-server: - container_name: ${USECASE_NAME:-ldes-archiving}_ldes-server - image: ${LDES_SERVER:-ghcr.io/informatievlaanderen/ldes-server}:${LDES_SERVER_TAG:-latest} - environment: - - SIS_DATA=/tmp - volumes: - - ./config/ldes-server.config.yml:/application.yml:ro - - ../../data/epsg:/tmp/Databases:rw - networks: - - ldes - ports: - - 8080:8080 # needed for admin API - depends_on: - - ldes-mongodb - - ldes-mongodb: - container_name: ${USECASE_NAME:-ldes-archiving}_ldes-mongodb - image: mongo:${MONGODB_TAG:-latest} - ports: - - ${MONGODB_PORT:-27017}:27017 - networks: - - ldes - - mongodb-rest-api: - container_name: ${USECASE_NAME:-ldes-archiving}_mongodb-rest-api - image: ghcr.io/informatievlaanderen/mongodb-rest-api:${MONGODB_REST_API_TAG:-latest} - environment: - - SILENT=false - - CONNECTION_URI=mongodb://ldes-mongodb:27017 - ports: - - ${MONGODB_REST_API_PORT:-9019}:80 - networks: - - ldes - - nifi-workbench: - container_name: ${USECASE_NAME:-ldes-archiving}_nifi-workbench - image: ${LDI_WORKBENCH_NIFI:-ghcr.io/informatievlaanderen/ldi-workbench-nifi}:${LDI_WORKBENCH_NIFI_TAG:-latest} - environment: - - NIFI_WEB_HTTP_PORT=${NIFI_UI_PORT:-8000} - volumes: - - ../../data/scripts/nifi-env.sh:/opt/nifi/nifi-current/bin/nifi-env.sh:ro - - ${ARCHIVE_DIR:-./data/archive}/nifi:/tmp/archive:rw - ports: - - ${NIFI_UI_PORT:-8000}:${NIFI_UI_PORT:-8000} - networks: - - ldes - profiles: - - delay-started - -networks: - ldes: - name: ${USECASE_NAME:-ldes-archiving}_network diff --git a/tests/033.archiving/ldio-create-archive.yml b/tests/033.archiving/ldio-create-archive.yml deleted file mode 100644 index 87b56b2d..00000000 --- a/tests/033.archiving/ldio-create-archive.yml +++ /dev/null @@ -1,17 +0,0 @@ -server: - port: 8080 -orchestrator: - pipelines: - - name: create-archive - description: "This pipeline uses an LDES client to read an existing LDES and send the members to a file archive." - input: - name: Ldio:LdesClient - adapter: - name: Ldio:RdfAdapter - config: - urls: http://ldes-server-simulator/ldes/occupancy - outputs: - - name: Ldio:FileOut - config: - archive-root-dir: /tmp/archive - timestamp-path: http://purl.org/dc/terms/modified \ No newline at end of file diff --git a/tests/033.archiving/ldio-read-archive.yml b/tests/033.archiving/ldio-read-archive.yml deleted file mode 100644 index ff304d1d..00000000 --- a/tests/033.archiving/ldio-read-archive.yml +++ /dev/null @@ -1,16 +0,0 @@ -server: - port: 8080 -orchestrator: - pipelines: - - name: create-archive - description: "This pipeline uses an Ldio Archive In component read members from an archive and sends them to the server." - input: - name: Ldio:ArchiveFileIn - config: - archive-root-dir: /tmp/archive - outputs: - - name: Ldio:HttpOut - config: - endpoint: http://ldes-server:8080/occupancy - rdf-writer: - content-type: application/n-quads \ No newline at end of file diff --git a/tests/033.archiving/nifi-create-archive-workflow.json b/tests/033.archiving/nifi-create-archive-workflow.json deleted file mode 100644 index 07e0c9c2..00000000 --- a/tests/033.archiving/nifi-create-archive-workflow.json +++ /dev/null @@ -1,372 +0,0 @@ -{ - "flowContents": { - "identifier": "0e43f7a6-0daa-31fa-aed2-587dfda4eba3", - "instanceIdentifier": "49182171-0189-1000-bc41-ca9f3ddcd9ab", - "name": "NiFi_Flow(1)", - "comments": "", - "position": { - "x": 936.0, - "y": 128.0 - }, - "processGroups": [], - "remoteProcessGroups": [], - "processors": [ - { - "identifier": "4ae9fd57-e969-384a-be11-ae4838e40aa9", - "instanceIdentifier": "3bc45068-5487-3b1a-a44b-d1193f2134bc", - "name": "ArchiveFileOutProcessor", - "comments": "", - "position": { - "x": 615.0, - "y": 156.0 - }, - "type": "be.vlaanderen.informatievlaanderen.ldes.ldi.processors.ArchiveFileOutProcessor", - "bundle": { - "group": "be.vlaanderen.informatievlaanderen.ldes.ldi.nifi", - "artifact": "archive-file-out", - "version": "1.3.0-SNAPSHOT" - }, - "properties": { - "TIMESTAMP_PATH": "http://purl.org/dc/terms/modified", - "ARCHIVE_ROOT_DIR": "/tmp/archive", - "DATA_SOURCE_FORMAT": "application/n-quads" - }, - "propertyDescriptors": { - "TIMESTAMP_PATH": { - "name": "TIMESTAMP_PATH", - "displayName": "Timestamp path", - "identifiesControllerService": false, - "sensitive": false - }, - "ARCHIVE_ROOT_DIR": { - "name": "ARCHIVE_ROOT_DIR", - "displayName": "The archive directory", - "identifiesControllerService": false, - "sensitive": false - }, - "DATA_SOURCE_FORMAT": { - "name": "DATA_SOURCE_FORMAT", - "displayName": "Data source format", - "identifiesControllerService": false, - "sensitive": false - } - }, - "style": {}, - "schedulingPeriod": "0 sec", - "schedulingStrategy": "TIMER_DRIVEN", - "executionNode": "ALL", - "penaltyDuration": "30 sec", - "yieldDuration": "1 sec", - "bulletinLevel": "WARN", - "runDurationMillis": 0, - "concurrentlySchedulableTaskCount": 1, - "autoTerminatedRelationships": [], - "scheduledState": "ENABLED", - "retryCount": 10, - "retriedRelationships": [], - "backoffMechanism": "PENALIZE_FLOWFILE", - "maxBackoffPeriod": "10 mins", - "componentType": "PROCESSOR", - "groupIdentifier": "0e43f7a6-0daa-31fa-aed2-587dfda4eba3" - }, - { - "identifier": "44a1de0e-ea38-3882-a311-653fff926810", - "instanceIdentifier": "491c9e71-0189-1000-50d0-d27b9b1837f6", - "name": "LdesClient", - "comments": "", - "position": { - "x": -32.0, - "y": 160.0 - }, - "type": "be.vlaanderen.informatievlaanderen.ldes.ldi.processors.LdesClientProcessor", - "bundle": { - "group": "be.vlaanderen.informatievlaanderen.ldes.ldi.nifi", - "artifact": "ldes-client-processor", - "version": "2.0.0-SNAPSHOT" - }, - "properties": { - "STREAM_TIMESTAMP_PATH_PROPERTY": "false", - "MAX_RETRIES": "2147483647", - "DATA_SOURCE_FORMAT": "application/ld+json", - "STREAM_VERSION_OF_PROPERTY": "false", - "STATE_PERSISTENCE_STRATEGY": "MEMORY", - "OAUTH_TOKEN_ENDPOINT": null, - "DATA_DESTINATION_FORMAT": "application/n-quads", - "AUTHORIZATION_STRATEGY": "NO_AUTH", - "STREAM_SHAPE_PROPERTY": "false", - "STATUSES_TO_RETRY": null, - "DATA_SOURCE_URLS": "http://ldes-server-simulator/ldes/occupancy", - "API_KEY_HEADER_PROPERTY": "X-API-KEY", - "API_KEY_PROPERTY": null, - "OAUTH_CLIENT_ID": null, - "KEEP_STATE": "false", - "RETRIES_ENABLED": "false" - }, - "propertyDescriptors": { - "STREAM_TIMESTAMP_PATH_PROPERTY": { - "name": "STREAM_TIMESTAMP_PATH_PROPERTY", - "displayName": "Stream TimestampPath property to FlowFile", - "identifiesControllerService": false, - "sensitive": false - }, - "MAX_RETRIES": { - "name": "MAX_RETRIES", - "displayName": "Indicates max number of retries when retries are enabled.", - "identifiesControllerService": false, - "sensitive": false - }, - "DATA_SOURCE_FORMAT": { - "name": "DATA_SOURCE_FORMAT", - "displayName": "Data source format", - "identifiesControllerService": false, - "sensitive": false - }, - "STREAM_VERSION_OF_PROPERTY": { - "name": "STREAM_VERSION_OF_PROPERTY", - "displayName": "Stream VersionOf property to FlowFile", - "identifiesControllerService": false, - "sensitive": false - }, - "STATE_PERSISTENCE_STRATEGY": { - "name": "STATE_PERSISTENCE_STRATEGY", - "displayName": "How state is persisted (note that memory is volatile).", - "identifiesControllerService": false, - "sensitive": false - }, - "OAUTH_TOKEN_ENDPOINT": { - "name": "OAUTH_TOKEN_ENDPOINT", - "displayName": "Token endpoint used for Oauth2 client credentials flow.", - "identifiesControllerService": false, - "sensitive": false - }, - "DATA_DESTINATION_FORMAT": { - "name": "DATA_DESTINATION_FORMAT", - "displayName": "Data destination format", - "identifiesControllerService": false, - "sensitive": false - }, - "AUTHORIZATION_STRATEGY": { - "name": "AUTHORIZATION_STRATEGY", - "displayName": "Authorization strategy for the internal http client.", - "identifiesControllerService": false, - "sensitive": false - }, - "STREAM_SHAPE_PROPERTY": { - "name": "STREAM_SHAPE_PROPERTY", - "displayName": "Stream shape property to FlowFile", - "identifiesControllerService": false, - "sensitive": false - }, - "STATUSES_TO_RETRY": { - "name": "STATUSES_TO_RETRY", - "displayName": "Custom comma seperated list of http status codes that can trigger a retry in the http client.", - "identifiesControllerService": false, - "sensitive": false - }, - "DATA_SOURCE_URLS": { - "name": "DATA_SOURCE_URLS", - "displayName": "Data source url", - "identifiesControllerService": false, - "sensitive": false - }, - "API_KEY_HEADER_PROPERTY": { - "name": "API_KEY_HEADER_PROPERTY", - "displayName": "API header that should be used for the API key", - "identifiesControllerService": false, - "sensitive": false - }, - "API_KEY_PROPERTY": { - "name": "API_KEY_PROPERTY", - "displayName": "API key that should be used to access the API.", - "identifiesControllerService": false, - "sensitive": false - }, - "OAUTH_CLIENT_SECRET": { - "name": "OAUTH_CLIENT_SECRET", - "displayName": "Client secret used for Oauth2 client credentials flow", - "identifiesControllerService": false, - "sensitive": true - }, - "OAUTH_CLIENT_ID": { - "name": "OAUTH_CLIENT_ID", - "displayName": "Client id used for Oauth2 client credentials flow", - "identifiesControllerService": false, - "sensitive": false - }, - "KEEP_STATE": { - "name": "KEEP_STATE", - "displayName": "Keep state when the processor is removed from the flow", - "identifiesControllerService": false, - "sensitive": false - }, - "RETRIES_ENABLED": { - "name": "RETRIES_ENABLED", - "displayName": "Indicates of retries are enabled when the http request fails.", - "identifiesControllerService": false, - "sensitive": false - } - }, - "style": {}, - "schedulingPeriod": "0 sec", - "schedulingStrategy": "TIMER_DRIVEN", - "executionNode": "ALL", - "penaltyDuration": "30 sec", - "yieldDuration": "1 sec", - "bulletinLevel": "WARN", - "runDurationMillis": 0, - "concurrentlySchedulableTaskCount": 1, - "autoTerminatedRelationships": [], - "scheduledState": "ENABLED", - "retryCount": 10, - "retriedRelationships": [], - "backoffMechanism": "PENALIZE_FLOWFILE", - "maxBackoffPeriod": "10 mins", - "componentType": "PROCESSOR", - "groupIdentifier": "0e43f7a6-0daa-31fa-aed2-587dfda4eba3" - } - ], - "inputPorts": [], - "outputPorts": [], - "connections": [ - { - "identifier": "48897e77-2c5d-38d4-993e-95dc94d8a311", - "instanceIdentifier": "f83f379a-dbba-398b-d067-e066085157e7", - "name": "", - "source": { - "id": "4ae9fd57-e969-384a-be11-ae4838e40aa9", - "type": "PROCESSOR", - "groupId": "0e43f7a6-0daa-31fa-aed2-587dfda4eba3", - "name": "ArchiveFileOutProcessor", - "comments": "", - "instanceIdentifier": "3bc45068-5487-3b1a-a44b-d1193f2134bc" - }, - "destination": { - "id": "a9c47621-746f-3570-ae11-7cd1ce9f9678", - "type": "FUNNEL", - "groupId": "0e43f7a6-0daa-31fa-aed2-587dfda4eba3", - "name": "Funnel", - "comments": "", - "instanceIdentifier": "d75344b1-59a0-353b-3382-1925018862f9" - }, - "labelIndex": 1, - "zIndex": 0, - "selectedRelationships": [ - "success" - ], - "backPressureObjectThreshold": 10000, - "backPressureDataSizeThreshold": "1 GB", - "flowFileExpiration": "0 sec", - "prioritizers": [], - "bends": [], - "loadBalanceStrategy": "DO_NOT_LOAD_BALANCE", - "partitioningAttribute": "", - "loadBalanceCompression": "DO_NOT_COMPRESS", - "componentType": "CONNECTION", - "groupIdentifier": "0e43f7a6-0daa-31fa-aed2-587dfda4eba3" - }, - { - "identifier": "45fb47fb-9ba2-388e-81ba-98deb2e019da", - "instanceIdentifier": "491dcb2a-0189-1000-3993-1a9b8b9c1fc5", - "name": "", - "source": { - "id": "4ae9fd57-e969-384a-be11-ae4838e40aa9", - "type": "PROCESSOR", - "groupId": "0e43f7a6-0daa-31fa-aed2-587dfda4eba3", - "name": "ArchiveFileOutProcessor", - "comments": "", - "instanceIdentifier": "3bc45068-5487-3b1a-a44b-d1193f2134bc" - }, - "destination": { - "id": "a9c47621-746f-3570-ae11-7cd1ce9f9678", - "type": "FUNNEL", - "groupId": "0e43f7a6-0daa-31fa-aed2-587dfda4eba3", - "name": "Funnel", - "comments": "", - "instanceIdentifier": "d75344b1-59a0-353b-3382-1925018862f9" - }, - "labelIndex": 1, - "zIndex": 0, - "selectedRelationships": [ - "failure" - ], - "backPressureObjectThreshold": 10000, - "backPressureDataSizeThreshold": "1 GB", - "flowFileExpiration": "0 sec", - "prioritizers": [], - "bends": [ - { - "x": 592.0, - "y": 408.0 - } - ], - "loadBalanceStrategy": "DO_NOT_LOAD_BALANCE", - "partitioningAttribute": "", - "loadBalanceCompression": "DO_NOT_COMPRESS", - "componentType": "CONNECTION", - "groupIdentifier": "0e43f7a6-0daa-31fa-aed2-587dfda4eba3" - }, - { - "identifier": "724d0c90-0e21-310b-befa-37a7c7490798", - "instanceIdentifier": "491ce634-0189-1000-2552-523c75b1fa89", - "name": "", - "source": { - "id": "44a1de0e-ea38-3882-a311-653fff926810", - "type": "PROCESSOR", - "groupId": "0e43f7a6-0daa-31fa-aed2-587dfda4eba3", - "name": "LdesClient", - "comments": "", - "instanceIdentifier": "491c9e71-0189-1000-50d0-d27b9b1837f6" - }, - "destination": { - "id": "4ae9fd57-e969-384a-be11-ae4838e40aa9", - "type": "PROCESSOR", - "groupId": "0e43f7a6-0daa-31fa-aed2-587dfda4eba3", - "name": "ArchiveFileOutProcessor", - "comments": "", - "instanceIdentifier": "3bc45068-5487-3b1a-a44b-d1193f2134bc" - }, - "labelIndex": 1, - "zIndex": 0, - "selectedRelationships": [ - "data" - ], - "backPressureObjectThreshold": 10000, - "backPressureDataSizeThreshold": "1 GB", - "flowFileExpiration": "0 sec", - "prioritizers": [], - "bends": [], - "loadBalanceStrategy": "DO_NOT_LOAD_BALANCE", - "partitioningAttribute": "", - "loadBalanceCompression": "DO_NOT_COMPRESS", - "componentType": "CONNECTION", - "groupIdentifier": "0e43f7a6-0daa-31fa-aed2-587dfda4eba3" - } - ], - "labels": [], - "funnels": [ - { - "identifier": "a9c47621-746f-3570-ae11-7cd1ce9f9678", - "instanceIdentifier": "d75344b1-59a0-353b-3382-1925018862f9", - "position": { - "x": 872.0, - "y": 536.0 - }, - "componentType": "FUNNEL", - "groupIdentifier": "0e43f7a6-0daa-31fa-aed2-587dfda4eba3" - } - ], - "controllerServices": [], - "variables": {}, - "defaultFlowFileExpiration": "0 sec", - "defaultBackPressureObjectThreshold": 10000, - "defaultBackPressureDataSizeThreshold": "1 GB", - "componentType": "PROCESS_GROUP", - "flowFileConcurrency": "UNBOUNDED", - "flowFileOutboundPolicy": "STREAM_WHEN_AVAILABLE" - }, - "externalControllerServices": {}, - "parameterContexts": {}, - "flowEncodingVersion": "1.0", - "parameterProviders": {}, - "latest": false -} \ No newline at end of file diff --git a/tests/033.archiving/nifi-read-archive-workflow.json b/tests/033.archiving/nifi-read-archive-workflow.json deleted file mode 100644 index 9cd1cfe8..00000000 --- a/tests/033.archiving/nifi-read-archive-workflow.json +++ /dev/null @@ -1 +0,0 @@ -{"flowContents":{"identifier":"c360384c-1091-3260-aab4-407dc1d96269","instanceIdentifier":"53bc2938-0189-1000-f31b-21677d5e2ff9","name":"NiFi Flow","comments":"","position":{"x":0.0,"y":0.0},"processGroups":[],"remoteProcessGroups":[],"processors":[{"identifier":"f95e98b0-9b44-3166-81d1-362feebf089c","instanceIdentifier":"53c38634-0189-1000-13bf-f6100a10b7b8","name":"InvokeHTTP","comments":"","position":{"x":1104.0,"y":296.0},"type":"org.apache.nifi.processors.standard.InvokeHTTP","bundle":{"group":"org.apache.nifi","artifact":"nifi-standard-nar","version":"1.20.0"},"properties":{"Proxy Host":null,"Attributes to Send":null,"use-etag":"false","proxy-configuration-service":null,"Proxy Type":"http","cookie-strategy":"DISABLED","Connection Timeout":"5 secs","send-message-body":"true","set-form-filename":"true","Always Output Response":"false","etag-max-cache-size":"10MB","Content-Encoding":"DISABLED","disable-http2":"False","idle-timeout":"5 mins","Put Response Body In Attribute":null,"Use Chunked Encoding":"false","Follow Redirects":"True","Remote URL":"http://ldes-server:8080/occupancy","form-body-form-name":null,"Content-Type":"${mime.type}","flow-file-naming-strategy":"RANDOM","max-idle-connections":"5","invokehttp-proxy-user":null,"Read Timeout":"15 secs","Max Length To Put In Attribute":"256","ignore-response-content":"false","Proxy Port":null,"SSL Context Service":null,"Digest Authentication":"false","HTTP Method":"POST","Add Response Headers to Request":"false","oauth2-access-token-provider":null,"Basic Authentication Username":null,"Include Date Header":"True","Penalize on \"No Retry\"":"false","Useragent":null},"propertyDescriptors":{"Proxy Host":{"name":"Proxy Host","displayName":"Proxy Host","identifiesControllerService":false,"sensitive":false},"Attributes to Send":{"name":"Attributes to Send","displayName":"Request Header Attributes Pattern","identifiesControllerService":false,"sensitive":false},"use-etag":{"name":"use-etag","displayName":"Response Cache Enabled","identifiesControllerService":false,"sensitive":false},"proxy-configuration-service":{"name":"proxy-configuration-service","displayName":"Proxy Configuration Service","identifiesControllerService":true,"sensitive":false},"Proxy Type":{"name":"Proxy Type","displayName":"Proxy Type","identifiesControllerService":false,"sensitive":false},"Basic Authentication Password":{"name":"Basic Authentication Password","displayName":"Request Password","identifiesControllerService":false,"sensitive":true},"cookie-strategy":{"name":"cookie-strategy","displayName":"Response Cookie Strategy","identifiesControllerService":false,"sensitive":false},"Connection Timeout":{"name":"Connection Timeout","displayName":"Socket Connect Timeout","identifiesControllerService":false,"sensitive":false},"send-message-body":{"name":"send-message-body","displayName":"Request Body Enabled","identifiesControllerService":false,"sensitive":false},"set-form-filename":{"name":"set-form-filename","displayName":"Request Multipart Form-Data Filename Enabled","identifiesControllerService":false,"sensitive":false},"Always Output Response":{"name":"Always Output Response","displayName":"Response Generation Required","identifiesControllerService":false,"sensitive":false},"etag-max-cache-size":{"name":"etag-max-cache-size","displayName":"Response Cache Size","identifiesControllerService":false,"sensitive":false},"Content-Encoding":{"name":"Content-Encoding","displayName":"Request Content-Encoding","identifiesControllerService":false,"sensitive":false},"disable-http2":{"name":"disable-http2","displayName":"HTTP/2 Disabled","identifiesControllerService":false,"sensitive":false},"idle-timeout":{"name":"idle-timeout","displayName":"Socket Idle Timeout","identifiesControllerService":false,"sensitive":false},"Put Response Body In Attribute":{"name":"Put Response Body In Attribute","displayName":"Response Body Attribute Name","identifiesControllerService":false,"sensitive":false},"Use Chunked Encoding":{"name":"Use Chunked Encoding","displayName":"Request Chunked Transfer-Encoding Enabled","identifiesControllerService":false,"sensitive":false},"Follow Redirects":{"name":"Follow Redirects","displayName":"Response Redirects Enabled","identifiesControllerService":false,"sensitive":false},"Remote URL":{"name":"Remote URL","displayName":"HTTP URL","identifiesControllerService":false,"sensitive":false},"form-body-form-name":{"name":"form-body-form-name","displayName":"Request Multipart Form-Data Name","identifiesControllerService":false,"sensitive":false},"Content-Type":{"name":"Content-Type","displayName":"Request Content-Type","identifiesControllerService":false,"sensitive":false},"flow-file-naming-strategy":{"name":"flow-file-naming-strategy","displayName":"Response FlowFile Naming Strategy","identifiesControllerService":false,"sensitive":false},"max-idle-connections":{"name":"max-idle-connections","displayName":"Socket Idle Connections","identifiesControllerService":false,"sensitive":false},"invokehttp-proxy-user":{"name":"invokehttp-proxy-user","displayName":"Proxy Username","identifiesControllerService":false,"sensitive":false},"Read Timeout":{"name":"Read Timeout","displayName":"Socket Read Timeout","identifiesControllerService":false,"sensitive":false},"Max Length To Put In Attribute":{"name":"Max Length To Put In Attribute","displayName":"Response Body Attribute Size","identifiesControllerService":false,"sensitive":false},"invokehttp-proxy-password":{"name":"invokehttp-proxy-password","displayName":"Proxy Password","identifiesControllerService":false,"sensitive":true},"ignore-response-content":{"name":"ignore-response-content","displayName":"Response Body Ignored","identifiesControllerService":false,"sensitive":false},"Proxy Port":{"name":"Proxy Port","displayName":"Proxy Port","identifiesControllerService":false,"sensitive":false},"SSL Context Service":{"name":"SSL Context Service","displayName":"SSL Context Service","identifiesControllerService":true,"sensitive":false},"Digest Authentication":{"name":"Digest Authentication","displayName":"Request Digest Authentication Enabled","identifiesControllerService":false,"sensitive":false},"HTTP Method":{"name":"HTTP Method","displayName":"HTTP Method","identifiesControllerService":false,"sensitive":false},"Add Response Headers to Request":{"name":"Add Response Headers to Request","displayName":"Response Header Request Attributes Enabled","identifiesControllerService":false,"sensitive":false},"oauth2-access-token-provider":{"name":"oauth2-access-token-provider","displayName":"Request OAuth2 Access Token Provider","identifiesControllerService":true,"sensitive":false},"Basic Authentication Username":{"name":"Basic Authentication Username","displayName":"Request Username","identifiesControllerService":false,"sensitive":false},"Include Date Header":{"name":"Include Date Header","displayName":"Request Date Header Enabled","identifiesControllerService":false,"sensitive":false},"Penalize on \"No Retry\"":{"name":"Penalize on \"No Retry\"","displayName":"Request Failure Penalization Enabled","identifiesControllerService":false,"sensitive":false},"Useragent":{"name":"Useragent","displayName":"Request User-Agent","identifiesControllerService":false,"sensitive":false}},"style":{},"schedulingPeriod":"0 sec","schedulingStrategy":"TIMER_DRIVEN","executionNode":"ALL","penaltyDuration":"30 sec","yieldDuration":"1 sec","bulletinLevel":"WARN","runDurationMillis":0,"concurrentlySchedulableTaskCount":1,"autoTerminatedRelationships":["Response","No Retry","Retry","Original","Failure"],"scheduledState":"ENABLED","retryCount":10,"retriedRelationships":["Retry","Failure"],"backoffMechanism":"PENALIZE_FLOWFILE","maxBackoffPeriod":"10 mins","componentType":"PROCESSOR","groupIdentifier":"c360384c-1091-3260-aab4-407dc1d96269"},{"identifier":"16564382-edda-3bcd-8868-499416446530","instanceIdentifier":"53bdf84d-0189-1000-ff7c-fc6a45b9ff69","name":"ArchiveFileInProcessor","comments":"","position":{"x":456.0,"y":296.0},"type":"be.vlaanderen.informatievlaanderen.ldes.ldi.processors.ArchiveFileInProcessor","bundle":{"group":"be.vlaanderen.informatievlaanderen.ldes.ldi.nifi","artifact":"archive-file-in","version":"1.3.0-SNAPSHOT"},"properties":{"ARCHIVE_ROOT_DIR":"/tmp/archive","DATA_SOURCE_FORMAT":"text/turtle"},"propertyDescriptors":{"ARCHIVE_ROOT_DIR":{"name":"ARCHIVE_ROOT_DIR","displayName":"The archive directory","identifiesControllerService":false,"sensitive":false},"DATA_SOURCE_FORMAT":{"name":"DATA_SOURCE_FORMAT","displayName":"Data source format","identifiesControllerService":false,"sensitive":false}},"style":{},"schedulingPeriod":"0 sec","schedulingStrategy":"TIMER_DRIVEN","executionNode":"ALL","penaltyDuration":"30 sec","yieldDuration":"1 sec","bulletinLevel":"WARN","runDurationMillis":0,"concurrentlySchedulableTaskCount":1,"autoTerminatedRelationships":[],"scheduledState":"ENABLED","retryCount":10,"retriedRelationships":[],"backoffMechanism":"PENALIZE_FLOWFILE","maxBackoffPeriod":"10 mins","componentType":"PROCESSOR","groupIdentifier":"c360384c-1091-3260-aab4-407dc1d96269"}],"inputPorts":[],"outputPorts":[],"connections":[{"identifier":"032effc9-2f9f-3f31-ab94-6e90b08b4f70","instanceIdentifier":"53c3e192-0189-1000-7922-1e558bc0d148","name":"","source":{"id":"16564382-edda-3bcd-8868-499416446530","type":"PROCESSOR","groupId":"c360384c-1091-3260-aab4-407dc1d96269","name":"ArchiveFileInProcessor","comments":"","instanceIdentifier":"53bdf84d-0189-1000-ff7c-fc6a45b9ff69"},"destination":{"id":"f95e98b0-9b44-3166-81d1-362feebf089c","type":"PROCESSOR","groupId":"c360384c-1091-3260-aab4-407dc1d96269","name":"InvokeHTTP","comments":"","instanceIdentifier":"53c38634-0189-1000-13bf-f6100a10b7b8"},"labelIndex":1,"zIndex":0,"selectedRelationships":["success"],"backPressureObjectThreshold":10000,"backPressureDataSizeThreshold":"1 GB","flowFileExpiration":"0 sec","prioritizers":[],"bends":[],"loadBalanceStrategy":"DO_NOT_LOAD_BALANCE","partitioningAttribute":"","loadBalanceCompression":"DO_NOT_COMPRESS","componentType":"CONNECTION","groupIdentifier":"c360384c-1091-3260-aab4-407dc1d96269"},{"identifier":"c730fc8f-194f-3f74-b2a1-4b1b77eff0eb","instanceIdentifier":"53be60b4-0189-1000-7b3c-f60c85ee03ca","name":"","source":{"id":"16564382-edda-3bcd-8868-499416446530","type":"PROCESSOR","groupId":"c360384c-1091-3260-aab4-407dc1d96269","name":"ArchiveFileInProcessor","comments":"","instanceIdentifier":"53bdf84d-0189-1000-ff7c-fc6a45b9ff69"},"destination":{"id":"4ba5d111-7b3b-37a1-8d10-1902cb4f959b","type":"FUNNEL","groupId":"c360384c-1091-3260-aab4-407dc1d96269","name":"Funnel","comments":"","instanceIdentifier":"53be519c-0189-1000-a1c4-0537f2d7e187"},"labelIndex":1,"zIndex":0,"selectedRelationships":["failure"],"backPressureObjectThreshold":10000,"backPressureDataSizeThreshold":"1 GB","flowFileExpiration":"0 sec","prioritizers":[],"bends":[],"loadBalanceStrategy":"DO_NOT_LOAD_BALANCE","partitioningAttribute":"","loadBalanceCompression":"DO_NOT_COMPRESS","componentType":"CONNECTION","groupIdentifier":"c360384c-1091-3260-aab4-407dc1d96269"}],"labels":[],"funnels":[{"identifier":"4ba5d111-7b3b-37a1-8d10-1902cb4f959b","instanceIdentifier":"53be519c-0189-1000-a1c4-0537f2d7e187","position":{"x":607.0,"y":565.0},"componentType":"FUNNEL","groupIdentifier":"c360384c-1091-3260-aab4-407dc1d96269"}],"controllerServices":[],"variables":{},"defaultFlowFileExpiration":"0 sec","defaultBackPressureObjectThreshold":10000,"defaultBackPressureDataSizeThreshold":"1 GB","componentType":"PROCESS_GROUP","flowFileConcurrency":"UNBOUNDED","flowFileOutboundPolicy":"STREAM_WHEN_AVAILABLE"},"externalControllerServices":{},"parameterContexts":{},"flowEncodingVersion":"1.0","parameterProviders":{},"latest":false} \ No newline at end of file From fa2ed1452534516e51941d8ffdbe6021d21fc4e9 Mon Sep 17 00:00:00 2001 From: Jonas Bulcke Date: Thu, 18 Apr 2024 15:52:26 +0200 Subject: [PATCH 2/3] fix: invalid config --- tests/039.default-bucket/ldio-workflow.config.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/039.default-bucket/ldio-workflow.config.yml b/tests/039.default-bucket/ldio-workflow.config.yml index 319235ac..24e60996 100644 --- a/tests/039.default-bucket/ldio-workflow.config.yml +++ b/tests/039.default-bucket/ldio-workflow.config.yml @@ -3,11 +3,11 @@ orchestrator: - name: simulator-to-sink-pipeline description: "This pipeline uses an LDES client to read an existing LDES and send the members as N-Quads to a sink application" input: - name: Ldio:LdioLdesClient + name: Ldio:LdesClient config: url: http://ldes-server:8080/mobility-hindrances/time outputs: - - name: Ldio:LdioHttpOut + - name: Ldio:HttpOut config: endpoint: http://test-message-sink/member rdf-writer: From 5b0f69dd863edbd77ae0afc4f586d4f839bf42cb Mon Sep 17 00:00:00 2001 From: Jonas Bulcke Date: Thu, 18 Apr 2024 16:40:50 +0200 Subject: [PATCH 3/3] fix: broken test 39 --- tests/039.default-bucket/README.md | 8 ++++---- tests/039.default-bucket/ldio-workflow.config.yml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/039.default-bucket/README.md b/tests/039.default-bucket/README.md index 78980186..f8a996be 100644 --- a/tests/039.default-bucket/README.md +++ b/tests/039.default-bucket/README.md @@ -32,7 +32,7 @@ docker compose up -d curl 'http://localhost:8080/mobility-hindrances/time?year=unknown&pageNumber=1' ``` -4. Verify the root fragment of the geospatial view has a relation to the default fragment and to the year=2023 fragment: +4. Verify the root fragment of the geospatial view has a relation to the default fragment and to the tile 0/0/0 fragment: ```bash curl http://localhost:8080/mobility-hindrances/geo ``` @@ -42,7 +42,7 @@ docker compose up -d curl 'http://localhost:8080/mobility-hindrances/geo?tile=unknown&pageNumber=1' ``` -6. Verify the root fragment of the reference view has a relation to the default fragment and to the year=2023 fragment: +6. Verify the root fragment of the reference view has a relation to the version=unknown fragment and to the version= fragment: ```bash curl http://localhost:8080/mobility-hindrances/ref ``` @@ -52,14 +52,14 @@ docker compose up -d curl 'http://localhost:8080/mobility-hindrances/ref?version=unknown&pageNumber=1' ``` -8. Verify the root fragment of the combined view has a relation to the default fragment and to the year=2023 fragment: +8. Verify the root fragment of the combined view has a relation to the default fragment and to the tile=0/0/0 fragment: ```bash curl http://localhost:8080/mobility-hindrances/mixed ``` 9. Verify the default fragment contains exactly 2 members: ```bash - curl http://localhost:8080/mobility-hindrances/mixed?year=unknown&tile=unknown&version=unknown&pageNumber=1 + curl http://localhost:8080/mobility-hindrances/mixed?tile=unknown&year=unknown&version=unknown&pageNumber=1 ``` diff --git a/tests/039.default-bucket/ldio-workflow.config.yml b/tests/039.default-bucket/ldio-workflow.config.yml index 24e60996..72b75899 100644 --- a/tests/039.default-bucket/ldio-workflow.config.yml +++ b/tests/039.default-bucket/ldio-workflow.config.yml @@ -5,7 +5,7 @@ orchestrator: input: name: Ldio:LdesClient config: - url: http://ldes-server:8080/mobility-hindrances/time + urls: http://ldes-server:8080/mobility-hindrances/time outputs: - name: Ldio:HttpOut config: