You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mi...@apache.org on 2014/10/07 00:01:52 UTC
svn commit: r1629774 - in /lucene/dev/trunk/lucene: ./
backward-codecs/src/test/org/apache/lucene/codecs/lucene40/
backward-codecs/src/test/org/apache/lucene/codecs/lucene46/
codecs/src/java/org/apache/lucene/codecs/simpletext/
codecs/src/test/org/apac...
Author: mikemccand
Date: Mon Oct 6 22:01:51 2014
New Revision: 1629774
URL: http://svn.apache.org/r1629774
Log:
LUCENE-5992: add SI tests; remove FieldInfos from SegmentInfosWrite.write
Added:
lucene/dev/trunk/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene40/TestLucene40SegmentInfoFormat.java (with props)
lucene/dev/trunk/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene46/TestLucene46SegmentInfoFormat.java (with props)
lucene/dev/trunk/lucene/codecs/src/test/org/apache/lucene/codecs/simpletext/TestSimpleTextSegmentInfoFormat.java (with props)
lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/codecs/lucene50/TestLucene50SegmentInfoFormat.java (with props)
lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/index/BaseSegmentInfoFormatTestCase.java (with props)
Modified:
lucene/dev/trunk/lucene/CHANGES.txt
lucene/dev/trunk/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene40/Lucene40SegmentInfoWriter.java
lucene/dev/trunk/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene46/Lucene46SegmentInfoWriter.java
lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextSegmentInfoWriter.java
lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/codecs/SegmentInfoWriter.java
lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/codecs/lucene50/Lucene50SegmentInfoWriter.java
lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/DocumentsWriterPerThread.java
lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/codecs/cranky/CrankySegmentInfoFormat.java
Modified: lucene/dev/trunk/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/CHANGES.txt?rev=1629774&r1=1629773&r2=1629774&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/CHANGES.txt (original)
+++ lucene/dev/trunk/lucene/CHANGES.txt Mon Oct 6 22:01:51 2014
@@ -151,6 +151,8 @@ API Changes
to return an instance optimized for merging instead of searching.
(Mike McCandless, Robert Muir)
+* LUCENE-5992: Remove FieldInfos from SegmentInfosWriter.write API. (Robert Muir, Mike McCandless)
+
Bug Fixes
* LUCENE-5650: Enforce read-only access to any path outside the temporary
Modified: lucene/dev/trunk/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene40/Lucene40SegmentInfoWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene40/Lucene40SegmentInfoWriter.java?rev=1629774&r1=1629773&r2=1629774&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene40/Lucene40SegmentInfoWriter.java (original)
+++ lucene/dev/trunk/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene40/Lucene40SegmentInfoWriter.java Mon Oct 6 22:01:51 2014
@@ -22,7 +22,6 @@ import java.util.Collections;
import org.apache.lucene.codecs.CodecUtil;
import org.apache.lucene.codecs.SegmentInfoWriter;
-import org.apache.lucene.index.FieldInfos;
import org.apache.lucene.index.IndexFileNames;
import org.apache.lucene.index.SegmentInfo;
import org.apache.lucene.store.Directory;
@@ -43,7 +42,7 @@ public final class Lucene40SegmentInfoWr
/** Save a single segment's info. */
@Override
- public void write(Directory dir, SegmentInfo si, FieldInfos fis, IOContext ioContext) throws IOException {
+ public void write(Directory dir, SegmentInfo si, IOContext ioContext) throws IOException {
final String fileName = IndexFileNames.segmentFileName(si.name, "", Lucene40SegmentInfoFormat.SI_EXTENSION);
si.addFile(fileName);
Added: lucene/dev/trunk/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene40/TestLucene40SegmentInfoFormat.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene40/TestLucene40SegmentInfoFormat.java?rev=1629774&view=auto
==============================================================================
--- lucene/dev/trunk/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene40/TestLucene40SegmentInfoFormat.java (added)
+++ lucene/dev/trunk/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene40/TestLucene40SegmentInfoFormat.java Mon Oct 6 22:01:51 2014
@@ -0,0 +1,58 @@
+package org.apache.lucene.codecs.lucene40;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.apache.lucene.codecs.Codec;
+import org.apache.lucene.index.BaseSegmentInfoFormatTestCase;
+import org.apache.lucene.util.Version;
+
+/**
+ * Tests Lucene40InfoFormat
+ */
+public class TestLucene40SegmentInfoFormat extends BaseSegmentInfoFormatTestCase {
+
+ @Override
+ protected Version[] getVersions() {
+ // NOTE: some of these bugfix releases we never actually "wrote",
+ // but staying on the safe side...
+ return new Version[] {
+ Version.LUCENE_4_0_0_ALPHA,
+ Version.LUCENE_4_0_0_BETA,
+ Version.LUCENE_4_0_0,
+ Version.LUCENE_4_1_0,
+ Version.LUCENE_4_2_0,
+ Version.LUCENE_4_2_1,
+ Version.LUCENE_4_3_0,
+ Version.LUCENE_4_3_1,
+ Version.LUCENE_4_4_0,
+ Version.LUCENE_4_5_0,
+ Version.LUCENE_4_5_1,
+ };
+ }
+
+ @Override
+ @Deprecated
+ protected void assertIDEquals(byte[] expected, byte[] actual) {
+ assertNull(actual); // we don't support IDs
+ }
+
+ @Override
+ protected Codec getCodec() {
+ return new Lucene40RWCodec();
+ }
+}
Modified: lucene/dev/trunk/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene46/Lucene46SegmentInfoWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene46/Lucene46SegmentInfoWriter.java?rev=1629774&r1=1629773&r2=1629774&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene46/Lucene46SegmentInfoWriter.java (original)
+++ lucene/dev/trunk/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene46/Lucene46SegmentInfoWriter.java Mon Oct 6 22:01:51 2014
@@ -21,7 +21,6 @@ import java.io.IOException;
import org.apache.lucene.codecs.CodecUtil;
import org.apache.lucene.codecs.SegmentInfoWriter;
-import org.apache.lucene.index.FieldInfos;
import org.apache.lucene.index.IndexFileNames;
import org.apache.lucene.index.SegmentInfo;
import org.apache.lucene.store.Directory;
@@ -43,7 +42,7 @@ final class Lucene46SegmentInfoWriter ex
/** Save a single segment's info. */
@Override
- public void write(Directory dir, SegmentInfo si, FieldInfos fis, IOContext ioContext) throws IOException {
+ public void write(Directory dir, SegmentInfo si, IOContext ioContext) throws IOException {
final String fileName = IndexFileNames.segmentFileName(si.name, "", Lucene46SegmentInfoFormat.SI_EXTENSION);
si.addFile(fileName);
Added: lucene/dev/trunk/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene46/TestLucene46SegmentInfoFormat.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene46/TestLucene46SegmentInfoFormat.java?rev=1629774&view=auto
==============================================================================
--- lucene/dev/trunk/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene46/TestLucene46SegmentInfoFormat.java (added)
+++ lucene/dev/trunk/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene46/TestLucene46SegmentInfoFormat.java Mon Oct 6 22:01:51 2014
@@ -0,0 +1,57 @@
+package org.apache.lucene.codecs.lucene46;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.apache.lucene.codecs.Codec;
+import org.apache.lucene.index.BaseSegmentInfoFormatTestCase;
+import org.apache.lucene.util.Version;
+
+/**
+ * Tests Lucene46InfoFormat
+ */
+public class TestLucene46SegmentInfoFormat extends BaseSegmentInfoFormatTestCase {
+
+ @Override
+ protected Version[] getVersions() {
+ // NOTE: some of these bugfix releases we never actually "wrote",
+ // but staying on the safe side...
+ return new Version[] {
+ Version.LUCENE_4_6_0,
+ Version.LUCENE_4_6_1,
+ Version.LUCENE_4_7_0,
+ Version.LUCENE_4_7_1,
+ Version.LUCENE_4_7_2,
+ Version.LUCENE_4_8_0,
+ Version.LUCENE_4_8_1,
+ Version.LUCENE_4_9_0,
+ Version.LUCENE_4_10_0,
+ Version.LUCENE_4_10_1
+ };
+ }
+
+ @Override
+ @Deprecated
+ protected void assertIDEquals(byte[] expected, byte[] actual) {
+ assertNull(actual); // we don't support IDs
+ }
+
+ @Override
+ protected Codec getCodec() {
+ return new Lucene46RWCodec();
+ }
+}
Modified: lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextSegmentInfoWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextSegmentInfoWriter.java?rev=1629774&r1=1629773&r2=1629774&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextSegmentInfoWriter.java (original)
+++ lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextSegmentInfoWriter.java Mon Oct 6 22:01:51 2014
@@ -22,7 +22,6 @@ import java.util.Map;
import java.util.Set;
import org.apache.lucene.codecs.SegmentInfoWriter;
-import org.apache.lucene.index.FieldInfos;
import org.apache.lucene.index.IndexFileNames;
import org.apache.lucene.index.SegmentInfo;
import org.apache.lucene.store.Directory;
@@ -51,7 +50,7 @@ public class SimpleTextSegmentInfoWriter
final static BytesRef SI_ID = new BytesRef(" id ");
@Override
- public void write(Directory dir, SegmentInfo si, FieldInfos fis, IOContext ioContext) throws IOException {
+ public void write(Directory dir, SegmentInfo si, IOContext ioContext) throws IOException {
String segFileName = IndexFileNames.segmentFileName(si.name, "", SimpleTextSegmentInfoFormat.SI_EXTENSION);
si.addFile(segFileName);
Added: lucene/dev/trunk/lucene/codecs/src/test/org/apache/lucene/codecs/simpletext/TestSimpleTextSegmentInfoFormat.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/codecs/src/test/org/apache/lucene/codecs/simpletext/TestSimpleTextSegmentInfoFormat.java?rev=1629774&view=auto
==============================================================================
--- lucene/dev/trunk/lucene/codecs/src/test/org/apache/lucene/codecs/simpletext/TestSimpleTextSegmentInfoFormat.java (added)
+++ lucene/dev/trunk/lucene/codecs/src/test/org/apache/lucene/codecs/simpletext/TestSimpleTextSegmentInfoFormat.java Mon Oct 6 22:01:51 2014
@@ -0,0 +1,39 @@
+package org.apache.lucene.codecs.simpletext;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.apache.lucene.codecs.Codec;
+import org.apache.lucene.index.BaseSegmentInfoFormatTestCase;
+import org.apache.lucene.util.Version;
+
+/**
+ * Tests SimpleTextSegmentInfoFormat
+ */
+public class TestSimpleTextSegmentInfoFormat extends BaseSegmentInfoFormatTestCase {
+ private final Codec codec = new SimpleTextCodec();
+
+ @Override
+ protected Version[] getVersions() {
+ return new Version[] { Version.LATEST };
+ }
+
+ @Override
+ protected Codec getCodec() {
+ return codec;
+ }
+}
Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/codecs/SegmentInfoWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/codecs/SegmentInfoWriter.java?rev=1629774&r1=1629773&r2=1629774&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/codecs/SegmentInfoWriter.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/codecs/SegmentInfoWriter.java Mon Oct 6 22:01:51 2014
@@ -19,7 +19,6 @@ package org.apache.lucene.codecs;
import java.io.IOException;
-import org.apache.lucene.index.FieldInfos;
import org.apache.lucene.index.SegmentInfo;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.IOContext;
@@ -39,5 +38,5 @@ public abstract class SegmentInfoWriter
* Write {@link SegmentInfo} data.
* @throws IOException If an I/O error occurs
*/
- public abstract void write(Directory dir, SegmentInfo info, FieldInfos fis, IOContext ioContext) throws IOException;
+ public abstract void write(Directory dir, SegmentInfo info, IOContext ioContext) throws IOException;
}
Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/codecs/lucene50/Lucene50SegmentInfoWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/codecs/lucene50/Lucene50SegmentInfoWriter.java?rev=1629774&r1=1629773&r2=1629774&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/codecs/lucene50/Lucene50SegmentInfoWriter.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/codecs/lucene50/Lucene50SegmentInfoWriter.java Mon Oct 6 22:01:51 2014
@@ -22,7 +22,6 @@ import java.util.Set;
import org.apache.lucene.codecs.CodecUtil;
import org.apache.lucene.codecs.SegmentInfoWriter;
-import org.apache.lucene.index.FieldInfos;
import org.apache.lucene.index.IndexFileNames;
import org.apache.lucene.index.SegmentInfo;
import org.apache.lucene.store.Directory;
@@ -46,7 +45,7 @@ public class Lucene50SegmentInfoWriter e
/** Save a single segment's info. */
@Override
- public void write(Directory dir, SegmentInfo si, FieldInfos fis, IOContext ioContext) throws IOException {
+ public void write(Directory dir, SegmentInfo si, IOContext ioContext) throws IOException {
final String fileName = IndexFileNames.segmentFileName(si.name, "", Lucene50SegmentInfoFormat.SI_EXTENSION);
si.addFile(fileName);
Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/DocumentsWriterPerThread.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/DocumentsWriterPerThread.java?rev=1629774&r1=1629773&r2=1629774&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/DocumentsWriterPerThread.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/DocumentsWriterPerThread.java Mon Oct 6 22:01:51 2014
@@ -517,7 +517,7 @@ class DocumentsWriterPerThread {
// creating CFS so that 1) .si isn't slurped into CFS,
// and 2) .si reflects useCompoundFile=true change
// above:
- codec.segmentInfoFormat().getSegmentInfoWriter().write(directory, newSegment.info, flushedSegment.fieldInfos, context);
+ codec.segmentInfoFormat().getSegmentInfoWriter().write(directory, newSegment.info, context);
// TODO: ideally we would freeze newSegment here!!
// because any changes after writing the .si will be
Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java?rev=1629774&r1=1629773&r2=1629774&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java Mon Oct 6 22:01:51 2014
@@ -2594,7 +2594,7 @@ public class IndexWriter implements Clos
// above:
success = false;
try {
- codec.segmentInfoFormat().getSegmentInfoWriter().write(trackingDir, info, mergeState.mergeFieldInfos, context);
+ codec.segmentInfoFormat().getSegmentInfoWriter().write(trackingDir, info, context);
success = true;
} finally {
if (!success) {
@@ -4060,7 +4060,7 @@ public class IndexWriter implements Clos
// above:
boolean success2 = false;
try {
- codec.segmentInfoFormat().getSegmentInfoWriter().write(directory, merge.info.info, mergeState.mergeFieldInfos, context);
+ codec.segmentInfoFormat().getSegmentInfoWriter().write(directory, merge.info.info, context);
success2 = true;
} finally {
if (!success2) {
Added: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/codecs/lucene50/TestLucene50SegmentInfoFormat.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/codecs/lucene50/TestLucene50SegmentInfoFormat.java?rev=1629774&view=auto
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/codecs/lucene50/TestLucene50SegmentInfoFormat.java (added)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/codecs/lucene50/TestLucene50SegmentInfoFormat.java Mon Oct 6 22:01:51 2014
@@ -0,0 +1,39 @@
+package org.apache.lucene.codecs.lucene50;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.apache.lucene.codecs.Codec;
+import org.apache.lucene.index.BaseSegmentInfoFormatTestCase;
+import org.apache.lucene.util.TestUtil;
+import org.apache.lucene.util.Version;
+
+/**
+ * Tests Lucene50SegmentInfoFormat
+ */
+public class TestLucene50SegmentInfoFormat extends BaseSegmentInfoFormatTestCase {
+
+ @Override
+ protected Version[] getVersions() {
+ return new Version[] { Version.LATEST };
+ }
+
+ @Override
+ protected Codec getCodec() {
+ return TestUtil.getDefaultCodec();
+ }
+}
Modified: lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/codecs/cranky/CrankySegmentInfoFormat.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/codecs/cranky/CrankySegmentInfoFormat.java?rev=1629774&r1=1629773&r2=1629774&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/codecs/cranky/CrankySegmentInfoFormat.java (original)
+++ lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/codecs/cranky/CrankySegmentInfoFormat.java Mon Oct 6 22:01:51 2014
@@ -23,7 +23,6 @@ import java.util.Random;
import org.apache.lucene.codecs.SegmentInfoFormat;
import org.apache.lucene.codecs.SegmentInfoReader;
import org.apache.lucene.codecs.SegmentInfoWriter;
-import org.apache.lucene.index.FieldInfos;
import org.apache.lucene.index.SegmentInfo;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.IOContext;
@@ -57,11 +56,11 @@ class CrankySegmentInfoFormat extends Se
}
@Override
- public void write(Directory dir, SegmentInfo info, FieldInfos fis, IOContext ioContext) throws IOException {
+ public void write(Directory dir, SegmentInfo info, IOContext ioContext) throws IOException {
if (random.nextInt(100) == 0) {
throw new IOException("Fake IOException from SegmentInfoWriter.write()");
}
- delegate.write(dir, info, fis, ioContext);
+ delegate.write(dir, info, ioContext);
}
}
}
Added: lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/index/BaseSegmentInfoFormatTestCase.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/index/BaseSegmentInfoFormatTestCase.java?rev=1629774&view=auto
==============================================================================
--- lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/index/BaseSegmentInfoFormatTestCase.java (added)
+++ lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/index/BaseSegmentInfoFormatTestCase.java Mon Oct 6 22:01:51 2014
@@ -0,0 +1,196 @@
+package org.apache.lucene.index;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.io.IOException;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.lucene.codecs.Codec;
+import org.apache.lucene.document.Document;
+import org.apache.lucene.document.StoredField;
+import org.apache.lucene.store.Directory;
+import org.apache.lucene.store.IOContext;
+import org.apache.lucene.util.StringHelper;
+import org.apache.lucene.util.TestUtil;
+import org.apache.lucene.util.Version;
+
+/**
+ * Abstract class to do basic tests for si format.
+ * NOTE: This test focuses on the si impl, nothing else.
+ * The [stretch] goal is for this test to be
+ * so thorough in testing a new si format that if this
+ * test passes, then all Lucene/Solr tests should also pass. Ie,
+ * if there is some bug in a given si Format that this
+ * test fails to catch then this test needs to be improved! */
+public abstract class BaseSegmentInfoFormatTestCase extends BaseIndexFileFormatTestCase {
+
+ /** Test files map */
+ public void testFiles() throws Exception {
+ Directory dir = newDirectory();
+ Codec codec = getCodec();
+ SegmentInfo info = new SegmentInfo(dir, getVersions()[0], "_123", 1, false, codec,
+ Collections.<String,String>emptyMap(), StringHelper.randomId());
+ info.setFiles(Collections.<String>emptySet());
+ codec.segmentInfoFormat().getSegmentInfoWriter().write(dir, info, IOContext.DEFAULT);
+ SegmentInfo info2 = codec.segmentInfoFormat().getSegmentInfoReader().read(dir, "_123", IOContext.DEFAULT);
+ assertEquals(info.files(), info2.files());
+ dir.close();
+ }
+
+ /** Tests SI writer adds itself to files... */
+ public void testAddsSelfToFiles() throws Exception {
+ Directory dir = newDirectory();
+ Codec codec = getCodec();
+ SegmentInfo info = new SegmentInfo(dir, getVersions()[0], "_123", 1, false, codec,
+ Collections.<String,String>emptyMap(), StringHelper.randomId());
+ Set<String> originalFiles = Collections.singleton("_123.a");
+ info.setFiles(originalFiles);
+ codec.segmentInfoFormat().getSegmentInfoWriter().write(dir, info, IOContext.DEFAULT);
+
+ Set<String> modifiedFiles = info.files();
+ assertTrue(modifiedFiles.containsAll(originalFiles));
+ assertTrue("did you forget to add yourself to files()", modifiedFiles.size() > originalFiles.size());
+
+ SegmentInfo info2 = codec.segmentInfoFormat().getSegmentInfoReader().read(dir, "_123", IOContext.DEFAULT);
+ assertEquals(info.files(), info2.files());
+ dir.close();
+ }
+
+ /** Test diagnostics map */
+ public void testDiagnostics() throws Exception {
+ Directory dir = newDirectory();
+ Codec codec = getCodec();
+ Map<String,String> diagnostics = new HashMap<>();
+ diagnostics.put("key1", "value1");
+ diagnostics.put("key2", "value2");
+ SegmentInfo info = new SegmentInfo(dir, getVersions()[0], "_123", 1, false, codec,
+ diagnostics, StringHelper.randomId());
+ info.setFiles(Collections.<String>emptySet());
+ codec.segmentInfoFormat().getSegmentInfoWriter().write(dir, info, IOContext.DEFAULT);
+ SegmentInfo info2 = codec.segmentInfoFormat().getSegmentInfoReader().read(dir, "_123", IOContext.DEFAULT);
+ assertEquals(diagnostics, info2.getDiagnostics());
+ dir.close();
+ }
+
+ /** Test unique ID */
+ public void testUniqueID() throws Exception {
+ Codec codec = getCodec();
+ Directory dir = newDirectory();
+ byte id[] = StringHelper.randomId();
+ SegmentInfo info = new SegmentInfo(dir, getVersions()[0], "_123", 1, false, codec,
+ Collections.<String,String>emptyMap(), id);
+ info.setFiles(Collections.<String>emptySet());
+ codec.segmentInfoFormat().getSegmentInfoWriter().write(dir, info, IOContext.DEFAULT);
+ SegmentInfo info2 = codec.segmentInfoFormat().getSegmentInfoReader().read(dir, "_123", IOContext.DEFAULT);
+ assertIDEquals(id, info2.getId());
+ dir.close();
+ }
+
+ /** Test versions */
+ public void testVersions() throws Exception {
+ Codec codec = getCodec();
+ for (Version v : getVersions()) {
+ Directory dir = newDirectory();
+ SegmentInfo info = new SegmentInfo(dir, v, "_123", 1, false, codec,
+ Collections.<String,String>emptyMap(), StringHelper.randomId());
+ info.setFiles(Collections.<String>emptySet());
+ codec.segmentInfoFormat().getSegmentInfoWriter().write(dir, info, IOContext.DEFAULT);
+ SegmentInfo info2 = codec.segmentInfoFormat().getSegmentInfoReader().read(dir, "_123", IOContext.DEFAULT);
+ assertEquals(info2.getVersion(), v);
+ dir.close();
+ }
+ }
+
+ /**
+ * Sets some otherwise hard-to-test properties:
+ * random segment names, ID values, document count, etc and round-trips
+ */
+ public void testRandom() throws Exception {
+ Codec codec = getCodec();
+ Version[] versions = getVersions();
+ for (int i = 0; i < 10; i++) {
+ Directory dir = newDirectory();
+ Version version = versions[random().nextInt(versions.length)];
+ String name = "_" + Integer.toString(random().nextInt(Integer.MAX_VALUE), Character.MAX_RADIX);
+ int docCount = TestUtil.nextInt(random(), 1, IndexWriter.MAX_DOCS);
+ boolean isCompoundFile = random().nextBoolean();
+ Set<String> files = new HashSet<>();
+ int numFiles = random().nextInt(10);
+ for (int j = 0; j < numFiles; j++) {
+ String file = IndexFileNames.segmentFileName(name, "", Integer.toString(j));
+ files.add(file);
+ dir.createOutput(file, IOContext.DEFAULT).close();
+ }
+ Map<String,String> diagnostics = new HashMap<>();
+ int numDiags = random().nextInt(10);
+ for (int j = 0; j < numDiags; j++) {
+ diagnostics.put(TestUtil.randomUnicodeString(random()),
+ TestUtil.randomUnicodeString(random()));
+ }
+ byte id[] = new byte[StringHelper.ID_LENGTH];
+ random().nextBytes(id);
+
+ SegmentInfo info = new SegmentInfo(dir, version, name, docCount, isCompoundFile, codec, diagnostics, id);
+ info.setFiles(files);
+ codec.segmentInfoFormat().getSegmentInfoWriter().write(dir, info, IOContext.DEFAULT);
+ SegmentInfo info2 = codec.segmentInfoFormat().getSegmentInfoReader().read(dir, name, IOContext.DEFAULT);
+ assertEquals(info, info2);
+
+ dir.close();
+ }
+ }
+
+ protected final void assertEquals(SegmentInfo expected, SegmentInfo actual) {
+ assertSame(expected.dir, actual.dir);
+ assertEquals(expected.name, actual.name);
+ assertEquals(expected.files(), actual.files());
+ // we don't assert this, because SI format has nothing to do with it... set by SIS
+ // assertSame(expected.getCodec(), actual.getCodec());
+ assertEquals(expected.getDiagnostics(), actual.getDiagnostics());
+ assertEquals(expected.getDocCount(), actual.getDocCount());
+ assertIDEquals(expected.getId(), actual.getId());
+ assertEquals(expected.getUseCompoundFile(), actual.getUseCompoundFile());
+ assertEquals(expected.getVersion(), actual.getVersion());
+ }
+
+ /** Returns the versions this SI should test */
+ protected abstract Version[] getVersions();
+
+ /**
+ * assert that unique id is equal.
+ * @deprecated only exists to be overridden by old codecs that didnt support this
+ */
+ @Deprecated
+ protected void assertIDEquals(byte expected[], byte actual[]) {
+ assertArrayEquals(expected, actual);
+ }
+
+ @Override
+ protected void addRandomFields(Document doc) {
+ doc.add(new StoredField("foobar", TestUtil.randomSimpleString(random())));
+ }
+
+ @Override
+ public void testRamBytesUsed() throws IOException {
+ assumeTrue("not applicable for this format", true);
+ }
+}