This is an automated email from the ASF dual-hosted git repository. acosentino pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel-kamelets.git
The following commit(s) were added to refs/heads/main by this push: new 02933800 chore: Fix YAKS tests 02933800 is described below commit 0293380079a1e70b6f33ea0fcbd61789d891fea4 Author: Christoph Deppisch <cdeppi...@redhat.com> AuthorDate: Tue Feb 28 10:45:07 2023 +0100 chore: Fix YAKS tests - Update GitHub workflow to (re)enable YAKS tests - Use Camel 4.0.0-M1 in tests - Run tests locally via JBang --- .github/workflows/yaks-tests.yaml | 72 ++++++++-------------- .gitignore | 1 + test/aws-ddb-sink/aws-ddb-sink-binding.yaml | 2 +- test/aws-ddb-sink/aws-ddb-sink-deleteItem.feature | 27 ++++---- test/aws-ddb-sink/aws-ddb-sink-putItem.feature | 33 +++++----- test/aws-ddb-sink/aws-ddb-sink-updateItem.feature | 29 ++++----- test/aws-ddb-sink/verifyItems.groovy | 27 ++++---- test/aws-ddb-sink/yaks-config.yaml | 2 + test/aws-s3/aws-s3-knative-binding.feature | 27 ++++---- test/aws-s3/aws-s3-source-property-conf.feature | 20 +++--- test/aws-s3/aws-s3-source-secret-conf.feature | 22 +++---- test/aws-s3/aws-s3-source-uri-conf.feature | 20 +++--- test/aws-s3/aws-s3-uri-binding.feature | 23 +++---- .../{ => aws-s3}/utils/knative-channel-to-log.yaml | 0 test/{ => aws-s3}/utils/knative-to-log.yaml | 0 test/aws-s3/yaks-config.yaml | 6 +- test/earthquake-source/earthquake-source.feature | 5 +- test/earthquake-source/yaks-config.yaml | 2 + .../aws-ddb-sink-exp/aws-ddb-sink-binding.yaml | 4 +- .../aws-ddb-sink-deleteItem.feature | 33 +++++----- .../aws-ddb-sink-exp/aws-ddb-sink-putItem.feature | 39 ++++++------ .../aws-ddb-sink-updateItem.feature | 35 +++++------ .../aws-ddb-sink-exp/verifyItems.groovy | 27 ++++---- .../experimental/aws-ddb-sink-exp/yaks-config.yaml | 2 + .../aws-s3-exp/aws-s3-cloudevents.feature | 31 ++++------ .../experimental/aws-s3-exp/aws-s3-knative.feature | 30 ++++----- test/experimental/aws-s3-exp/yaks-config.yaml | 4 +- .../extract-field-action-binding.yaml | 2 +- .../extract-field-action.feature | 9 +-- test/extract-field-action/yaks-config.yaml | 2 + .../insert-field-action-binding.yaml | 2 +- .../insert-field-action.feature | 9 +-- test/insert-field-action/yaks-config.yaml | 2 + test/kafka/kafka-sink-binding.yaml | 2 +- test/kafka/kafka-sink.feature | 19 +++--- test/kafka/kafka-source-binding.yaml | 4 +- test/kafka/kafka-source.feature | 27 ++++---- test/kafka/yaks-config.yaml | 4 ++ test/mail-sink/mail-sink.feature | 6 +- test/mail-sink/timer-to-mail.yaml | 1 + test/mail-sink/yaks-config.yaml | 2 + test/rest-openapi-sink/openapi.json | 9 +-- .../rest-openapi-sink-binding.yaml | 2 +- test/rest-openapi-sink/rest-openapi-sink.feature | 13 ++-- test/rest-openapi-sink/yaks-config.yaml | 2 + test/salesforce-sink/yaks-config.yaml | 2 + test/timer-source/timer-source.feature | 11 ++-- test/timer-source/yaks-config.yaml | 2 + 48 files changed, 297 insertions(+), 358 deletions(-) diff --git a/.github/workflows/yaks-tests.yaml b/.github/workflows/yaks-tests.yaml index 10354e39..0c382784 100644 --- a/.github/workflows/yaks-tests.yaml +++ b/.github/workflows/yaks-tests.yaml @@ -41,20 +41,23 @@ concurrency: cancel-in-progress: true env: - CAMEL_K_VERSION: 1.12.0-nightly - YAKS_VERSION: 0.14.1 - YAKS_IMAGE_NAME: "docker.io/citrusframework/yaks" - YAKS_RUN_OPTIONS: "--timeout=15m" + YAKS_VERSION: 0.14.2 + YAKS_RUN_OPTIONS: "--timeout=15m --local -e YAKS_CAMELK_MAX_ATTEMPTS=10 -e YAKS_JBANG_CAMEL_VERSION=4.0.0-M1" jobs: test: - if: ${{ false }} # disable until YAKS support Camel 4 - runs-on: ubuntu-latest - steps: - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@v3 + with: + persist-credentials: false + - name: Set up JDK + uses: actions/setup-java@v3 + with: + distribution: 'temurin' + java-version: 17 + cache: 'maven' - name: Set JitPack coordinates for pull requests if: github.event_name == 'pull_request' env: @@ -67,14 +70,6 @@ jobs: # Overwrite JitPack coordinates in the local Kamelets so the tests can use the utility classes in this PR find kamelets -maxdepth 1 -name '*.kamelet.yaml' -exec sed -i "s/github:apache.camel-kamelets:camel-kamelets-utils:${PROJECT_VERSION}/github:${HEAD_REPO/\//.}:camel-kamelets-utils:${HEAD_REF//\//'~'}-SNAPSHOT/g" {} + - - name: Get Camel K CLI - run: | - curl --fail -L --silent https://github.com/apache/camel-k/releases/download/${CAMEL_K_VERSION}/camel-k-client-${CAMEL_K_VERSION}-linux-64bit.tar.gz -o kamel.tar.gz - mkdir -p _kamel - tar -zxf kamel.tar.gz --directory ./_kamel - sudo mv ./_kamel/kamel /usr/local/bin/ - rm kamel.tar.gz - rm -r _kamel - name: Get YAKS CLI run: | curl --fail -L --silent https://github.com/citrusframework/yaks/releases/download/v${YAKS_VERSION}/yaks-${YAKS_VERSION}-linux-64bit.tar.gz -o yaks.tar.gz @@ -83,51 +78,38 @@ jobs: sudo mv ./_yaks/yaks /usr/local/bin/ rm yaks.tar.gz rm -r _yaks - - name: Kubernetes KinD Cluster - uses: container-tools/kind-action@v1 - with: - version: v0.14.0 - node_image: kindest/node:v1.23.6@sha256:b1fa224cc6c7ff32455e0b1fd9cbfd3d3bc87ecaa8fcb06961ed1afb3db0f9ae - name: Info run: | - kubectl version - kubectl cluster-info - kubectl describe nodes - - name: Install Knative - uses: ./.github/actions/install-knative - - name: Install Camel K + yaks version + - name: YAKS Tests run: | - # Configure install options - export KAMEL_INSTALL_BUILD_PUBLISH_STRATEGY=Spectrum - export KAMEL_INSTALL_REGISTRY=$KIND_REGISTRY - export KAMEL_INSTALL_REGISTRY_INSECURE=true + echo "Install JBang via SDKMAN" - kamel install -w --operator-env-vars KAMEL_INSTALL_DEFAULT_KAMELETS=false --maven-repository=https://repository.apache.org/content/repositories/snapshots@id=apache-snapshots@snapshots + curl -s "https://get.sdkman.io" | bash + source "/home/runner/.sdkman/bin/sdkman-init.sh" + sdk install jbang + + jbang trust add https://github.com/citrusframework/yaks/ + jbang trust add https://github.com/apache/camel/ - # Install the local kamelets - find kamelets -maxdepth 1 -name '*.kamelet.yaml' -exec kubectl apply -f {} \; - - name: Install YAKS - run: | - yaks install --operator-image $YAKS_IMAGE_NAME:$YAKS_VERSION - - name: YAKS Tests - run: | - echo "Running tests for Kamelets" + jbang yaks@citrusframework/yaks --version + jbang camel@apache/camel --version + + echo "Running YAKS tests for Kamelets" + yaks run test/aws-ddb-sink $YAKS_RUN_OPTIONS yaks run test/aws-s3 $YAKS_RUN_OPTIONS yaks run test/extract-field-action $YAKS_RUN_OPTIONS yaks run test/insert-field-action $YAKS_RUN_OPTIONS + yaks run test/mail-sink $YAKS_RUN_OPTIONS yaks run test/timer-source $YAKS_RUN_OPTIONS yaks run test/earthquake-source $YAKS_RUN_OPTIONS yaks run test/rest-openapi-sink $YAKS_RUN_OPTIONS yaks run test/kafka $YAKS_RUN_OPTIONS - - name: YAKS Report - if: failure() - run: | - yaks report - uses: actions/upload-artifact@v2 if: failure() with: name: dumps - path: _output/*-dump.log + path: test/**/.yaks-jbang/*-output.txt diff --git a/.gitignore b/.gitignore index ae7d387f..6d9d189e 100644 --- a/.gitignore +++ b/.gitignore @@ -31,5 +31,6 @@ node_modules/ terraform.* .terraform* .camel-jbang* +.yaks-jbang* _output diff --git a/test/aws-ddb-sink/aws-ddb-sink-binding.yaml b/test/aws-ddb-sink/aws-ddb-sink-binding.yaml index e7ba6d10..87f805a8 100644 --- a/test/aws-ddb-sink/aws-ddb-sink-binding.yaml +++ b/test/aws-ddb-sink/aws-ddb-sink-binding.yaml @@ -44,7 +44,7 @@ spec: table: ${aws.ddb.tableName} operation: ${aws.ddb.operation} overrideEndpoint: true - uriEndpointOverride: ${YAKS_TESTCONTAINERS_LOCALSTACK_DYNAMODB_URL} + uriEndpointOverride: ${YAKS_TESTCONTAINERS_LOCALSTACK_DYNAMODB_LOCAL_URL} accessKey: ${YAKS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY} secretKey: ${YAKS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY} region: ${YAKS_TESTCONTAINERS_LOCALSTACK_REGION} diff --git a/test/aws-ddb-sink/aws-ddb-sink-deleteItem.feature b/test/aws-ddb-sink/aws-ddb-sink-deleteItem.feature index a6d2ee85..9ad6bde5 100644 --- a/test/aws-ddb-sink/aws-ddb-sink-deleteItem.feature +++ b/test/aws-ddb-sink/aws-ddb-sink-deleteItem.feature @@ -18,10 +18,6 @@ Feature: AWS DDB Sink - DeleteItem Background: - Given Kamelet aws-ddb-sink is available - Given Camel K resource polling configuration - | maxAttempts | 200 | - | delayBetweenAttempts | 2000 | Given variables | timer.source.period | 10000 | | aws.ddb.operation | DeleteItem | @@ -31,12 +27,11 @@ Feature: AWS DDB Sink - DeleteItem | aws.ddb.item.title | Back to the future | | aws.ddb.json.data | {"id": ${aws.ddb.item.id}} | - Scenario: Start LocalStack container + Scenario: Create infrastructure + # Start LocalStack container Given Enable service DYNAMODB Given start LocalStack container - And log 'Started LocalStack container: ${YAKS_TESTCONTAINERS_LOCALSTACK_CONTAINER_NAME}' - - Scenario: Create AWS-DDB client + # Create AWS-DDB client Given New global Camel context Given load to Camel registry amazonDDBClient.groovy @@ -44,23 +39,23 @@ Feature: AWS DDB Sink - DeleteItem Given run script putItem.groovy Given variables | maxRetryAttempts | 20 | - | aws.ddb.items | [{year=AttributeValue(N=${aws.ddb.item.year}), id=AttributeValue(N=${aws.ddb.item.id}), title=AttributeValue(S=${aws.ddb.item.title})}] | + | aws.ddb.items | [[year:AttributeValue(N=${aws.ddb.item.year}), id:AttributeValue(N=${aws.ddb.item.id}), title:AttributeValue(S=${aws.ddb.item.title})]] | Then apply actions verifyItems.groovy - Scenario: Create AWS-DDB Kamelet sink binding + Scenario: Verify AWS-DDB Kamelet sink binding + # Create binding When load KameletBinding aws-ddb-sink-binding.yaml And KameletBinding aws-ddb-sink-binding is available And Camel K integration aws-ddb-sink-binding is running - And Camel K integration aws-ddb-sink-binding should print Routes startup - - Scenario: Verify Kamelet sink + And Camel K integration aws-ddb-sink-binding should print Started aws-ddb-sink-binding + # Verify Kamelet sink Given variables | maxRetryAttempts | 20 | | aws.ddb.items | [] | Then apply actions verifyItems.groovy - Scenario: Remove Camel K resources + Scenario: Remove resources + # Remove Camel K resources Given delete KameletBinding aws-ddb-sink-binding - - Scenario: Stop container + # Stop LocalStack container Given stop LocalStack container diff --git a/test/aws-ddb-sink/aws-ddb-sink-putItem.feature b/test/aws-ddb-sink/aws-ddb-sink-putItem.feature index 15847511..0ea36122 100644 --- a/test/aws-ddb-sink/aws-ddb-sink-putItem.feature +++ b/test/aws-ddb-sink/aws-ddb-sink-putItem.feature @@ -18,10 +18,6 @@ Feature: AWS DDB Sink - PutItem Background: - Given Kamelet aws-ddb-sink is available - Given Camel K resource polling configuration - | maxAttempts | 200 | - | delayBetweenAttempts | 2000 | Given variables | timer.source.period | 10000 | | aws.ddb.operation | PutItem | @@ -31,29 +27,34 @@ Feature: AWS DDB Sink - PutItem | aws.ddb.item.title | Star Wars IV | | aws.ddb.json.data | { "id":${aws.ddb.item.id}, "year":${aws.ddb.item.year}, "title":"${aws.ddb.item.title}" } | - Scenario: Start LocalStack container + Scenario: Create infrastructure + # Start LocalStack container Given Enable service DYNAMODB Given start LocalStack container - And log 'Started LocalStack container: ${YAKS_TESTCONTAINERS_LOCALSTACK_CONTAINER_NAME}' - - Scenario: Create AWS-DDB client + # Create AWS-DDB client Given New global Camel context Given load to Camel registry amazonDDBClient.groovy - Scenario: Create AWS-DDB Kamelet sink binding + Scenario: Verify empty items on AWS-DDB + Given variables + | maxRetryAttempts | 20 | + | aws.ddb.items | [] | + Then apply actions verifyItems.groovy + + Scenario: Verify AWS-DDB Kamelet sink binding + # Create binding When load KameletBinding aws-ddb-sink-binding.yaml And KameletBinding aws-ddb-sink-binding is available And Camel K integration aws-ddb-sink-binding is running - And Camel K integration aws-ddb-sink-binding should print Routes startup - - Scenario: Verify Kamelet sink + And Camel K integration aws-ddb-sink-binding should print Started aws-ddb-sink-binding + # Verify Kamelet sink Given variables | maxRetryAttempts | 20 | - | aws.ddb.items | [{year=AttributeValue(N=${aws.ddb.item.year}), id=AttributeValue(N=${aws.ddb.item.id}), title=AttributeValue(S=${aws.ddb.item.title})}] | + | aws.ddb.items | [[year:AttributeValue(N=${aws.ddb.item.year}), id:AttributeValue(N=${aws.ddb.item.id}), title:AttributeValue(S=${aws.ddb.item.title})]] | Then apply actions verifyItems.groovy - Scenario: Remove Camel K resources + Scenario: Remove resources + # Remove Camel K binding Given delete KameletBinding aws-ddb-sink-binding - - Scenario: Stop container + # Stop LocalStack container Given stop LocalStack container diff --git a/test/aws-ddb-sink/aws-ddb-sink-updateItem.feature b/test/aws-ddb-sink/aws-ddb-sink-updateItem.feature index feba0e23..d8cc5840 100644 --- a/test/aws-ddb-sink/aws-ddb-sink-updateItem.feature +++ b/test/aws-ddb-sink/aws-ddb-sink-updateItem.feature @@ -18,10 +18,6 @@ Feature: AWS DDB Sink - UpdateItem Background: - Given Kamelet aws-ddb-sink is available - Given Camel K resource polling configuration - | maxAttempts | 200 | - | delayBetweenAttempts | 2000 | Given variables | timer.source.period | 10000 | | aws.ddb.operation | UpdateItem | @@ -33,12 +29,11 @@ Feature: AWS DDB Sink - UpdateItem | aws.ddb.item.directors | ["Merian C. Cooper", "Ernest B. Schoedsack"] | | aws.ddb.json.data | { "key": {"id": ${aws.ddb.item.id}}, "item": {"title": "${aws.ddb.item.title.new}", "year": ${aws.ddb.item.year}, "directors": ${aws.ddb.item.directors}} } | - Scenario: Start LocalStack container + Scenario: Create infrastructure + # Start LocalStack container Given Enable service DYNAMODB Given start LocalStack container - And log 'Started LocalStack container: ${YAKS_TESTCONTAINERS_LOCALSTACK_CONTAINER_NAME}' - - Scenario: Create AWS-DDB client + # Create AWS-DDB client Given New global Camel context Given load to Camel registry amazonDDBClient.groovy @@ -46,24 +41,24 @@ Feature: AWS DDB Sink - UpdateItem Given run script putItem.groovy Given variables | maxRetryAttempts | 20 | - | aws.ddb.items | [{year=AttributeValue(N=${aws.ddb.item.year}), id=AttributeValue(N=${aws.ddb.item.id}), title=AttributeValue(S=${aws.ddb.item.title})}] | + | aws.ddb.items | [[year:AttributeValue(N=${aws.ddb.item.year}), id:AttributeValue(N=${aws.ddb.item.id}), title:AttributeValue(S=${aws.ddb.item.title})]] | Then apply actions verifyItems.groovy - Scenario: Create AWS-DDB Kamelet sink binding + Scenario: Verify AWS-DDB Kamelet sink binding + # Create binding When load KameletBinding aws-ddb-sink-binding.yaml And KameletBinding aws-ddb-sink-binding is available And Camel K integration aws-ddb-sink-binding is running - And Camel K integration aws-ddb-sink-binding should print Routes startup - - Scenario: Verify Kamelet sink + And Camel K integration aws-ddb-sink-binding should print Started aws-ddb-sink-binding + # Verify Kamelet sink Given variables | maxRetryAttempts | 200 | | aws.ddb.item.directors | [Ernest B. Schoedsack, Merian C. Cooper] | - | aws.ddb.items | [{year=AttributeValue(N=${aws.ddb.item.year}), directors=AttributeValue(SS=${aws.ddb.item.directors}), id=AttributeValue(N=${aws.ddb.item.id}), title=AttributeValue(S=${aws.ddb.item.title.new})}] | + | aws.ddb.items | [[year:AttributeValue(N=${aws.ddb.item.year}), directors:AttributeValue(SS=${aws.ddb.item.directors}), id:AttributeValue(N=${aws.ddb.item.id}), title:AttributeValue(S=${aws.ddb.item.title.new})]] | Then apply actions verifyItems.groovy - Scenario: Remove Camel K resources + Scenario: Remove resources + # Remove Camel K resources Given delete KameletBinding aws-ddb-sink-binding - - Scenario: Stop container + # Stop LocalStack container Given stop LocalStack container diff --git a/test/aws-ddb-sink/verifyItems.groovy b/test/aws-ddb-sink/verifyItems.groovy index b65ca27f..b89dad5a 100644 --- a/test/aws-ddb-sink/verifyItems.groovy +++ b/test/aws-ddb-sink/verifyItems.groovy @@ -15,19 +15,16 @@ * limitations under the License. */ -$actions { - $(repeatOnError() - .until('i > ${maxRetryAttempts}') - .actions(new com.consol.citrus.TestAction() { - @Override - void execute(com.consol.citrus.context.TestContext context) { - try { - assert context.getVariable('aws.ddb.items') - .equals(amazonDDBClient.scan(b -> b.tableName(context.getVariable('aws.ddb.tableName')))?.items()?.toString()) - } catch (AssertionError e) { - throw new com.consol.citrus.exceptions.CitrusRuntimeException("AWS DDB item verification failed", e) - } +$(repeatOnError() + .until('i > ${maxRetryAttempts}') + .actions(new com.consol.citrus.TestAction() { + @Override + void execute(com.consol.citrus.context.TestContext context) { + try { + assert context.getVariable('aws.ddb.items').equals(amazonDDBClient.scan(b -> b.tableName(context.getVariable('aws.ddb.tableName')))?.items()?.toListString()) + } catch (AssertionError e) { + throw new com.consol.citrus.exceptions.CitrusRuntimeException("AWS DDB item verification failed", e) } - }) - ) -} + } + }) +) diff --git a/test/aws-ddb-sink/yaks-config.yaml b/test/aws-ddb-sink/yaks-config.yaml index dbe4c7f2..c3fe0232 100644 --- a/test/aws-ddb-sink/yaks-config.yaml +++ b/test/aws-ddb-sink/yaks-config.yaml @@ -28,6 +28,8 @@ config: value: false - name: YAKS_KAMELETS_AUTO_REMOVE_RESOURCES value: false + - name: YAKS_JBANG_CAMEL_DUMP_INTEGRATION_OUTPUT + value: true - name: YAKS_TESTCONTAINERS_AUTO_REMOVE_RESOURCES value: false - name: CITRUS_TYPE_CONVERTER diff --git a/test/aws-s3/aws-s3-knative-binding.feature b/test/aws-s3/aws-s3-knative-binding.feature index cf67b4c9..0f26ea4f 100644 --- a/test/aws-s3/aws-s3-knative-binding.feature +++ b/test/aws-s3/aws-s3-knative-binding.feature @@ -2,48 +2,45 @@ Feature: AWS S3 Kamelet - binding to Knative channel Background: - Given Kamelet aws-s3-source is available Given variables | aws.s3.bucketNameOrArn | mybucket | | aws.s3.message | Hello from S3 Kamelet | | aws.s3.key | hello.txt | - Scenario: Start LocalStack container + Scenario: Create infrastructure + # Start LocalStack container Given Enable service S3 Given start LocalStack container - And log 'Started LocalStack container: ${YAKS_TESTCONTAINERS_LOCALSTACK_CONTAINER_NAME}' - - Scenario: Create AWS-S3 client + # Create AWS-S3 client Given New global Camel context Given load to Camel registry amazonS3Client.groovy - - Scenario: Create Knative broker and channel + # Create Knative broker and channel Given create Knative broker default And Knative broker default is running And create Knative channel messages - Scenario: Create AWS-S3 Kamelet to InMemoryChannel binding - Given variable loginfo is "Installed features" + Scenario: Verify AWS-S3 Kamelet to InMemoryChannel binding + # Create binding Given load KameletBinding aws-s3-to-knative-channel.yaml Given load KameletBinding knative-channel-to-log.yaml Then KameletBinding aws-s3-to-knative-channel should be available And KameletBinding knative-channel-to-log should be available And Camel K integration aws-s3-to-knative-channel is running And Camel K integration knative-channel-to-log is running - And Camel K integration aws-s3-to-knative-channel should print ${loginfo} - And Camel K integration knative-channel-to-log should print ${loginfo} + And Camel K integration aws-s3-to-knative-channel should print Started aws-s3-to-knative-channel + And Camel K integration knative-channel-to-log should print Installed features Then sleep 10000 ms - - Scenario: Verify Kamelet source + # Verify Kamelet source Given Camel exchange message header CamelAwsS3Key="${aws.s3.key}" Given send Camel exchange to("aws2-s3://${aws.s3.bucketNameOrArn}?amazonS3Client=#amazonS3Client") with body: ${aws.s3.message} Then Camel K integration knative-channel-to-log should print ${aws.s3.message} Scenario: Remove resources + # Remove Camel K resources Given delete KameletBinding aws-s3-to-knative-channel Given delete KameletBinding knative-channel-to-log + # Remove Knative resources Given delete Knative broker default Given delete Knative channel messages - - Scenario: Stop container + # Stop LocalStack container Given stop LocalStack container diff --git a/test/aws-s3/aws-s3-source-property-conf.feature b/test/aws-s3/aws-s3-source-property-conf.feature index 93a2d353..89363ca3 100644 --- a/test/aws-s3/aws-s3-source-property-conf.feature +++ b/test/aws-s3/aws-s3-source-property-conf.feature @@ -1,22 +1,21 @@ Feature: AWS S3 Kamelet - property based config Background: - Given Kamelet aws-s3-source is available Given variables | aws.s3.bucketNameOrArn | mybucket | | aws.s3.message | Hello from S3 Kamelet | | aws.s3.key | hello.txt | - Scenario: Start LocalStack container + Scenario: Create infrastructure + # Start LocalStack container Given Enable service S3 Given start LocalStack container - And log 'Started LocalStack container: ${YAKS_TESTCONTAINERS_LOCALSTACK_CONTAINER_NAME}' - - Scenario: Create AWS-S3 client + # Create AWS-S3 client Given New global Camel context Given load to Camel registry amazonS3Client.groovy - Scenario: Create AWS-S3 Kamelet to log binding + Scenario: Verify AWS-S3 Kamelet to log binding + # Create binding Given Camel K integration property file aws-s3-credentials.properties Given create Camel K integration aws-s3-to-log-prop-based.groovy """ @@ -24,14 +23,13 @@ Feature: AWS S3 Kamelet - property based config .to("log:info") """ Then Camel K integration aws-s3-to-log-prop-based should be running - - Scenario: Verify Kamelet source + # Verify Kamelet source Given Camel exchange message header CamelAwsS3Key="${aws.s3.key}" Given send Camel exchange to("aws2-s3://${aws.s3.bucketNameOrArn}?amazonS3Client=#amazonS3Client") with body: ${aws.s3.message} Then Camel K integration aws-s3-to-log-prop-based should print ${aws.s3.message} - Scenario: Remove Camel K resources + Scenario: Remove resources + # Remove Camel K resources Given delete Camel K integration aws-s3-to-log-prop-based - - Scenario: Stop container + # Stop LocalStack container Given stop LocalStack container diff --git a/test/aws-s3/aws-s3-source-secret-conf.feature b/test/aws-s3/aws-s3-source-secret-conf.feature index 78ee9be5..c18dff10 100644 --- a/test/aws-s3/aws-s3-source-secret-conf.feature +++ b/test/aws-s3/aws-s3-source-secret-conf.feature @@ -2,38 +2,38 @@ Feature: AWS S3 Kamelet - secret based config Background: - Given Kamelet aws-s3-source is available Given variables | aws.s3.bucketNameOrArn | mybucket | | aws.s3.message | Hello from S3 Kamelet | | aws.s3.key | hello.txt | - Scenario: Start LocalStack container + Scenario: Create infrastructure + # Start LocalStack container Given Enable service S3 Given start LocalStack container - And log 'Started LocalStack container: ${YAKS_TESTCONTAINERS_LOCALSTACK_CONTAINER_NAME}' - - Scenario: Create AWS-S3 client + # Create AWS-S3 client Given New global Camel context Given load to Camel registry amazonS3Client.groovy - - Scenario: Create AWS-S3 Kamelet to log binding + # Create Kubernetes secret Given create Kubernetes secret aws-s3-source-credentials | aws-s3-credentials.properties | citrus:encodeBase64(citrus:readFile(aws-s3-credentials.properties)) | + + Scenario: Verify AWS-S3 Kamelet to log binding + # Create binding Given create labels on Kubernetes secret aws-s3-source-credentials | camel.apache.org/kamelet | aws-s3-source | | camel.apache.org/kamelet.configuration | aws-s3-credentials | Given load Camel K integration aws-s3-to-log-secret-based.groovy Then Camel K integration aws-s3-to-log-secret-based should be running - - Scenario: Verify Kamelet source + # Verify Kamelet source Given Camel exchange message header CamelAwsS3Key="${aws.s3.key}" Given send Camel exchange to("aws2-s3://${aws.s3.bucketNameOrArn}?amazonS3Client=#amazonS3Client") with body: ${aws.s3.message} Then Camel K integration aws-s3-to-log-secret-based should print ${aws.s3.message} Scenario: Remove resources + # Remove Camel K resources Given delete Camel K integration aws-s3-to-log-secret-based + # Remove Kubernetes secret Given delete Kubernetes secret aws-s3-source-credentials - - Scenario: Stop container + # Stop LocalStack container Given stop LocalStack container diff --git a/test/aws-s3/aws-s3-source-uri-conf.feature b/test/aws-s3/aws-s3-source-uri-conf.feature index ca65ba7d..281d0e98 100644 --- a/test/aws-s3/aws-s3-source-uri-conf.feature +++ b/test/aws-s3/aws-s3-source-uri-conf.feature @@ -1,32 +1,30 @@ Feature: AWS S3 Kamelet - URI based config Background: - Given Kamelet aws-s3-source is available Given variables | aws.s3.bucketNameOrArn | mybucket | | aws.s3.message | Hello from S3 Kamelet | | aws.s3.key | hello.txt | - Scenario: Start LocalStack container + Scenario: Create infrastructure + # Start LocalStack container Given Enable service S3 Given start LocalStack container - And log 'Started LocalStack container: ${YAKS_TESTCONTAINERS_LOCALSTACK_CONTAINER_NAME}' - - Scenario: Create S3 client + # Create AWS-S3 client Given New global Camel context Given load to Camel registry amazonS3Client.groovy - Scenario: Create AWS-S3 Kamelet to log binding + Scenario: Verify AWS-S3 Kamelet to log binding + # Create binding Given load Camel K integration aws-s3-to-log-uri-based.groovy Then Camel K integration aws-s3-to-log-uri-based should be running - - Scenario: Verify Kamelet source + # Verify Kamelet source Given Camel exchange message header CamelAwsS3Key="${aws.s3.key}" Given send Camel exchange to("aws2-s3://${aws.s3.bucketNameOrArn}?amazonS3Client=#amazonS3Client") with body: ${aws.s3.message} Then Camel K integration aws-s3-to-log-uri-based should print ${aws.s3.message} - Scenario: Remove Camel K resources + Scenario: Remove resources + # Remove Camel K resources Given delete Camel K integration aws-s3-to-log-uri-based - - Scenario: Stop container + # Stop LocalStack container Given stop LocalStack container diff --git a/test/aws-s3/aws-s3-uri-binding.feature b/test/aws-s3/aws-s3-uri-binding.feature index ace19177..d8214543 100644 --- a/test/aws-s3/aws-s3-uri-binding.feature +++ b/test/aws-s3/aws-s3-uri-binding.feature @@ -1,35 +1,32 @@ Feature: AWS S3 Kamelet - binding to URI Background: - Given Kamelet aws-s3-source is available Given variables | aws.s3.bucketNameOrArn | mybucket | | aws.s3.message | Hello from S3 Kamelet | | aws.s3.key | hello.txt | - Scenario: Start LocalStack container + Scenario: Create infrastructure + # Start LocalStack container Given Enable service S3 Given start LocalStack container - And log 'Started LocalStack container: ${YAKS_TESTCONTAINERS_LOCALSTACK_CONTAINER_NAME}' - - Scenario: Create AWS-S3 client + # Create AWS-S3 client Given New global Camel context Given load to Camel registry amazonS3Client.groovy - Scenario: Create AWS-S3 Kamelet to log binding - Given variable loginfo is "Installed features" + Scenario: Verify AWS-S3 Kamelet to log binding + # Create binding When load KameletBinding aws-s3-uri-binding.yaml And KameletBinding aws-s3-uri-binding is available And Camel K integration aws-s3-uri-binding is running - Then Camel K integration aws-s3-uri-binding should print ${loginfo} - - Scenario: Verify Kamelet source + Then Camel K integration aws-s3-uri-binding should print Started aws-s3-uri-binding + # Verify Kamelet source Given Camel exchange message header CamelAwsS3Key="${aws.s3.key}" Given send Camel exchange to("aws2-s3://${aws.s3.bucketNameOrArn}?amazonS3Client=#amazonS3Client") with body: ${aws.s3.message} Then Camel K integration aws-s3-uri-binding should print ${aws.s3.message} - Scenario: Remove Camel K resources + Scenario: Remove resources + # Remove Camel K resources Given delete KameletBinding aws-s3-uri-binding - - Scenario: Stop container + # Stop LocalStack container Given stop LocalStack container diff --git a/test/utils/knative-channel-to-log.yaml b/test/aws-s3/utils/knative-channel-to-log.yaml similarity index 100% rename from test/utils/knative-channel-to-log.yaml rename to test/aws-s3/utils/knative-channel-to-log.yaml diff --git a/test/utils/knative-to-log.yaml b/test/aws-s3/utils/knative-to-log.yaml similarity index 100% rename from test/utils/knative-to-log.yaml rename to test/aws-s3/utils/knative-to-log.yaml diff --git a/test/aws-s3/yaks-config.yaml b/test/aws-s3/yaks-config.yaml index c45e02d3..90be09c8 100644 --- a/test/aws-s3/yaks-config.yaml +++ b/test/aws-s3/yaks-config.yaml @@ -32,6 +32,8 @@ config: value: false - name: YAKS_KNATIVE_AUTO_REMOVE_RESOURCES value: false + - name: YAKS_JBANG_CAMEL_DUMP_INTEGRATION_OUTPUT + value: true - name: YAKS_TESTCONTAINERS_AUTO_REMOVE_RESOURCES value: false - name: CITRUS_TYPE_CONVERTER @@ -43,10 +45,10 @@ config: - aws-s3-to-log-secret-based.groovy - aws-s3-uri-binding.yaml - aws-s3-to-knative-channel.yaml - - ../utils/knative-channel-to-log.yaml + - utils/knative-channel-to-log.yaml cucumber: tags: - - "not @ignored" + - "not @ignored and not @knative" settings: loggers: - name: INTEGRATION_STATUS diff --git a/test/earthquake-source/earthquake-source.feature b/test/earthquake-source/earthquake-source.feature index 0231c04f..92ea6807 100644 --- a/test/earthquake-source/earthquake-source.feature +++ b/test/earthquake-source/earthquake-source.feature @@ -25,10 +25,7 @@ Feature: Kamelet earthquake-source Given create Kubernetes service test-service with target port 8080 Scenario: Create Kamelet binding - Given Camel K resource polling configuration - | maxAttempts | 200 | - | delayBetweenAttempts | 2000 | - When bind Kamelet earthquake-source to uri http://test-service.${YAKS_NAMESPACE}/test + When bind Kamelet earthquake-source to uri yaks:resolveURL('test-service')/test And create KameletBinding earthquake-source-uri Then KameletBinding earthquake-source-uri should be available Then Camel K integration earthquake-source-uri should be running diff --git a/test/earthquake-source/yaks-config.yaml b/test/earthquake-source/yaks-config.yaml index 6a93aeec..9977b154 100644 --- a/test/earthquake-source/yaks-config.yaml +++ b/test/earthquake-source/yaks-config.yaml @@ -24,6 +24,8 @@ config: value: false - name: YAKS_KUBERNETES_AUTO_REMOVE_RESOURCES value: false + - name: YAKS_JBANG_CAMEL_DUMP_INTEGRATION_OUTPUT + value: true settings: loggers: - name: INTEGRATION_STATUS diff --git a/test/experimental/aws-ddb-sink-exp/aws-ddb-sink-binding.yaml b/test/experimental/aws-ddb-sink-exp/aws-ddb-sink-binding.yaml index d1e5fb44..e8588422 100644 --- a/test/experimental/aws-ddb-sink-exp/aws-ddb-sink-binding.yaml +++ b/test/experimental/aws-ddb-sink-exp/aws-ddb-sink-binding.yaml @@ -18,7 +18,7 @@ apiVersion: camel.apache.org/v1alpha1 kind: KameletBinding metadata: - name: aws-ddb-experimental-sink-binding + name: aws-ddb-sink-binding spec: source: ref: @@ -44,7 +44,7 @@ spec: table: ${aws.ddb.tableName} operation: ${aws.ddb.operation} overrideEndpoint: true - uriEndpointOverride: ${YAKS_TESTCONTAINERS_LOCALSTACK_DYNAMODB_URL} + uriEndpointOverride: ${YAKS_TESTCONTAINERS_LOCALSTACK_DYNAMODB_LOCAL_URL} accessKey: ${YAKS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY} secretKey: ${YAKS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY} region: ${YAKS_TESTCONTAINERS_LOCALSTACK_REGION} diff --git a/test/experimental/aws-ddb-sink-exp/aws-ddb-sink-deleteItem.feature b/test/experimental/aws-ddb-sink-exp/aws-ddb-sink-deleteItem.feature index 6edb0ae2..fc9f641a 100644 --- a/test/experimental/aws-ddb-sink-exp/aws-ddb-sink-deleteItem.feature +++ b/test/experimental/aws-ddb-sink-exp/aws-ddb-sink-deleteItem.feature @@ -18,10 +18,6 @@ Feature: AWS DDB Sink - DeleteItem Background: - Given Kamelet aws-ddb-experimental-sink is available - Given Camel K resource polling configuration - | maxAttempts | 200 | - | delayBetweenAttempts | 2000 | Given variables | timer.source.period | 10000 | | aws.ddb.operation | DeleteItem | @@ -31,12 +27,11 @@ Feature: AWS DDB Sink - DeleteItem | aws.ddb.item.title | Back to the future | | aws.ddb.json.data | {"id": ${aws.ddb.item.id}} | - Scenario: Start LocalStack container + Scenario: Create infrastructure + # Start LocalStack container Given Enable service DYNAMODB Given start LocalStack container - And log 'Started LocalStack container: ${YAKS_TESTCONTAINERS_LOCALSTACK_CONTAINER_NAME}' - - Scenario: Create AWS-DDB client + # Create AWS-DDB client Given New global Camel context Given load to Camel registry amazonDDBClient.groovy @@ -44,23 +39,23 @@ Feature: AWS DDB Sink - DeleteItem Given run script putItem.groovy Given variables | maxRetryAttempts | 20 | - | aws.ddb.items | [{year=AttributeValue(N=${aws.ddb.item.year}), id=AttributeValue(N=${aws.ddb.item.id}), title=AttributeValue(S=${aws.ddb.item.title})}] | + | aws.ddb.items | [[year:AttributeValue(N=${aws.ddb.item.year}), id:AttributeValue(N=${aws.ddb.item.id}), title:AttributeValue(S=${aws.ddb.item.title})]] | Then apply actions verifyItems.groovy - Scenario: Create AWS-DDB Kamelet sink binding + Scenario: Verify AWS-DDB Kamelet sink binding + # Create binding When load KameletBinding aws-ddb-sink-binding.yaml - And KameletBinding aws-ddb-experimental-sink-binding is available - And Camel K integration aws-ddb-experimental-sink-binding is running - And Camel K integration aws-ddb-experimental-sink-binding should print Routes startup - - Scenario: Verify Kamelet sink + And KameletBinding aws-ddb-sink-binding is available + And Camel K integration aws-ddb-sink-binding is running + And Camel K integration aws-ddb-sink-binding should print Started aws-ddb-sink-binding + # Verify Kamelet sink Given variables | maxRetryAttempts | 20 | | aws.ddb.items | [] | Then apply actions verifyItems.groovy - Scenario: Remove Camel K resources - Given delete KameletBinding aws-ddb-experimental-sink-binding - - Scenario: Stop container + Scenario: Remove resources + # Remove Camel K resources + Given delete KameletBinding aws-ddb-sink-binding + # Stop LocalStack container Given stop LocalStack container diff --git a/test/experimental/aws-ddb-sink-exp/aws-ddb-sink-putItem.feature b/test/experimental/aws-ddb-sink-exp/aws-ddb-sink-putItem.feature index 0d8d759a..49460659 100644 --- a/test/experimental/aws-ddb-sink-exp/aws-ddb-sink-putItem.feature +++ b/test/experimental/aws-ddb-sink-exp/aws-ddb-sink-putItem.feature @@ -18,10 +18,6 @@ Feature: AWS DDB Sink - PutItem Background: - Given Kamelet aws-ddb-experimental-sink is available - Given Camel K resource polling configuration - | maxAttempts | 200 | - | delayBetweenAttempts | 2000 | Given variables | timer.source.period | 10000 | | aws.ddb.operation | PutItem | @@ -31,29 +27,34 @@ Feature: AWS DDB Sink - PutItem | aws.ddb.item.title | Star Wars IV | | aws.ddb.json.data | { "id":${aws.ddb.item.id}, "year":${aws.ddb.item.year}, "title":"${aws.ddb.item.title}" } | - Scenario: Start LocalStack container + Scenario: Create infrastructure + # Start LocalStack container Given Enable service DYNAMODB Given start LocalStack container - And log 'Started LocalStack container: ${YAKS_TESTCONTAINERS_LOCALSTACK_CONTAINER_NAME}' - - Scenario: Create AWS-DDB client + # Create AWS-DDB client Given New global Camel context Given load to Camel registry amazonDDBClient.groovy - Scenario: Create AWS-DDB Kamelet sink binding - When load KameletBinding aws-ddb-sink-binding.yaml - And KameletBinding aws-ddb-experimental-sink-binding is available - And Camel K integration aws-ddb-experimental-sink-binding is running - And Camel K integration aws-ddb-experimental-sink-binding should print Routes startup - - Scenario: Verify Kamelet sink + Scenario: Verify empty items on AWS-DDB Given variables | maxRetryAttempts | 20 | - | aws.ddb.items | [{year=AttributeValue(N=${aws.ddb.item.year}), id=AttributeValue(N=${aws.ddb.item.id}), title=AttributeValue(S=${aws.ddb.item.title})}] | + | aws.ddb.items | [] | Then apply actions verifyItems.groovy - Scenario: Remove Camel K resources - Given delete KameletBinding aws-ddb-experimental-sink-binding + Scenario: Verify AWS-DDB Kamelet sink binding + # Create binding + When load KameletBinding aws-ddb-sink-binding.yaml + And KameletBinding aws-ddb-sink-binding is available + And Camel K integration aws-ddb-sink-binding is running + And Camel K integration aws-ddb-sink-binding should print Started aws-ddb-sink-binding + # Verify Kamelet sink + Given variables + | maxRetryAttempts | 20 | + | aws.ddb.items | [[year:AttributeValue(N=${aws.ddb.item.year}), id:AttributeValue(N=${aws.ddb.item.id}), title:AttributeValue(S=${aws.ddb.item.title})]] | + Then apply actions verifyItems.groovy - Scenario: Stop container + Scenario: Remove resources + # Remove Camel K binding + Given delete KameletBinding aws-ddb-sink-binding + # Stop LocalStack container Given stop LocalStack container diff --git a/test/experimental/aws-ddb-sink-exp/aws-ddb-sink-updateItem.feature b/test/experimental/aws-ddb-sink-exp/aws-ddb-sink-updateItem.feature index 14745c26..be5a4c7e 100644 --- a/test/experimental/aws-ddb-sink-exp/aws-ddb-sink-updateItem.feature +++ b/test/experimental/aws-ddb-sink-exp/aws-ddb-sink-updateItem.feature @@ -18,10 +18,6 @@ Feature: AWS DDB Sink - UpdateItem Background: - Given Kamelet aws-ddb-experimental-sink is available - Given Camel K resource polling configuration - | maxAttempts | 200 | - | delayBetweenAttempts | 2000 | Given variables | timer.source.period | 10000 | | aws.ddb.operation | UpdateItem | @@ -33,12 +29,11 @@ Feature: AWS DDB Sink - UpdateItem | aws.ddb.item.directors | ["Merian C. Cooper", "Ernest B. Schoedsack"] | | aws.ddb.json.data | { "key": {"id": ${aws.ddb.item.id}}, "item": {"title": "${aws.ddb.item.title.new}", "year": ${aws.ddb.item.year}, "directors": ${aws.ddb.item.directors}} } | - Scenario: Start LocalStack container + Scenario: Create infrastructure + # Start LocalStack container Given Enable service DYNAMODB Given start LocalStack container - And log 'Started LocalStack container: ${YAKS_TESTCONTAINERS_LOCALSTACK_CONTAINER_NAME}' - - Scenario: Create AWS-DDB client + # Create AWS-DDB client Given New global Camel context Given load to Camel registry amazonDDBClient.groovy @@ -46,24 +41,24 @@ Feature: AWS DDB Sink - UpdateItem Given run script putItem.groovy Given variables | maxRetryAttempts | 20 | - | aws.ddb.items | [{year=AttributeValue(N=${aws.ddb.item.year}), id=AttributeValue(N=${aws.ddb.item.id}), title=AttributeValue(S=${aws.ddb.item.title})}] | + | aws.ddb.items | [[year:AttributeValue(N=${aws.ddb.item.year}), id:AttributeValue(N=${aws.ddb.item.id}), title:AttributeValue(S=${aws.ddb.item.title})]] | Then apply actions verifyItems.groovy - Scenario: Create AWS-DDB Kamelet sink binding + Scenario: Verify AWS-DDB Kamelet sink binding + # Create binding When load KameletBinding aws-ddb-sink-binding.yaml - And KameletBinding aws-ddb-experimental-sink-binding is available - And Camel K integration aws-ddb-experimental-sink-binding is running - And Camel K integration aws-ddb-experimental-sink-binding should print Routes startup - - Scenario: Verify Kamelet sink + And KameletBinding aws-ddb-sink-binding is available + And Camel K integration aws-ddb-sink-binding is running + And Camel K integration aws-ddb-sink-binding should print Started aws-ddb-sink-binding + # Verify Kamelet sink Given variables | maxRetryAttempts | 200 | | aws.ddb.item.directors | [Ernest B. Schoedsack, Merian C. Cooper] | - | aws.ddb.items | [{year=AttributeValue(N=${aws.ddb.item.year}), directors=AttributeValue(SS=${aws.ddb.item.directors}), id=AttributeValue(N=${aws.ddb.item.id}), title=AttributeValue(S=${aws.ddb.item.title.new})}] | + | aws.ddb.items | [[year:AttributeValue(N=${aws.ddb.item.year}), directors:AttributeValue(SS=${aws.ddb.item.directors}), id:AttributeValue(N=${aws.ddb.item.id}), title:AttributeValue(S=${aws.ddb.item.title.new})]] | Then apply actions verifyItems.groovy - Scenario: Remove Camel K resources - Given delete KameletBinding aws-ddb-experimental-sink-binding - - Scenario: Stop container + Scenario: Remove resources + # Remove Camel K resources + Given delete KameletBinding aws-ddb-sink-binding + # Stop LocalStack container Given stop LocalStack container diff --git a/test/experimental/aws-ddb-sink-exp/verifyItems.groovy b/test/experimental/aws-ddb-sink-exp/verifyItems.groovy index b65ca27f..b89dad5a 100644 --- a/test/experimental/aws-ddb-sink-exp/verifyItems.groovy +++ b/test/experimental/aws-ddb-sink-exp/verifyItems.groovy @@ -15,19 +15,16 @@ * limitations under the License. */ -$actions { - $(repeatOnError() - .until('i > ${maxRetryAttempts}') - .actions(new com.consol.citrus.TestAction() { - @Override - void execute(com.consol.citrus.context.TestContext context) { - try { - assert context.getVariable('aws.ddb.items') - .equals(amazonDDBClient.scan(b -> b.tableName(context.getVariable('aws.ddb.tableName')))?.items()?.toString()) - } catch (AssertionError e) { - throw new com.consol.citrus.exceptions.CitrusRuntimeException("AWS DDB item verification failed", e) - } +$(repeatOnError() + .until('i > ${maxRetryAttempts}') + .actions(new com.consol.citrus.TestAction() { + @Override + void execute(com.consol.citrus.context.TestContext context) { + try { + assert context.getVariable('aws.ddb.items').equals(amazonDDBClient.scan(b -> b.tableName(context.getVariable('aws.ddb.tableName')))?.items()?.toListString()) + } catch (AssertionError e) { + throw new com.consol.citrus.exceptions.CitrusRuntimeException("AWS DDB item verification failed", e) } - }) - ) -} + } + }) +) diff --git a/test/experimental/aws-ddb-sink-exp/yaks-config.yaml b/test/experimental/aws-ddb-sink-exp/yaks-config.yaml index dbe4c7f2..c3fe0232 100644 --- a/test/experimental/aws-ddb-sink-exp/yaks-config.yaml +++ b/test/experimental/aws-ddb-sink-exp/yaks-config.yaml @@ -28,6 +28,8 @@ config: value: false - name: YAKS_KAMELETS_AUTO_REMOVE_RESOURCES value: false + - name: YAKS_JBANG_CAMEL_DUMP_INTEGRATION_OUTPUT + value: true - name: YAKS_TESTCONTAINERS_AUTO_REMOVE_RESOURCES value: false - name: CITRUS_TYPE_CONVERTER diff --git a/test/experimental/aws-s3-exp/aws-s3-cloudevents.feature b/test/experimental/aws-s3-exp/aws-s3-cloudevents.feature index 2ce2d0d6..6885c58d 100644 --- a/test/experimental/aws-s3-exp/aws-s3-cloudevents.feature +++ b/test/experimental/aws-s3-exp/aws-s3-cloudevents.feature @@ -3,38 +3,31 @@ Feature: AWS S3 Kamelet - cloud events data type Background: - Given Kamelet aws-s3-experimental-source is available Given Knative event consumer timeout is 20000 ms - Given Camel K resource polling configuration - | maxAttempts | 200 | - | delayBetweenAttempts | 4000 | Given variables | aws.s3.output | cloudevents | | aws.s3.bucketNameOrArn | mybucket | | aws.s3.message | Hello from S3 Kamelet | | aws.s3.key | hello.txt | - Scenario: Start LocalStack container + Scenario: Create infrastructure + # Start LocalStack container Given Enable service S3 Given start LocalStack container - And log 'Started LocalStack container: ${YAKS_TESTCONTAINERS_LOCALSTACK_CONTAINER_NAME}' - - Scenario: Create AWS-S3 client + # Create AWS-S3 client Given New global Camel context Given load to Camel registry amazonS3Client.groovy - - Scenario: Create Knative broker + # Create Knative broker Given create Knative broker default And Knative broker default is running - Scenario: Create AWS-S3 Kamelet to Knative binding - Given variable loginfo is "Installed features" + Scenario: Verify AWS-S3 Kamelet to Knative binding + # Create binding When load KameletBinding aws-s3-to-knative.yaml And KameletBinding aws-s3-to-knative-binding is available And Camel K integration aws-s3-to-knative-binding is running - Then Camel K integration aws-s3-to-knative-binding should print ${loginfo} - - Scenario: Verify Kamelet source + Then Camel K integration aws-s3-to-knative-binding should print Started aws-s3-to-knative-binding + # Verify Kamelet source Given create Knative event consumer service event-consumer-service Given create Knative trigger event-service-trigger on service event-consumer-service with filter on attributes | type | org.apache.camel.event.aws.s3.getObject | @@ -47,9 +40,11 @@ Feature: AWS S3 Kamelet - cloud events data type | subject | ${aws.s3.key} | | id | @ignore@ | - Scenario: Remove Camel K resources + Scenario: Remove resources + # Remove Camel K resources Given delete KameletBinding aws-s3-to-knative-binding Given delete Kubernetes service event-consumer-service - - Scenario: Stop container + # Remove Knative resources + Given delete Knative broker default + # Stop LocalStack container Given stop LocalStack container diff --git a/test/experimental/aws-s3-exp/aws-s3-knative.feature b/test/experimental/aws-s3-exp/aws-s3-knative.feature index bb1bebd3..10ad5264 100644 --- a/test/experimental/aws-s3-exp/aws-s3-knative.feature +++ b/test/experimental/aws-s3-exp/aws-s3-knative.feature @@ -3,38 +3,31 @@ Feature: AWS S3 Kamelet - Knative binding Background: - Given Kamelet aws-s3-experimental-source is available Given Knative event consumer timeout is 20000 ms - Given Camel K resource polling configuration - | maxAttempts | 200 | - | delayBetweenAttempts | 4000 | Given variables | aws.s3.output | string | | aws.s3.bucketNameOrArn | mybucket | | aws.s3.message | Hello from S3 Kamelet | | aws.s3.key | hello.txt | - Scenario: Start LocalStack container + Scenario: Create infrastructure + # Start LocalStack container Given Enable service S3 Given start LocalStack container - And log 'Started LocalStack container: ${YAKS_TESTCONTAINERS_LOCALSTACK_CONTAINER_NAME}' - - Scenario: Create AWS-S3 client + # Create AWS-S3 client Given New global Camel context Given load to Camel registry amazonS3Client.groovy - - Scenario: Create Knative broker + # Create Knative broker Given create Knative broker default And Knative broker default is running - Scenario: Create AWS-S3 Kamelet to Knative binding - Given variable loginfo is "Installed features" + Scenario: Verify AWS-S3 Kamelet to Knative binding + # Create binding When load KameletBinding aws-s3-to-knative.yaml And KameletBinding aws-s3-to-knative-binding is available And Camel K integration aws-s3-to-knative-binding is running - Then Camel K integration aws-s3-to-knative-binding should print ${loginfo} - - Scenario: Verify Kamelet source + Then Camel K integration aws-s3-to-knative-binding should print Started aws-s3-to-knative-binding + # Verify Kamelet source Given create Knative event consumer service event-consumer-service Given create Knative trigger event-service-trigger on service event-consumer-service with filter on attributes | type | org.apache.camel.event | @@ -46,10 +39,11 @@ Feature: AWS S3 Kamelet - Knative binding | source | @ignore@ | | id | @ignore@ | - Scenario: Remove Camel K resources + Scenario: Remove resources + # Remove Camel K resources Given delete KameletBinding aws-s3-to-knative-binding Given delete Kubernetes service event-consumer-service + # Remove Knative resources Given delete Knative broker default - - Scenario: Stop container + # Stop LocalStack container Given stop LocalStack container diff --git a/test/experimental/aws-s3-exp/yaks-config.yaml b/test/experimental/aws-s3-exp/yaks-config.yaml index e8ed3bd5..ce37838a 100644 --- a/test/experimental/aws-s3-exp/yaks-config.yaml +++ b/test/experimental/aws-s3-exp/yaks-config.yaml @@ -32,6 +32,8 @@ config: value: false - name: YAKS_KNATIVE_AUTO_REMOVE_RESOURCES value: false + - name: YAKS_JBANG_CAMEL_DUMP_INTEGRATION_OUTPUT + value: true - name: YAKS_TESTCONTAINERS_AUTO_REMOVE_RESOURCES value: false - name: CITRUS_TYPE_CONVERTER @@ -41,7 +43,7 @@ config: - aws-s3-to-knative.yaml cucumber: tags: - - "not @ignored" + - "not @ignored and not @knative" settings: loggers: - name: INTEGRATION_STATUS diff --git a/test/extract-field-action/extract-field-action-binding.yaml b/test/extract-field-action/extract-field-action-binding.yaml index 96f32470..c3955539 100644 --- a/test/extract-field-action/extract-field-action-binding.yaml +++ b/test/extract-field-action/extract-field-action-binding.yaml @@ -38,4 +38,4 @@ spec: properties: field: ${field} sink: - uri: http://test-extract-service.${YAKS_NAMESPACE}/result + uri: yaks:resolveURL('test-service')/result diff --git a/test/extract-field-action/extract-field-action.feature b/test/extract-field-action/extract-field-action.feature index d3e15237..5ab22e57 100644 --- a/test/extract-field-action/extract-field-action.feature +++ b/test/extract-field-action/extract-field-action.feature @@ -19,16 +19,13 @@ Feature: Extract field Kamelet action Background: Given HTTP server timeout is 15000 ms - Given HTTP server "test-extract-service" + Given HTTP server "test-service" Given variable field = "subject" Scenario: Create Http server - Given create Kubernetes service test-extract-service with target port 8080 + Given create Kubernetes service test-service with target port 8080 Scenario: Create Kamelet binding - Given Camel K resource polling configuration - | maxAttempts | 200 | - | delayBetweenAttempts | 2000 | Given variable input is """ { "id": "citrus:randomUUID()", "${field}": "Camel K rocks!" } @@ -44,4 +41,4 @@ Feature: Extract field Kamelet action Scenario: Remove resources Given delete KameletBinding extract-field-action-binding - And delete Kubernetes service test-extract-service + And delete Kubernetes service test-service diff --git a/test/extract-field-action/yaks-config.yaml b/test/extract-field-action/yaks-config.yaml index 26f57fae..ed24e26e 100644 --- a/test/extract-field-action/yaks-config.yaml +++ b/test/extract-field-action/yaks-config.yaml @@ -24,6 +24,8 @@ config: value: false - name: YAKS_KUBERNETES_AUTO_REMOVE_RESOURCES value: false + - name: YAKS_JBANG_CAMEL_DUMP_INTEGRATION_OUTPUT + value: true settings: loggers: - name: INTEGRATION_STATUS diff --git a/test/insert-field-action/insert-field-action-binding.yaml b/test/insert-field-action/insert-field-action-binding.yaml index 86267340..6e2f4490 100644 --- a/test/insert-field-action/insert-field-action-binding.yaml +++ b/test/insert-field-action/insert-field-action-binding.yaml @@ -39,4 +39,4 @@ spec: field: ${field} value: ${value} sink: - uri: http://test-insert-service.${YAKS_NAMESPACE}/result + uri: yaks:resolveURL('test-service')/result diff --git a/test/insert-field-action/insert-field-action.feature b/test/insert-field-action/insert-field-action.feature index b882fcdc..21037cc5 100644 --- a/test/insert-field-action/insert-field-action.feature +++ b/test/insert-field-action/insert-field-action.feature @@ -19,18 +19,15 @@ Feature: Insert field Kamelet action Background: Given HTTP server timeout is 15000 ms - Given HTTP server "test-insert-service" + Given HTTP server "test-service" Given variables | field | subject | | value | Camel K rocks! | Scenario: Create Http server - Given create Kubernetes service test-insert-service with target port 8080 + Given create Kubernetes service test-service with target port 8080 Scenario: Create Kamelet binding - Given Camel K resource polling configuration - | maxAttempts | 200 | - | delayBetweenAttempts | 2000 | Given variable input is """ { "id": "citrus:randomUUID()" } @@ -50,4 +47,4 @@ Feature: Insert field Kamelet action Scenario: Remove resources Given delete KameletBinding insert-field-action-binding - And delete Kubernetes service test-insert-service + And delete Kubernetes service test-service diff --git a/test/insert-field-action/yaks-config.yaml b/test/insert-field-action/yaks-config.yaml index af5f0a98..fd4059a5 100644 --- a/test/insert-field-action/yaks-config.yaml +++ b/test/insert-field-action/yaks-config.yaml @@ -30,6 +30,8 @@ config: level: INFO - name: INTEGRATION_LOGS level: INFO + - name: YAKS_JBANG_CAMEL_DUMP_INTEGRATION_OUTPUT + value: true resources: - insert-field-action-binding.yaml dump: diff --git a/test/kafka/kafka-sink-binding.yaml b/test/kafka/kafka-sink-binding.yaml index cf04a82b..46666dfb 100644 --- a/test/kafka/kafka-sink-binding.yaml +++ b/test/kafka/kafka-sink-binding.yaml @@ -35,7 +35,7 @@ spec: apiVersion: camel.apache.org/v1alpha1 name: kafka-sink properties: - bootstrapServers: ${bootstrap.server.host}.${YAKS_NAMESPACE}:${bootstrap.server.port} + bootstrapServers: ${YAKS_TESTCONTAINERS_REDPANDA_LOCAL_BOOTSTRAP_SERVERS} user: ${user} password: ${password} topic: ${topic} diff --git a/test/kafka/kafka-sink.feature b/test/kafka/kafka-sink.feature index 22b0df12..9c22921f 100644 --- a/test/kafka/kafka-sink.feature +++ b/test/kafka/kafka-sink.feature @@ -21,25 +21,24 @@ Feature: Kafka Kamelet sink Given variable user is "" Given variable password is "" Given variables - | bootstrap.server.host | my-cluster-kafka-bootstrap | - | bootstrap.server.port | 9092 | - | securityProtocol | PLAINTEXT | - | topic | my-topic | - | message | Camel K rocks! | + | securityProtocol | PLAINTEXT | + | topic | my-topic | + | message | Camel K rocks! | Given Kafka topic: ${topic} Given Kafka topic partition: 0 + Scenario: Create infrastructure + Given start Redpanda container + Scenario: Create Kamelet binding - Given Camel K resource polling configuration - | maxAttempts | 200 | - | delayBetweenAttempts | 2000 | When load KameletBinding kafka-sink-binding.yaml Then Camel K integration kafka-sink-binding should be running - Scenario: Receive message on Kafka topic and verify sink output + Scenario: Verify Kafka sink output Given Kafka connection - | url | ${bootstrap.server.host}.${YAKS_NAMESPACE}:${bootstrap.server.port} | + | url | ${YAKS_TESTCONTAINERS_REDPANDA_LOCAL_BOOTSTRAP_SERVERS} | Then receive Kafka message with body: ${message} Scenario: Remove resources Given delete KameletBinding kafka-sink-binding + And stop Redpanda container diff --git a/test/kafka/kafka-source-binding.yaml b/test/kafka/kafka-source-binding.yaml index 4b31ecba..2e5e3fb4 100644 --- a/test/kafka/kafka-source-binding.yaml +++ b/test/kafka/kafka-source-binding.yaml @@ -26,12 +26,12 @@ spec: apiVersion: camel.apache.org/v1alpha1 name: kafka-source properties: - bootstrapServers: ${bootstrap.server.host}.${YAKS_NAMESPACE}:${bootstrap.server.port} + bootstrapServers: ${YAKS_TESTCONTAINERS_REDPANDA_LOCAL_BOOTSTRAP_SERVERS} user: ${user} password: ${password} topic: ${topic} securityProtocol: ${securityProtocol} deserializeHeaders: ${deserializeHeaders} sink: - uri: http://kafka-to-http-service.${YAKS_NAMESPACE}/result + uri: yaks:resolveURL('test-service')/result diff --git a/test/kafka/kafka-source.feature b/test/kafka/kafka-source.feature index 06fdd9f8..c95f1dbe 100644 --- a/test/kafka/kafka-source.feature +++ b/test/kafka/kafka-source.feature @@ -21,25 +21,21 @@ Feature: Kafka Kamelet source Given variable user is "" Given variable password is "" Given variables - | bootstrap.server.host | my-cluster-kafka-bootstrap | - | bootstrap.server.port | 9092 | - | securityProtocol | PLAINTEXT | - | deserializeHeaders | true | - | topic | my-topic | - | source | Kafka Kamelet source | - | message | Camel K rocks! | + | securityProtocol | PLAINTEXT | + | deserializeHeaders | true | + | topic | my-topic | + | source | Kafka Kamelet source | + | message | Camel K rocks! | Given Kafka topic: ${topic} Given Kafka topic partition: 0 Given HTTP server timeout is 15000 ms - Given HTTP server "kafka-to-http-service" + Given HTTP server "test-service" - Scenario: Create Http server - Given create Kubernetes service kafka-to-http-service with target port 8080 + Scenario: Create infrastructure + Given start Redpanda container + Given create Kubernetes service test-service with target port 8080 Scenario: Create Kamelet binding - Given Camel K resource polling configuration - | maxAttempts | 200 | - | delayBetweenAttempts | 2000 | When load KameletBinding kafka-source-binding.yaml Then Camel K integration kafka-source-binding should be running And Camel K integration kafka-source-binding should print Subscribing ${topic}-Thread 0 to topic ${topic} @@ -48,7 +44,7 @@ Feature: Kafka Kamelet source Scenario: Send message to Kafka topic and verify sink output Given variable key is "citrus:randomNumber(4)" Given Kafka connection - | url | ${bootstrap.server.host}.${YAKS_NAMESPACE}:${bootstrap.server.port} | + | url | ${YAKS_TESTCONTAINERS_REDPANDA_LOCAL_BOOTSTRAP_SERVERS} | Given Kafka message key: ${key} When send Kafka message with body and headers: ${message} | event-source | ${source} | @@ -63,4 +59,5 @@ Feature: Kafka Kamelet source Scenario: Remove resources Given delete KameletBinding kafka-source-binding - And delete Kubernetes service kafka-to-http-service + And delete Kubernetes service test-service + And stop Redpanda container diff --git a/test/kafka/yaks-config.yaml b/test/kafka/yaks-config.yaml index e9d376cc..adfa773a 100644 --- a/test/kafka/yaks-config.yaml +++ b/test/kafka/yaks-config.yaml @@ -24,6 +24,10 @@ config: value: false - name: YAKS_KUBERNETES_AUTO_REMOVE_RESOURCES value: false + - name: YAKS_JBANG_CAMEL_DUMP_INTEGRATION_OUTPUT + value: true + - name: YAKS_TESTCONTAINERS_AUTO_REMOVE_RESOURCES + value: false - name: CITRUS_TYPE_CONVERTER value: camel settings: diff --git a/test/mail-sink/mail-sink.feature b/test/mail-sink/mail-sink.feature index fb4d942f..a3f1514b 100644 --- a/test/mail-sink/mail-sink.feature +++ b/test/mail-sink/mail-sink.feature @@ -19,7 +19,8 @@ Feature: Mail Sink Background: Given variables - | host | mail-server | + | host | yaks:env('MAIL_SERVICE_HOST','localhost') | + | port | yaks:env('MAIL_SERVICE_PORT','22222') | | username | test | | password | secret | | from | u...@demo.yaks | @@ -35,9 +36,6 @@ Feature: Mail Sink Given load endpoint mail-server.groovy Scenario: Create Camel K resources - Given Camel K resource polling configuration - | maxAttempts | 200 | - | delayBetweenAttempts | 2000 | Given load KameletBinding timer-to-mail.yaml And Camel K integration timer-to-mail should be running And Camel K integration timer-to-mail should print Routes startup diff --git a/test/mail-sink/timer-to-mail.yaml b/test/mail-sink/timer-to-mail.yaml index 561c72d0..c223777a 100644 --- a/test/mail-sink/timer-to-mail.yaml +++ b/test/mail-sink/timer-to-mail.yaml @@ -34,6 +34,7 @@ spec: name: mail-sink properties: connectionHost: "${host}" + connectionPort: "${port}" username: "${username}" password: "${password}" from: "${from}" diff --git a/test/mail-sink/yaks-config.yaml b/test/mail-sink/yaks-config.yaml index 302b6886..db3ee83b 100644 --- a/test/mail-sink/yaks-config.yaml +++ b/test/mail-sink/yaks-config.yaml @@ -24,6 +24,8 @@ config: value: false - name: YAKS_KUBERNETES_AUTO_REMOVE_RESOURCES value: false + - name: YAKS_JBANG_CAMEL_DUMP_INTEGRATION_OUTPUT + value: true settings: loggers: - name: INTEGRATION_STATUS diff --git a/test/rest-openapi-sink/openapi.json b/test/rest-openapi-sink/openapi.json index cae57a76..821a30a2 100644 --- a/test/rest-openapi-sink/openapi.json +++ b/test/rest-openapi-sink/openapi.json @@ -9,13 +9,8 @@ "url": "http://www.apache.org/licenses/LICENSE-2.0.html" } }, - "servers": [ - { - "url": "http://test-service/petstore" - } - ], "paths": { - "/pet": { + "/petstore/pet": { "put": { "requestBody": { "description": "Pet object that needs to be added to the store", @@ -92,7 +87,7 @@ "description": "" } }, - "/pet/{petId}": { + "/petstore/pet/{petId}": { "get": { "tags": [ "pet" diff --git a/test/rest-openapi-sink/rest-openapi-sink-binding.yaml b/test/rest-openapi-sink/rest-openapi-sink-binding.yaml index c0c778a4..9122cb5a 100644 --- a/test/rest-openapi-sink/rest-openapi-sink-binding.yaml +++ b/test/rest-openapi-sink/rest-openapi-sink-binding.yaml @@ -42,5 +42,5 @@ spec: apiVersion: camel.apache.org/v1alpha1 name: rest-openapi-sink properties: - specification: http://test-service.${YAKS_NAMESPACE}/petstore/openapi.json + specification: yaks:resolveURL('test-service')/petstore/openapi.json operation: ${operation} diff --git a/test/rest-openapi-sink/rest-openapi-sink.feature b/test/rest-openapi-sink/rest-openapi-sink.feature index c5de6406..dc1ee64d 100644 --- a/test/rest-openapi-sink/rest-openapi-sink.feature +++ b/test/rest-openapi-sink/rest-openapi-sink.feature @@ -27,17 +27,14 @@ Feature: REST OpenAPI Kamelet sink Given create Kubernetes service test-service Scenario: Create Kamelet binding for addPet - Given Camel K resource polling configuration - | maxAttempts | 200 | - | delayBetweenAttempts | 2000 | Given variable operation is "addPet" - When load KameletBinding rest-openapi-sink-binding.yaml - Then Camel K integration rest-openapi-sink-binding should be running + Then load KameletBinding rest-openapi-sink-binding.yaml Scenario: Provide OpenAPI specification to Camel K integration + Given load variable openapi from openapi.json When receive GET /petstore/openapi.json Then HTTP request header Content-Type is "application/json" - Then HTTP response body: citrus:readFile(classpath:openapi.json) + Then HTTP response body: ${openapi} Then send HTTP 200 OK Scenario: Verify proper addPet request message sent @@ -52,12 +49,12 @@ Feature: REST OpenAPI Kamelet sink Scenario: Create Kamelet binding for deletePet Given variable operation is "deletePet" When load KameletBinding rest-openapi-sink-binding.yaml - Then Camel K integration rest-openapi-sink-binding should be running Scenario: Provide OpenAPI specification to Camel K integration + Given load variable openapi from openapi.json When receive GET /petstore/openapi.json Then HTTP request header Content-Type is "application/json" - Then HTTP response body: citrus:readFile(classpath:openapi.json) + Then HTTP response body: ${openapi} Then send HTTP 200 OK Scenario: Verify proper deletePet request message sent diff --git a/test/rest-openapi-sink/yaks-config.yaml b/test/rest-openapi-sink/yaks-config.yaml index 5bf4c068..9a99d565 100644 --- a/test/rest-openapi-sink/yaks-config.yaml +++ b/test/rest-openapi-sink/yaks-config.yaml @@ -24,6 +24,8 @@ config: value: false - name: YAKS_KUBERNETES_AUTO_REMOVE_RESOURCES value: false + - name: YAKS_JBANG_CAMEL_DUMP_INTEGRATION_OUTPUT + value: true settings: loggers: - name: INTEGRATION_STATUS diff --git a/test/salesforce-sink/yaks-config.yaml b/test/salesforce-sink/yaks-config.yaml index a831edc2..246d85b1 100644 --- a/test/salesforce-sink/yaks-config.yaml +++ b/test/salesforce-sink/yaks-config.yaml @@ -24,6 +24,8 @@ config: value: false - name: YAKS_KUBERNETES_AUTO_REMOVE_RESOURCES value: false + - name: YAKS_JBANG_CAMEL_DUMP_INTEGRATION_OUTPUT + value: true settings: loggers: - name: INTEGRATION_STATUS diff --git a/test/timer-source/timer-source.feature b/test/timer-source/timer-source.feature index 6fa1e670..50053518 100644 --- a/test/timer-source/timer-source.feature +++ b/test/timer-source/timer-source.feature @@ -19,18 +19,15 @@ Feature: Timer Source Kamelet Background: Given HTTP server timeout is 15000 ms - Given HTTP server "probe-service" + Given HTTP server "test-service" Scenario: Create Http server - Given create Kubernetes service probe-service with target port 8080 + Given create Kubernetes service test-service with target port 8080 Scenario: Create Kamelet binding - Given Camel K resource polling configuration - | maxAttempts | 200 | - | delayBetweenAttempts | 2000 | And KameletBinding source properties | message | Hello World | - And bind Kamelet timer-source to uri http://probe-service.${YAKS_NAMESPACE}/events + And bind Kamelet timer-source to uri yaks:resolveURL('test-service')/events When create KameletBinding timer-source-binding Then KameletBinding timer-source-binding should be available Then Camel K integration timer-source-binding should be running @@ -43,4 +40,4 @@ Feature: Timer Source Kamelet Scenario: Remove Camel K resources Given delete KameletBinding timer-source-binding - And delete Kubernetes service probe-service + And delete Kubernetes service test-service diff --git a/test/timer-source/yaks-config.yaml b/test/timer-source/yaks-config.yaml index 6a93aeec..9977b154 100644 --- a/test/timer-source/yaks-config.yaml +++ b/test/timer-source/yaks-config.yaml @@ -24,6 +24,8 @@ config: value: false - name: YAKS_KUBERNETES_AUTO_REMOVE_RESOURCES value: false + - name: YAKS_JBANG_CAMEL_DUMP_INTEGRATION_OUTPUT + value: true settings: loggers: - name: INTEGRATION_STATUS