99
1010import com .carrotsearch .randomizedtesting .annotations .ParametersFactory ;
1111
12- import org .elasticsearch .action .admin .indices .refresh .RefreshRequest ;
1312import org .elasticsearch .action .bulk .BulkItemResponse ;
1413import org .elasticsearch .action .bulk .BulkRequestBuilder ;
1514import org .elasticsearch .action .bulk .BulkResponse ;
1615import org .elasticsearch .action .delete .DeleteRequestBuilder ;
1716import org .elasticsearch .action .index .IndexRequestBuilder ;
1817import org .elasticsearch .action .search .SearchRequest ;
1918import org .elasticsearch .action .search .SearchResponse ;
19+ import org .elasticsearch .action .support .WriteRequest ;
2020import org .elasticsearch .action .update .UpdateRequestBuilder ;
2121import org .elasticsearch .cluster .metadata .IndexMetadata ;
2222import org .elasticsearch .common .settings .Settings ;
@@ -243,12 +243,10 @@ public void testRestart() throws Exception {
243243
244244 private void assertRandomBulkOperations (String indexName , Function <Boolean , Map <String , Object >> sourceSupplier ) throws Exception {
245245 int numHits = numHits (indexName );
246- int totalBulkReqs = randomIntBetween (2 , 100 );
247- long totalDocs = numHits ;
246+ int totalBulkReqs = randomIntBetween (2 , 10 );
248247 Set <String > ids = new HashSet <>();
249-
250- for (int bulkReqs = numHits ; bulkReqs < totalBulkReqs ; bulkReqs ++) {
251- BulkRequestBuilder bulkReqBuilder = client ().prepareBulk ();
248+ for (int bulkReqs = 0 ; bulkReqs < totalBulkReqs ; bulkReqs ++) {
249+ BulkRequestBuilder bulkReqBuilder = client ().prepareBulk ().setRefreshPolicy (WriteRequest .RefreshPolicy .IMMEDIATE );
252250 int totalBulkSize = randomIntBetween (1 , 100 );
253251 for (int bulkSize = 0 ; bulkSize < totalBulkSize ; bulkSize ++) {
254252 if (ids .size () > 0 && rarely (random ())) {
@@ -258,24 +256,15 @@ private void assertRandomBulkOperations(String indexName, Function<Boolean, Map<
258256 bulkReqBuilder .add (request );
259257 continue ;
260258 }
261- String id = Long .toString (totalDocs ++);
262- boolean isIndexRequest = randomBoolean ();
259+ boolean isIndexRequest = ids .size () == 0 || randomBoolean ();
263260 Map <String , Object > source = sourceSupplier .apply (isIndexRequest );
264261 if (isIndexRequest ) {
262+ String id = randomAlphaOfLength (20 );
265263 bulkReqBuilder .add (new IndexRequestBuilder (client ()).setIndex (indexName ).setId (id ).setSource (source ));
266264 ids .add (id );
267265 } else {
268- boolean isUpsert = randomBoolean ();
269- UpdateRequestBuilder request = new UpdateRequestBuilder (client ()).setIndex (indexName ).setDoc (source );
270- if (isUpsert || ids .size () == 0 ) {
271- request .setDocAsUpsert (true );
272- } else {
273- // Update already existing document
274- id = randomFrom (ids );
275- }
276- request .setId (id );
277- bulkReqBuilder .add (request );
278- ids .add (id );
266+ String id = randomFrom (ids );
267+ bulkReqBuilder .add (new UpdateRequestBuilder (client ()).setIndex (indexName ).setId (id ).setDoc (source ));
279268 }
280269 }
281270 BulkResponse bulkResponse = bulkReqBuilder .get ();
@@ -294,8 +283,7 @@ private void assertRandomBulkOperations(String indexName, Function<Boolean, Map<
294283 }
295284 assertFalse (bulkResponse .hasFailures ());
296285 }
297- client ().admin ().indices ().refresh (new RefreshRequest (indexName )).get ();
298- assertThat (numHits (indexName ), equalTo (ids .size () + numHits ));
286+ assertThat (numHits (indexName ), equalTo (numHits + ids .size ()));
299287 }
300288
301289 private int numHits (String indexName ) throws Exception {
0 commit comments