This is an automated email from the ASF dual-hosted git repository.
oscerd 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 34dd734be chore: Migrate AWS tests from LocalStack to Floci and add
sink tests (#2913)
34dd734be is described below
commit 34dd734beda7105dfebeb241c8e5592479856d50
Author: Andrea Cosentino <[email protected]>
AuthorDate: Thu Jul 9 15:08:36 2026 +0200
chore: Migrate AWS tests from LocalStack to Floci and add sink tests (#2913)
* chore: Migrate AWS tests from LocalStack to Floci and add sink tests
LocalStack's community edition was sunset in March 2026, now requiring
auth tokens. This migrates all AWS integration tests to use Floci, the
MIT-licensed drop-in replacement, via Citrus's native floci support in
citrus-testcontainers.
Also migrates all Pipe-format integration definitions to Camel route
YAML format (issue #2873) and adds new Citrus integration tests for
aws-s3-sink, aws-sqs-sink, and aws-sns-sink kamelets.
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Signed-off-by: Andrea Cosentino <[email protected]>
* fix: Add camel-aws2-sns test dependency for SNS sink test
The SNS sink test Groovy script imports SnsClient which requires
the camel-aws2-sns dependency on the test classpath. Without it,
all AWS tests fail with ClassNotFoundException.
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Signed-off-by: Andrea Cosentino <[email protected]>
---------
Signed-off-by: Andrea Cosentino <[email protected]>
Co-authored-by: Claude Opus 4.6 (1M context) <[email protected]>
---
tests/camel-kamelets-itest/pom.xml | 5 ++
.../camel-kamelets-itest/src/test/java/AwsIT.java | 5 ++
.../citrus-application.properties | 4 ++
...ws-ddb-sink-delete-item.citrus.it.yaml.disabled | 4 +-
.../aws-ddb-sink-put-item.citrus.it.yaml.disabled | 4 +-
.../aws-ddb-sink-route.yaml} | 46 ++++++-------
...ws-ddb-sink-update-item.citrus.it.yaml.disabled | 4 +-
.../aws-ddb-source-route.yaml} | 40 +++++------
.../aws/ddb/aws-ddb-source.citrus.it.yaml.disabled | 6 +-
.../aws/eventbridge/aws-eventbridge-sink-pipe.yaml | 51 --------------
.../aws-eventbridge-sink-route.yaml} | 56 +++++++--------
.../aws-eventbridge-sink.citrus.it.yaml | 8 +--
.../aws-sqs-event-listener-route.yaml} | 39 ++++-------
.../aws/kinesis/aws-kinesis-sink-pipe.yaml | 56 ---------------
...ource-pipe.yaml => aws-kinesis-sink-route.yaml} | 46 ++++++-------
.../aws/kinesis/aws-kinesis-sink.citrus.it.yaml | 4 +-
.../aws-kinesis-source-route.yaml} | 40 ++++-------
.../aws/kinesis/aws-kinesis-source.citrus.it.yaml | 6 +-
.../src/test/resources/aws/s3/README.md | 6 +-
.../aws-s3-sink-route.citrus.it.yaml} | 58 ++++++++--------
...aws-s3-uri-pipe.yaml => aws-s3-sink-route.yaml} | 45 ++++++------
.../aws-s3-source-route.yaml} | 40 +++++------
.../aws/s3/aws-s3-source-to-http-route.yaml | 54 +++++++++++++++
.../resources/aws/s3/aws-s3-to-http.citrus.it.yaml | 6 +-
.../src/test/resources/aws/s3/aws-s3-to-http.yaml | 79 ----------------------
.../aws/s3/aws-s3-to-log-uri-based.citrus.it.yaml | 2 +-
.../aws/s3/aws-s3-uri-pipe.citrus.it.yaml | 6 +-
.../src/test/resources/aws/s3/getS3Object.groovy | 42 ++++++++++++
.../aws-sns-sink-route.citrus.it.yaml} | 60 ++++++++++------
.../aws-sns-sink-route.yaml} | 43 ++++++------
.../aws-sqs-sns-event-listener.yaml} | 36 ++++------
.../test/resources/aws/sns/setupSnsToSqs.groovy | 53 +++++++++++++++
.../src/test/resources/aws/sqs/README.md | 6 +-
...-pipe.yaml => aws-sqs-sink-event-listener.yaml} | 36 ++++------
...s.it.yaml => aws-sqs-sink-route.citrus.it.yaml} | 46 +++++++++----
...s-sqs-uri-pipe.yaml => aws-sqs-sink-route.yaml} | 43 ++++++------
...sqs-uri-pipe.yaml => aws-sqs-source-route.yaml} | 39 ++++-------
.../sqs/aws-sqs-to-log-uri-based.citrus.it.yaml | 2 +-
.../aws/sqs/aws-sqs-uri-pipe.citrus.it.yaml | 6 +-
39 files changed, 523 insertions(+), 609 deletions(-)
diff --git a/tests/camel-kamelets-itest/pom.xml
b/tests/camel-kamelets-itest/pom.xml
index e2ac3b1fc..edf3884fc 100644
--- a/tests/camel-kamelets-itest/pom.xml
+++ b/tests/camel-kamelets-itest/pom.xml
@@ -98,6 +98,11 @@
<artifactId>camel-aws2-eventbridge</artifactId>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-aws2-sns</artifactId>
+ <scope>test</scope>
+ </dependency>
<!-- Citrus -->
<dependency>
diff --git a/tests/camel-kamelets-itest/src/test/java/AwsIT.java
b/tests/camel-kamelets-itest/src/test/java/AwsIT.java
index ee67f5826..b1a364815 100644
--- a/tests/camel-kamelets-itest/src/test/java/AwsIT.java
+++ b/tests/camel-kamelets-itest/src/test/java/AwsIT.java
@@ -84,4 +84,9 @@ public class AwsIT {
return
CitrusTestFactorySupport.factory(TestLoader.YAML).packageScan("aws.eventbridge");
}
+ @CitrusTestFactory
+ public Stream<DynamicTest> awsSns() {
+ return
CitrusTestFactorySupport.factory(TestLoader.YAML).packageScan("aws.sns");
+ }
+
}
diff --git
a/tests/camel-kamelets-itest/src/test/resources-filtered/citrus-application.properties
b/tests/camel-kamelets-itest/src/test/resources-filtered/citrus-application.properties
index 970d0593b..1d5528b21 100644
---
a/tests/camel-kamelets-itest/src/test/resources-filtered/citrus-application.properties
+++
b/tests/camel-kamelets-itest/src/test/resources-filtered/citrus-application.properties
@@ -32,6 +32,10 @@ citrus.camel.jbang.kamelets.version=${project.version}
# Enable dump of Camel JBang integration output
citrus.camel.jbang.dump.integration.output=true
+# Use Floci as the AWS emulator (drop-in replacement for LocalStack)
+citrus.testcontainers.localstack.image.name=floci/floci
+citrus.testcontainers.localstack.version=latest
+
# Use general registry mirror for Docker images (e.g. Testcontainers)
citrus.testcontainers.registry.mirror=mirror.gcr.io
citrus.testcontainers.registry.mirror.enabled=false
diff --git
a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-delete-item.citrus.it.yaml.disabled
b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-delete-item.citrus.it.yaml.disabled
index 5d8e87d5c..e9ddacdc6 100644
---
a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-delete-item.citrus.it.yaml.disabled
+++
b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-delete-item.citrus.it.yaml.disabled
@@ -26,7 +26,7 @@ variables:
- name: "timer.source.period"
value: "10000"
actions:
- # Create LocalStack infrastructure
+ # Create AWS infrastructure (Floci container)
- testcontainers:
start:
localstack:
@@ -86,7 +86,7 @@ actions:
jbang:
run:
integration:
- file: "aws/ddb/aws-ddb-sink-pipe.yaml"
+ file: "aws/ddb/aws-ddb-sink-route.yaml"
systemProperties:
properties:
- name: "timer.source.period"
diff --git
a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-put-item.citrus.it.yaml.disabled
b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-put-item.citrus.it.yaml.disabled
index 93146ea4d..83b85c5e3 100644
---
a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-put-item.citrus.it.yaml.disabled
+++
b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-put-item.citrus.it.yaml.disabled
@@ -26,7 +26,7 @@ variables:
- name: "timer.source.period"
value: "10000"
actions:
- # Create LocalStack infrastructure
+ # Create AWS infrastructure (Floci container)
- testcontainers:
start:
localstack:
@@ -73,7 +73,7 @@ actions:
jbang:
run:
integration:
- file: "aws/ddb/aws-ddb-sink-pipe.yaml"
+ file: "aws/ddb/aws-ddb-sink-route.yaml"
systemProperties:
properties:
- name: "timer.source.period"
diff --git
a/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-sqs-event-listener-pipe.yaml
b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-route.yaml
similarity index 57%
rename from
tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-sqs-event-listener-pipe.yaml
rename to
tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-route.yaml
index 6e4fe1695..a1dbca82f 100644
---
a/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-sqs-event-listener-pipe.yaml
+++
b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-route.yaml
@@ -15,27 +15,25 @@
# limitations under the License.
# ---------------------------------------------------------------------------
-apiVersion: camel.apache.org/v1
-kind: Pipe
-metadata:
- name: aws-sqs-event-listener-pipe
-spec:
- source:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: aws-sqs-source
- properties:
- queueNameOrArn: "{{aws.sqs.queueName}}"
- uriEndpointOverride: "{{aws.eventbridge.uriEndpointOverride}}"
- overrideEndpoint: "{{aws.eventbridge.overrideEndpoint}}"
- accessKey: "{{aws.eventbridge.accessKey}}"
- secretKey: "{{aws.eventbridge.secretKey}}"
- region: "{{aws.eventbridge.region}}"
- sink:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: log-sink
- properties:
- showHeaders: true
+- route:
+ from:
+ uri: "timer:tick"
+ parameters:
+ period: "{{timer.source.period}}"
+ repeatCount: 1
+ steps:
+ - setBody:
+ constant: "{{aws.ddb.json.data}}"
+ - log:
+ message: "${body}"
+ showHeaders: true
+ - to:
+ uri: "kamelet:aws-ddb-sink"
+ parameters:
+ table: "{{aws.ddb.tableName}}"
+ operation: "{{aws.ddb.operation}}"
+ overrideEndpoint: "{{aws.ddb.overrideEndpoint}}"
+ uriEndpointOverride: "{{aws.ddb.uriEndpointOverride}}"
+ accessKey: "{{aws.ddb.accessKey}}"
+ secretKey: "{{aws.ddb.secretKey}}"
+ region: "{{aws.ddb.region}}"
diff --git
a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-update-item.citrus.it.yaml.disabled
b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-update-item.citrus.it.yaml.disabled
index 0765021e8..d00e46924 100644
---
a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-update-item.citrus.it.yaml.disabled
+++
b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-update-item.citrus.it.yaml.disabled
@@ -26,7 +26,7 @@ variables:
- name: "timer.source.period"
value: "10000"
actions:
- # Create LocalStack infrastructure
+ # Create AWS infrastructure (Floci container)
- testcontainers:
start:
localstack:
@@ -91,7 +91,7 @@ actions:
jbang:
run:
integration:
- file: "aws/ddb/aws-ddb-sink-pipe.yaml"
+ file: "aws/ddb/aws-ddb-sink-route.yaml"
systemProperties:
properties:
- name: "timer.source.period"
diff --git
a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml
b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-source-route.yaml
similarity index 60%
copy from
tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml
copy to
tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-source-route.yaml
index 7155c8c50..d02c29974 100644
---
a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml
+++
b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-source-route.yaml
@@ -15,27 +15,19 @@
# limitations under the License.
# ---------------------------------------------------------------------------
-apiVersion: camel.apache.org/v1
-kind: Pipe
-metadata:
- name: aws-sqs-uri-pipe
-spec:
- source:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: aws-sqs-source
- properties:
- queueNameOrArn: "{{aws.sqs.queueName}}"
- uriEndpointOverride: "{{aws.sqs.uriEndpointOverride}}"
- overrideEndpoint: "{{aws.sqs.overrideEndpoint}}"
- accessKey: "{{aws.sqs.accessKey}}"
- secretKey: "{{aws.sqs.secretKey}}"
- region: "{{aws.sqs.region}}"
- sink:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: log-sink
- properties:
- showHeaders: true
+- route:
+ from:
+ uri: "kamelet:aws-ddb-streams-source"
+ parameters:
+ streamIteratorType: "FROM_START"
+ table: "{{aws.ddb.tableName}}"
+ overrideEndpoint: "{{aws.ddb.overrideEndpoint}}"
+ uriEndpointOverride: "{{aws.ddb.uriEndpointOverride}}"
+ accessKey: "{{aws.ddb.accessKey}}"
+ secretKey: "{{aws.ddb.secretKey}}"
+ region: "{{aws.ddb.region}}"
+ steps:
+ - to:
+ uri: "kamelet:log-sink"
+ parameters:
+ showHeaders: true
diff --git
a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-source.citrus.it.yaml.disabled
b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-source.citrus.it.yaml.disabled
index a133e36b6..0c309905b 100644
---
a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-source.citrus.it.yaml.disabled
+++
b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-source.citrus.it.yaml.disabled
@@ -30,7 +30,7 @@ variables:
- name: "aws.ddb.item.title"
value: "Star Wars IV"
actions:
- # Create LocalStack infrastructure
+ # Create AWS infrastructure (Floci container)
- testcontainers:
start:
localstack:
@@ -50,7 +50,7 @@ actions:
jbang:
run:
integration:
- file: "aws/ddb/aws-ddb-source-pipe.yaml"
+ file: "aws/ddb/aws-ddb-source-route.yaml"
systemProperties:
file: "aws/ddb/application.properties"
@@ -62,6 +62,6 @@ actions:
- camel:
jbang:
verify:
- integration: "aws-ddb-source-pipe"
+ integration: "aws-ddb-source-route"
logMessage: |
"Star Wars IV"
diff --git
a/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-eventbridge-sink-pipe.yaml
b/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-eventbridge-sink-pipe.yaml
deleted file mode 100644
index d73252705..000000000
---
a/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-eventbridge-sink-pipe.yaml
+++ /dev/null
@@ -1,51 +0,0 @@
-# ---------------------------------------------------------------------------
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ---------------------------------------------------------------------------
-
-apiVersion: camel.apache.org/v1
-kind: Pipe
-metadata:
- name: aws-eventbridge-sink-pipe
-spec:
- source:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: timer-source
- properties:
- period: '{{timer.source.period}}'
- message: '{{aws.eventbridge.json.data}}'
- steps:
- - ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: log-action
- sink:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: aws-eventbridge-sink
- properties:
- eventbusNameOrArn: '{{aws.eventbridge.eventbusName}}'
- overrideEndpoint: '{{aws.eventbridge.overrideEndpoint}}'
- uriEndpointOverride: '{{aws.eventbridge.uriEndpointOverride}}'
- accessKey: '{{aws.eventbridge.accessKey}}'
- secretKey: '{{aws.eventbridge.secretKey}}'
- region: '{{aws.eventbridge.region}}'
- resourcesArn: '{{aws.eventbridge.resourcesArn}}'
- eventSource: '{{aws.eventbridge.eventSource}}'
- eventSourcePrefix: '{{aws.eventbridge.eventSourcePrefix}}'
- detailType: '{{aws.eventbridge.detailType}}'
diff --git
a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-pipe.yaml
b/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-eventbridge-sink-route.yaml
similarity index 50%
rename from
tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-pipe.yaml
rename to
tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-eventbridge-sink-route.yaml
index e473e75a3..76642738c 100644
---
a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-pipe.yaml
+++
b/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-eventbridge-sink-route.yaml
@@ -15,36 +15,26 @@
# limitations under the License.
# ---------------------------------------------------------------------------
-apiVersion: camel.apache.org/v1
-kind: Pipe
-metadata:
- name: aws-ddb-sink-pipe
-spec:
- source:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: timer-source
- properties:
- period: "{{timer.source.period}}"
- message: "{{aws.ddb.json.data}}"
- steps:
- - ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: log-action
- properties:
- showHeaders: true
- sink:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: aws-ddb-sink
- properties:
- table: "{{aws.ddb.tableName}}"
- operation: "{{aws.ddb.operation}}"
- overrideEndpoint: "{{aws.ddb.overrideEndpoint}}"
- uriEndpointOverride: "{{aws.ddb.uriEndpointOverride}}"
- accessKey: "{{aws.ddb.accessKey}}"
- secretKey: "{{aws.ddb.secretKey}}"
- region: "{{aws.ddb.region}}"
+- route:
+ from:
+ uri: "timer:tick"
+ parameters:
+ period: "{{timer.source.period}}"
+ repeatCount: 1
+ steps:
+ - setBody:
+ constant: "{{aws.eventbridge.json.data}}"
+ - log: "${body}"
+ - to:
+ uri: "kamelet:aws-eventbridge-sink"
+ parameters:
+ eventbusNameOrArn: "{{aws.eventbridge.eventbusName}}"
+ overrideEndpoint: "{{aws.eventbridge.overrideEndpoint}}"
+ uriEndpointOverride: "{{aws.eventbridge.uriEndpointOverride}}"
+ accessKey: "{{aws.eventbridge.accessKey}}"
+ secretKey: "{{aws.eventbridge.secretKey}}"
+ region: "{{aws.eventbridge.region}}"
+ resourcesArn: "{{aws.eventbridge.resourcesArn}}"
+ eventSource: "{{aws.eventbridge.eventSource}}"
+ eventSourcePrefix: "{{aws.eventbridge.eventSourcePrefix}}"
+ detailType: "{{aws.eventbridge.detailType}}"
diff --git
a/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-eventbridge-sink.citrus.it.yaml
b/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-eventbridge-sink.citrus.it.yaml
index ae5c09944..cc197dcd0 100644
---
a/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-eventbridge-sink.citrus.it.yaml
+++
b/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-eventbridge-sink.citrus.it.yaml
@@ -37,7 +37,7 @@ variables:
- name: "timer.source.period"
value: "10000"
actions:
- # Create LocalStack infrastructure
+ # Create AWS infrastructure (Floci container)
- testcontainers:
start:
localstack:
@@ -59,7 +59,7 @@ actions:
jbang:
run:
integration:
- file: "aws/eventbridge/aws-eventbridge-sink-pipe.yaml"
+ file: "aws/eventbridge/aws-eventbridge-sink-route.yaml"
systemProperties:
properties:
- name: "timer.source.period"
@@ -73,7 +73,7 @@ actions:
jbang:
run:
integration:
- file: "aws/eventbridge/aws-sqs-event-listener-pipe.yaml"
+ file: "aws/eventbridge/aws-sqs-event-listener-route.yaml"
systemProperties:
properties:
- name: "aws.sqs.queueName"
@@ -84,6 +84,6 @@ actions:
- camel:
jbang:
verify:
- integration: "aws-sqs-event-listener-pipe"
+ integration: "aws-sqs-event-listener-route"
logMessage: |
"detail":{"message":"Hello AWS EventBridge!"}
diff --git
a/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-source-pipe.yaml
b/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-sqs-event-listener-route.yaml
similarity index 59%
copy from
tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-source-pipe.yaml
copy to
tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-sqs-event-listener-route.yaml
index f85692cc6..8809635e8 100644
---
a/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-source-pipe.yaml
+++
b/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-sqs-event-listener-route.yaml
@@ -15,27 +15,18 @@
# limitations under the License.
# ---------------------------------------------------------------------------
-apiVersion: camel.apache.org/v1
-kind: Pipe
-metadata:
- name: aws-kinesis-source-pipe
-spec:
- source:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: aws-kinesis-source
- properties:
- stream: '{{aws.kinesis.streamName}}'
- overrideEndpoint: '{{aws.kinesis.overrideEndpoint}}'
- uriEndpointOverride: '{{aws.kinesis.uriEndpointOverride}}'
- accessKey: '{{aws.kinesis.accessKey}}'
- secretKey: '{{aws.kinesis.secretKey}}'
- region: '{{aws.kinesis.region}}'
- sink:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: log-sink
- properties:
- showHeaders: true
+- route:
+ from:
+ uri: "kamelet:aws-sqs-source"
+ parameters:
+ queueNameOrArn: "{{aws.sqs.queueName}}"
+ uriEndpointOverride: "{{aws.eventbridge.uriEndpointOverride}}"
+ overrideEndpoint: "{{aws.eventbridge.overrideEndpoint}}"
+ accessKey: "{{aws.eventbridge.accessKey}}"
+ secretKey: "{{aws.eventbridge.secretKey}}"
+ region: "{{aws.eventbridge.region}}"
+ steps:
+ - to:
+ uri: "kamelet:log-sink"
+ parameters:
+ showHeaders: true
diff --git
a/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-sink-pipe.yaml
b/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-sink-pipe.yaml
deleted file mode 100644
index 8de1b46cf..000000000
---
a/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-sink-pipe.yaml
+++ /dev/null
@@ -1,56 +0,0 @@
-# ---------------------------------------------------------------------------
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ---------------------------------------------------------------------------
-
-apiVersion: camel.apache.org/v1
-kind: Pipe
-metadata:
- name: aws-kinesis-sink-pipe
-spec:
- source:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: timer-source
- properties:
- period: '{{timer.source.period}}'
- message: '{{aws.kinesis.json.data}}'
- steps:
- - ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: insert-header-action
- properties:
- name: "partition"
- value: '{{aws.kinesis.partitionKey}}'
- - ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: log-action
- properties:
- showHeaders: true
- sink:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: aws-kinesis-sink
- properties:
- stream: '{{aws.kinesis.streamName}}'
- overrideEndpoint: '{{aws.kinesis.overrideEndpoint}}'
- uriEndpointOverride: '{{aws.kinesis.uriEndpointOverride}}'
- accessKey: '{{aws.kinesis.accessKey}}'
- secretKey: '{{aws.kinesis.secretKey}}'
- region: '{{aws.kinesis.region}}'
diff --git
a/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-source-pipe.yaml
b/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-sink-route.yaml
similarity index 56%
rename from
tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-source-pipe.yaml
rename to
tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-sink-route.yaml
index f85692cc6..81a257282 100644
---
a/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-source-pipe.yaml
+++
b/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-sink-route.yaml
@@ -15,27 +15,25 @@
# limitations under the License.
# ---------------------------------------------------------------------------
-apiVersion: camel.apache.org/v1
-kind: Pipe
-metadata:
- name: aws-kinesis-source-pipe
-spec:
- source:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: aws-kinesis-source
- properties:
- stream: '{{aws.kinesis.streamName}}'
- overrideEndpoint: '{{aws.kinesis.overrideEndpoint}}'
- uriEndpointOverride: '{{aws.kinesis.uriEndpointOverride}}'
- accessKey: '{{aws.kinesis.accessKey}}'
- secretKey: '{{aws.kinesis.secretKey}}'
- region: '{{aws.kinesis.region}}'
- sink:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: log-sink
- properties:
- showHeaders: true
+- route:
+ from:
+ uri: "timer:tick"
+ parameters:
+ period: "{{timer.source.period}}"
+ repeatCount: 1
+ steps:
+ - setBody:
+ constant: "{{aws.kinesis.json.data}}"
+ - setHeader:
+ name: "partition"
+ constant: "{{aws.kinesis.partitionKey}}"
+ - log: "${body}"
+ - to:
+ uri: "kamelet:aws-kinesis-sink"
+ parameters:
+ stream: "{{aws.kinesis.streamName}}"
+ overrideEndpoint: "{{aws.kinesis.overrideEndpoint}}"
+ uriEndpointOverride: "{{aws.kinesis.uriEndpointOverride}}"
+ accessKey: "{{aws.kinesis.accessKey}}"
+ secretKey: "{{aws.kinesis.secretKey}}"
+ region: "{{aws.kinesis.region}}"
diff --git
a/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-sink.citrus.it.yaml
b/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-sink.citrus.it.yaml
index 57ab64e0f..01154a846 100644
---
a/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-sink.citrus.it.yaml
+++
b/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-sink.citrus.it.yaml
@@ -31,7 +31,7 @@ variables:
- name: "timer.source.period"
value: "10000"
actions:
- # Create LocalStack infrastructure
+ # Create AWS infrastructure (Floci container)
- testcontainers:
start:
localstack:
@@ -52,7 +52,7 @@ actions:
jbang:
run:
integration:
- file: "aws/kinesis/aws-kinesis-sink-pipe.yaml"
+ file: "aws/kinesis/aws-kinesis-sink-route.yaml"
systemProperties:
properties:
- name: "timer.source.period"
diff --git
a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-source-pipe.yaml
b/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-source-route.yaml
similarity index 58%
rename from
tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-source-pipe.yaml
rename to
tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-source-route.yaml
index 3d25229c4..951b20efd 100644
---
a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-source-pipe.yaml
+++
b/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-source-route.yaml
@@ -15,28 +15,18 @@
# limitations under the License.
# ---------------------------------------------------------------------------
-apiVersion: camel.apache.org/v1
-kind: Pipe
-metadata:
- name: aws-ddb-source-pipe
-spec:
- source:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: aws-ddb-streams-source
- properties:
- streamIteratorType: FROM_START
- table: "{{aws.ddb.tableName}}"
- overrideEndpoint: "{{aws.ddb.overrideEndpoint}}"
- uriEndpointOverride: "{{aws.ddb.uriEndpointOverride}}"
- accessKey: "{{aws.ddb.accessKey}}"
- secretKey: "{{aws.ddb.secretKey}}"
- region: "{{aws.ddb.region}}"
- sink:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: log-sink
- properties:
- showHeaders: true
+- route:
+ from:
+ uri: "kamelet:aws-kinesis-source"
+ parameters:
+ stream: "{{aws.kinesis.streamName}}"
+ overrideEndpoint: "{{aws.kinesis.overrideEndpoint}}"
+ uriEndpointOverride: "{{aws.kinesis.uriEndpointOverride}}"
+ accessKey: "{{aws.kinesis.accessKey}}"
+ secretKey: "{{aws.kinesis.secretKey}}"
+ region: "{{aws.kinesis.region}}"
+ steps:
+ - to:
+ uri: "kamelet:log-sink"
+ parameters:
+ showHeaders: true
diff --git
a/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-source.citrus.it.yaml
b/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-source.citrus.it.yaml
index 457ab1794..0ef1ce273 100644
---
a/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-source.citrus.it.yaml
+++
b/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-source.citrus.it.yaml
@@ -24,7 +24,7 @@ variables:
- name: "aws.kinesis.streamData"
value: "Camel rocks!"
actions:
- # Create LocalStack infrastructure
+ # Create AWS infrastructure (Floci container)
- testcontainers:
start:
localstack:
@@ -45,7 +45,7 @@ actions:
jbang:
run:
integration:
- file: "aws/kinesis/aws-kinesis-source-pipe.yaml"
+ file: "aws/kinesis/aws-kinesis-source-route.yaml"
systemProperties:
file: "aws/kinesis/application.properties"
@@ -63,5 +63,5 @@ actions:
- camel:
jbang:
verify:
- integration: "aws-kinesis-source-pipe"
+ integration: "aws-kinesis-source-route"
logMessage: "${aws.kinesis.streamData}"
diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/s3/README.md
b/tests/camel-kamelets-itest/src/test/resources/aws/s3/README.md
index b5e8f53f0..5285d55b1 100644
--- a/tests/camel-kamelets-itest/src/test/resources/aws/s3/README.md
+++ b/tests/camel-kamelets-itest/src/test/resources/aws/s3/README.md
@@ -7,7 +7,7 @@ This test verifies the AWS S3 Kamelet source defined in
[aws-s3-source.kamelet.y
The test verifies the AWS S3 Kamelet source by creating a Camel K integration
that uses the Kamelet and listens for messages on the
AWS S3 bucket.
-The test uses a [LocalStack
Testcontainers](https://www.testcontainers.org/modules/localstack/) instance to
start a local AWS S3 service for mocking reasons.
+The test uses a
[Testcontainers](https://www.testcontainers.org/modules/localstack/) instance
to start a local AWS S3 service for mocking reasons.
The Kamelet and the test interact with the local AWS S3 service for validation
of functionality.
### Test Kamelet source
@@ -15,7 +15,7 @@ The Kamelet and the test interact with the local AWS S3
service for validation o
The test performs the following high level steps for configs - URI, secret and
property based:
*Preparation*
-- Start the AWS S3 service as LocalStack container
+- Start the AWS S3 service as Testcontainers container
- Overwrite the Kamelet with the latest source
- Prepare the Camel AWS S3 client
@@ -27,7 +27,7 @@ The test performs the following high level steps for configs
- URI, secret and p
- Verify that the integration has received the message event
*Cleanup*
-- Stop the LocalStack container
+- Stop the Testcontainers container
- Delete the Camel K integration
- Delete the secret from the current namespacce
diff --git
a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-source.citrus.it.yaml.disabled
b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-sink-route.citrus.it.yaml
similarity index 59%
copy from
tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-source.citrus.it.yaml.disabled
copy to
tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-sink-route.citrus.it.yaml
index a133e36b6..f33d2bbe0 100644
---
a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-source.citrus.it.yaml.disabled
+++
b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-sink-route.citrus.it.yaml
@@ -15,53 +15,53 @@
# limitations under the License.
# ---------------------------------------------------------------------------
-name: aws-ddb-source-test
+name: aws-s3-sink-route-test
variables:
- - name: "maxRetryAttempts"
- value: "20"
- - name: "aws.ddb.streams"
- value: "true"
- - name: "aws.ddb.tableName"
- value: "movies"
- - name: "aws.ddb.item.id"
- value: "1"
- - name: "aws.ddb.item.year"
- value: "1977"
- - name: "aws.ddb.item.title"
- value: "Star Wars IV"
+ - name: "aws.s3.bucketNameOrArn"
+ value: "sink-bucket"
+ - name: "aws.s3.key"
+ value: "test-sink.txt"
+ - name: "test.message"
+ value: "Hello from S3 sink test"
actions:
- # Create LocalStack infrastructure
+ # Create AWS infrastructure (Floci container)
- testcontainers:
start:
localstack:
services:
- - "DYNAMODB"
+ - "S3"
- waitFor:
http:
url: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}"
- # Create AWS-DDB client
- - groovy:
- script:
- file: "aws/ddb/amazonDDBClient.groovy"
+ # Create AWS-S3 client
+ - camel:
+ createComponent:
+ name: amazonS3Client
+ file: "aws/s3/amazonS3Client.groovy"
# Create Camel JBang integration
- camel:
jbang:
run:
integration:
- file: "aws/ddb/aws-ddb-source-pipe.yaml"
+ file: "aws/s3/aws-s3-sink-route.yaml"
systemProperties:
- file: "aws/ddb/application.properties"
+ file: "aws/s3/application.properties"
+ properties:
+ - name: "test.message"
+ value: "${test.message}"
+ - name: "aws.s3.key"
+ value: "${aws.s3.key}"
- - groovy:
- script:
- file: "aws/ddb/putItem.groovy"
-
- # Verify AWS-DDB source
+ # Verify S3 sink wrote the object
- camel:
jbang:
verify:
- integration: "aws-ddb-source-pipe"
- logMessage: |
- "Star Wars IV"
+ integration: "aws-s3-sink-route"
+ logMessage: "${test.message}"
+
+ # Verify object exists in S3 by reading it back
+ - groovy:
+ script:
+ file: "aws/s3/getS3Object.groovy"
diff --git
a/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-uri-pipe.yaml
b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-sink-route.yaml
similarity index 58%
rename from
tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-uri-pipe.yaml
rename to
tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-sink-route.yaml
index 70a998636..67b08ab95 100644
--- a/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-uri-pipe.yaml
+++
b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-sink-route.yaml
@@ -15,28 +15,23 @@
# limitations under the License.
# ---------------------------------------------------------------------------
-apiVersion: camel.apache.org/v1
-kind: Pipe
-metadata:
- name: aws-s3-uri-pipe
-spec:
- source:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: aws-s3-source
- properties:
- bucketNameOrArn: "{{aws.s3.bucketNameOrArn}}"
- uriEndpointOverride: "{{aws.s3.uriEndpointOverride}}"
- overrideEndpoint: "{{aws.s3.overrideEndpoint}}"
- forcePathStyle: "{{aws.s3.forcePathStyle}}"
- accessKey: "{{aws.s3.accessKey}}"
- secretKey: "{{aws.s3.secretKey}}"
- region: "{{aws.s3.region}}"
- sink:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: log-sink
- properties:
- showHeaders: true
+- route:
+ from:
+ uri: "timer:tick"
+ parameters:
+ period: "10000"
+ repeatCount: 1
+ steps:
+ - setBody:
+ constant: "{{test.message}}"
+ - to:
+ uri: "kamelet:aws-s3-sink"
+ parameters:
+ bucketNameOrArn: "{{aws.s3.bucketNameOrArn}}"
+ accessKey: "{{aws.s3.accessKey}}"
+ secretKey: "{{aws.s3.secretKey}}"
+ region: "{{aws.s3.region}}"
+ overrideEndpoint: "{{aws.s3.overrideEndpoint}}"
+ uriEndpointOverride: "{{aws.s3.uriEndpointOverride}}"
+ forcePathStyle: "{{aws.s3.forcePathStyle}}"
+ keyName: "{{aws.s3.key}}"
diff --git
a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml
b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-source-route.yaml
similarity index 60%
copy from
tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml
copy to
tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-source-route.yaml
index 7155c8c50..5ffc1f0ea 100644
---
a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml
+++
b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-source-route.yaml
@@ -15,27 +15,19 @@
# limitations under the License.
# ---------------------------------------------------------------------------
-apiVersion: camel.apache.org/v1
-kind: Pipe
-metadata:
- name: aws-sqs-uri-pipe
-spec:
- source:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: aws-sqs-source
- properties:
- queueNameOrArn: "{{aws.sqs.queueName}}"
- uriEndpointOverride: "{{aws.sqs.uriEndpointOverride}}"
- overrideEndpoint: "{{aws.sqs.overrideEndpoint}}"
- accessKey: "{{aws.sqs.accessKey}}"
- secretKey: "{{aws.sqs.secretKey}}"
- region: "{{aws.sqs.region}}"
- sink:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: log-sink
- properties:
- showHeaders: true
+- route:
+ from:
+ uri: "kamelet:aws-s3-source"
+ parameters:
+ bucketNameOrArn: "{{aws.s3.bucketNameOrArn}}"
+ uriEndpointOverride: "{{aws.s3.uriEndpointOverride}}"
+ overrideEndpoint: "{{aws.s3.overrideEndpoint}}"
+ forcePathStyle: "{{aws.s3.forcePathStyle}}"
+ accessKey: "{{aws.s3.accessKey}}"
+ secretKey: "{{aws.s3.secretKey}}"
+ region: "{{aws.s3.region}}"
+ steps:
+ - to:
+ uri: "kamelet:log-sink"
+ parameters:
+ showHeaders: true
diff --git
a/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-source-to-http-route.yaml
b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-source-to-http-route.yaml
new file mode 100644
index 000000000..39e60ad9a
--- /dev/null
+++
b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-source-to-http-route.yaml
@@ -0,0 +1,54 @@
+# ---------------------------------------------------------------------------
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ---------------------------------------------------------------------------
+
+- route:
+ from:
+ uri: "kamelet:aws-s3-source"
+ parameters:
+ bucketNameOrArn: "{{aws.s3.bucketNameOrArn}}"
+ uriEndpointOverride: "{{aws.s3.uriEndpointOverride}}"
+ overrideEndpoint: "{{aws.s3.overrideEndpoint}}"
+ forcePathStyle: "{{aws.s3.forcePathStyle}}"
+ accessKey: "{{aws.s3.accessKey}}"
+ secretKey: "{{aws.s3.secretKey}}"
+ region: "{{aws.s3.region}}"
+ steps:
+ - to:
+ uri: "kamelet:data-type-action"
+ parameters:
+ scheme: "aws2-s3"
+ format: "application-cloudevents"
+ - to:
+ uri: "kamelet:data-type-action"
+ parameters:
+ scheme: "http"
+ format: "application-cloudevents"
+ - to:
+ uri: "kamelet:data-type-action"
+ parameters:
+ scheme: "text"
+ format: "plain"
+ - removeHeaders:
+ pattern: "Camel*"
+ - to:
+ uri: "kamelet:log-sink"
+ parameters:
+ showHeaders: true
+ - to:
+ uri: "kamelet:http-sink"
+ parameters:
+ url: "{{http.sink.url}}"
diff --git
a/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-to-http.citrus.it.yaml
b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-to-http.citrus.it.yaml
index 13f815e8e..58531f373 100644
---
a/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-to-http.citrus.it.yaml
+++
b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-to-http.citrus.it.yaml
@@ -24,7 +24,7 @@ variables:
- name: "aws.s3.key"
value: "hello.txt"
actions:
- # Create LocalStack infrastructure
+ # Create AWS infrastructure (Floci container)
- testcontainers:
start:
localstack:
@@ -45,7 +45,7 @@ actions:
jbang:
run:
integration:
- file: "aws/s3/aws-s3-to-http.yaml"
+ file: "aws/s3/aws-s3-source-to-http-route.yaml"
systemProperties:
file: "aws/s3/application.properties"
properties:
@@ -89,5 +89,5 @@ actions:
- camel:
jbang:
verify:
- integration: "aws-s3-to-http"
+ integration: "aws-s3-source-to-http-route"
logMessage: "${aws.s3.message}"
diff --git
a/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-to-http.yaml
b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-to-http.yaml
deleted file mode 100644
index 70ddfcc21..000000000
--- a/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-to-http.yaml
+++ /dev/null
@@ -1,79 +0,0 @@
-# ---------------------------------------------------------------------------
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ---------------------------------------------------------------------------
-
-apiVersion: camel.apache.org/v1
-kind: Pipe
-metadata:
- name: aws-s3-to-http
-spec:
- integration:
- dependencies:
- - "camel:cloudevents"
- source:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: aws-s3-source
- properties:
- bucketNameOrArn: "{{aws.s3.bucketNameOrArn}}"
- uriEndpointOverride: "{{aws.s3.uriEndpointOverride}}"
- overrideEndpoint: "{{aws.s3.overrideEndpoint}}"
- forcePathStyle: "{{aws.s3.forcePathStyle}}"
- accessKey: "{{aws.s3.accessKey}}"
- secretKey: "{{aws.s3.secretKey}}"
- region: "{{aws.s3.region}}"
- steps:
- - ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: data-type-action
- properties:
- scheme: "aws2-s3"
- format: "application-cloudevents"
- - ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: data-type-action
- properties:
- scheme: "http"
- format: "application-cloudevents"
- - ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: data-type-action
- properties:
- scheme: "text"
- format: "plain"
- - ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: drop-headers-action
- properties:
- pattern: "Camel*"
- - ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: log-sink
- properties:
- showHeaders: true
- sink:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: http-sink
- properties:
- url: "{{http.sink.url}}"
diff --git
a/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-to-log-uri-based.citrus.it.yaml
b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-to-log-uri-based.citrus.it.yaml
index fcdc5127b..a78d56024 100644
---
a/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-to-log-uri-based.citrus.it.yaml
+++
b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-to-log-uri-based.citrus.it.yaml
@@ -24,7 +24,7 @@ variables:
- name: "aws.s3.key"
value: "hello.txt"
actions:
- # Create LocalStack infrastructure
+ # Create AWS infrastructure (Floci container)
- testcontainers:
start:
localstack:
diff --git
a/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-uri-pipe.citrus.it.yaml
b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-uri-pipe.citrus.it.yaml
index fc63613f2..1a70bbcab 100644
---
a/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-uri-pipe.citrus.it.yaml
+++
b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-uri-pipe.citrus.it.yaml
@@ -24,7 +24,7 @@ variables:
- name: "aws.s3.key"
value: "hello.txt"
actions:
- # Create LocalStack infrastructure
+ # Create AWS infrastructure (Floci container)
- testcontainers:
start:
localstack:
@@ -45,7 +45,7 @@ actions:
jbang:
run:
integration:
- file: "aws/s3/aws-s3-uri-pipe.yaml"
+ file: "aws/s3/aws-s3-source-route.yaml"
systemProperties:
properties:
- name: "aws.s3.bucketNameOrArn"
@@ -77,5 +77,5 @@ actions:
- camel:
jbang:
verify:
- integration: "aws-s3-uri-pipe"
+ integration: "aws-s3-source-route"
logMessage: "${aws.s3.message}"
diff --git
a/tests/camel-kamelets-itest/src/test/resources/aws/s3/getS3Object.groovy
b/tests/camel-kamelets-itest/src/test/resources/aws/s3/getS3Object.groovy
new file mode 100644
index 000000000..5b6a482ec
--- /dev/null
+++ b/tests/camel-kamelets-itest/src/test/resources/aws/s3/getS3Object.groovy
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import software.amazon.awssdk.auth.credentials.AwsBasicCredentials
+import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider
+import software.amazon.awssdk.regions.Region
+import software.amazon.awssdk.services.s3.S3Client
+import software.amazon.awssdk.services.s3.model.GetObjectRequest
+
+S3Client s3 = S3Client
+ .builder()
+
.endpointOverride(URI.create('${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}'))
+ .credentialsProvider(StaticCredentialsProvider.create(
+ AwsBasicCredentials.create(
+ '${CITRUS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY}',
+ '${CITRUS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY}')
+ ))
+ .forcePathStyle(true)
+ .region(Region.of('${CITRUS_TESTCONTAINERS_LOCALSTACK_REGION}'))
+ .build()
+
+def response = s3.getObjectAsBytes(GetObjectRequest.builder()
+ .bucket('${aws.s3.bucketNameOrArn}')
+ .key('${aws.s3.key}')
+ .build())
+
+String content = response.asUtf8String()
+assert content == '${test.message}' : "Expected '${test.message}' but got '" +
content + "'"
diff --git
a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.citrus.it.yaml
b/tests/camel-kamelets-itest/src/test/resources/aws/sns/aws-sns-sink-route.citrus.it.yaml
similarity index 55%
copy from
tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.citrus.it.yaml
copy to
tests/camel-kamelets-itest/src/test/resources/aws/sns/aws-sns-sink-route.citrus.it.yaml
index 90e944650..8d3f69e9b 100644
---
a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.citrus.it.yaml
+++
b/tests/camel-kamelets-itest/src/test/resources/aws/sns/aws-sns-sink-route.citrus.it.yaml
@@ -15,35 +15,60 @@
# limitations under the License.
# ---------------------------------------------------------------------------
-name: aws-sqs-uri-pipe-test
+name: aws-sns-sink-route-test
variables:
+ - name: "aws.sns.topicName"
+ value: "sns-test-topic"
- name: "aws.sqs.queueName"
- value: "queue2"
- - name: "aws.sqs.message"
- value: "Hello from SQS Kamelet"
+ value: "sns-test-queue"
+ - name: "test.message"
+ value: "Hello from SNS sink test"
actions:
- # Create LocalStack infrastructure
+ # Create AWS infrastructure (Floci container)
- testcontainers:
start:
localstack:
services:
+ - "SNS"
- "SQS"
- waitFor:
http:
url: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}"
- # Create AWS-SQS client
+ # Create SNS topic, SQS queue, and subscribe SQS to SNS
+ - groovy:
+ script:
+ file: "aws/sns/setupSnsToSqs.groovy"
+
+ # Create Camel JBang integration for the SNS sink
- camel:
- createComponent:
- name: amazonSQSClient
- file: "aws/sqs/amazonSQSClient.groovy"
+ jbang:
+ run:
+ integration:
+ file: "aws/sns/aws-sns-sink-route.yaml"
+ systemProperties:
+ properties:
+ - name: "test.message"
+ value: "${test.message}"
+ - name: "aws.sns.topicName"
+ value: "${aws.sns.topicName}"
+ - name: "aws.sns.uriEndpointOverride"
+ value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}"
+ - name: "aws.sns.overrideEndpoint"
+ value: "true"
+ - name: "aws.sns.secretKey"
+ value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY}"
+ - name: "aws.sns.accessKey"
+ value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY}"
+ - name: "aws.sns.region"
+ value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_REGION}"
- # Create Camel JBang integration
+ # Create event listener to consume the message forwarded from SNS to SQS
- camel:
jbang:
run:
integration:
- file: "aws/sqs/aws-sqs-uri-pipe.yaml"
+ file: "aws/sns/aws-sqs-sns-event-listener.yaml"
systemProperties:
properties:
- name: "aws.sqs.queueName"
@@ -59,16 +84,9 @@ actions:
- name: "aws.sqs.region"
value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_REGION}"
- # Publish event
- - send:
- endpoint:
camel:aws2-sqs://${aws.sqs.queueName}?amazonSQSClient=#amazonSQSClient
- message:
- body:
- data: "${aws.sqs.message}"
-
- # Verify AWS-SQS source
+ # Verify message received by the SQS listener
- camel:
jbang:
verify:
- integration: "aws-sqs-uri-pipe"
- logMessage: "${aws.sqs.message}"
+ integration: "aws-sqs-sns-event-listener"
+ logMessage: "${test.message}"
diff --git
a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml
b/tests/camel-kamelets-itest/src/test/resources/aws/sns/aws-sns-sink-route.yaml
similarity index 60%
copy from
tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml
copy to
tests/camel-kamelets-itest/src/test/resources/aws/sns/aws-sns-sink-route.yaml
index 7155c8c50..913cabd64 100644
---
a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml
+++
b/tests/camel-kamelets-itest/src/test/resources/aws/sns/aws-sns-sink-route.yaml
@@ -15,27 +15,22 @@
# limitations under the License.
# ---------------------------------------------------------------------------
-apiVersion: camel.apache.org/v1
-kind: Pipe
-metadata:
- name: aws-sqs-uri-pipe
-spec:
- source:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: aws-sqs-source
- properties:
- queueNameOrArn: "{{aws.sqs.queueName}}"
- uriEndpointOverride: "{{aws.sqs.uriEndpointOverride}}"
- overrideEndpoint: "{{aws.sqs.overrideEndpoint}}"
- accessKey: "{{aws.sqs.accessKey}}"
- secretKey: "{{aws.sqs.secretKey}}"
- region: "{{aws.sqs.region}}"
- sink:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: log-sink
- properties:
- showHeaders: true
+- route:
+ from:
+ uri: "timer:tick"
+ parameters:
+ period: "10000"
+ repeatCount: 1
+ steps:
+ - setBody:
+ constant: "{{test.message}}"
+ - to:
+ uri: "kamelet:aws-sns-sink"
+ parameters:
+ topicNameOrArn: "{{aws.sns.topicName}}"
+ accessKey: "{{aws.sns.accessKey}}"
+ secretKey: "{{aws.sns.secretKey}}"
+ region: "{{aws.sns.region}}"
+ overrideEndpoint: "{{aws.sns.overrideEndpoint}}"
+ uriEndpointOverride: "{{aws.sns.uriEndpointOverride}}"
+ autoCreateTopic: "true"
diff --git
a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml
b/tests/camel-kamelets-itest/src/test/resources/aws/sns/aws-sqs-sns-event-listener.yaml
similarity index 60%
copy from
tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml
copy to
tests/camel-kamelets-itest/src/test/resources/aws/sns/aws-sqs-sns-event-listener.yaml
index 7155c8c50..0ba9d0c7c 100644
---
a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml
+++
b/tests/camel-kamelets-itest/src/test/resources/aws/sns/aws-sqs-sns-event-listener.yaml
@@ -15,27 +15,15 @@
# limitations under the License.
# ---------------------------------------------------------------------------
-apiVersion: camel.apache.org/v1
-kind: Pipe
-metadata:
- name: aws-sqs-uri-pipe
-spec:
- source:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: aws-sqs-source
- properties:
- queueNameOrArn: "{{aws.sqs.queueName}}"
- uriEndpointOverride: "{{aws.sqs.uriEndpointOverride}}"
- overrideEndpoint: "{{aws.sqs.overrideEndpoint}}"
- accessKey: "{{aws.sqs.accessKey}}"
- secretKey: "{{aws.sqs.secretKey}}"
- region: "{{aws.sqs.region}}"
- sink:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: log-sink
- properties:
- showHeaders: true
+- route:
+ from:
+ uri: "aws2-sqs:{{aws.sqs.queueName}}"
+ parameters:
+ accessKey: "{{aws.sqs.accessKey}}"
+ secretKey: "{{aws.sqs.secretKey}}"
+ region: "{{aws.sqs.region}}"
+ overrideEndpoint: "{{aws.sqs.overrideEndpoint}}"
+ uriEndpointOverride: "{{aws.sqs.uriEndpointOverride}}"
+ steps:
+ - to:
+ uri: "log:aws-sqs-sns-event-listener"
diff --git
a/tests/camel-kamelets-itest/src/test/resources/aws/sns/setupSnsToSqs.groovy
b/tests/camel-kamelets-itest/src/test/resources/aws/sns/setupSnsToSqs.groovy
new file mode 100644
index 000000000..3e953f125
--- /dev/null
+++ b/tests/camel-kamelets-itest/src/test/resources/aws/sns/setupSnsToSqs.groovy
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import software.amazon.awssdk.auth.credentials.AwsBasicCredentials
+import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider
+import software.amazon.awssdk.regions.Region
+import software.amazon.awssdk.services.sns.SnsClient
+import software.amazon.awssdk.services.sqs.SqsClient
+import software.amazon.awssdk.services.sqs.model.QueueAttributeName
+
+def credentials = StaticCredentialsProvider.create(
+ AwsBasicCredentials.create(
+ '${CITRUS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY}',
+ '${CITRUS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY}'))
+
+def region = Region.of('${CITRUS_TESTCONTAINERS_LOCALSTACK_REGION}')
+def endpoint = URI.create('${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}')
+
+SnsClient snsClient = SnsClient.builder()
+ .endpointOverride(endpoint)
+ .credentialsProvider(credentials)
+ .region(region)
+ .build()
+
+SqsClient sqsClient = SqsClient.builder()
+ .endpointOverride(endpoint)
+ .credentialsProvider(credentials)
+ .region(region)
+ .build()
+
+def topicArn = snsClient.createTopic(b ->
b.name('${aws.sns.topicName}')).topicArn()
+
+def queueUrl = sqsClient.createQueue(b ->
b.queueName('${aws.sqs.queueName}')).queueUrl()
+def queueArn = sqsClient.getQueueAttributes(b -> b.queueUrl(queueUrl)
+ .attributeNames(QueueAttributeName.QUEUE_ARN))
+ .attributes().get(QueueAttributeName.QUEUE_ARN)
+
+snsClient.subscribe(b ->
b.topicArn(topicArn).protocol("sqs").endpoint(queueArn)
+ .attributes(Collections.singletonMap("RawMessageDelivery", "true")))
diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/README.md
b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/README.md
index 974dc5114..0b2351757 100644
--- a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/README.md
+++ b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/README.md
@@ -7,7 +7,7 @@ This test verifies the AWS SQS Kamelet source defined in
[aws-sqs-source.kamelet
The test verifies the AWS SQS Kamelet source by creating a Camel K integration
that uses the Kamelet and listens for messages on the
AWS SQS channel.
-The test uses a [LocalStack
Testcontainers](https://www.testcontainers.org/modules/localstack/) instance to
start a local AWS SQS service for mocking reasons.
+The test uses a
[Testcontainers](https://www.testcontainers.org/modules/localstack/) instance
to start a local AWS SQS service for mocking reasons.
The Kamelet and the test interact with the local AWS SQS service for
validation of functionality.
### Test Kamelet source
@@ -15,7 +15,7 @@ The Kamelet and the test interact with the local AWS SQS
service for validation
The test performs the following high level steps for configs - URI, secret and
property based:
*Preparation*
-- Start the AWS SQS service as LocalStack container
+- Start the AWS SQS service as Testcontainers container
- Overwrite the Kamelet with the latest source
- Prepare the Camel AWS SQS client
@@ -27,7 +27,7 @@ The test performs the following high level steps for configs
- URI, secret and p
- Verify that the integration has received the message event
*Cleanup*
-- Stop the LocalStack container
+- Stop the Testcontainers container
- Delete the Camel K integration
- Delete the secret from the current namespacce
diff --git
a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml
b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-sink-event-listener.yaml
similarity index 60%
copy from
tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml
copy to
tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-sink-event-listener.yaml
index 7155c8c50..da26e400c 100644
---
a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml
+++
b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-sink-event-listener.yaml
@@ -15,27 +15,15 @@
# limitations under the License.
# ---------------------------------------------------------------------------
-apiVersion: camel.apache.org/v1
-kind: Pipe
-metadata:
- name: aws-sqs-uri-pipe
-spec:
- source:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: aws-sqs-source
- properties:
- queueNameOrArn: "{{aws.sqs.queueName}}"
- uriEndpointOverride: "{{aws.sqs.uriEndpointOverride}}"
- overrideEndpoint: "{{aws.sqs.overrideEndpoint}}"
- accessKey: "{{aws.sqs.accessKey}}"
- secretKey: "{{aws.sqs.secretKey}}"
- region: "{{aws.sqs.region}}"
- sink:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: log-sink
- properties:
- showHeaders: true
+- route:
+ from:
+ uri: "aws2-sqs:{{aws.sqs.queueName}}"
+ parameters:
+ accessKey: "{{aws.sqs.accessKey}}"
+ secretKey: "{{aws.sqs.secretKey}}"
+ region: "{{aws.sqs.region}}"
+ overrideEndpoint: "{{aws.sqs.overrideEndpoint}}"
+ uriEndpointOverride: "{{aws.sqs.uriEndpointOverride}}"
+ steps:
+ - to:
+ uri: "log:aws-sqs-sink-event-listener"
diff --git
a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.citrus.it.yaml
b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-sink-route.citrus.it.yaml
similarity index 61%
copy from
tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.citrus.it.yaml
copy to
tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-sink-route.citrus.it.yaml
index 90e944650..51c27f994 100644
---
a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.citrus.it.yaml
+++
b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-sink-route.citrus.it.yaml
@@ -15,14 +15,14 @@
# limitations under the License.
# ---------------------------------------------------------------------------
-name: aws-sqs-uri-pipe-test
+name: aws-sqs-sink-route-test
variables:
- name: "aws.sqs.queueName"
- value: "queue2"
- - name: "aws.sqs.message"
- value: "Hello from SQS Kamelet"
+ value: "sink-queue"
+ - name: "test.message"
+ value: "Hello from SQS sink test"
actions:
- # Create LocalStack infrastructure
+ # Create AWS infrastructure (Floci container)
- testcontainers:
start:
localstack:
@@ -43,9 +43,11 @@ actions:
jbang:
run:
integration:
- file: "aws/sqs/aws-sqs-uri-pipe.yaml"
+ file: "aws/sqs/aws-sqs-sink-route.yaml"
systemProperties:
properties:
+ - name: "test.message"
+ value: "${test.message}"
- name: "aws.sqs.queueName"
value: "${aws.sqs.queueName}"
- name: "aws.sqs.uriEndpointOverride"
@@ -59,16 +61,30 @@ actions:
- name: "aws.sqs.region"
value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_REGION}"
- # Publish event
- - send:
- endpoint:
camel:aws2-sqs://${aws.sqs.queueName}?amazonSQSClient=#amazonSQSClient
- message:
- body:
- data: "${aws.sqs.message}"
+ # Create event listener to consume the message from SQS
+ - camel:
+ jbang:
+ run:
+ integration:
+ file: "aws/sqs/aws-sqs-sink-event-listener.yaml"
+ systemProperties:
+ properties:
+ - name: "aws.sqs.queueName"
+ value: "${aws.sqs.queueName}"
+ - name: "aws.sqs.uriEndpointOverride"
+ value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}"
+ - name: "aws.sqs.overrideEndpoint"
+ value: "true"
+ - name: "aws.sqs.secretKey"
+ value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY}"
+ - name: "aws.sqs.accessKey"
+ value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY}"
+ - name: "aws.sqs.region"
+ value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_REGION}"
- # Verify AWS-SQS source
+ # Verify message received by the listener
- camel:
jbang:
verify:
- integration: "aws-sqs-uri-pipe"
- logMessage: "${aws.sqs.message}"
+ integration: "aws-sqs-sink-event-listener"
+ logMessage: "${test.message}"
diff --git
a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml
b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-sink-route.yaml
similarity index 60%
copy from
tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml
copy to
tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-sink-route.yaml
index 7155c8c50..62c3e4418 100644
---
a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml
+++
b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-sink-route.yaml
@@ -15,27 +15,22 @@
# limitations under the License.
# ---------------------------------------------------------------------------
-apiVersion: camel.apache.org/v1
-kind: Pipe
-metadata:
- name: aws-sqs-uri-pipe
-spec:
- source:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: aws-sqs-source
- properties:
- queueNameOrArn: "{{aws.sqs.queueName}}"
- uriEndpointOverride: "{{aws.sqs.uriEndpointOverride}}"
- overrideEndpoint: "{{aws.sqs.overrideEndpoint}}"
- accessKey: "{{aws.sqs.accessKey}}"
- secretKey: "{{aws.sqs.secretKey}}"
- region: "{{aws.sqs.region}}"
- sink:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: log-sink
- properties:
- showHeaders: true
+- route:
+ from:
+ uri: "timer:tick"
+ parameters:
+ period: "10000"
+ repeatCount: 1
+ steps:
+ - setBody:
+ constant: "{{test.message}}"
+ - to:
+ uri: "kamelet:aws-sqs-sink"
+ parameters:
+ queueNameOrArn: "{{aws.sqs.queueName}}"
+ accessKey: "{{aws.sqs.accessKey}}"
+ secretKey: "{{aws.sqs.secretKey}}"
+ region: "{{aws.sqs.region}}"
+ overrideEndpoint: "{{aws.sqs.overrideEndpoint}}"
+ uriEndpointOverride: "{{aws.sqs.uriEndpointOverride}}"
+ autoCreateQueue: "true"
diff --git
a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml
b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-source-route.yaml
similarity index 60%
rename from
tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml
rename to
tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-source-route.yaml
index 7155c8c50..0313cd426 100644
---
a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml
+++
b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-source-route.yaml
@@ -15,27 +15,18 @@
# limitations under the License.
# ---------------------------------------------------------------------------
-apiVersion: camel.apache.org/v1
-kind: Pipe
-metadata:
- name: aws-sqs-uri-pipe
-spec:
- source:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: aws-sqs-source
- properties:
- queueNameOrArn: "{{aws.sqs.queueName}}"
- uriEndpointOverride: "{{aws.sqs.uriEndpointOverride}}"
- overrideEndpoint: "{{aws.sqs.overrideEndpoint}}"
- accessKey: "{{aws.sqs.accessKey}}"
- secretKey: "{{aws.sqs.secretKey}}"
- region: "{{aws.sqs.region}}"
- sink:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: log-sink
- properties:
- showHeaders: true
+- route:
+ from:
+ uri: "kamelet:aws-sqs-source"
+ parameters:
+ queueNameOrArn: "{{aws.sqs.queueName}}"
+ uriEndpointOverride: "{{aws.sqs.uriEndpointOverride}}"
+ overrideEndpoint: "{{aws.sqs.overrideEndpoint}}"
+ accessKey: "{{aws.sqs.accessKey}}"
+ secretKey: "{{aws.sqs.secretKey}}"
+ region: "{{aws.sqs.region}}"
+ steps:
+ - to:
+ uri: "kamelet:log-sink"
+ parameters:
+ showHeaders: true
diff --git
a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-to-log-uri-based.citrus.it.yaml
b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-to-log-uri-based.citrus.it.yaml
index 7466bc6c1..2c95af6f8 100644
---
a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-to-log-uri-based.citrus.it.yaml
+++
b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-to-log-uri-based.citrus.it.yaml
@@ -22,7 +22,7 @@ variables:
- name: "aws.sqs.message"
value: "Hello from SQS Kamelet"
actions:
- # Create LocalStack infrastructure
+ # Create AWS infrastructure (Floci container)
- testcontainers:
start:
localstack:
diff --git
a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.citrus.it.yaml
b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.citrus.it.yaml
index 90e944650..83385e3d4 100644
---
a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.citrus.it.yaml
+++
b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.citrus.it.yaml
@@ -22,7 +22,7 @@ variables:
- name: "aws.sqs.message"
value: "Hello from SQS Kamelet"
actions:
- # Create LocalStack infrastructure
+ # Create AWS infrastructure (Floci container)
- testcontainers:
start:
localstack:
@@ -43,7 +43,7 @@ actions:
jbang:
run:
integration:
- file: "aws/sqs/aws-sqs-uri-pipe.yaml"
+ file: "aws/sqs/aws-sqs-source-route.yaml"
systemProperties:
properties:
- name: "aws.sqs.queueName"
@@ -70,5 +70,5 @@ actions:
- camel:
jbang:
verify:
- integration: "aws-sqs-uri-pipe"
+ integration: "aws-sqs-source-route"
logMessage: "${aws.sqs.message}"