public virtual void TestLongMatchs() { // match length >= 20 var decompressed = new byte[RandomInts.RandomInt32Between(Random, 300, 1024)]; for (int i = 0; i < decompressed.Length; ++i) { decompressed[i] = (byte)i; } Test(decompressed); }
public virtual void TestLongLiterals() { // long literals (length >= 16) which are not the last literals var decompressed = RandomArray(RandomInts.RandomInt32Between(Random, 400, 1024), 256); int matchRef = Random.Next(30); int matchOff = RandomInts.RandomInt32Between(Random, decompressed.Length - 40, decompressed.Length - 20); int matchLength = RandomInts.RandomInt32Between(Random, 4, 10); Array.Copy(decompressed, matchRef, decompressed, matchOff, matchLength); Test(decompressed); }
public virtual void TestStringUnion() { List <BytesRef> strings = new List <BytesRef>(); for (int i = RandomInts.RandomInt32Between(Random, 0, 1000); --i >= 0;) { strings.Add(new BytesRef(TestUtil.RandomUnicodeString(Random))); } strings.Sort(); Automaton union = BasicAutomata.MakeStringUnion(strings); Assert.IsTrue(union.IsDeterministic); Assert.IsTrue(BasicOperations.SameLanguage(union, NaiveUnion(strings))); }
public virtual void TestDeletePartiallyWrittenFilesIfAbort() { Directory dir = NewDirectory(); IndexWriterConfig iwConf = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random)); iwConf.SetMaxBufferedDocs(RandomInts.RandomInt32Between(Random, 2, 30)); iwConf.SetCodec(CompressingCodec.RandomInstance(Random)); // disable CFS because this test checks file names iwConf.SetMergePolicy(NewLogMergePolicy(false)); iwConf.SetUseCompoundFile(false); RandomIndexWriter iw = new RandomIndexWriter(Random, dir, iwConf); Document validDoc = new Document(); validDoc.Add(new Int32Field("id", 0, Field.Store.YES)); iw.AddDocument(validDoc); iw.Commit(); // make sure that #writeField will fail to trigger an abort Document invalidDoc = new Document(); FieldType fieldType = new FieldType(); fieldType.IsStored = true; invalidDoc.Add(new FieldAnonymousClass(this, fieldType)); try { Assert.Throws <ArgumentException>(() => { iw.AddDocument(invalidDoc); iw.Commit(); }); } finally { int counter = 0; foreach (string fileName in dir.ListAll()) { if (fileName.EndsWith(".fdt", StringComparison.Ordinal) || fileName.EndsWith(".fdx", StringComparison.Ordinal)) { counter++; } } // Only one .fdt and one .fdx files must have been found Assert.AreEqual(2, counter); iw.Dispose(); dir.Dispose(); } }
[Timeout(1500000)] // 25 minutes public virtual void Test() { // LUCENENET specific - disable the test if not 64 bit AssumeTrue("This test consumes too much RAM be run on x86.", Constants.RUNTIME_IS_64BIT); MockDirectoryWrapper dir = new MockDirectoryWrapper(Random, new MMapDirectory(CreateTempDir("4GBStoredFields"))); dir.Throttling = Throttling.NEVER; var config = new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random)) .SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH) .SetRAMBufferSizeMB(256.0) .SetMergeScheduler(new ConcurrentMergeScheduler()) .SetMergePolicy(NewLogMergePolicy(false, 10)) .SetOpenMode(OpenMode.CREATE); IndexWriter w = new IndexWriter(dir, config); MergePolicy mp = w.Config.MergePolicy; if (mp is LogByteSizeMergePolicy) { // 1 petabyte: ((LogByteSizeMergePolicy)mp).MaxMergeMB = 1024 * 1024 * 1024; } Document doc = new Document(); FieldType ft = new FieldType(); ft.IsIndexed = false; ft.IsStored = true; ft.Freeze(); int valueLength = RandomInts.RandomInt32Between(Random, 1 << 13, 1 << 20); var value = new byte[valueLength]; for (int i = 0; i < valueLength; ++i) { // random so that even compressing codecs can't compress it value[i] = (byte)Random.Next(256); } Field f = new Field("fld", value, ft); doc.Add(f); int numDocs = (int)((1L << 32) / valueLength + 100); for (int i = 0; i < numDocs; ++i) { w.AddDocument(doc); if (Verbose && i % (numDocs / 10) == 0) { Console.WriteLine(i + " of " + numDocs + "..."); } } w.ForceMerge(1); w.Dispose(); if (Verbose) { bool found = false; foreach (string file in dir.ListAll()) { if (file.EndsWith(".fdt", StringComparison.Ordinal)) { long fileLength = dir.FileLength(file); if (fileLength >= 1L << 32) { found = true; } Console.WriteLine("File length of " + file + " : " + fileLength); } } if (!found) { Console.WriteLine("No .fdt file larger than 4GB, test bug?"); } } DirectoryReader rd = DirectoryReader.Open(dir); Document sd = rd.Document(numDocs - 1); Assert.IsNotNull(sd); Assert.AreEqual(1, sd.Fields.Count); BytesRef valueRef = sd.GetBinaryValue("fld"); Assert.IsNotNull(valueRef); Assert.AreEqual(new BytesRef(value), valueRef); rd.Dispose(); dir.Dispose(); }
/// <summary> /// Creates a random <see cref="CompressingCodec"/> that is using a segment suffix. /// </summary> public static CompressingCodec RandomInstance(Random random, bool withSegmentSuffix) { return(RandomInstance(random, RandomInts.RandomInt32Between(random, 1, 500), withSegmentSuffix)); }
/// <summary> /// Creates a random <see cref="CompressingCodec"/> that is using an empty segment /// suffix. /// </summary> public static CompressingCodec RandomInstance(Random random) { return(RandomInstance(random, RandomInts.RandomInt32Between(random, 1, 500), false)); }