@@ -407,6 +407,59 @@ public void testReadSegmentInfosExtendedCompatibility() throws IOException {
407
407
dir .close ();
408
408
}
409
409
410
+ /**
411
+ * Since the implementation in {@link Lucene#readSegmentInfosExtendedCompatibility(Directory, Version)}
412
+ * is a workaround, this test verifies that the response from this method is equivalent to
413
+ * {@link Lucene#readSegmentInfos(Directory)} if the version is N-1
414
+ */
415
+ public void testReadSegmentInfosExtendedCompatibilityBaseCase () throws IOException {
416
+ MockDirectoryWrapper dir = newMockDirectory ();
417
+ IndexWriterConfig iwc = newIndexWriterConfig ();
418
+ IndexWriter writer = new IndexWriter (dir , iwc );
419
+ Document doc = new Document ();
420
+ doc .add (new TextField ("id" , "1" , random ().nextBoolean () ? Field .Store .YES : Field .Store .NO ));
421
+ writer .addDocument (doc );
422
+ writer .commit ();
423
+ SegmentInfos expectedSI = Lucene .readSegmentInfos (dir );
424
+ SegmentInfos actualSI = Lucene .readSegmentInfosExtendedCompatibility (dir , Version .CURRENT );
425
+ assertEquals (Lucene .getNumDocs (expectedSI ), Lucene .getNumDocs (actualSI ));
426
+ assertEquals (expectedSI .getGeneration (), actualSI .getGeneration ());
427
+ assertEquals (expectedSI .getSegmentsFileName (), actualSI .getSegmentsFileName ());
428
+ assertEquals (expectedSI .getVersion (), actualSI .getVersion ());
429
+ assertEquals (expectedSI .getCommitLuceneVersion (), actualSI .getCommitLuceneVersion ());
430
+ assertEquals (expectedSI .getMinSegmentLuceneVersion (), actualSI .getMinSegmentLuceneVersion ());
431
+ assertEquals (expectedSI .getIndexCreatedVersionMajor (), actualSI .getIndexCreatedVersionMajor ());
432
+ assertEquals (expectedSI .getUserData (), actualSI .getUserData ());
433
+
434
+ int numDocsToIndex = randomIntBetween (10 , 50 );
435
+ List <Term > deleteTerms = new ArrayList <>();
436
+ for (int i = 0 ; i < numDocsToIndex ; i ++) {
437
+ doc = new Document ();
438
+ doc .add (new TextField ("id" , "doc_" + i , random ().nextBoolean () ? Field .Store .YES : Field .Store .NO ));
439
+ deleteTerms .add (new Term ("id" , "doc_" + i ));
440
+ writer .addDocument (doc );
441
+ }
442
+ int numDocsToDelete = randomIntBetween (0 , numDocsToIndex );
443
+ Collections .shuffle (deleteTerms , random ());
444
+ for (int i = 0 ; i < numDocsToDelete ; i ++) {
445
+ Term remove = deleteTerms .remove (0 );
446
+ writer .deleteDocuments (remove );
447
+ }
448
+ writer .commit ();
449
+ expectedSI = Lucene .readSegmentInfos (dir );
450
+ actualSI = Lucene .readSegmentInfosExtendedCompatibility (dir , Version .CURRENT );
451
+ assertEquals (Lucene .getNumDocs (expectedSI ), Lucene .getNumDocs (actualSI ));
452
+ assertEquals (expectedSI .getGeneration (), actualSI .getGeneration ());
453
+ assertEquals (expectedSI .getSegmentsFileName (), actualSI .getSegmentsFileName ());
454
+ assertEquals (expectedSI .getVersion (), actualSI .getVersion ());
455
+ assertEquals (expectedSI .getCommitLuceneVersion (), actualSI .getCommitLuceneVersion ());
456
+ assertEquals (expectedSI .getMinSegmentLuceneVersion (), actualSI .getMinSegmentLuceneVersion ());
457
+ assertEquals (expectedSI .getIndexCreatedVersionMajor (), actualSI .getIndexCreatedVersionMajor ());
458
+ assertEquals (expectedSI .getUserData (), actualSI .getUserData ());
459
+ writer .close ();
460
+ dir .close ();
461
+ }
462
+
410
463
public void testCount () throws Exception {
411
464
Directory dir = newDirectory ();
412
465
RandomIndexWriter w = new RandomIndexWriter (random (), dir );
0 commit comments