From: Kai Moritz Date: Tue, 16 Aug 2022 16:31:45 +0000 (+0200) Subject: test: Überprüfung der Fachlogik ergänzt X-Git-Tag: sumup-adder---lvm-2-tage~11 X-Git-Url: https://juplo.de/gitweb/?a=commitdiff_plain;h=ecadcd52ab7fe117fef3450a27b9d6ecdf621716;hp=-c;p=demos%2Fkafka%2Ftraining test: Überprüfung der Fachlogik ergänzt * Überall, wo die Fachlogik geprüft wird, wird jetzt sichergestellt, dass die berechneten Ergebnisse den Erwartungen entsprechen. * Überprüft, werden nur die zu dem Zeitpunkt tatsächlich vollständig berechneten Ergebnisse. Dadurch wird durch die Überprüfung kein Fehler ausgelöst, wenn wegen einem simulierten Fehler noch nicht alle durch die erzeugten Nachrichten angeforderten Berechnungen erfolgt sind. --- ecadcd52ab7fe117fef3450a27b9d6ecdf621716 diff --git a/src/test/java/de/juplo/kafka/ApplicationTests.java b/src/test/java/de/juplo/kafka/ApplicationTests.java index 1a336d6..1336050 100644 --- a/src/test/java/de/juplo/kafka/ApplicationTests.java +++ b/src/test/java/de/juplo/kafka/ApplicationTests.java @@ -3,21 +3,33 @@ package de.juplo.kafka; import org.apache.kafka.clients.producer.ProducerRecord; import org.apache.kafka.common.serialization.StringSerializer; import org.apache.kafka.common.utils.Bytes; +import org.springframework.beans.factory.annotation.Autowired; +import java.util.*; import java.util.function.Consumer; +import java.util.stream.Collectors; import java.util.stream.IntStream; +import static org.assertj.core.api.Assertions.assertThat; + public class ApplicationTests extends GenericApplicationTests { + @Autowired + AdderResults results; + + public ApplicationTests() { super(new ApplicationTestRecrodGenerator()); + ((ApplicationTestRecrodGenerator)recordGenerator).tests = this; } static class ApplicationTestRecrodGenerator implements RecordGenerator { + ApplicationTests tests; + final int[] numbers = {1, 7, 3, 2, 33, 6, 11}; final String[] dieWilden13 = IntStream @@ -29,6 +41,8 @@ public class ApplicationTests extends GenericApplicationTests int counter = 0; + Map> state; + @Override public int generate( boolean poisonPills, @@ -36,6 +50,12 @@ public class ApplicationTests extends GenericApplicationTests Consumer> messageSender) { counter = 0; + state = + Arrays + .stream(dieWilden13) + .collect(Collectors.toMap( + seeräuber -> seeräuber, + seeräuber -> new LinkedList())); for (int i = 0; i < 33; i++) { @@ -50,6 +70,8 @@ public class ApplicationTests extends GenericApplicationTests send(key, value, logicErrors, messageSender); } send(key, calculateMessage, logicErrors, messageSender); + + state.get(seeräuber).add(new AdderResult(number, (number + 1) * number / 2)); } return counter; @@ -79,5 +101,24 @@ public class ApplicationTests extends GenericApplicationTests { return false; } + + @Override + public void assertBusinessLogic() + { + tests.results + .getState() + .values() + .stream() + .flatMap(map -> map.entrySet().stream()) + .forEach(entry -> + { + String user = entry.getKey(); + List resultsForUser = entry.getValue(); + + assertThat(state.get(user)) + .describedAs("Unexpected results for user {}", user) + .containsExactlyElementsOf(resultsForUser); + }); + } } }