From 18559f72f6ec20a9ef799c798119ee02d60f62a0 Mon Sep 17 00:00:00 2001 From: tplevko Date: Wed, 10 May 2023 13:18:32 +0200 Subject: [PATCH] Add multi flow tests for KB, kamelets and integrations --- .../api/resource/kamelet-binding-multi.yaml | 1 - .../backend/api/resource/kamelet-multi.yaml | 1 - ...IntegrationDeploymentGeneratorService.java | 12 ++- .../IntegrationStepParserService.java | 2 +- .../DeploymentGeneratorServiceTest.java | 70 ++++++++++++--- ...eletBindingDeploymentGeneratorService.java | 9 +- .../KameletDeploymentGeneratorService.java | 7 +- .../KameletBindingStepParserServiceTest.java | 43 ++++++--- .../kamelet/KameletStepParserServiceTest.java | 16 +++- .../step/kamelet/KameletParseCatalogTest.java | 2 +- .../step/parser/kamelet/multi-kamelets.yaml | 90 +++++++++++++++++++ .../parser/kamelet/multi-route-binding.yaml | 42 +++++++++ 12 files changed, 254 insertions(+), 41 deletions(-) create mode 100644 kamelet-support/src/test/resources/io/kaoto/backend/api/service/step/parser/kamelet/multi-kamelets.yaml create mode 100644 kamelet-support/src/test/resources/io/kaoto/backend/api/service/step/parser/kamelet/multi-route-binding.yaml diff --git a/api/src/test/resources/io/kaoto/backend/api/resource/kamelet-binding-multi.yaml b/api/src/test/resources/io/kaoto/backend/api/resource/kamelet-binding-multi.yaml index 99623efb9..99bbf252f 100644 --- a/api/src/test/resources/io/kaoto/backend/api/resource/kamelet-binding-multi.yaml +++ b/api/src/test/resources/io/kaoto/backend/api/resource/kamelet-binding-multi.yaml @@ -21,7 +21,6 @@ spec: kind: Broker properties: type: sometype - --- apiVersion: camel.apache.org/v1alpha1 kind: KameletBinding diff --git a/api/src/test/resources/io/kaoto/backend/api/resource/kamelet-multi.yaml b/api/src/test/resources/io/kaoto/backend/api/resource/kamelet-multi.yaml index 5d4618fcf..052455960 100644 --- a/api/src/test/resources/io/kaoto/backend/api/resource/kamelet-multi.yaml +++ b/api/src/test/resources/io/kaoto/backend/api/resource/kamelet-multi.yaml @@ -75,7 +75,6 @@ spec: clientIdentifier: '{{clientIdentifier}}' uploadMode: '{{uploadMode}}' accessToken: '{{accessToken}}' - --- apiVersion: camel.apache.org/v1alpha1 kind: Kamelet diff --git a/camel-route-support/src/main/java/io/kaoto/backend/api/service/deployment/generator/camelroute/IntegrationDeploymentGeneratorService.java b/camel-route-support/src/main/java/io/kaoto/backend/api/service/deployment/generator/camelroute/IntegrationDeploymentGeneratorService.java index 3c532f369..264ba0eca 100644 --- a/camel-route-support/src/main/java/io/kaoto/backend/api/service/deployment/generator/camelroute/IntegrationDeploymentGeneratorService.java +++ b/camel-route-support/src/main/java/io/kaoto/backend/api/service/deployment/generator/camelroute/IntegrationDeploymentGeneratorService.java @@ -88,9 +88,15 @@ public String parse(final List steps, final Map metadata, @Override public String parse(List> flows) { StringBuilder sb = new StringBuilder(); - flows.stream().forEachOrdered(stepParseResult -> sb.append(parse(stepParseResult.getSteps(), - stepParseResult.getMetadata(), stepParseResult.getParameters()) - + System.lineSeparator() + "---" + System.lineSeparator())); + + StepParserService.ParseResult last = flows.stream().reduce((a, b) -> b).get(); + flows.stream().forEachOrdered(stepParseResult -> { + sb.append( + parse(stepParseResult.getSteps(), stepParseResult.getMetadata(), stepParseResult.getParameters())); + if (stepParseResult != last) { + sb.append("---" + System.lineSeparator()); + } + }); return sb.toString(); } diff --git a/camel-route-support/src/main/java/io/kaoto/backend/api/service/step/parser/camelroute/IntegrationStepParserService.java b/camel-route-support/src/main/java/io/kaoto/backend/api/service/step/parser/camelroute/IntegrationStepParserService.java index 845fc0f41..053cd24b2 100644 --- a/camel-route-support/src/main/java/io/kaoto/backend/api/service/step/parser/camelroute/IntegrationStepParserService.java +++ b/camel-route-support/src/main/java/io/kaoto/backend/api/service/step/parser/camelroute/IntegrationStepParserService.java @@ -96,7 +96,7 @@ public boolean appliesTo(final String yaml) { String[] kinds = new String[]{"Integration"}; Pattern pattern = Pattern.compile( - "(\nkind:)(.+)\n", Pattern.CASE_INSENSITIVE); + System.lineSeparator()+ "(kind:)(.+)" + System.lineSeparator(), Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(yaml); if (matcher.find()) { return Arrays.stream(kinds).anyMatch( diff --git a/camel-route-support/src/test/java/io/kaoto/backend/api/service/deployment/generator/camelroute/DeploymentGeneratorServiceTest.java b/camel-route-support/src/test/java/io/kaoto/backend/api/service/deployment/generator/camelroute/DeploymentGeneratorServiceTest.java index 39607c6b0..98f105472 100644 --- a/camel-route-support/src/test/java/io/kaoto/backend/api/service/deployment/generator/camelroute/DeploymentGeneratorServiceTest.java +++ b/camel-route-support/src/test/java/io/kaoto/backend/api/service/deployment/generator/camelroute/DeploymentGeneratorServiceTest.java @@ -8,7 +8,10 @@ import javax.inject.Inject; +import java.util.Arrays; + import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.assertj.core.api.Assertions.assertThat; @QuarkusTest class DeploymentGeneratorServiceTest { @@ -26,26 +29,65 @@ void ensureCatalog() { @Test void parse() { - String yaml = "apiVersion: camel.apache.org/v1\n" - + "kind: Integration\n" - + "metadata:\n" - + " name: hello.yaml\n" - + "spec:\n" - + " flows:\n" - + " - from:\n" - + " uri: timer:tick\n" - + " parameters:\n" - + " period: '5000'\n" - + " steps:\n" - + " - to:\n" - + " uri: log:tick\n"; + String yaml = String.join(System.lineSeparator(), Arrays.asList( + "apiVersion: camel.apache.org/v1", + "kind: Integration", + "metadata:", + " name: hello.yaml", + "spec:", + " flows:", + " - from:", + " uri: timer:tick", + " parameters:", + " period: '5000'", + " steps:", + " - to:", + " uri: log:tick")) + System.lineSeparator(); var parsed = stepParserService.deepParse(yaml); var yaml2 = deploymentGeneratorService.parse(parsed.getSteps(), parsed.getMetadata(), parsed.getParameters()); - assertEquals(yaml, yaml2); + assertThat(yaml).isEqualToNormalizingNewlines(yaml2); + } + + @Test + void parseFlows() { + String yaml = String.join(System.lineSeparator(), Arrays.asList( + "apiVersion: camel.apache.org/v1", + "kind: Integration", + "metadata:", + " name: hello.yaml", + "spec:", + " flows:", + " - from:", + " uri: timer:tick", + " parameters:", + " period: '5000'", + " steps:", + " - to:", + " uri: log:tick", + "---", + "apiVersion: camel.apache.org/v1", + "kind: Integration", + "metadata:", + " name: bye.yaml", + "spec:", + " flows:", + " - from:", + " uri: timer:tock", + " parameters:", + " period: '3000'", + " steps:", + " - to:", + " uri: log:tock")) + System.lineSeparator(); + + var parsed = stepParserService.getParsedFlows(yaml); + + var yaml2 = deploymentGeneratorService.parse(parsed); + + assertThat(yaml).isEqualToNormalizingNewlines(yaml2); } @Inject diff --git a/kamelet-support/src/main/java/io/kaoto/backend/api/service/deployment/generator/kamelet/KameletBindingDeploymentGeneratorService.java b/kamelet-support/src/main/java/io/kaoto/backend/api/service/deployment/generator/kamelet/KameletBindingDeploymentGeneratorService.java index 755624eb9..f31a3926d 100644 --- a/kamelet-support/src/main/java/io/kaoto/backend/api/service/deployment/generator/kamelet/KameletBindingDeploymentGeneratorService.java +++ b/kamelet-support/src/main/java/io/kaoto/backend/api/service/deployment/generator/kamelet/KameletBindingDeploymentGeneratorService.java @@ -211,14 +211,15 @@ public Status getStatus(final CustomResource cr) { @Override public String parse(List> flows) { StringBuilder sb = new StringBuilder(); + + StepParserService.ParseResult last = flows.stream().reduce((a, b) -> b).get(); flows.stream().forEachOrdered(stepParseResult -> { - if (!sb.isEmpty()) { - sb.append(System.lineSeparator()); + sb.append(parse(stepParseResult.getSteps(), stepParseResult.getMetadata(), + stepParseResult.getParameters())); + if (stepParseResult != last) { sb.append("---"); sb.append(System.lineSeparator()); } - sb.append(parse(stepParseResult.getSteps(), stepParseResult.getMetadata(), - stepParseResult.getParameters())); }); return sb.toString(); } diff --git a/kamelet-support/src/main/java/io/kaoto/backend/api/service/deployment/generator/kamelet/KameletDeploymentGeneratorService.java b/kamelet-support/src/main/java/io/kaoto/backend/api/service/deployment/generator/kamelet/KameletDeploymentGeneratorService.java index 6a5f57e0f..3d2a80e57 100644 --- a/kamelet-support/src/main/java/io/kaoto/backend/api/service/deployment/generator/kamelet/KameletDeploymentGeneratorService.java +++ b/kamelet-support/src/main/java/io/kaoto/backend/api/service/deployment/generator/kamelet/KameletDeploymentGeneratorService.java @@ -85,13 +85,14 @@ public String parse(final List steps, @Override public String parse(List> flows) { StringBuilder res = new StringBuilder(""); + + StepParserService.ParseResult last = flows.stream().reduce((a, b) -> b).get(); flows.stream().forEachOrdered(parseResult -> { - if (!res.isEmpty()) { - res.append(System.lineSeparator()); + res.append(parse(parseResult.getSteps(), parseResult.getMetadata(), parseResult.getParameters())); + if (parseResult != last) { res.append("---"); res.append(System.lineSeparator()); } - res.append(parse(parseResult.getSteps(), parseResult.getMetadata(), parseResult.getParameters())); }); return res.toString(); } diff --git a/kamelet-support/src/test/java/io/kaoto/backend/api/service/step/parser/kamelet/KameletBindingStepParserServiceTest.java b/kamelet-support/src/test/java/io/kaoto/backend/api/service/step/parser/kamelet/KameletBindingStepParserServiceTest.java index 347451771..f80fbb4bf 100644 --- a/kamelet-support/src/test/java/io/kaoto/backend/api/service/step/parser/kamelet/KameletBindingStepParserServiceTest.java +++ b/kamelet-support/src/test/java/io/kaoto/backend/api/service/step/parser/kamelet/KameletBindingStepParserServiceTest.java @@ -4,7 +4,6 @@ import io.kaoto.backend.api.metadata.catalog.StepCatalog; import io.kaoto.backend.api.service.deployment.generator.kamelet.KameletBindingDeploymentGeneratorService; import io.quarkus.test.junit.QuarkusTest; - import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -17,13 +16,15 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; @QuarkusTest class KameletBindingStepParserServiceTest { - private static String binding; + private static String twitterSearchSourceBinding; + private static String knativeBinding; + private static String multiRouteBinding; @Inject private KameletBindingStepParserService service; @@ -40,10 +41,18 @@ public void setStepCatalog(final StepCatalog catalog) { @BeforeAll static void setup() throws URISyntaxException, IOException { - binding = Files.readString(Path.of( + twitterSearchSourceBinding = Files.readString(Path.of( KameletBindingStepParserServiceTest.class.getResource( "twitter-search-source-binding.yaml") .toURI())); + knativeBinding = Files.readString(Path.of( + KameletBindingStepParserServiceTest.class.getResource( + "knative-binding.yaml") + .toURI())); + multiRouteBinding = Files.readString(Path.of( + KameletBindingStepParserServiceTest.class.getResource( + "multi-route-binding.yaml") + .toURI())); } @BeforeEach @@ -53,7 +62,7 @@ void ensureCatalog() { @Test void parse() throws JsonProcessingException { - var parsed = service.deepParse(binding); + var parsed = service.deepParse(twitterSearchSourceBinding); assertEquals(3, parsed.getSteps().size()); assertEquals("twitter-search-source", parsed.getSteps().get(0).getName()); assertEquals("aws-translate-action", parsed.getSteps().get(1).getName()); @@ -61,24 +70,34 @@ void parse() throws JsonProcessingException { assertEquals("Kamelet Binding generated by Kaoto", parsed.getMetadata().get("name")); assertTrue(parsed.getParameters().isEmpty()); var yaml = deploymentService.parse(parsed.getSteps(), parsed.getMetadata(), parsed.getParameters()); + assertThat(yaml).isEqualToNormalizingNewlines(twitterSearchSourceBinding); + } - assertThat(yaml).isEqualToNormalizingNewlines(binding); + @Test + void parseMultipleFlows() throws JsonProcessingException { + var parsed = service.getParsedFlows(multiRouteBinding); + assertEquals(2, parsed.size()); + assertEquals("Kamelet Binding generated by Kaoto", parsed.get(0).getMetadata().get("name")); + assertEquals("Kamelet Binding timer to log", parsed.get(1).getMetadata().get("name")); + assertTrue(parsed.get(0).getParameters().isEmpty()); + assertTrue(parsed.get(1).getParameters().isEmpty()); + var yaml = deploymentService.parse(parsed); + + assertThat(yaml).isEqualToNormalizingNewlines(multiRouteBinding); } @Test void parseKnative() throws URISyntaxException, IOException { - final String binding = Files.readString( - Path.of(KameletBindingStepParserServiceTest.class.getResource("knative-binding.yaml").toURI())); - var parsed = service.deepParse(binding); + var parsed = service.deepParse(knativeBinding); assertEquals(2, parsed.getSteps().size()); - var yaml = deploymentService.parse(parsed.getSteps(), parsed.getMetadata(), parsed.getParameters()); + var yaml = deploymentService.parse(parsed.getSteps(), parsed.getMetadata(), parsed.getParameters()); - assertThat(yaml).isEqualToNormalizingNewlines(binding); + assertThat(yaml).isEqualToNormalizingNewlines(knativeBinding); } @Test void appliesTo() { - assertTrue(service.appliesTo(binding)); + assertTrue(service.appliesTo(twitterSearchSourceBinding)); assertFalse(service.appliesTo("whatever")); } } diff --git a/kamelet-support/src/test/java/io/kaoto/backend/api/service/step/parser/kamelet/KameletStepParserServiceTest.java b/kamelet-support/src/test/java/io/kaoto/backend/api/service/step/parser/kamelet/KameletStepParserServiceTest.java index 1ba02bb5f..09056795c 100644 --- a/kamelet-support/src/test/java/io/kaoto/backend/api/service/step/parser/kamelet/KameletStepParserServiceTest.java +++ b/kamelet-support/src/test/java/io/kaoto/backend/api/service/step/parser/kamelet/KameletStepParserServiceTest.java @@ -1,5 +1,6 @@ package io.kaoto.backend.api.service.step.parser.kamelet; +import com.fasterxml.jackson.core.JsonProcessingException; import io.kaoto.backend.api.metadata.catalog.StepCatalog; import io.kaoto.backend.api.service.deployment.generator.kamelet.KameletDeploymentGeneratorService; import io.kaoto.backend.metadata.ParseCatalog; @@ -37,7 +38,7 @@ class KameletStepParserServiceTest { private static String incomplete; private static String kameletEIP; private static String kameletJq; - + private static String multiKamelet; private CamelRouteParseCatalog parseCatalog; @Inject @@ -76,6 +77,10 @@ static void setup() throws URISyntaxException, IOException { KameletBindingStepParserServiceTest.class.getResource( "jq.kamelet.yaml") .toURI())); + multiKamelet = Files.readString(Path.of( + KameletBindingStepParserServiceTest.class.getResource( + "multi-kamelets.yaml") + .toURI())); } @BeforeEach @@ -175,6 +180,15 @@ void deepParse() { assertEquals("string", accessToken.getType()); } + @Test + void parseMultipleFlows() throws JsonProcessingException { + var parsed = service.getParsedFlows(multiKamelet); + assertEquals(2, parsed.size()); + var yaml = deploymentService.parse(parsed); + + assertThat(yaml).isEqualToNormalizingWhitespace(multiKamelet); + } + @Test void goAndBackAgain() { var parsed = service.deepParse(kamelet); diff --git a/kamelet-support/src/test/java/io/kaoto/backend/metadata/parser/step/kamelet/KameletParseCatalogTest.java b/kamelet-support/src/test/java/io/kaoto/backend/metadata/parser/step/kamelet/KameletParseCatalogTest.java index 9f814848a..6c3876793 100644 --- a/kamelet-support/src/test/java/io/kaoto/backend/metadata/parser/step/kamelet/KameletParseCatalogTest.java +++ b/kamelet-support/src/test/java/io/kaoto/backend/metadata/parser/step/kamelet/KameletParseCatalogTest.java @@ -139,7 +139,7 @@ void localFolder() throws URISyntaxException { .toURI())); List steps = kameletParser.parse().join().stream().filter(Objects::nonNull).collect(Collectors.toList()); - assertEquals(4, steps.size()); + assertEquals(5, steps.size()); } @Test diff --git a/kamelet-support/src/test/resources/io/kaoto/backend/api/service/step/parser/kamelet/multi-kamelets.yaml b/kamelet-support/src/test/resources/io/kaoto/backend/api/service/step/parser/kamelet/multi-kamelets.yaml new file mode 100644 index 000000000..cb490f0b5 --- /dev/null +++ b/kamelet-support/src/test/resources/io/kaoto/backend/api/service/step/parser/kamelet/multi-kamelets.yaml @@ -0,0 +1,90 @@ +apiVersion: camel.apache.org/v1alpha1 +kind: Kamelet +metadata: + annotations: + camel.apache.org/catalog.version: 1.10.1 + camel.apache.org/kamelet.icon: data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gU3ZnIFZlY3RvciBJY29ucyA6IGh0dHA6Ly93d3cub25saW5ld2ViZm9udHMuY29tL2ljb24gLS0+DQo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTAwMCAxMDAwIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxMDAwIDEwMDAiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPG1ldGFkYXRhPiBTdmcgVmVjdG9yIEljb25zIDogaHR0cDovL3d3dy5vbmxpbmV3ZWJmb250cy5jb20vaWNvbiA8L21ldGFkYXRhPg0KPGc+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMDAwMDAsNTExLjAwMDAwMCkgc2NhbGUoMC4xMDAwMDAsLTAuMTAwMDAwKSI+PHBhdGggZD0iTTM4ODguMSw0Nzc0Ljl2LTIzNS4xaDQxMS40aDQxNC4zbC04LjgtMzI5LjFsLTguOC0zMzJsLTExNy41LTguOGMtMjI5LjItMTQuNy02MjAtOTkuOS05MjUuNi0xOTYuOUMyMjU3LjQsMzIyMC42LDExNjcuMiwyMDY1LjgsODAyLjksNjQ5LjZjLTUxMS4zLTE5ODYuMywzODQuOS00MDAyLDIyMDYuNy00OTY1LjhjMzAyLjYtMTYxLjYsNzU4LjEtMzIwLjIsMTE1NC44LTQwNS41YzQyNi4xLTkxLjEsMTI1MS43LTkxLjEsMTY4MC43LDBjMTc2OC45LDM4MiwzMDQ0LjEsMTY1Ny4yLDM0MjYuMSwzNDI2LjFjOTEuMSw0MjYuMSw5MS4xLDEyNTQuNiwwLDE2NzcuOGMtNDIwLjIsMTk0Mi4yLTE5MzYuNCwzMzAyLjYtMzg5MC4zLDM0OTYuNmwtMTk5LjgsMjAuNnYzMjAuM3YzMjAuM2g0MTEuNGg0MTEuNHYyMzUuMVY1MDEwSDQ5NDUuOUgzODg4LjFWNDc3NC45eiBNNTc1My45LDMzNDkuOWM3NzguNy0xNjEuNiwxNDE5LjItNTA4LjMsMTk4My40LTEwNzIuNWM1NjQuMi01NjEuMiw4ODcuNC0xMTU3LjcsMTA2MC43LTE5NDIuMmM5OS45LTQzNy44LDk5LjktMTE0MywzLTE1ODAuOEM4NTYzLTIzMDYuNCw3OTY2LjUtMzE1OC41LDcwNDMuOS0zNzUyYy0zMzUtMjE0LjUtNzg3LjUtMzk2LjctMTI0OC44LTQ5OS41Yy00MzcuOC05Ny0xMTQzLTk3LTE1ODAuOCwyLjljLTc4NC41LDE3My4zLTEzODEsNDk2LjYtMTk0Mi4yLDEwNjAuN2MtNTcwLDU2Ny4xLTkwNy45LDExOTguOC0xMDc4LjQsMTk5OC4xYy03My41LDM0Ni43LTczLjUsMTEyMi40LDAsMTQ2OS4yYzE3MC40LDc5OS4yLDUwOC4zLDE0MzEsMTA3OC40LDE5OThDMjg5NSwyOTAwLjMsMzYzOC40LDMyNzMuNSw0NDkzLjQsMzM5MUM0Nzc4LjQsMzQzMi4xLDU0NzQuOCwzNDA4LjYsNTc1My45LDMzNDkuOXoiLz48cGF0aCBkPSJNNDcxMC44LDEzNzUuM1YyMDUuOUw0NTUyLjIsNjcuOGMtMzE3LjMtMjc5LjEtMzQwLjgtNjc4LjctNTUuOC05OTMuMWMyODcuOS0zMjAuMyw2OTMuNC0zMTcuMywxMDEzLjcsNS45bDE3MC40LDE3MC40aDEwNDMuMWgxMDQzLjFWLTUxNFYtMjc5SDY3MjkuNUg1NjkyLjJsLTQ5LjksMTE0LjZjLTU4LjgsMTMyLjItMjUyLjcsMzE3LjMtMzc2LjEsMzYxLjRsLTg1LjIsMjkuNHYxMTU3Ljd2MTE1Ny43aC0yMzUuMWgtMjM1LjFWMTM3NS4zeiBNNTE2Ni4zLTI5My42YzE0Ni45LTE0NCw0NC4xLTM5Ni43LTE2MS42LTM5Ni43Yy01NS44LDAtMTE3LjUsMjYuNC0xNjEuNiw3My40Yy00Nyw0NC4xLTczLjUsMTA1LjgtNzMuNSwxNjEuNnMyNi40LDExNy41LDczLjUsMTYxLjZjNDQuMSw0NywxMDUuOCw3My41LDE2MS42LDczLjVDNTA2MC41LTIyMC4yLDUxMjIuMi0yNDYuNyw1MTY2LjMtMjkzLjZ6Ii8+PC9nPjwvZz4NCjwvc3ZnPg== + camel.apache.org/provider: Red Hat + camel.apache.org/kamelet.group: Timer + labels: + camel.apache.org/kamelet.type: source + name: timer-source +spec: + definition: + title: Timer Source + description: Produces periodic events with a custom payload. + required: + - message + properties: + period: + title: Period + description: The interval between two events in milliseconds + type: integer + default: '1000' + message: + title: Message + description: The message to generate + type: string + contentType: + title: Content Type + description: The content type of the message being generated + type: string + default: text/plain + repeatCount: + title: Repeat Count + description: Specifies a maximum limit of number of fires + type: integer + dependencies: + - camel:core + - camel:timer + - camel:kamelet + template: + from: + uri: null + steps: + - set-body: + constant: '{{message}}' + - set-header: + constant: '{{contentType}}' + name: Content-Type + - to: + uri: kamelet:sink +--- +apiVersion: camel.apache.org/v1alpha1 +kind: Kamelet +metadata: + annotations: + camel.apache.org/catalog.version: 1.10.1 + camel.apache.org/kamelet.icon: data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE2LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPg0KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCINCgkgd2lkdGg9IjUxMnB4IiBoZWlnaHQ9IjUxMnB4IiB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTEyIDUxMjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGc+DQoJPHBhdGggZD0iTTQ0OCwwSDY0QzQ2LjMyOCwwLDMyLDE0LjMxMywzMiwzMnY0NDhjMCwxNy42ODgsMTQuMzI4LDMyLDMyLDMyaDM4NGMxNy42ODgsMCwzMi0xNC4zMTIsMzItMzJWMzINCgkJQzQ4MCwxNC4zMTMsNDY1LjY4OCwwLDQ0OCwweiBNNjQsNDgwVjEyOGg4MHY2NEg5NnYxNmg0OHY0OEg5NnYxNmg0OHY0OEg5NnYxNmg0OHY0OEg5NnYxNmg0OHY4MEg2NHogTTQ0OCw0ODBIMTYwdi04MGgyNTZ2LTE2DQoJCUgxNjB2LTQ4aDI1NnYtMTZIMTYwdi00OGgyNTZ2LTE2SDE2MHYtNDhoMjU2di0xNkgxNjB2LTY0aDI4OFY0ODB6Ii8+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8L3N2Zz4NCg== + camel.apache.org/provider: Red Hat + camel.apache.org/kamelet.group: Logging + labels: + camel.apache.org/kamelet.type: sink + name: log-sink +spec: + definition: + title: Log Sink + description: A sink that logs all data that it receives, useful for debugging + purposes. + properties: + showHeaders: + title: Show Headers + description: Show the headers received + type: boolean + default: 'false' + showStreams: + title: Show Streams + description: Show the stream bodies (they may not be available in following + steps) + type: boolean + default: 'true' + dependencies: + - camel:kamelet + - camel:log + - camel:core + template: + from: + uri: kamelet:source + steps: + - to: + uri: log:info diff --git a/kamelet-support/src/test/resources/io/kaoto/backend/api/service/step/parser/kamelet/multi-route-binding.yaml b/kamelet-support/src/test/resources/io/kaoto/backend/api/service/step/parser/kamelet/multi-route-binding.yaml new file mode 100644 index 000000000..572d2eace --- /dev/null +++ b/kamelet-support/src/test/resources/io/kaoto/backend/api/service/step/parser/kamelet/multi-route-binding.yaml @@ -0,0 +1,42 @@ +apiVersion: camel.apache.org/v1alpha1 +kind: KameletBinding +metadata: + name: Kamelet Binding generated by Kaoto +spec: + source: + ref: + apiVersion: camel.apache.org/v1alpha1 + name: twitter-search-source + kind: Kamelet + properties: + keywords: Apache Camel + steps: + - ref: + apiVersion: camel.apache.org/v1alpha1 + name: aws-translate-action + kind: Kamelet + sink: + ref: + apiVersion: eventing.knative.dev/v1 + name: sink-broker + kind: Broker + properties: + type: sometype +--- +apiVersion: camel.apache.org/v1alpha1 +kind: KameletBinding +metadata: + name: Kamelet Binding timer to log +spec: + source: + ref: + apiVersion: camel.apache.org/v1alpha1 + name: timer-source + kind: Kamelet + properties: + message: test + sink: + ref: + apiVersion: camel.apache.org/v1alpha1 + name: log-sink + kind: Kamelet