You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2021/12/07 13:51:56 UTC

[camel] 05/08: CAMEL-17261: camel-yaml-dsl - Add support for loading Camel K KameletBinding file. WIP.

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git

commit c2e6268c0ad854d1f8eb5e926d6590cc68b9cc13
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Tue Dec 7 11:41:43 2021 +0100

    CAMEL-17261: camel-yaml-dsl - Add support for loading Camel K KameletBinding file. WIP.
---
 .../camel/dsl/yaml/KameletBindingLoaderTest.groovy | 64 +++++++++++++++++++++-
 1 file changed, 61 insertions(+), 3 deletions(-)

diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/KameletBindingLoaderTest.groovy b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/KameletBindingLoaderTest.groovy
index 7e27750..166bdc5 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/KameletBindingLoaderTest.groovy
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/KameletBindingLoaderTest.groovy
@@ -16,17 +16,19 @@
  */
 package org.apache.camel.dsl.yaml
 
+import org.apache.camel.Exchange
+import org.apache.camel.Processor
 import org.apache.camel.builder.DeadLetterChannelBuilder
+import org.apache.camel.component.mock.MockEndpoint
 import org.apache.camel.dsl.yaml.support.YamlTestSupport
 import org.apache.camel.model.ToDefinition
-import org.apache.camel.processor.errorhandler.DeadLetterChannel
 
 class KameletBindingLoaderTest extends YamlTestSupport {
     @Override
     def doSetup() {
         context.start()
     }
-/*
+
     def "kamelet binding from kamelet to kamelet"() {
         when:
             loadBindings('''
@@ -280,7 +282,7 @@ class KameletBindingLoaderTest extends YamlTestSupport {
             }
         }
     }
-*/
+
     def "kamelet binding with error handler"() {
         when:
 
@@ -341,4 +343,60 @@ class KameletBindingLoaderTest extends YamlTestSupport {
         }
     }
 
+    def "kamelet binding with error handler move to dlq"() {
+        when:
+
+        context.registry.bind 'chaos', new Processor() {
+            @Override
+            void process(Exchange exchange) throws Exception {
+                throw new IllegalArgumentException("Forced");
+            }
+        };
+
+        loadBindings('''
+                apiVersion: camel.apache.org/v1alpha1
+                kind: KameletBinding
+                metadata:
+                  name: timer-event-source                  
+                spec:
+                  source:
+                    ref:
+                      kind: Kamelet
+                      apiVersion: camel.apache.org/v1
+                      name: timer-source
+                    properties:
+                      message: "Hello world!"
+                  steps:
+                    - uri: bean:chaos  
+                  sink:
+                    ref:
+                      kind: Kamelet
+                      apiVersion: camel.apache.org/v1alpha1
+                      name: log-sink
+                  errorHandler:
+                    dead-letter-channel:
+                      endpoint:
+                        uri: mock:dead
+                      parameters:
+                        maximumRedeliveries: 3
+                        redeliveryDelay: 100    
+                    ''')
+        then:
+        context.routeDefinitions.size() == 3
+
+        MockEndpoint mock = context.getEndpoint("mock:dead", MockEndpoint.class)
+        mock.expectedMinimumMessageCount(1)
+
+        mock.assertIsSatisfied()
+
+        with (context.routeDefinitions[0]) {
+            errorHandlerFactory != null
+            errorHandlerFactory instanceof DeadLetterChannelBuilder
+            var eh = errorHandlerFactory as DeadLetterChannelBuilder
+            eh.deadLetterUri == 'mock:dead'
+            eh.redeliveryPolicy.maximumRedeliveries == 3
+            eh.redeliveryPolicy.redeliveryDelay == 100
+        }
+    }
+
 }