2424import java .util .List ;
2525import java .util .concurrent .CountDownLatch ;
2626import java .util .concurrent .TimeUnit ;
27+ import java .util .concurrent .atomic .AtomicBoolean ;
2728import java .util .concurrent .atomic .AtomicReference ;
2829
29- import static org .hamcrest .Matchers .allOf ;
3030import static org .hamcrest .Matchers .empty ;
3131import static org .hamcrest .Matchers .equalTo ;
32+ import static org .hamcrest .Matchers .not ;
3233import static org .hamcrest .Matchers .notNullValue ;
3334import static org .mockito .ArgumentMatchers .any ;
3435import static org .mockito .ArgumentMatchers .eq ;
@@ -61,29 +62,35 @@ public void testSuccessfulBulkExecution() throws Exception {
6162 return null ;
6263 });
6364
64- AtomicReference <List <BulkInferenceResponse >> output = new AtomicReference <>();
65- ActionListener <List <BulkInferenceResponse >> listener = ActionListener .wrap (output ::set , ESTestCase ::fail );
65+ List <BulkInferenceResponse > output = new ArrayList <>();
66+ AtomicBoolean completed = new AtomicBoolean (false );
67+ ActionListener <Void > listener = ActionListener .wrap (r -> completed .set (true ), e -> fail ("Did not expect an exception" ));
6668
6769 inferenceRunnerFactory (client ).create (randomBulkExecutionConfig ())
68- .executeBulk (requestIterator (requests ), assertAnswerUsingSearchThreadPool (listener ));
70+ .executeBulk (requestIterator (requests ), output :: add , assertAnswerUsingSearchThreadPool (listener ));
6971
7072 assertBusy (() -> {
71- assertThat (output .get (), notNullValue ());
72- assertThat (output .get ().stream ().map (BulkInferenceResponse ::response ).toList (), equalTo (responses ));
73+ assertThat (completed .get (), equalTo (true ));
74+ assertThat (output , not (empty ()));
75+ assertThat (output .stream ().map (BulkInferenceResponse ::response ).toList (), equalTo (responses ));
7376 });
7477 }
7578
7679 public void testSuccessfulBulkExecutionOnEmptyRequest () throws Exception {
7780 BulkInferenceRequestItemIterator requestIterator = mock (BulkInferenceRequestItemIterator .class );
7881 when (requestIterator .hasNext ()).thenReturn (false );
7982
80- AtomicReference <List <BulkInferenceResponse >> output = new AtomicReference <>();
81- ActionListener <List <BulkInferenceResponse >> listener = ActionListener .wrap (output ::set , ESTestCase ::fail );
83+ List <BulkInferenceResponse > output = new ArrayList <>();
84+ AtomicBoolean completed = new AtomicBoolean (false );
85+ ActionListener <Void > listener = ActionListener .wrap (r -> completed .set (true ), e -> fail ("Did not expect an exception" ));
8286
8387 inferenceRunnerFactory (new NoOpClient (threadPool )).create (randomBulkExecutionConfig ())
84- .executeBulk (requestIterator , assertAnswerUsingSearchThreadPool (listener ));
88+ .executeBulk (requestIterator , output :: add , assertAnswerUsingSearchThreadPool (listener ));
8589
86- assertBusy (() -> assertThat (output .get (), allOf (notNullValue (), empty ())));
90+ assertBusy (() -> {
91+ assertThat (completed .get (), equalTo (true ));
92+ assertThat (output , empty ());
93+ });
8794 }
8895
8996 public void testBulkExecutionWhenInferenceRunnerAlwaysFails () throws Exception {
@@ -98,10 +105,10 @@ public void testBulkExecutionWhenInferenceRunnerAlwaysFails() throws Exception {
98105 });
99106
100107 AtomicReference <Exception > exception = new AtomicReference <>();
101- ActionListener <List < BulkInferenceResponse > > listener = ActionListener .wrap (r -> fail ("Expected an exception" ), exception ::set );
108+ ActionListener <Void > listener = ActionListener .wrap (r -> fail ("Expected an exception" ), exception ::set );
102109
103110 inferenceRunnerFactory (client ).create (randomBulkExecutionConfig ())
104- .executeBulk (requestIterator (requests ), assertAnswerUsingSearchThreadPool (listener ));
111+ .executeBulk (requestIterator (requests ), r -> {}, assertAnswerUsingSearchThreadPool (listener ));
105112
106113 assertBusy (() -> {
107114 assertThat (exception .get (), notNullValue ());
@@ -126,10 +133,10 @@ public void testBulkExecutionWhenInferenceRunnerSometimesFails() throws Exceptio
126133 });
127134
128135 AtomicReference <Exception > exception = new AtomicReference <>();
129- ActionListener <List < BulkInferenceResponse > > listener = ActionListener .wrap (r -> fail ("Expected an exception" ), exception ::set );
136+ ActionListener <Void > listener = ActionListener .wrap (r -> fail ("Expected an exception" ), exception ::set );
130137
131138 inferenceRunnerFactory (client ).create (randomBulkExecutionConfig ())
132- .executeBulk (requestIterator (requests ), assertAnswerUsingSearchThreadPool (listener ));
139+ .executeBulk (requestIterator (requests ), r -> {}, assertAnswerUsingSearchThreadPool (listener ));
133140
134141 assertBusy (() -> {
135142 assertThat (exception .get (), notNullValue ());
@@ -153,14 +160,15 @@ public void testParallelBulkExecution() throws Exception {
153160 });
154161 return null ;
155162 });
163+ ArrayList <BulkInferenceResponse > output = new ArrayList <>();
156164
157- ActionListener <List < BulkInferenceResponse > > listener = ActionListener .wrap (r -> {
158- assertThat (r .stream ().map (BulkInferenceResponse ::response ).toList (), equalTo (responses ));
165+ ActionListener <Void > listener = ActionListener .wrap (r -> {
166+ assertThat (output .stream ().map (BulkInferenceResponse ::response ).toList (), equalTo (responses ));
159167 latch .countDown ();
160168 }, ESTestCase ::fail );
161169
162170 inferenceRunnerFactory (client ).create (randomBulkExecutionConfig ())
163- .executeBulk (requestIterator (requests ), assertAnswerUsingSearchThreadPool (listener ));
171+ .executeBulk (requestIterator (requests ), output :: add , assertAnswerUsingSearchThreadPool (listener ));
164172 });
165173 }
166174
0 commit comments