Skip to content
This repository has been archived by the owner on Nov 27, 2023. It is now read-only.

Commit

Permalink
Add multi flow tests for KB, kamelets and integrations
Browse files Browse the repository at this point in the history
  • Loading branch information
tplevko committed May 15, 2023
1 parent 14f2cb1 commit fd8363d
Show file tree
Hide file tree
Showing 12 changed files with 253 additions and 40 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ spec:
kind: Broker
properties:
type: sometype

---
apiVersion: camel.apache.org/v1alpha1
kind: KameletBinding
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,6 @@ spec:
clientIdentifier: '{{clientIdentifier}}'
uploadMode: '{{uploadMode}}'
accessToken: '{{accessToken}}'

---
apiVersion: camel.apache.org/v1alpha1
kind: Kamelet
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,9 +88,15 @@ public String parse(final List<Step> steps, final Map<String, Object> metadata,
@Override
public String parse(List<StepParserService.ParseResult<Step>> flows) {
StringBuilder sb = new StringBuilder();
flows.stream().forEachOrdered(stepParseResult -> sb.append(parse(stepParseResult.getSteps(),
stepParseResult.getMetadata(), stepParseResult.getParameters())
+ System.lineSeparator() + "---" + System.lineSeparator()));

StepParserService.ParseResult<Step> 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();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -26,19 +29,20 @@ 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);

Expand All @@ -48,6 +52,44 @@ void parse() {
assertEquals(yaml, 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
public void setters(
final IntegrationDeploymentGeneratorService dgs,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -211,14 +211,15 @@ public Status getStatus(final CustomResource cr) {
@Override
public String parse(List<StepParserService.ParseResult<Step>> flows) {
StringBuilder sb = new StringBuilder();

StepParserService.ParseResult<Step> 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();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,13 +85,14 @@ public String parse(final List<Step> steps,
@Override
public String parse(List<StepParserService.ParseResult<Step>> flows) {
StringBuilder res = new StringBuilder("");

StepParserService.ParseResult<Step> 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();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand All @@ -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
Expand All @@ -53,32 +62,42 @@ 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());
assertEquals("knative", parsed.getSteps().get(2).getName());
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"));
}
}
Original file line number Diff line number Diff line change
@@ -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;
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ void localFolder() throws URISyntaxException {
.toURI()));
List<Step> steps = kameletParser.parse().join().stream().filter(Objects::nonNull).collect(Collectors.toList());

assertEquals(4, steps.size());
assertEquals(5, steps.size());
}

@Test
Expand Down
Loading

0 comments on commit fd8363d

Please sign in to comment.