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 ;
@@ -242,12 +242,10 @@ public void testRestart() throws Exception {
242242
243243 private void assertRandomBulkOperations (String indexName , Function <Boolean , Map <String , Object >> sourceSupplier ) throws Exception {
244244 int numHits = numHits (indexName );
245- int totalBulkReqs = randomIntBetween (2 , 100 );
246- long totalDocs = numHits ;
245+ int totalBulkReqs = randomIntBetween (2 , 10 );
247246 Set <String > ids = new HashSet <>();
248-
249- for (int bulkReqs = numHits ; bulkReqs < totalBulkReqs ; bulkReqs ++) {
250- BulkRequestBuilder bulkReqBuilder = client ().prepareBulk ();
247+ for (int bulkReqs = 0 ; bulkReqs < totalBulkReqs ; bulkReqs ++) {
248+ BulkRequestBuilder bulkReqBuilder = client ().prepareBulk ().setRefreshPolicy (WriteRequest .RefreshPolicy .IMMEDIATE );
251249 int totalBulkSize = randomIntBetween (1 , 100 );
252250 for (int bulkSize = 0 ; bulkSize < totalBulkSize ; bulkSize ++) {
253251 if (ids .size () > 0 && rarely (random ())) {
@@ -257,24 +255,15 @@ private void assertRandomBulkOperations(String indexName, Function<Boolean, Map<
257255 bulkReqBuilder .add (request );
258256 continue ;
259257 }
260- String id = Long .toString (totalDocs ++);
261- boolean isIndexRequest = randomBoolean ();
258+ boolean isIndexRequest = ids .size () == 0 || randomBoolean ();
262259 Map <String , Object > source = sourceSupplier .apply (isIndexRequest );
263260 if (isIndexRequest ) {
261+ String id = randomAlphaOfLength (20 );
264262 bulkReqBuilder .add (new IndexRequestBuilder (client ()).setIndex (indexName ).setId (id ).setSource (source ));
265263 ids .add (id );
266264 } else {
267- boolean isUpsert = randomBoolean ();
268- UpdateRequestBuilder request = new UpdateRequestBuilder (client ()).setIndex (indexName ).setDoc (source );
269- if (isUpsert || ids .size () == 0 ) {
270- request .setDocAsUpsert (true );
271- } else {
272- // Update already existing document
273- id = randomFrom (ids );
274- }
275- request .setId (id );
276- bulkReqBuilder .add (request );
277- ids .add (id );
265+ String id = randomFrom (ids );
266+ bulkReqBuilder .add (new UpdateRequestBuilder (client ()).setIndex (indexName ).setId (id ).setDoc (source ));
278267 }
279268 }
280269 BulkResponse bulkResponse = bulkReqBuilder .get ();
@@ -293,8 +282,7 @@ private void assertRandomBulkOperations(String indexName, Function<Boolean, Map<
293282 }
294283 assertFalse (bulkResponse .hasFailures ());
295284 }
296- client ().admin ().indices ().refresh (new RefreshRequest (indexName )).get ();
297- assertThat (numHits (indexName ), equalTo (ids .size () + numHits ));
285+ assertThat (numHits (indexName ), equalTo (numHits + ids .size ()));
298286 }
299287
300288 private int numHits (String indexName ) throws Exception {
0 commit comments