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 d5dbfc539 Fix #2873: migrate the avro and protobuf itests from Pipe to
Camel routes (#3041)
d5dbfc539 is described below
commit d5dbfc5395ad273e8b30510d6ea28fbf8f677be4
Author: Andrea Cosentino <[email protected]>
AuthorDate: Thu Sep 17 10:18:01 2026 +0200
Fix #2873: migrate the avro and protobuf itests from Pipe to Camel routes
(#3041)
Second tranche, eight Pipes across the avro and protobuf directories.
These are shaped differently from the transformation ones migrated in #3040.
Each directory holds two Citrus tests that each drive two integrations,
rather
than one test per integration, and the two integrations talk to each other:
a
binary source applies the data type and posts to a webhook that the
deserialize
side serves. So there is no per-Pipe Citrus file to rename here; instead the
file references and the integration names inside the four existing Citrus
tests
move from <name>-pipe to <name>-route, since Camel JBang names the running
integration after the file.
The two READMEs described the setup in terms of Pipes and bindings and are
updated to match.
Conversions are checked rather than assumed: a verifier parses the Pipe and
the
generated route and compares the endpoint chain and every property, so a
dropped
or altered value fails rather than passing silently. It caught a real
problem on
the way -- the avro and protobuf schemas are folded block scalars carrying
embedded double quotes, which naive quoting corrupts -- and the converter
now
serialises through the YAML library and re-emits multi-line strings as block
scalars, so the schemas are unchanged.
Verified with a clean run:
avro-serdes-action-test SUCCESS
avro-data-type-test SUCCESS
protobuf-data-type-test SUCCESS
protobuf-serdes-action-test SUCCESS
TOTAL: 4 PASSED: 4 (100.0%)
Co-authored-by: Claude Opus 5 <[email protected]>
---
.../src/test/resources/avro/README.md | 12 ++--
.../resources/avro/avro-binary-source-pipe.yaml | 53 ------------------
.../avro-binary-source-route.yaml} | 57 ++++++++-----------
.../resources/avro/avro-data-type.citrus.it.yaml | 6 +-
...alize-pipe.yaml => avro-deserialize-route.yaml} | 42 +++++---------
.../avro/avro-serdes-action.citrus.it.yaml | 6 +-
.../test/resources/avro/avro-serialize-pipe.yaml | 52 ------------------
.../avro-serialize-route.yaml} | 56 ++++++++-----------
.../resources/avro/avro-x-struct-sink-pipe.yaml | 57 -------------------
.../avro-x-struct-sink-route.yaml} | 58 ++++++++------------
.../src/test/resources/protobuf/README.md | 12 ++--
.../protobuf/protobuf-binary-source-pipe.yaml | 60 --------------------
...pipe.yaml => protobuf-binary-source-route.yaml} | 62 ++++++++++-----------
.../protobuf/protobuf-data-type.citrus.it.yaml | 6 +-
.../protobuf-deserialize-route.yaml} | 47 +++++++---------
.../protobuf/protobuf-serdes-action.citrus.it.yaml | 6 +-
.../protobuf/protobuf-serialize-pipe.yaml | 59 --------------------
...ize-pipe.yaml => protobuf-serialize-route.yaml} | 61 +++++++++------------
.../protobuf/protobuf-x-struct-sink-pipe.yaml | 64 ----------------------
...pipe.yaml => protobuf-x-struct-sink-route.yaml} | 63 ++++++++++-----------
20 files changed, 212 insertions(+), 627 deletions(-)
diff --git a/tests/camel-kamelets-itest/src/test/resources/avro/README.md
b/tests/camel-kamelets-itest/src/test/resources/avro/README.md
index 900672004..968d1d68a 100644
--- a/tests/camel-kamelets-itest/src/test/resources/avro/README.md
+++ b/tests/camel-kamelets-itest/src/test/resources/avro/README.md
@@ -6,11 +6,11 @@ This test verifies the Avro serialization/deserialization
actions
The test verifies the proper Avro serialization and deserialization of Avro.
-The test uses two Pipes that interact with each other. The first binding
`avro-binary-source-pipe` periodically creates a test data event as Json and
applies the `avro/binary` data type using the schema in [User.avsc](User.avsc).
+The test uses two routes that interact with each other. The first route
`avro-binary-source-route` periodically creates a test data event as Json and
applies the `avro/binary` data type using the schema in [User.avsc](User.avsc).
-The binary Avro data is then sent to a Http webhook sink that references a
Http endpoint that is provided by the 2nd binding `avro-deserialize-pipe`. The
`avro-deserialize-pipe` binding provides the Http service and deserializes the
binary Avro data using the same User schema. The deserialized data is printed
to the log output.
+The binary Avro data is then sent to a Http webhook sink that references a
Http endpoint that is provided by the 2nd route `avro-deserialize-route`. The
`avro-deserialize-route` route provides the Http service and deserializes the
binary Avro data using the same User schema. The deserialized data is printed
to the log output.
-The test starts both Pipes and is able to verify the proper log output as an
expected outcome.
+The test starts both routes and is able to verify the proper log output as an
expected outcome.
### Citrus Test
@@ -18,9 +18,9 @@ The test performs the following high level steps:
*Avro data type feature*
- Create test data based on the User.avsc Avro schema
-- Load and run the `avro-deserialize-pipe` Pipe
-- Load and run the `avro-binary-source-pipe` Pipe
-- Verify that the bindings do interact with each other and the proper test
data is logged in the binding output
+- Load and run the `avro-deserialize-route` route
+- Load and run the `avro-binary-source-route` route
+- Verify that the routes do interact with each other and the proper test data
is logged in the route output
## Installation
diff --git
a/tests/camel-kamelets-itest/src/test/resources/avro/avro-binary-source-pipe.yaml
b/tests/camel-kamelets-itest/src/test/resources/avro/avro-binary-source-pipe.yaml
deleted file mode 100644
index 989ed81a9..000000000
---
a/tests/camel-kamelets-itest/src/test/resources/avro/avro-binary-source-pipe.yaml
+++ /dev/null
@@ -1,53 +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: avro-binary-source-pipe
-spec:
- source:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: timer-source
- properties:
- period: 10000
- contentType: application/json
- message: >
- {{input}}
- steps:
- - ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: json-deserialize-action
- - ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: resolve-pojo-schema-action
- properties:
- mimeType: "avro/binary"
- schema: >
- { "name": "User", "type": "record", "namespace": "demo.kamelets",
"fields": [{ "name": "id", "type": "string" }, { "name": "firstname", "type":
"string" }, { "name": "lastname", "type": "string" }, { "name": "age", "type":
"int" }] }
- - ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: data-type-action
- properties:
- format: "avro-binary"
- sink:
- uri: "{{http.sink.url}}"
diff --git
a/tests/camel-kamelets-itest/src/test/resources/protobuf/protobuf-deserialize-pipe.yaml
b/tests/camel-kamelets-itest/src/test/resources/avro/avro-binary-source-route.yaml
similarity index 53%
copy from
tests/camel-kamelets-itest/src/test/resources/protobuf/protobuf-deserialize-pipe.yaml
copy to
tests/camel-kamelets-itest/src/test/resources/avro/avro-binary-source-route.yaml
index 436cbc8f9..a66c9ca82 100644
---
a/tests/camel-kamelets-itest/src/test/resources/protobuf/protobuf-deserialize-pipe.yaml
+++
b/tests/camel-kamelets-itest/src/test/resources/avro/avro-binary-source-route.yaml
@@ -15,37 +15,26 @@
# limitations under the License.
# ---------------------------------------------------------------------------
-apiVersion: camel.apache.org/v1
-kind: Pipe
-metadata:
- name: protobuf-deserialize-pipe
-spec:
- source:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: webhook-source
- properties:
- subpath: user
- steps:
- - ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: protobuf-deserialize-action
- properties:
- schema: >
- syntax = "proto3";
- package demo.kamelets;
- message User {
- optional string id=1;
- optional string firstname=2;
- optional string lastname=3;
- optional int32 age=4;
- }
- sink:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: log-action
- properties:
- showHeaders: true
+- route:
+ from:
+ uri: "kamelet:timer-source"
+ parameters:
+ period: 10000
+ contentType: application/json
+ message: >
+ {{input}}
+ steps:
+ - to:
+ uri: "kamelet:json-deserialize-action"
+ - to:
+ uri: "kamelet:resolve-pojo-schema-action"
+ parameters:
+ mimeType: avro/binary
+ schema: >
+ { "name": "User", "type": "record", "namespace":
"demo.kamelets", "fields": [{ "name": "id", "type": "string" }, { "name":
"firstname", "type": "string" }, { "name": "lastname", "type": "string" }, {
"name": "age", "type": "int" }] }
+ - to:
+ uri: "kamelet:data-type-action"
+ parameters:
+ format: avro-binary
+ - to:
+ uri: "{{http.sink.url}}"
diff --git
a/tests/camel-kamelets-itest/src/test/resources/avro/avro-data-type.citrus.it.yaml
b/tests/camel-kamelets-itest/src/test/resources/avro/avro-data-type.citrus.it.yaml
index 000dec811..496881e89 100644
---
a/tests/camel-kamelets-itest/src/test/resources/avro/avro-data-type.citrus.it.yaml
+++
b/tests/camel-kamelets-itest/src/test/resources/avro/avro-data-type.citrus.it.yaml
@@ -35,12 +35,12 @@ actions:
- "--port"
- "${avro.webhook.server.port}"
integration:
- file: "avro/avro-x-struct-sink-pipe.yaml"
+ file: "avro/avro-x-struct-sink-route.yaml"
- camel:
cli:
run:
integration:
- file: "avro/avro-binary-source-pipe.yaml"
+ file: "avro/avro-binary-source-route.yaml"
systemProperties:
properties:
- name: "http.sink.url"
@@ -51,6 +51,6 @@ actions:
- camel:
cli:
verify:
- integration: "avro-x-struct-sink-pipe"
+ integration: "avro-x-struct-sink-route"
logMessage: |
Body: { "id" : "${uuid}", "firstname" : "Sheldon", "lastname" :
"Cooper", "age" : 28}
diff --git
a/tests/camel-kamelets-itest/src/test/resources/avro/avro-deserialize-pipe.yaml
b/tests/camel-kamelets-itest/src/test/resources/avro/avro-deserialize-route.yaml
similarity index 55%
copy from
tests/camel-kamelets-itest/src/test/resources/avro/avro-deserialize-pipe.yaml
copy to
tests/camel-kamelets-itest/src/test/resources/avro/avro-deserialize-route.yaml
index 492cfde85..e28a63124 100644
---
a/tests/camel-kamelets-itest/src/test/resources/avro/avro-deserialize-pipe.yaml
+++
b/tests/camel-kamelets-itest/src/test/resources/avro/avro-deserialize-route.yaml
@@ -15,30 +15,18 @@
# limitations under the License.
# ---------------------------------------------------------------------------
-apiVersion: camel.apache.org/v1
-kind: Pipe
-metadata:
- name: avro-deserialize-pipe
-spec:
- source:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: webhook-source
- properties:
- subpath: user
- steps:
- - ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: avro-deserialize-action
- properties:
- schema: >
- { "name": "User", "type": "record", "namespace": "demo.kamelets",
"fields": [{ "name": "id", "type": "string" }, { "name": "firstname", "type":
"string" }, { "name": "lastname", "type": "string" }, { "name": "age", "type":
"int" }] }
- sink:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: log-action
- properties:
- showHeaders: true
+- route:
+ from:
+ uri: "kamelet:webhook-source"
+ parameters:
+ subpath: user
+ steps:
+ - to:
+ uri: "kamelet:avro-deserialize-action"
+ parameters:
+ schema: >
+ { "name": "User", "type": "record", "namespace":
"demo.kamelets", "fields": [{ "name": "id", "type": "string" }, { "name":
"firstname", "type": "string" }, { "name": "lastname", "type": "string" }, {
"name": "age", "type": "int" }] }
+ - to:
+ uri: "kamelet:log-action"
+ parameters:
+ showHeaders: true
diff --git
a/tests/camel-kamelets-itest/src/test/resources/avro/avro-serdes-action.citrus.it.yaml
b/tests/camel-kamelets-itest/src/test/resources/avro/avro-serdes-action.citrus.it.yaml
index ad23bf058..ab9fe148a 100644
---
a/tests/camel-kamelets-itest/src/test/resources/avro/avro-serdes-action.citrus.it.yaml
+++
b/tests/camel-kamelets-itest/src/test/resources/avro/avro-serdes-action.citrus.it.yaml
@@ -35,12 +35,12 @@ actions:
- "--port"
- "${avro.webhook.server.port}"
integration:
- file: "avro/avro-deserialize-pipe.yaml"
+ file: "avro/avro-deserialize-route.yaml"
- camel:
cli:
run:
integration:
- file: "avro/avro-serialize-pipe.yaml"
+ file: "avro/avro-serialize-route.yaml"
systemProperties:
properties:
- name: "http.sink.url"
@@ -51,6 +51,6 @@ actions:
- camel:
cli:
verify:
- integration: "avro-deserialize-pipe"
+ integration: "avro-deserialize-route"
logMessage: |
Body: { "id" : "${uuid}", "firstname" : "Sheldon", "lastname" :
"Cooper", "age" : 28}
diff --git
a/tests/camel-kamelets-itest/src/test/resources/avro/avro-serialize-pipe.yaml
b/tests/camel-kamelets-itest/src/test/resources/avro/avro-serialize-pipe.yaml
deleted file mode 100644
index 021593f72..000000000
---
a/tests/camel-kamelets-itest/src/test/resources/avro/avro-serialize-pipe.yaml
+++ /dev/null
@@ -1,52 +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: avro-serialize-pipe
-spec:
- source:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: timer-source
- properties:
- period: 10000
- contentType: application/json
- message: >
- {{input}}
- steps:
- - ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: json-deserialize-action
- - ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: avro-serialize-action
- properties:
- schema: >
- { "name": "User", "type": "record", "namespace": "demo.kamelets",
"fields": [{ "name": "id", "type": "string" }, { "name": "firstname", "type":
"string" }, { "name": "lastname", "type": "string" }, { "name": "age", "type":
"int" }] }
- - ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: log-action
- properties:
- showHeaders: true
- sink:
- uri: "{{http.sink.url}}"
diff --git
a/tests/camel-kamelets-itest/src/test/resources/protobuf/protobuf-deserialize-pipe.yaml
b/tests/camel-kamelets-itest/src/test/resources/avro/avro-serialize-route.yaml
similarity index 54%
copy from
tests/camel-kamelets-itest/src/test/resources/protobuf/protobuf-deserialize-pipe.yaml
copy to
tests/camel-kamelets-itest/src/test/resources/avro/avro-serialize-route.yaml
index 436cbc8f9..bff9594c5 100644
---
a/tests/camel-kamelets-itest/src/test/resources/protobuf/protobuf-deserialize-pipe.yaml
+++
b/tests/camel-kamelets-itest/src/test/resources/avro/avro-serialize-route.yaml
@@ -15,37 +15,25 @@
# limitations under the License.
# ---------------------------------------------------------------------------
-apiVersion: camel.apache.org/v1
-kind: Pipe
-metadata:
- name: protobuf-deserialize-pipe
-spec:
- source:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: webhook-source
- properties:
- subpath: user
- steps:
- - ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: protobuf-deserialize-action
- properties:
- schema: >
- syntax = "proto3";
- package demo.kamelets;
- message User {
- optional string id=1;
- optional string firstname=2;
- optional string lastname=3;
- optional int32 age=4;
- }
- sink:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: log-action
- properties:
- showHeaders: true
+- route:
+ from:
+ uri: "kamelet:timer-source"
+ parameters:
+ period: 10000
+ contentType: application/json
+ message: >
+ {{input}}
+ steps:
+ - to:
+ uri: "kamelet:json-deserialize-action"
+ - to:
+ uri: "kamelet:avro-serialize-action"
+ parameters:
+ schema: >
+ { "name": "User", "type": "record", "namespace":
"demo.kamelets", "fields": [{ "name": "id", "type": "string" }, { "name":
"firstname", "type": "string" }, { "name": "lastname", "type": "string" }, {
"name": "age", "type": "int" }] }
+ - to:
+ uri: "kamelet:log-action"
+ parameters:
+ showHeaders: true
+ - to:
+ uri: "{{http.sink.url}}"
diff --git
a/tests/camel-kamelets-itest/src/test/resources/avro/avro-x-struct-sink-pipe.yaml
b/tests/camel-kamelets-itest/src/test/resources/avro/avro-x-struct-sink-pipe.yaml
deleted file mode 100644
index a32022287..000000000
---
a/tests/camel-kamelets-itest/src/test/resources/avro/avro-x-struct-sink-pipe.yaml
+++ /dev/null
@@ -1,57 +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: avro-x-struct-sink-pipe
-spec:
- source:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: webhook-source
- properties:
- subpath: user
- steps:
- - ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: data-type-action
- properties:
- format: "application-octet-stream"
- - ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: resolve-pojo-schema-action
- properties:
- mimeType: "avro/binary"
- schema: >
- { "name": "User", "type": "record", "namespace": "demo.kamelets",
"fields": [{ "name": "id", "type": "string" }, { "name": "firstname", "type":
"string" }, { "name": "lastname", "type": "string" }, { "name": "age", "type":
"int" }] }
- - ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: data-type-action
- properties:
- format: "avro-x-struct"
- sink:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: log-action
- properties:
- showHeaders: true
diff --git
a/tests/camel-kamelets-itest/src/test/resources/protobuf/protobuf-deserialize-pipe.yaml
b/tests/camel-kamelets-itest/src/test/resources/avro/avro-x-struct-sink-route.yaml
similarity index 52%
copy from
tests/camel-kamelets-itest/src/test/resources/protobuf/protobuf-deserialize-pipe.yaml
copy to
tests/camel-kamelets-itest/src/test/resources/avro/avro-x-struct-sink-route.yaml
index 436cbc8f9..a075e2fde 100644
---
a/tests/camel-kamelets-itest/src/test/resources/protobuf/protobuf-deserialize-pipe.yaml
+++
b/tests/camel-kamelets-itest/src/test/resources/avro/avro-x-struct-sink-route.yaml
@@ -15,37 +15,27 @@
# limitations under the License.
# ---------------------------------------------------------------------------
-apiVersion: camel.apache.org/v1
-kind: Pipe
-metadata:
- name: protobuf-deserialize-pipe
-spec:
- source:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: webhook-source
- properties:
- subpath: user
- steps:
- - ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: protobuf-deserialize-action
- properties:
- schema: >
- syntax = "proto3";
- package demo.kamelets;
- message User {
- optional string id=1;
- optional string firstname=2;
- optional string lastname=3;
- optional int32 age=4;
- }
- sink:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: log-action
- properties:
- showHeaders: true
+- route:
+ from:
+ uri: "kamelet:webhook-source"
+ parameters:
+ subpath: user
+ steps:
+ - to:
+ uri: "kamelet:data-type-action"
+ parameters:
+ format: application-octet-stream
+ - to:
+ uri: "kamelet:resolve-pojo-schema-action"
+ parameters:
+ mimeType: avro/binary
+ schema: >
+ { "name": "User", "type": "record", "namespace":
"demo.kamelets", "fields": [{ "name": "id", "type": "string" }, { "name":
"firstname", "type": "string" }, { "name": "lastname", "type": "string" }, {
"name": "age", "type": "int" }] }
+ - to:
+ uri: "kamelet:data-type-action"
+ parameters:
+ format: avro-x-struct
+ - to:
+ uri: "kamelet:log-action"
+ parameters:
+ showHeaders: true
diff --git a/tests/camel-kamelets-itest/src/test/resources/protobuf/README.md
b/tests/camel-kamelets-itest/src/test/resources/protobuf/README.md
index b7929919d..3b90afbf8 100644
--- a/tests/camel-kamelets-itest/src/test/resources/protobuf/README.md
+++ b/tests/camel-kamelets-itest/src/test/resources/protobuf/README.md
@@ -6,11 +6,11 @@ This test verifies the Protobuf serialization/deserialization
actions
The test verifies the proper Protobuf serialization and deserialization of
Protobuf.
-The test uses two Pipes that interact with each other. The first binding
`protobuf-binary-source-pipe` periodically creates a test data event as Json
and applies the `protobuf/binary` data type using the schema in
[User.proto](User.proto).
+The test uses two routes that interact with each other. The first route
`protobuf-binary-source-route` periodically creates a test data event as Json
and applies the `protobuf/binary` data type using the schema in
[User.proto](User.proto).
-The binary Protobuf data is then sent to a Http webhook sink that references a
Http endpoint that is provided by the 2nd binding `protobuf-deserialize-pipe`.
The `protobuf-deserialize-pipe` binding provides the Http service and
deserializes the binary Protobuf data using the same User schema. The
deserialized data is printed to the log output.
+The binary Protobuf data is then sent to a Http webhook sink that references a
Http endpoint that is provided by the 2nd route `protobuf-deserialize-route`.
The `protobuf-deserialize-route` route provides the Http service and
deserializes the binary Protobuf data using the same User schema. The
deserialized data is printed to the log output.
-The test starts both Pipes and is able to verify the proper log output as an
expected outcome.
+The test starts both routes and is able to verify the proper log output as an
expected outcome.
### Citrus Test
@@ -18,9 +18,9 @@ The test performs the following high level steps:
*Protobuf data type feature*
- Create test data based on the User.proto Protobuf schema
-- Load and run the `protobuf-deserialize-pipe` Pipe
-- Load and run the `protobuf-binary-source-pipe` Pipe
-- Verify that the bindings do interact with each other and the proper test
data is logged in the binding output
+- Load and run the `protobuf-deserialize-route` route
+- Load and run the `protobuf-binary-source-route` route
+- Verify that the routes do interact with each other and the proper test data
is logged in the route output
## Installation
diff --git
a/tests/camel-kamelets-itest/src/test/resources/protobuf/protobuf-binary-source-pipe.yaml
b/tests/camel-kamelets-itest/src/test/resources/protobuf/protobuf-binary-source-pipe.yaml
deleted file mode 100644
index 7d2c4b592..000000000
---
a/tests/camel-kamelets-itest/src/test/resources/protobuf/protobuf-binary-source-pipe.yaml
+++ /dev/null
@@ -1,60 +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: protobuf-binary-source-pipe
-spec:
- source:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: timer-source
- properties:
- period: 10000
- contentType: application/json
- message: >
- {{input}}
- steps:
- - ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: json-deserialize-action
- - ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: resolve-pojo-schema-action
- properties:
- mimeType: "protobuf/binary"
- schema: >
- syntax = "proto3";
- package demo.kamelets;
- message User {
- optional string id=1;
- optional string firstname=2;
- optional string lastname=3;
- optional int32 age=4;
- }
- - ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: data-type-action
- properties:
- format: "protobuf-binary"
- sink:
- uri: "{{http.sink.url}}"
diff --git
a/tests/camel-kamelets-itest/src/test/resources/protobuf/protobuf-deserialize-pipe.yaml
b/tests/camel-kamelets-itest/src/test/resources/protobuf/protobuf-binary-source-route.yaml
similarity index 52%
copy from
tests/camel-kamelets-itest/src/test/resources/protobuf/protobuf-deserialize-pipe.yaml
copy to
tests/camel-kamelets-itest/src/test/resources/protobuf/protobuf-binary-source-route.yaml
index 436cbc8f9..d4f591161 100644
---
a/tests/camel-kamelets-itest/src/test/resources/protobuf/protobuf-deserialize-pipe.yaml
+++
b/tests/camel-kamelets-itest/src/test/resources/protobuf/protobuf-binary-source-route.yaml
@@ -15,37 +15,31 @@
# limitations under the License.
# ---------------------------------------------------------------------------
-apiVersion: camel.apache.org/v1
-kind: Pipe
-metadata:
- name: protobuf-deserialize-pipe
-spec:
- source:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: webhook-source
- properties:
- subpath: user
- steps:
- - ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: protobuf-deserialize-action
- properties:
- schema: >
- syntax = "proto3";
- package demo.kamelets;
- message User {
- optional string id=1;
- optional string firstname=2;
- optional string lastname=3;
- optional int32 age=4;
- }
- sink:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: log-action
- properties:
- showHeaders: true
+- route:
+ from:
+ uri: "kamelet:timer-source"
+ parameters:
+ period: 10000
+ contentType: application/json
+ message: >
+ {{input}}
+ steps:
+ - to:
+ uri: "kamelet:json-deserialize-action"
+ - to:
+ uri: "kamelet:resolve-pojo-schema-action"
+ parameters:
+ mimeType: protobuf/binary
+ schema: >
+ syntax = "proto3"; package demo.kamelets; message User {
+ optional string id=1;
+ optional string firstname=2;
+ optional string lastname=3;
+ optional int32 age=4;
+ }
+ - to:
+ uri: "kamelet:data-type-action"
+ parameters:
+ format: protobuf-binary
+ - to:
+ uri: "{{http.sink.url}}"
diff --git
a/tests/camel-kamelets-itest/src/test/resources/protobuf/protobuf-data-type.citrus.it.yaml
b/tests/camel-kamelets-itest/src/test/resources/protobuf/protobuf-data-type.citrus.it.yaml
index 7e78039fe..20cbd347b 100644
---
a/tests/camel-kamelets-itest/src/test/resources/protobuf/protobuf-data-type.citrus.it.yaml
+++
b/tests/camel-kamelets-itest/src/test/resources/protobuf/protobuf-data-type.citrus.it.yaml
@@ -27,12 +27,12 @@ actions:
- "--port"
- "${protobuf.webhook.server.port}"
integration:
- file: "protobuf/protobuf-x-struct-sink-pipe.yaml"
+ file: "protobuf/protobuf-x-struct-sink-route.yaml"
- camel:
cli:
run:
integration:
- file: "protobuf/protobuf-binary-source-pipe.yaml"
+ file: "protobuf/protobuf-binary-source-route.yaml"
systemProperties:
properties:
- name: "http.sink.url"
@@ -43,6 +43,6 @@ actions:
- camel:
cli:
verify:
- integration: "protobuf-x-struct-sink-pipe"
+ integration: "protobuf-x-struct-sink-route"
logMessage: |
Body: { "id" : "${uuid}", "firstname" : "Sheldon", "lastname" :
"Cooper", "age" : 28}
diff --git
a/tests/camel-kamelets-itest/src/test/resources/avro/avro-deserialize-pipe.yaml
b/tests/camel-kamelets-itest/src/test/resources/protobuf/protobuf-deserialize-route.yaml
similarity index 55%
rename from
tests/camel-kamelets-itest/src/test/resources/avro/avro-deserialize-pipe.yaml
rename to
tests/camel-kamelets-itest/src/test/resources/protobuf/protobuf-deserialize-route.yaml
index 492cfde85..183bdd0c8 100644
---
a/tests/camel-kamelets-itest/src/test/resources/avro/avro-deserialize-pipe.yaml
+++
b/tests/camel-kamelets-itest/src/test/resources/protobuf/protobuf-deserialize-route.yaml
@@ -15,30 +15,23 @@
# limitations under the License.
# ---------------------------------------------------------------------------
-apiVersion: camel.apache.org/v1
-kind: Pipe
-metadata:
- name: avro-deserialize-pipe
-spec:
- source:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: webhook-source
- properties:
- subpath: user
- steps:
- - ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: avro-deserialize-action
- properties:
- schema: >
- { "name": "User", "type": "record", "namespace": "demo.kamelets",
"fields": [{ "name": "id", "type": "string" }, { "name": "firstname", "type":
"string" }, { "name": "lastname", "type": "string" }, { "name": "age", "type":
"int" }] }
- sink:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: log-action
- properties:
- showHeaders: true
+- route:
+ from:
+ uri: "kamelet:webhook-source"
+ parameters:
+ subpath: user
+ steps:
+ - to:
+ uri: "kamelet:protobuf-deserialize-action"
+ parameters:
+ schema: >
+ syntax = "proto3"; package demo.kamelets; message User {
+ optional string id=1;
+ optional string firstname=2;
+ optional string lastname=3;
+ optional int32 age=4;
+ }
+ - to:
+ uri: "kamelet:log-action"
+ parameters:
+ showHeaders: true
diff --git
a/tests/camel-kamelets-itest/src/test/resources/protobuf/protobuf-serdes-action.citrus.it.yaml
b/tests/camel-kamelets-itest/src/test/resources/protobuf/protobuf-serdes-action.citrus.it.yaml
index 6196fab30..5e2b4a258 100644
---
a/tests/camel-kamelets-itest/src/test/resources/protobuf/protobuf-serdes-action.citrus.it.yaml
+++
b/tests/camel-kamelets-itest/src/test/resources/protobuf/protobuf-serdes-action.citrus.it.yaml
@@ -27,12 +27,12 @@ actions:
- "--port"
- "${protobuf.webhook.server.port}"
integration:
- file: "protobuf/protobuf-deserialize-pipe.yaml"
+ file: "protobuf/protobuf-deserialize-route.yaml"
- camel:
cli:
run:
integration:
- file: "protobuf/protobuf-serialize-pipe.yaml"
+ file: "protobuf/protobuf-serialize-route.yaml"
systemProperties:
properties:
- name: "http.sink.url"
@@ -43,6 +43,6 @@ actions:
- camel:
cli:
verify:
- integration: "protobuf-deserialize-pipe"
+ integration: "protobuf-deserialize-route"
logMessage: |
Body: { "id" : "${uuid}", "firstname" : "Sheldon", "lastname" :
"Cooper", "age" : 28}
diff --git
a/tests/camel-kamelets-itest/src/test/resources/protobuf/protobuf-serialize-pipe.yaml
b/tests/camel-kamelets-itest/src/test/resources/protobuf/protobuf-serialize-pipe.yaml
deleted file mode 100644
index 1c28b5d83..000000000
---
a/tests/camel-kamelets-itest/src/test/resources/protobuf/protobuf-serialize-pipe.yaml
+++ /dev/null
@@ -1,59 +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: protobuf-serialize-pipe
-spec:
- source:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: timer-source
- properties:
- period: 10000
- contentType: application/json
- message: >
- {{input}}
- steps:
- - ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: json-deserialize-action
- - ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: protobuf-serialize-action
- properties:
- schema: >
- syntax = "proto3";
- package demo.kamelets;
- message User {
- optional string id=1;
- optional string firstname=2;
- optional string lastname=3;
- optional int32 age=4;
- }
- - ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: log-action
- properties:
- showHeaders: true
- sink:
- uri: "{{http.sink.url}}"
diff --git
a/tests/camel-kamelets-itest/src/test/resources/protobuf/protobuf-deserialize-pipe.yaml
b/tests/camel-kamelets-itest/src/test/resources/protobuf/protobuf-serialize-route.yaml
similarity index 54%
copy from
tests/camel-kamelets-itest/src/test/resources/protobuf/protobuf-deserialize-pipe.yaml
copy to
tests/camel-kamelets-itest/src/test/resources/protobuf/protobuf-serialize-route.yaml
index 436cbc8f9..ff44bea8d 100644
---
a/tests/camel-kamelets-itest/src/test/resources/protobuf/protobuf-deserialize-pipe.yaml
+++
b/tests/camel-kamelets-itest/src/test/resources/protobuf/protobuf-serialize-route.yaml
@@ -15,37 +15,30 @@
# limitations under the License.
# ---------------------------------------------------------------------------
-apiVersion: camel.apache.org/v1
-kind: Pipe
-metadata:
- name: protobuf-deserialize-pipe
-spec:
- source:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: webhook-source
- properties:
- subpath: user
- steps:
- - ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: protobuf-deserialize-action
- properties:
- schema: >
- syntax = "proto3";
- package demo.kamelets;
- message User {
- optional string id=1;
- optional string firstname=2;
- optional string lastname=3;
- optional int32 age=4;
- }
- sink:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: log-action
- properties:
- showHeaders: true
+- route:
+ from:
+ uri: "kamelet:timer-source"
+ parameters:
+ period: 10000
+ contentType: application/json
+ message: >
+ {{input}}
+ steps:
+ - to:
+ uri: "kamelet:json-deserialize-action"
+ - to:
+ uri: "kamelet:protobuf-serialize-action"
+ parameters:
+ schema: >
+ syntax = "proto3"; package demo.kamelets; message User {
+ optional string id=1;
+ optional string firstname=2;
+ optional string lastname=3;
+ optional int32 age=4;
+ }
+ - to:
+ uri: "kamelet:log-action"
+ parameters:
+ showHeaders: true
+ - to:
+ uri: "{{http.sink.url}}"
diff --git
a/tests/camel-kamelets-itest/src/test/resources/protobuf/protobuf-x-struct-sink-pipe.yaml
b/tests/camel-kamelets-itest/src/test/resources/protobuf/protobuf-x-struct-sink-pipe.yaml
deleted file mode 100644
index 50234e5d0..000000000
---
a/tests/camel-kamelets-itest/src/test/resources/protobuf/protobuf-x-struct-sink-pipe.yaml
+++ /dev/null
@@ -1,64 +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: protobuf-x-struct-sink-pipe
-spec:
- source:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: webhook-source
- properties:
- subpath: user
- steps:
- - ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: data-type-action
- properties:
- format: "application-octet-stream"
- - ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: resolve-pojo-schema-action
- properties:
- mimeType: "protobuf/binary"
- schema: >
- syntax = "proto3";
- package demo.kamelets;
- message User {
- optional string id=1;
- optional string firstname=2;
- optional string lastname=3;
- optional int32 age=4;
- }
- - ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: data-type-action
- properties:
- format: "protobuf-x-struct"
- sink:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: log-action
- properties:
- showHeaders: true
diff --git
a/tests/camel-kamelets-itest/src/test/resources/protobuf/protobuf-deserialize-pipe.yaml
b/tests/camel-kamelets-itest/src/test/resources/protobuf/protobuf-x-struct-sink-route.yaml
similarity index 51%
rename from
tests/camel-kamelets-itest/src/test/resources/protobuf/protobuf-deserialize-pipe.yaml
rename to
tests/camel-kamelets-itest/src/test/resources/protobuf/protobuf-x-struct-sink-route.yaml
index 436cbc8f9..d2eee31b7 100644
---
a/tests/camel-kamelets-itest/src/test/resources/protobuf/protobuf-deserialize-pipe.yaml
+++
b/tests/camel-kamelets-itest/src/test/resources/protobuf/protobuf-x-struct-sink-route.yaml
@@ -15,37 +15,32 @@
# limitations under the License.
# ---------------------------------------------------------------------------
-apiVersion: camel.apache.org/v1
-kind: Pipe
-metadata:
- name: protobuf-deserialize-pipe
-spec:
- source:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: webhook-source
- properties:
- subpath: user
- steps:
- - ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: protobuf-deserialize-action
- properties:
- schema: >
- syntax = "proto3";
- package demo.kamelets;
- message User {
- optional string id=1;
- optional string firstname=2;
- optional string lastname=3;
- optional int32 age=4;
- }
- sink:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: log-action
- properties:
- showHeaders: true
+- route:
+ from:
+ uri: "kamelet:webhook-source"
+ parameters:
+ subpath: user
+ steps:
+ - to:
+ uri: "kamelet:data-type-action"
+ parameters:
+ format: application-octet-stream
+ - to:
+ uri: "kamelet:resolve-pojo-schema-action"
+ parameters:
+ mimeType: protobuf/binary
+ schema: >
+ syntax = "proto3"; package demo.kamelets; message User {
+ optional string id=1;
+ optional string firstname=2;
+ optional string lastname=3;
+ optional int32 age=4;
+ }
+ - to:
+ uri: "kamelet:data-type-action"
+ parameters:
+ format: protobuf-x-struct
+ - to:
+ uri: "kamelet:log-action"
+ parameters:
+ showHeaders: true