3
3
import javax .annotation .Nullable ;
4
4
import java .io .File ;
5
5
import java .io .PrintStream ;
6
+ import java .util .List ;
6
7
import java .util .function .Consumer ;
7
- import java .util .function .Supplier ;
8
8
9
9
public abstract class ScenarioDefinition {
10
10
private final String name ;
11
11
private final String title ;
12
- private final Supplier <BuildMutator > buildMutator ;
12
+ private final List <BuildMutator > buildMutators ;
13
13
private final int warmUpCount ;
14
14
private final int buildCount ;
15
15
private final File outputDir ;
16
16
17
-
18
17
public ScenarioDefinition (
19
18
String name ,
20
19
@ Nullable String title ,
21
- Supplier <BuildMutator > buildMutator ,
20
+ List <BuildMutator > buildMutators ,
22
21
int warmUpCount ,
23
22
int buildCount ,
24
23
File outputDir
25
24
) {
26
25
this .name = name ;
27
26
this .title = title ;
28
- this .buildMutator = buildMutator ;
27
+ this .buildMutators = buildMutators ;
29
28
this .warmUpCount = warmUpCount ;
30
29
this .buildCount = buildCount ;
31
30
this .outputDir = outputDir ;
32
31
}
33
32
33
+ public void validate () {
34
+ for (BuildMutator buildMutator : buildMutators ) {
35
+ try {
36
+ buildMutator .validate (getInvoker ());
37
+ } catch (Exception ex ) {
38
+ throw new IllegalStateException ("Scenario '" + getTitle () + "' is invalid: " + ex .getMessage (), ex );
39
+ }
40
+ }
41
+ }
42
+
34
43
/**
35
44
* A specific title defined for the scenario to be used in reports (defaults to {@link #getName()}.
36
45
*/
@@ -58,6 +67,8 @@ public String getTitle() {
58
67
*/
59
68
public abstract String getTasksDisplayName ();
60
69
70
+ public abstract BuildInvoker getInvoker ();
71
+
61
72
public String getName () {
62
73
return name ;
63
74
}
@@ -66,8 +77,8 @@ public File getOutputDir() {
66
77
return outputDir ;
67
78
}
68
79
69
- public Supplier <BuildMutator > getBuildMutator () {
70
- return buildMutator ;
80
+ public List <BuildMutator > getBuildMutators () {
81
+ return buildMutators ;
71
82
}
72
83
73
84
public int getWarmUpCount () {
@@ -81,7 +92,7 @@ public int getBuildCount() {
81
92
public void printTo (PrintStream out ) {
82
93
out .println ("Scenario: " + getDisplayName ());
83
94
printDetail (out );
84
- out .println (" Build changes: " + getBuildMutator ());
95
+ out .println (" Build changes: " + getBuildMutators ());
85
96
out .println (" Warm-ups: " + getWarmUpCount ());
86
97
out .println (" Builds: " + getBuildCount ());
87
98
}
0 commit comments