Vorlage vereinfacht: Rebalance-Listener entfernt
[demos/kafka/training] / src / test / java / de / juplo / kafka / ErrorCannotBeGeneratedCondition.java
1 package de.juplo.kafka;
2
3 import org.junit.jupiter.api.extension.ConditionEvaluationResult;
4 import org.junit.jupiter.api.extension.ExecutionCondition;
5 import org.junit.jupiter.api.extension.ExtensionContext;
6 import org.junit.platform.commons.util.AnnotationUtils;
7
8 import java.util.LinkedList;
9 import java.util.List;
10 import java.util.Optional;
11 import java.util.stream.Collectors;
12
13
14 public class ErrorCannotBeGeneratedCondition implements ExecutionCondition
15 {
16   @Override
17   public ConditionEvaluationResult evaluateExecutionCondition(ExtensionContext context)
18   {
19     final Optional<SkipWhenErrorCannotBeGenerated> optional =
20         AnnotationUtils.findAnnotation(
21             context.getElement(),
22             SkipWhenErrorCannotBeGenerated.class);
23
24     if (context.getTestInstance().isEmpty())
25       return ConditionEvaluationResult.enabled("Test-instance ist not available");
26
27     if (optional.isPresent())
28     {
29       SkipWhenErrorCannotBeGenerated skipWhenErrorCannotBeGenerated = optional.get();
30       GenericApplicationTests instance = (GenericApplicationTests)context.getTestInstance().get();
31       List<String> missingRequiredErrors = new LinkedList<>();
32
33       if (skipWhenErrorCannotBeGenerated.poisonPill() && !instance.recordGenerator.canGeneratePoisonPill())
34         missingRequiredErrors.add("Poison-Pill");
35
36       if (skipWhenErrorCannotBeGenerated.logicError() && !instance.recordGenerator.canGenerateLogicError())
37         missingRequiredErrors.add("Logic-Error");
38
39       StringBuilder builder = new StringBuilder();
40       builder.append(context.getTestClass().get().getSimpleName());
41
42       if (missingRequiredErrors.isEmpty())
43       {
44         builder.append(" can generate all required types of errors");
45         return ConditionEvaluationResult.enabled(builder.toString());
46       }
47
48       builder.append(" cannot generate the required error(s): ");
49       builder.append(
50           missingRequiredErrors
51               .stream()
52               .collect(Collectors.joining(", ")));
53
54       return ConditionEvaluationResult.disabled(builder.toString());
55     }
56
57     return ConditionEvaluationResult.enabled(
58         "Not annotated with " + SkipWhenErrorCannotBeGenerated.class.getSimpleName());
59   }
60 }