diff --git a/lucene/core/src/java/org/apache/lucene/util/compress/LZ4.java b/lucene/core/src/java/org/apache/lucene/util/compress/LZ4.java index 0b2945efc799..0b7f5d85a292 100644 --- a/lucene/core/src/java/org/apache/lucene/util/compress/LZ4.java +++ b/lucene/core/src/java/org/apache/lucene/util/compress/LZ4.java @@ -202,6 +202,9 @@ static abstract class HashTable { * offsets. A return value of {@code -1} indicates that no other index could * be found. */ abstract int previous(int off); + + // For testing + abstract boolean assertReset(); } /** @@ -263,6 +266,11 @@ public int previous(int off) { return -1; } + @Override + boolean assertReset() { + return true; + } + } /** @@ -369,6 +377,14 @@ int previous(int off) { } return -1; } + + @Override + boolean assertReset() { + for (int i = 0; i < chainTable.length; ++i) { + assert chainTable[i] == (short) 0xFFFF : i; + } + return true; + } } /** diff --git a/lucene/core/src/test/org/apache/lucene/util/compress/LZ4TestCase.java b/lucene/core/src/test/org/apache/lucene/util/compress/LZ4TestCase.java index e49cf4803e1d..81f84e47e786 100644 --- a/lucene/core/src/test/org/apache/lucene/util/compress/LZ4TestCase.java +++ b/lucene/core/src/test/org/apache/lucene/util/compress/LZ4TestCase.java @@ -30,6 +30,37 @@ public abstract class LZ4TestCase extends LuceneTestCase { protected abstract LZ4.HashTable newHashTable(); + protected static class AssertingHashTable extends LZ4.HashTable { + + private final LZ4.HashTable in; + + AssertingHashTable(LZ4.HashTable in) { + this.in = in; + } + + @Override + void reset(byte[] b, int off, int len) { + in.reset(b, off, len); + assertTrue(in.assertReset()); + } + + @Override + int get(int off) { + return in.get(off); + } + + @Override + int previous(int off) { + return in.previous(off); + } + + @Override + boolean assertReset() { + throw new UnsupportedOperationException(); + } + + } + private void doTest(byte[] data, LZ4.HashTable hashTable) throws IOException { int offset = random().nextBoolean() ? random().nextInt(10) diff --git a/lucene/core/src/test/org/apache/lucene/util/compress/TestFastLZ4.java b/lucene/core/src/test/org/apache/lucene/util/compress/TestFastLZ4.java index 076d04c66352..58709523802c 100644 --- a/lucene/core/src/test/org/apache/lucene/util/compress/TestFastLZ4.java +++ b/lucene/core/src/test/org/apache/lucene/util/compress/TestFastLZ4.java @@ -22,7 +22,8 @@ public class TestFastLZ4 extends LZ4TestCase { @Override protected HashTable newHashTable() { - return new LZ4.FastCompressionHashTable(); + LZ4.HashTable hashTable = new LZ4.FastCompressionHashTable(); + return new AssertingHashTable(hashTable); } } diff --git a/lucene/core/src/test/org/apache/lucene/util/compress/TestHighLZ4.java b/lucene/core/src/test/org/apache/lucene/util/compress/TestHighLZ4.java index b118f9473848..207940a0dc2f 100644 --- a/lucene/core/src/test/org/apache/lucene/util/compress/TestHighLZ4.java +++ b/lucene/core/src/test/org/apache/lucene/util/compress/TestHighLZ4.java @@ -22,7 +22,8 @@ public class TestHighLZ4 extends LZ4TestCase { @Override protected HashTable newHashTable() { - return new LZ4.HighCompressionHashTable(); + LZ4.HashTable hashTable = new LZ4.HighCompressionHashTable(); + return new AssertingHashTable(hashTable); } }