1818import org .elasticsearch .client .eql .EqlSearchResponse .Hits ;
1919import org .elasticsearch .client .eql .EqlSearchResponse .Sequence ;
2020import org .elasticsearch .common .Strings ;
21+ import org .elasticsearch .common .logging .LoggerMessageFormat ;
2122import org .elasticsearch .search .SearchHit ;
2223import org .elasticsearch .test .rest .ESRestTestCase ;
2324import org .junit .After ;
3031import java .util .HashSet ;
3132import java .util .List ;
3233import java .util .Set ;
33- import java .util .concurrent .atomic .AtomicInteger ;
3434
3535import static java .util .stream .Collectors .toList ;
3636import static org .elasticsearch .test .eql .DataLoader .testIndexName ;
@@ -91,44 +91,42 @@ public static List<Object[]> readTestSpecs() throws Exception {
9191 }
9292
9393 private static List <Object []> asArray (List <EqlSpec > specs ) {
94- AtomicInteger counter = new AtomicInteger ();
95- return specs .stream ().map (spec -> {
94+ int counter = 0 ;
95+ List <Object []> results = new ArrayList <>();
96+
97+ for (EqlSpec spec : specs ) {
9698 String name = spec .name ();
9799 if (Strings .isNullOrEmpty (name )) {
98100 name = spec .note ();
99101 }
100102 if (Strings .isNullOrEmpty (name )) {
101- name = "" + (counter . get () + 1 );
103+ name = "" + (counter );
102104 }
103105
104- return new Object [] { counter .incrementAndGet (), name , spec };
105- }).collect (toList ());
106+ boolean [] values = spec .caseSensitive () == null ? new boolean [] { true , false } : new boolean [] { spec .caseSensitive () };
107+
108+ for (boolean bool : values ) {
109+ results .add (new Object [] { spec .query (), name , spec .expectedEventIds (), bool });
110+ }
111+ }
112+
113+ return results ;
106114 }
107115
108- private final int num ;
116+ private final String query ;
109117 private final String name ;
110- private final EqlSpec spec ;
118+ private final long [] eventIds ;
119+ private final boolean caseSensitive ;
111120
112- public CommonEqlActionTestCase (int num , String name , EqlSpec spec ) {
113- this .num = num ;
121+ public CommonEqlActionTestCase (String query , String name , long [] eventIds , boolean caseSensitive ) {
122+ this .query = query ;
114123 this .name = name ;
115- this .spec = spec ;
124+ this .eventIds = eventIds ;
125+ this .caseSensitive = caseSensitive ;
116126 }
117127
118128 public void test () throws Exception {
119- // run both tests if case sensitivity doesn't matter
120- if (spec .caseSensitive () == null ) {
121- assertResponse (runQuery (testIndexName , spec .query (), true ));
122- assertResponse (runQuery (testIndexName , spec .query (), false ));
123- }
124- // run only the case sensitive test
125- else if (spec .caseSensitive ()) {
126- assertResponse (runQuery (testIndexName , spec .query (), true ));
127- }
128- // run only the case insensitive test
129- else {
130- assertResponse (runQuery (testIndexName , spec .query (), false ));
131- }
129+ assertResponse (runQuery (testIndexName , query , caseSensitive ));
132130 }
133131
134132 protected void assertResponse (EqlSearchResponse response ) {
@@ -145,7 +143,7 @@ else if (hits.sequences() != null) {
145143 }
146144
147145 protected EqlSearchResponse runQuery (String index , String query , boolean isCaseSensitive ) throws Exception {
148- EqlSearchRequest request = new EqlSearchRequest (testIndexName , query );
146+ EqlSearchRequest request = new EqlSearchRequest (index , query );
149147 request .isCaseSensitive (isCaseSensitive );
150148 request .tiebreakerField ("event.sequence" );
151149 // some queries return more than 10 results
@@ -160,10 +158,11 @@ private EqlClient eqlClient() {
160158
161159 protected void assertSearchHits (List <SearchHit > events ) {
162160 assertNotNull (events );
163- long [] expected = spec . expectedEventIds () ;
161+ long [] expected = eventIds ;
164162 long [] actual = extractIds (events );
165- assertArrayEquals ("unexpected result for spec: [" + spec .toString () + "]" + Arrays .toString (expected ) + " vs " + Arrays .toString (
166- actual ), expected , actual );
163+ assertArrayEquals (LoggerMessageFormat .format (null , "unexpected result for spec[{}] [{}] -> {} vs {}" , name , query , Arrays .toString (
164+ expected ), Arrays .toString (actual )),
165+ expected , actual );
167166 }
168167
169168 private static long [] extractIds (List <SearchHit > events ) {
0 commit comments