mirror of https://github.com/apache/lucene.git
fix false failures from test bugs
This commit is contained in:
parent
79e384bac5
commit
47fb35c20a
|
@ -19,6 +19,7 @@ package org.apache.lucene.index;
|
|||
|
||||
import java.io.EOFException;
|
||||
import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
|
||||
import org.apache.lucene.analysis.MockAnalyzer;
|
||||
|
@ -80,9 +81,11 @@ public class TestAllFilesCheckIndexHeader extends LuceneTestCase {
|
|||
|
||||
private void checkIndexHeader(Directory dir) throws IOException {
|
||||
for(String name : dir.listAll()) {
|
||||
if (name.equals(IndexWriter.WRITE_LOCK_NAME) == false) {
|
||||
checkOneFile(dir, name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void checkOneFile(Directory dir, String victim) throws IOException {
|
||||
try (BaseDirectoryWrapper dirCopy = newDirectory()) {
|
||||
|
@ -99,14 +102,24 @@ public class TestAllFilesCheckIndexHeader extends LuceneTestCase {
|
|||
if (name.equals(victim) == false) {
|
||||
dirCopy.copyFrom(dir, name, name, IOContext.DEFAULT);
|
||||
} else {
|
||||
|
||||
// Iterate until our randomly generated bytes are indeed different from the first bytes of the file ... the vast majority of the
|
||||
// time this will only require one iteration!
|
||||
while (true) {
|
||||
try(IndexOutput out = dirCopy.createOutput(name, IOContext.DEFAULT);
|
||||
IndexInput in = dir.openInput(name, IOContext.DEFAULT)) {
|
||||
// keeps same file length, but replaces the first wrongBytes with random bytes:
|
||||
byte[] bytes = new byte[wrongBytes];
|
||||
random().nextBytes(bytes);
|
||||
out.writeBytes(bytes, 0, bytes.length);
|
||||
in.seek(wrongBytes);
|
||||
byte[] bytes2 = new byte[wrongBytes];
|
||||
in.readBytes(bytes2, 0, bytes2.length);
|
||||
if (Arrays.equals(bytes, bytes2) == false) {
|
||||
// We successfully randomly generated bytes that differ from the bytes in the file:
|
||||
out.copyBytes(in, victimLength - wrongBytes);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
dirCopy.sync(Collections.singleton(name));
|
||||
|
|
|
@ -80,9 +80,11 @@ public class TestAllFilesDetectTruncation extends LuceneTestCase {
|
|||
|
||||
private void checkTruncation(Directory dir) throws IOException {
|
||||
for(String name : dir.listAll()) {
|
||||
if (name.equals(IndexWriter.WRITE_LOCK_NAME) == false) {
|
||||
truncateOneFile(dir, name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void truncateOneFile(Directory dir, String victim) throws IOException {
|
||||
try (BaseDirectoryWrapper dirCopy = newDirectory()) {
|
||||
|
|
Loading…
Reference in New Issue