You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by rm...@apache.org on 2014/06/04 20:53:53 UTC

svn commit: r1600423 [2/2] - in /lucene/dev/branches/branch_4x: ./ lucene/ lucene/codecs/ lucene/codecs/src/java/org/apache/lucene/codecs/diskdv/ lucene/codecs/src/java/org/apache/lucene/codecs/memory/ lucene/core/ lucene/core/src/java/org/apache/lucen...

Modified: lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestTieredMergePolicy.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestTieredMergePolicy.java?rev=1600423&r1=1600422&r2=1600423&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestTieredMergePolicy.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestTieredMergePolicy.java Wed Jun  4 18:53:51 2014
@@ -220,7 +220,7 @@ public class TestTieredMergePolicy exten
     TieredMergePolicy tmp = (TieredMergePolicy) iwc.getMergePolicy();
     tmp.setFloorSegmentMB(0.00001);
     // We need stable sizes for each segment:
-    iwc.setCodec(Codec.forName("Lucene46"));
+    iwc.setCodec(Codec.forName("Lucene49"));
     iwc.setMergeScheduler(new SerialMergeScheduler());
     iwc.setMaxBufferedDocs(100);
     iwc.setRAMBufferSizeMB(-1);

Modified: lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/util/TestNamedSPILoader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/util/TestNamedSPILoader.java?rev=1600423&r1=1600422&r2=1600423&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/util/TestNamedSPILoader.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/util/TestNamedSPILoader.java Wed Jun  4 18:53:51 2014
@@ -26,8 +26,8 @@ import org.apache.lucene.codecs.Codec;
 public class TestNamedSPILoader extends LuceneTestCase {
   
   public void testLookup() {
-    Codec codec = Codec.forName("Lucene46");
-    assertEquals("Lucene46", codec.getName());
+    Codec codec = Codec.forName("Lucene49");
+    assertEquals("Lucene49", codec.getName());
   }
   
   // we want an exception if its not found.
@@ -40,6 +40,6 @@ public class TestNamedSPILoader extends 
   
   public void testAvailableServices() {
     Set<String> codecs = Codec.availableCodecs();
-    assertTrue(codecs.contains("Lucene46"));
+    assertTrue(codecs.contains("Lucene49"));
   }
 }

Modified: lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/util/packed/TestPackedInts.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/util/packed/TestPackedInts.java?rev=1600423&r1=1600422&r2=1600423&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/util/packed/TestPackedInts.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/util/packed/TestPackedInts.java Wed Jun  4 18:53:51 2014
@@ -1123,7 +1123,7 @@ public class TestPackedInts extends Luce
   
       final Directory dir = newDirectory();
       final IndexOutput out = dir.createOutput("out.bin", IOContext.DEFAULT);
-      final BlockPackedWriter writer = new BlockPackedWriter(out, blockSize, PackedInts.COMPACT);
+      final BlockPackedWriter writer = new BlockPackedWriter(out, blockSize);
       for (int i = 0; i < valueCount; ++i) {
         assertEquals(i, writer.ord());
         writer.add(values[i]);
@@ -1247,7 +1247,7 @@ public class TestPackedInts extends Luce
     final int blockSize = 1 << TestUtil.nextInt(random(), 20, 22);
     final Directory dir = newDirectory();
     final IndexOutput out = dir.createOutput("out.bin", IOContext.DEFAULT);
-    final BlockPackedWriter writer = new BlockPackedWriter(out, blockSize, PackedInts.COMPACT);
+    final BlockPackedWriter writer = new BlockPackedWriter(out, blockSize);
     long value = random().nextInt() & 0xFFFFFFFFL;
     long valueOffset = TestUtil.nextLong(random(), 0, valueCount - 1);
     for (long i = 0; i < valueCount; ) {

Modified: lucene/dev/branches/branch_4x/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggester.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggester.java?rev=1600423&r1=1600422&r2=1600423&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggester.java (original)
+++ lucene/dev/branches/branch_4x/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggester.java Wed Jun  4 18:53:51 2014
@@ -32,7 +32,7 @@ import org.apache.lucene.analysis.TokenS
 import org.apache.lucene.analysis.ngram.EdgeNGramTokenFilter;
 import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
 import org.apache.lucene.analysis.tokenattributes.OffsetAttribute;
-import org.apache.lucene.codecs.lucene46.Lucene46Codec;
+import org.apache.lucene.codecs.lucene49.Lucene49Codec;
 import org.apache.lucene.document.BinaryDocValuesField;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
@@ -184,7 +184,7 @@ public class AnalyzingInfixSuggester ext
    *  codec to use. */
   protected IndexWriterConfig getIndexWriterConfig(Version matchVersion, Analyzer indexAnalyzer, IndexWriterConfig.OpenMode openMode) {
     IndexWriterConfig iwc = new IndexWriterConfig(matchVersion, indexAnalyzer);
-    iwc.setCodec(new Lucene46Codec());
+    iwc.setCodec(new Lucene49Codec());
     iwc.setOpenMode(openMode);
 
     // This way all merged segments will be sorted at

Modified: lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingCodec.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingCodec.java?rev=1600423&r1=1600422&r2=1600423&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingCodec.java (original)
+++ lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingCodec.java Wed Jun  4 18:53:51 2014
@@ -23,10 +23,10 @@ import org.apache.lucene.codecs.NormsFor
 import org.apache.lucene.codecs.PostingsFormat;
 import org.apache.lucene.codecs.StoredFieldsFormat;
 import org.apache.lucene.codecs.TermVectorsFormat;
-import org.apache.lucene.codecs.lucene46.Lucene46Codec;
+import org.apache.lucene.codecs.lucene49.Lucene49Codec;
 
 /**
- * Acts like {@link Lucene46Codec} but with additional asserts.
+ * Acts like {@link Lucene49Codec} but with additional asserts.
  */
 public final class AssertingCodec extends FilterCodec {
 
@@ -37,7 +37,7 @@ public final class AssertingCodec extend
   private final NormsFormat norms = new AssertingNormsFormat();
 
   public AssertingCodec() {
-    super("Asserting", new Lucene46Codec());
+    super("Asserting", new Lucene49Codec());
   }
 
   @Override

Modified: lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingDocValuesFormat.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingDocValuesFormat.java?rev=1600423&r1=1600422&r2=1600423&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingDocValuesFormat.java (original)
+++ lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingDocValuesFormat.java Wed Jun  4 18:53:51 2014
@@ -24,7 +24,7 @@ import java.util.NoSuchElementException;
 import org.apache.lucene.codecs.DocValuesConsumer;
 import org.apache.lucene.codecs.DocValuesFormat;
 import org.apache.lucene.codecs.DocValuesProducer;
-import org.apache.lucene.codecs.lucene45.Lucene45DocValuesFormat;
+import org.apache.lucene.codecs.lucene49.Lucene49DocValuesFormat;
 import org.apache.lucene.index.AssertingAtomicReader;
 import org.apache.lucene.index.BinaryDocValues;
 import org.apache.lucene.index.FieldInfo;
@@ -39,10 +39,10 @@ import org.apache.lucene.util.FixedBitSe
 import org.apache.lucene.util.LongBitSet;
 
 /**
- * Just like {@link Lucene45DocValuesFormat} but with additional asserts.
+ * Just like {@link Lucene49DocValuesFormat} but with additional asserts.
  */
 public class AssertingDocValuesFormat extends DocValuesFormat {
-  private final DocValuesFormat in = new Lucene45DocValuesFormat();
+  private final DocValuesFormat in = new Lucene49DocValuesFormat();
   
   public AssertingDocValuesFormat() {
     super("Asserting");

Modified: lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/codecs/cheapbastard/CheapBastardCodec.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/codecs/cheapbastard/CheapBastardCodec.java?rev=1600423&r1=1600422&r2=1600423&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/codecs/cheapbastard/CheapBastardCodec.java (original)
+++ lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/codecs/cheapbastard/CheapBastardCodec.java Wed Jun  4 18:53:51 2014
@@ -28,7 +28,7 @@ import org.apache.lucene.codecs.diskdv.D
 import org.apache.lucene.codecs.lucene40.Lucene40StoredFieldsFormat;
 import org.apache.lucene.codecs.lucene40.Lucene40TermVectorsFormat;
 import org.apache.lucene.codecs.lucene41.Lucene41PostingsFormat;
-import org.apache.lucene.codecs.lucene46.Lucene46Codec;
+import org.apache.lucene.codecs.lucene49.Lucene49Codec;
 
 /** Codec that tries to use as little ram as possible because he spent all his money on beer */
 // TODO: better name :) 
@@ -45,7 +45,7 @@ public class CheapBastardCodec extends F
   private final NormsFormat norms = new DiskNormsFormat();
 
   public CheapBastardCodec() {
-    super("CheapBastard", new Lucene46Codec());
+    super("CheapBastard", new Lucene49Codec());
   }
   
   @Override

Modified: lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/codecs/compressing/CompressingCodec.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/codecs/compressing/CompressingCodec.java?rev=1600423&r1=1600422&r2=1600423&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/codecs/compressing/CompressingCodec.java (original)
+++ lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/codecs/compressing/CompressingCodec.java Wed Jun  4 18:53:51 2014
@@ -23,13 +23,13 @@ import org.apache.lucene.codecs.FilterCo
 import org.apache.lucene.codecs.StoredFieldsFormat;
 import org.apache.lucene.codecs.TermVectorsFormat;
 import org.apache.lucene.codecs.compressing.dummy.DummyCompressingCodec;
-import org.apache.lucene.codecs.lucene46.Lucene46Codec;
+import org.apache.lucene.codecs.lucene49.Lucene49Codec;
 
 import com.carrotsearch.randomizedtesting.generators.RandomInts;
 
 /**
  * A codec that uses {@link CompressingStoredFieldsFormat} for its stored
- * fields and delegates to {@link Lucene46Codec} for everything else.
+ * fields and delegates to {@link Lucene49Codec} for everything else.
  */
 public abstract class CompressingCodec extends FilterCodec {
 
@@ -73,7 +73,7 @@ public abstract class CompressingCodec e
    * Creates a compressing codec with a given segment suffix
    */
   public CompressingCodec(String name, String segmentSuffix, CompressionMode compressionMode, int chunkSize) {
-    super(name, new Lucene46Codec());
+    super(name, new Lucene49Codec());
     this.storedFieldsFormat = new CompressingStoredFieldsFormat(name, segmentSuffix, compressionMode, chunkSize);
     this.termVectorsFormat = new CompressingTermVectorsFormat(name, segmentSuffix, compressionMode, chunkSize);
   }

Modified: lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene42/Lucene42DocValuesConsumer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene42/Lucene42DocValuesConsumer.java?rev=1600423&r1=1600422&r2=1600423&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene42/Lucene42DocValuesConsumer.java (original)
+++ lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene42/Lucene42DocValuesConsumer.java Wed Jun  4 18:53:51 2014
@@ -169,7 +169,7 @@ class Lucene42DocValuesConsumer extends 
       data.writeLong(gcd);
       data.writeVInt(BLOCK_SIZE);
 
-      final BlockPackedWriter writer = new BlockPackedWriter(data, BLOCK_SIZE, PackedInts.COMPACT);
+      final BlockPackedWriter writer = new BlockPackedWriter(data, BLOCK_SIZE);
       for (Number nv : values) {
         long value = nv == null ? 0 : nv.longValue();
         writer.add((value - minValue) / gcd);
@@ -181,7 +181,7 @@ class Lucene42DocValuesConsumer extends 
       meta.writeVInt(PackedInts.VERSION_CURRENT);
       data.writeVInt(BLOCK_SIZE);
 
-      final BlockPackedWriter writer = new BlockPackedWriter(data, BLOCK_SIZE, PackedInts.COMPACT);
+      final BlockPackedWriter writer = new BlockPackedWriter(data, BLOCK_SIZE);
       for (Number nv : values) {
         writer.add(nv == null ? 0 : nv.longValue());
       }

Modified: lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene45/Lucene45RWCodec.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene45/Lucene45RWCodec.java?rev=1600423&r1=1600422&r2=1600423&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene45/Lucene45RWCodec.java (original)
+++ lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene45/Lucene45RWCodec.java Wed Jun  4 18:53:51 2014
@@ -19,10 +19,13 @@ package org.apache.lucene.codecs.lucene4
 
 import java.io.IOException;
 
+import org.apache.lucene.codecs.DocValuesFormat;
 import org.apache.lucene.codecs.FieldInfosFormat;
 import org.apache.lucene.codecs.FieldInfosWriter;
+import org.apache.lucene.codecs.NormsFormat;
 import org.apache.lucene.codecs.lucene42.Lucene42FieldInfosFormat;
 import org.apache.lucene.codecs.lucene42.Lucene42FieldInfosWriter;
+import org.apache.lucene.codecs.lucene42.Lucene42NormsFormat;
 import org.apache.lucene.util.LuceneTestCase;
 
 /**
@@ -46,4 +49,11 @@ public class Lucene45RWCodec extends Luc
   public FieldInfosFormat fieldInfosFormat() {
     return fieldInfosFormat;
   }
+  
+  private static final NormsFormat norms = new Lucene42NormsFormat();
+
+  @Override
+  public NormsFormat normsFormat() {
+    return norms;
+  }
 }

Modified: lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/index/BaseStoredFieldsFormatTestCase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/index/BaseStoredFieldsFormatTestCase.java?rev=1600423&r1=1600422&r2=1600423&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/index/BaseStoredFieldsFormatTestCase.java (original)
+++ lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/index/BaseStoredFieldsFormatTestCase.java Wed Jun  4 18:53:51 2014
@@ -32,7 +32,7 @@ import java.util.concurrent.atomic.Atomi
 import org.apache.lucene.analysis.MockAnalyzer;
 import org.apache.lucene.codecs.Codec;
 import org.apache.lucene.codecs.StoredFieldsFormat;
-import org.apache.lucene.codecs.lucene46.Lucene46Codec;
+import org.apache.lucene.codecs.lucene49.Lucene49Codec;
 import org.apache.lucene.codecs.simpletext.SimpleTextCodec;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.DoubleField;
@@ -490,7 +490,7 @@ public abstract class BaseStoredFieldsFo
     // get another codec, other than the default: so we are merging segments across different codecs
     final Codec otherCodec;
     if ("SimpleText".equals(Codec.getDefault().getName())) {
-      otherCodec = new Lucene46Codec();
+      otherCodec = new Lucene49Codec();
     } else {
       otherCodec = new SimpleTextCodec();
     }

Modified: lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/index/RandomCodec.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/index/RandomCodec.java?rev=1600423&r1=1600422&r2=1600423&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/index/RandomCodec.java (original)
+++ lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/index/RandomCodec.java Wed Jun  4 18:53:51 2014
@@ -35,8 +35,8 @@ import org.apache.lucene.codecs.bloom.Te
 import org.apache.lucene.codecs.diskdv.DiskDocValuesFormat;
 import org.apache.lucene.codecs.lucene41.Lucene41PostingsFormat;
 import org.apache.lucene.codecs.lucene41ords.Lucene41WithOrds;
-import org.apache.lucene.codecs.lucene45.Lucene45DocValuesFormat;
-import org.apache.lucene.codecs.lucene46.Lucene46Codec;
+import org.apache.lucene.codecs.lucene49.Lucene49Codec;
+import org.apache.lucene.codecs.lucene49.Lucene49DocValuesFormat;
 import org.apache.lucene.codecs.memory.DirectPostingsFormat;
 import org.apache.lucene.codecs.memory.MemoryDocValuesFormat;
 import org.apache.lucene.codecs.memory.MemoryPostingsFormat;
@@ -64,7 +64,7 @@ import org.apache.lucene.util.TestUtil;
  * documents in different orders and the test will still be deterministic
  * and reproducable.
  */
-public class RandomCodec extends Lucene46Codec {
+public class RandomCodec extends Lucene49Codec {
   /** Shuffled list of postings formats to use for new mappings */
   private List<PostingsFormat> formats = new ArrayList<>();
   
@@ -152,7 +152,7 @@ public class RandomCodec extends Lucene4
         new MemoryPostingsFormat(false, random.nextFloat()));
     
     addDocValues(avoidCodecs,
-        new Lucene45DocValuesFormat(),
+        new Lucene49DocValuesFormat(),
         new DiskDocValuesFormat(),
         new MemoryDocValuesFormat(),
         new SimpleTextDocValuesFormat(),

Modified: lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/store/BaseDirectoryTestCase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/store/BaseDirectoryTestCase.java?rev=1600423&r1=1600422&r2=1600423&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/store/BaseDirectoryTestCase.java (original)
+++ lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/store/BaseDirectoryTestCase.java Wed Jun  4 18:53:51 2014
@@ -668,5 +668,200 @@ public abstract class BaseDirectoryTestC
     
     fsdir.close();
   }
+  
+  // random access APIs
+  
+  public void testRandomLong() throws Exception {
+    Directory dir = getDirectory(createTempDir("testLongs"));
+    IndexOutput output = dir.createOutput("longs", newIOContext(random()));
+    int num = TestUtil.nextInt(random(), 50, 3000);
+    long longs[] = new long[num];
+    for (int i = 0; i < longs.length; i++) {
+      longs[i] = TestUtil.nextLong(random(), Long.MIN_VALUE, Long.MAX_VALUE);
+      output.writeLong(longs[i]);
+    }
+    output.close();
+    
+    // slice
+    IndexInput input = dir.openInput("longs", newIOContext(random()));
+    RandomAccessInput slice = input.randomAccessSlice(0, input.length());
+    for (int i = 0; i < longs.length; i++) {
+      assertEquals(longs[i], slice.readLong(i * 8));
+    }
+    
+    // subslices
+    for (int i = 1; i < longs.length; i++) {
+      long offset = i * 8;
+      RandomAccessInput subslice = input.randomAccessSlice(offset, input.length() - offset);
+      for (int j = i; j < longs.length; j++) {
+        assertEquals(longs[j], subslice.readLong((j - i) * 8));
+      }
+    }
+    
+    // with padding
+    for (int i = 0; i < 7; i++) {
+      String name = "longs-" + i;
+      IndexOutput o = dir.createOutput(name, newIOContext(random()));
+      byte junk[] = new byte[i];
+      random().nextBytes(junk);
+      o.writeBytes(junk, junk.length);
+      input.seek(0);
+      o.copyBytes(input, input.length());
+      o.close();
+      IndexInput padded = dir.openInput(name, newIOContext(random()));
+      RandomAccessInput whole = padded.randomAccessSlice(i, padded.length() - i);
+      for (int j = 0; j < longs.length; j++) {
+        assertEquals(longs[j], whole.readLong(j * 8));
+      }
+      padded.close();
+    }
+    
+    input.close();
+    dir.close();
+  }
+  
+  public void testRandomInt() throws Exception {
+    Directory dir = getDirectory(createTempDir("testInts"));
+    IndexOutput output = dir.createOutput("ints", newIOContext(random()));
+    int num = TestUtil.nextInt(random(), 50, 3000);
+    int ints[] = new int[num];
+    for (int i = 0; i < ints.length; i++) {
+      ints[i] = random().nextInt();
+      output.writeInt(ints[i]);
+    }
+    output.close();
+    
+    // slice
+    IndexInput input = dir.openInput("ints", newIOContext(random()));
+    RandomAccessInput slice = input.randomAccessSlice(0, input.length());
+    for (int i = 0; i < ints.length; i++) {
+      assertEquals(ints[i], slice.readInt(i * 4));
+    }
+    
+    // subslices
+    for (int i = 1; i < ints.length; i++) {
+      long offset = i * 4;
+      RandomAccessInput subslice = input.randomAccessSlice(offset, input.length() - offset);
+      for (int j = i; j < ints.length; j++) {
+        assertEquals(ints[j], subslice.readInt((j - i) * 4));
+      }
+    }
+    
+    // with padding
+    for (int i = 0; i < 7; i++) {
+      String name = "ints-" + i;
+      IndexOutput o = dir.createOutput(name, newIOContext(random()));
+      byte junk[] = new byte[i];
+      random().nextBytes(junk);
+      o.writeBytes(junk, junk.length);
+      input.seek(0);
+      o.copyBytes(input, input.length());
+      o.close();
+      IndexInput padded = dir.openInput(name, newIOContext(random()));
+      RandomAccessInput whole = padded.randomAccessSlice(i, padded.length() - i);
+      for (int j = 0; j < ints.length; j++) {
+        assertEquals(ints[j], whole.readInt(j * 4));
+      }
+      padded.close();
+    }
+    input.close();
+    dir.close();
+  }
+  
+  public void testRandomShort() throws Exception {
+    Directory dir = getDirectory(createTempDir("testShorts"));
+    IndexOutput output = dir.createOutput("shorts", newIOContext(random()));
+    int num = TestUtil.nextInt(random(), 50, 3000);
+    short shorts[] = new short[num];
+    for (int i = 0; i < shorts.length; i++) {
+      shorts[i] = (short) random().nextInt();
+      output.writeShort(shorts[i]);
+    }
+    output.close();
+    
+    // slice
+    IndexInput input = dir.openInput("shorts", newIOContext(random()));
+    RandomAccessInput slice = input.randomAccessSlice(0, input.length());
+    for (int i = 0; i < shorts.length; i++) {
+      assertEquals(shorts[i], slice.readShort(i * 2));
+    }
+    
+    // subslices
+    for (int i = 1; i < shorts.length; i++) {
+      long offset = i * 2;
+      RandomAccessInput subslice = input.randomAccessSlice(offset, input.length() - offset);
+      for (int j = i; j < shorts.length; j++) {
+        assertEquals(shorts[j], subslice.readShort((j - i) * 2));
+      }
+    }
+    
+    // with padding
+    for (int i = 0; i < 7; i++) {
+      String name = "shorts-" + i;
+      IndexOutput o = dir.createOutput(name, newIOContext(random()));
+      byte junk[] = new byte[i];
+      random().nextBytes(junk);
+      o.writeBytes(junk, junk.length);
+      input.seek(0);
+      o.copyBytes(input, input.length());
+      o.close();
+      IndexInput padded = dir.openInput(name, newIOContext(random()));
+      RandomAccessInput whole = padded.randomAccessSlice(i, padded.length() - i);
+      for (int j = 0; j < shorts.length; j++) {
+        assertEquals(shorts[j], whole.readShort(j * 2));
+      }
+      padded.close();
+    }
+    input.close();
+    dir.close();
+  }
+  
+  public void testRandomByte() throws Exception {
+    Directory dir = getDirectory(createTempDir("testBytes"));
+    IndexOutput output = dir.createOutput("bytes", newIOContext(random()));
+    int num = TestUtil.nextInt(random(), 50, 3000);
+    byte bytes[] = new byte[num];
+    random().nextBytes(bytes);
+    for (int i = 0; i < bytes.length; i++) {
+      output.writeByte(bytes[i]);
+    }
+    output.close();
+    
+    // slice
+    IndexInput input = dir.openInput("bytes", newIOContext(random()));
+    RandomAccessInput slice = input.randomAccessSlice(0, input.length());
+    for (int i = 0; i < bytes.length; i++) {
+      assertEquals(bytes[i], slice.readByte(i));
+    }
+    
+    // subslices
+    for (int i = 1; i < bytes.length; i++) {
+      long offset = i;
+      RandomAccessInput subslice = input.randomAccessSlice(offset, input.length() - offset);
+      for (int j = i; j < bytes.length; j++) {
+        assertEquals(bytes[j], subslice.readByte(j - i));
+      }
+    }
+    
+    // with padding
+    for (int i = 0; i < 7; i++) {
+      String name = "bytes-" + i;
+      IndexOutput o = dir.createOutput(name, newIOContext(random()));
+      byte junk[] = new byte[i];
+      random().nextBytes(junk);
+      o.writeBytes(junk, junk.length);
+      input.seek(0);
+      o.copyBytes(input, input.length());
+      o.close();
+      IndexInput padded = dir.openInput(name, newIOContext(random()));
+      RandomAccessInput whole = padded.randomAccessSlice(i, padded.length() - i);
+      for (int j = 0; j < bytes.length; j++) {
+        assertEquals(bytes[j], whole.readByte(j));
+      }
+      padded.close();
+    }
+    input.close();
+    dir.close();
+  }
 }
 

Modified: lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/util/TestRuleSetupAndRestoreClassEnv.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/util/TestRuleSetupAndRestoreClassEnv.java?rev=1600423&r1=1600422&r2=1600423&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/util/TestRuleSetupAndRestoreClassEnv.java (original)
+++ lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/util/TestRuleSetupAndRestoreClassEnv.java Wed Jun  4 18:53:51 2014
@@ -40,7 +40,8 @@ import org.apache.lucene.codecs.lucene40
 import org.apache.lucene.codecs.lucene41.Lucene41RWCodec;
 import org.apache.lucene.codecs.lucene42.Lucene42RWCodec;
 import org.apache.lucene.codecs.lucene45.Lucene45RWCodec;
-import org.apache.lucene.codecs.lucene46.Lucene46Codec;
+import org.apache.lucene.codecs.lucene46.Lucene46RWCodec;
+import org.apache.lucene.codecs.lucene49.Lucene49Codec;
 import org.apache.lucene.codecs.mockrandom.MockRandomPostingsFormat;
 import org.apache.lucene.codecs.simpletext.SimpleTextCodec;
 import org.apache.lucene.index.RandomCodec;
@@ -158,11 +159,11 @@ final class TestRuleSetupAndRestoreClass
     LuceneTestCase.OLD_FORMAT_IMPERSONATION_IS_ACTIVE = false;
     
     savedCodec = Codec.getDefault();
-    int randomVal = random.nextInt(10);
+    int randomVal = random.nextInt(12);
     if ("Lucene3x".equals(TEST_CODEC) || ("random".equals(TEST_CODEC) &&
                                           "random".equals(TEST_POSTINGSFORMAT) &&
                                           "random".equals(TEST_DOCVALUESFORMAT) &&
-                                          randomVal == 3 &&
+                                          randomVal == 10 &&
                                           !shouldAvoidCodec("Lucene3x"))) { // preflex-only setup
       codec = Codec.forName("Lucene3x");
       assert (codec instanceof PreFlexRWCodec) : "fix your classpath to have tests-framework.jar before lucene-core.jar";
@@ -194,11 +195,19 @@ final class TestRuleSetupAndRestoreClass
     } else if ("Lucene45".equals(TEST_CODEC) || ("random".equals(TEST_CODEC) &&
                                                  "random".equals(TEST_POSTINGSFORMAT) &&
                                                  "random".equals(TEST_DOCVALUESFORMAT) &&
-                                                  randomVal == 5 &&
+                                                  randomVal == 3 &&
                                                   !shouldAvoidCodec("Lucene45"))) { 
       codec = Codec.forName("Lucene45");
       LuceneTestCase.OLD_FORMAT_IMPERSONATION_IS_ACTIVE = true;
       assert codec instanceof Lucene45RWCodec : "fix your classpath to have tests-framework.jar before lucene-core.jar";
+    } else if ("Lucene46".equals(TEST_CODEC) || ("random".equals(TEST_CODEC) &&
+                                                 "random".equals(TEST_POSTINGSFORMAT) &&
+                                                 "random".equals(TEST_DOCVALUESFORMAT) &&
+                                                  randomVal == 4 &&
+                                                  !shouldAvoidCodec("Lucene46"))) { 
+      codec = Codec.forName("Lucene46");
+      LuceneTestCase.OLD_FORMAT_IMPERSONATION_IS_ACTIVE = true;
+      assert codec instanceof Lucene46RWCodec : "fix your classpath to have tests-framework.jar before lucene-core.jar";
     } else if (("random".equals(TEST_POSTINGSFORMAT) == false) || ("random".equals(TEST_DOCVALUESFORMAT) == false)) {
       // the user wired postings or DV: this is messy
       // refactor into RandomCodec....
@@ -214,12 +223,13 @@ final class TestRuleSetupAndRestoreClass
       
       final DocValuesFormat dvFormat;
       if ("random".equals(TEST_DOCVALUESFORMAT)) {
-        dvFormat = DocValuesFormat.forName("Lucene45");
+        // TODO: huh?
+        dvFormat = DocValuesFormat.forName("Lucene49");
       } else {
         dvFormat = DocValuesFormat.forName(TEST_DOCVALUESFORMAT);
       }
       
-      codec = new Lucene46Codec() {       
+      codec = new Lucene49Codec() {       
         @Override
         public PostingsFormat getPostingsFormatForField(String field) {
           return format;

Modified: lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/util/TestUtil.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/util/TestUtil.java?rev=1600423&r1=1600422&r2=1600423&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/util/TestUtil.java (original)
+++ lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/util/TestUtil.java Wed Jun  4 18:53:51 2014
@@ -46,7 +46,7 @@ import java.util.zip.ZipFile;
 import org.apache.lucene.codecs.Codec;
 import org.apache.lucene.codecs.DocValuesFormat;
 import org.apache.lucene.codecs.PostingsFormat;
-import org.apache.lucene.codecs.lucene46.Lucene46Codec;
+import org.apache.lucene.codecs.lucene49.Lucene49Codec;
 import org.apache.lucene.codecs.perfield.PerFieldDocValuesFormat;
 import org.apache.lucene.codecs.perfield.PerFieldPostingsFormat;
 import org.apache.lucene.document.BinaryDocValuesField;
@@ -682,7 +682,7 @@ public final class TestUtil {
     if (LuceneTestCase.VERBOSE) {
       System.out.println("forcing postings format to:" + format);
     }
-    return new Lucene46Codec() {
+    return new Lucene49Codec() {
       @Override
       public PostingsFormat getPostingsFormatForField(String field) {
         return format;
@@ -700,7 +700,7 @@ public final class TestUtil {
     if (LuceneTestCase.VERBOSE) {
       System.out.println("forcing docvalues format to:" + format);
     }
-    return new Lucene46Codec() {
+    return new Lucene49Codec() {
       @Override
       public DocValuesFormat getDocValuesFormatForField(String field) {
         return format;

Modified: lucene/dev/branches/branch_4x/lucene/test-framework/src/resources/META-INF/services/org.apache.lucene.codecs.Codec
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/test-framework/src/resources/META-INF/services/org.apache.lucene.codecs.Codec?rev=1600423&r1=1600422&r2=1600423&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/test-framework/src/resources/META-INF/services/org.apache.lucene.codecs.Codec (original)
+++ lucene/dev/branches/branch_4x/lucene/test-framework/src/resources/META-INF/services/org.apache.lucene.codecs.Codec Wed Jun  4 18:53:51 2014
@@ -24,3 +24,4 @@ org.apache.lucene.codecs.lucene40.Lucene
 org.apache.lucene.codecs.lucene41.Lucene41RWCodec
 org.apache.lucene.codecs.lucene42.Lucene42RWCodec
 org.apache.lucene.codecs.lucene45.Lucene45RWCodec
+org.apache.lucene.codecs.lucene46.Lucene46RWCodec

Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/core/SchemaCodecFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/core/SchemaCodecFactory.java?rev=1600423&r1=1600422&r2=1600423&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/core/SchemaCodecFactory.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/core/SchemaCodecFactory.java Wed Jun  4 18:53:51 2014
@@ -3,7 +3,7 @@ package org.apache.solr.core;
 import org.apache.lucene.codecs.Codec;
 import org.apache.lucene.codecs.DocValuesFormat;
 import org.apache.lucene.codecs.PostingsFormat;
-import org.apache.lucene.codecs.lucene46.Lucene46Codec;
+import org.apache.lucene.codecs.lucene49.Lucene49Codec;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.schema.SchemaField;
 import org.apache.solr.util.plugin.SolrCoreAware;
@@ -51,7 +51,7 @@ public class SchemaCodecFactory extends 
   @Override
   public void init(NamedList args) {
     super.init(args);
-    codec = new Lucene46Codec() {
+    codec = new Lucene49Codec() {
       @Override
       public PostingsFormat getPostingsFormatForField(String field) {
         final SchemaField schemaField = core.getLatestSchema().getFieldOrNull(field);

Modified: lucene/dev/branches/branch_4x/solr/core/src/test-files/solr/collection1/conf/schema_codec.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/test-files/solr/collection1/conf/schema_codec.xml?rev=1600423&r1=1600422&r2=1600423&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/test-files/solr/collection1/conf/schema_codec.xml (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/test-files/solr/collection1/conf/schema_codec.xml Wed Jun  4 18:53:51 2014
@@ -22,7 +22,7 @@
   <fieldType name="string_standard" class="solr.StrField" postingsFormat="Lucene41"/>
 
   <fieldType name="string_disk" class="solr.StrField" docValuesFormat="Disk" />
-  <fieldType name="string_memory" class="solr.StrField" docValuesFormat="Lucene45" />
+  <fieldType name="string_memory" class="solr.StrField" docValuesFormat="Lucene49" />
 
   <fieldType name="string" class="solr.StrField" />
 

Modified: lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/core/TestCodecSupport.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/core/TestCodecSupport.java?rev=1600423&r1=1600422&r2=1600423&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/core/TestCodecSupport.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/core/TestCodecSupport.java Wed Jun  4 18:53:51 2014
@@ -55,10 +55,10 @@ public class TestCodecSupport extends So
     PerFieldDocValuesFormat format = (PerFieldDocValuesFormat) codec.docValuesFormat();
     assertEquals("Disk", format.getDocValuesFormatForField(schemaField.getName()).getName());
     schemaField = fields.get("string_memory_f");
-    assertEquals("Lucene45",
+    assertEquals("Lucene49",
         format.getDocValuesFormatForField(schemaField.getName()).getName());
     schemaField = fields.get("string_f");
-    assertEquals("Lucene45",
+    assertEquals("Lucene49",
         format.getDocValuesFormatForField(schemaField.getName()).getName());
   }
 
@@ -80,7 +80,7 @@ public class TestCodecSupport extends So
 
     assertEquals("Disk", format.getDocValuesFormatForField("foo_disk").getName());
     assertEquals("Disk", format.getDocValuesFormatForField("bar_disk").getName());
-    assertEquals("Lucene45", format.getDocValuesFormatForField("foo_memory").getName());
-    assertEquals("Lucene45", format.getDocValuesFormatForField("bar_memory").getName());
+    assertEquals("Lucene49", format.getDocValuesFormatForField("foo_memory").getName());
+    assertEquals("Lucene49", format.getDocValuesFormatForField("bar_memory").getName());
   }
 }