/// <summary> /// After suite cleanup (always invoked). /// </summary> public override void After(LuceneTestCase testInstance) { // LUCENENT specific - Not used in .NET //foreach (KeyValuePair<string, string> e in restoreProperties) //{ // SystemProperties.SetProperty(e.Key, e.Value); //} //restoreProperties.Clear(); Codec.Default = savedCodec; InfoStream.Default = savedInfoStream; if (savedLocale != null) { locale = savedLocale; #if FEATURE_CULTUREINFO_CURRENTCULTURE_SETTER CultureInfo.CurrentCulture = savedLocale; #else Thread.CurrentThread.CurrentCulture = savedLocale; #endif } if (savedTimeZone != null) { timeZone = savedTimeZone; } }
internal static string MaybeCreateTempFile(bool removeAfterClass = true) { string result = null; Stream temp = null; if (LuceneTestCase.TestLineDocsFile == LuceneTestCase.DEFAULT_LINE_DOCS_FILE) // Always GZipped { temp = typeof(LineFileDocs).FindAndGetManifestResourceStream(LuceneTestCase.TestLineDocsFile); } else if (LuceneTestCase.TestLineDocsFile.EndsWith(".gz", StringComparison.Ordinal)) { temp = new FileStream(LuceneTestCase.TestLineDocsFile, FileMode.Open, FileAccess.Read, FileShare.Read); } if (null != temp) { var file = removeAfterClass ? LuceneTestCase.CreateTempFile(TEMP_FILE_PREFIX, TEMP_FILE_SUFFIX) : FileSupport.CreateTempFile(TEMP_FILE_PREFIX, TEMP_FILE_SUFFIX); result = file.FullName; using (var gzs = new GZipStream(temp, CompressionMode.Decompress, leaveOpen: false)) using (Stream output = new FileStream(result, FileMode.Open, FileAccess.Write, FileShare.Read)) { gzs.CopyTo(output); } } return(result); }
// LUCENENET specific - this was added to unzip our LineDocsFile to a specific folder // so tests can be run without the overhead of seeking within a MemoryStream private Stream PrepareGZipStream(Stream input) { using (var gzs = new GZipStream(input, CompressionMode.Decompress, leaveOpen: false)) { FileInfo tempFile = LuceneTestCase.CreateTempFile(TEMP_FILE_PREFIX, TEMP_FILE_SUFFIX); tempFilePath = tempFile.FullName; Stream result = new FileStream(tempFilePath, FileMode.Open, FileAccess.ReadWrite, FileShare.Read); gzs.CopyTo(result); // Use the decompressed stream now return(new BufferedStream(result)); } }
/// <summary> /// Check codec restrictions. /// </summary> /// <exception cref="AssumptionViolatedException"> if the class does not work with a given codec. </exception> private void CheckCodecRestrictions(Codec codec) { LuceneTestCase.AssumeFalse("Class not allowed to use codec: " + codec.Name + ".", ShouldAvoidCodec(codec.Name)); if (codec is RandomCodec randomCodec && avoidCodecs.Count > 0) { foreach (string name in randomCodec.FormatNames) { LuceneTestCase.AssumeFalse("Class not allowed to use postings format: " + name + ".", ShouldAvoidCodec(name)); } } PostingsFormat pf = codec.PostingsFormat; LuceneTestCase.AssumeFalse("Class not allowed to use postings format: " + pf.Name + ".", ShouldAvoidCodec(pf.Name)); LuceneTestCase.AssumeFalse("Class not allowed to use postings format: " + LuceneTestCase.TestPostingsFormat + ".", ShouldAvoidCodec(LuceneTestCase.TestPostingsFormat)); }
public virtual void TestMaxFailures() { LuceneTestCase.ReplaceMaxFailureRule(new TestRuleIgnoreAfterMaxFailures(2)); JUnitCore core = new JUnitCore(); StringBuilder results = new StringBuilder(); core.addListener(new RunListenerAnonymousInnerClassHelper(this, results)); Result result = core.run(typeof(Nested)); Assert.AreEqual(500, result.RunCount); Assert.AreEqual(0, result.IgnoreCount); Assert.AreEqual(2, result.FailureCount); // Make sure we had exactly two failures followed by assumption-failures // resulting from ignored tests. Assert.IsTrue(results.ToString(), results.ToString().matches("(S*F){2}A+")); }
/// <summary> /// Check codec restrictions. /// </summary> /// <exception cref="AssumptionViolatedException"> if the class does not work with a given codec. </exception> private void CheckCodecRestrictions(Codec codec) { NUnit.Framework.Assume.That(true); LuceneTestCase.AssumeFalse("Class not allowed to use codec: " + codec.Name + ".", ShouldAvoidCodec(codec.Name)); if (codec is RandomCodec && avoidCodecs.Count > 0) { foreach (string name in ((RandomCodec)codec).FormatNames) { LuceneTestCase.AssumeFalse("Class not allowed to use postings format: " + name + ".", ShouldAvoidCodec(name)); } } PostingsFormat pf = codec.PostingsFormat; LuceneTestCase.AssumeFalse("Class not allowed to use postings format: " + pf.Name + ".", ShouldAvoidCodec(pf.Name)); LuceneTestCase.AssumeFalse("Class not allowed to use postings format: " + LuceneTestCase.TEST_POSTINGSFORMAT + ".", ShouldAvoidCodec(LuceneTestCase.TEST_POSTINGSFORMAT)); }
public virtual void TestZombieThreadFailures() { LuceneTestCase.ReplaceMaxFailureRule(new TestRuleIgnoreAfterMaxFailures(1)); JUnitCore core = new JUnitCore(); StringBuilder results = new StringBuilder(); core.addListener(new RunListenerAnonymousInnerClassHelper(this, results)); Result result = core.run(typeof(Nested2)); if (Nested2.Die != null) { Nested2.Die.countDown(); Nested2.Zombie.Join(); } base.PrevSysOut.println(results.ToString()); Assert.AreEqual(Nested2.TOTAL_ITERS, result.RunCount); Assert.AreEqual(results.ToString(), "SFAAAAAAAA", results.ToString()); }
public override void Evaluate() { s.evaluate(); Exception problem = null; try { LuceneTestCase.AssertSaneFieldCaches(d.DisplayName); } catch (Exception t) { problem = t; } FieldCache.DEFAULT.purgeAllCaches(); if (problem != null) { Rethrow.Rethrow(problem); } }
/// <summary> /// After suite cleanup (always invoked). /// </summary> public override void After(LuceneTestCase testInstance) { foreach (KeyValuePair <string, string> e in restoreProperties) { SystemProperties.SetProperty(e.Key, e.Value); } restoreProperties.Clear(); Codec.Default = savedCodec; InfoStream.Default = savedInfoStream; if (savedLocale != null) { locale = savedLocale; #if NETSTANDARD CultureInfo.CurrentCulture = savedLocale; #else Thread.CurrentThread.CurrentCulture = savedLocale; #endif } if (savedTimeZone != null) { timeZone = savedTimeZone; } }
public ComparatorAnonymousInnerClassHelper(LuceneTestCase outerInstance) { this.outerInstance = outerInstance; }
public override void Before(LuceneTestCase testInstance) { // LUCENENET specific - SOLR setup code removed // if verbose: print some debugging stuff about which codecs are loaded. if (LuceneTestCase.Verbose) { // LUCENENET: Only list the services if the underlying ICodecFactory // implements IServiceListable if (Codec.GetCodecFactory() is IServiceListable) { ICollection <string> codecs = Codec.AvailableCodecs; foreach (string codec in codecs) { Console.WriteLine("Loaded codec: '" + codec + "': " + Codec.ForName(codec).GetType().Name); } } // LUCENENET: Only list the services if the underlying IPostingsFormatFactory // implements IServiceListable if (PostingsFormat.GetPostingsFormatFactory() is IServiceListable) { ICollection <string> postingsFormats = PostingsFormat.AvailablePostingsFormats; foreach (string postingsFormat in postingsFormats) { Console.WriteLine("Loaded postingsFormat: '" + postingsFormat + "': " + PostingsFormat.ForName(postingsFormat).GetType().Name); } } } savedInfoStream = InfoStream.Default; Random random = LuceneTestCase.Random; bool v = random.NextBoolean(); if (LuceneTestCase.UseInfoStream) { InfoStream.Default = new ThreadNameFixingPrintStreamInfoStream(Console.Out); } else if (v) { InfoStream.Default = new NullInfoStream(); } Type targetClass = testInstance?.GetType() ?? LuceneTestCase.GetTestClass(); avoidCodecs = new JCG.HashSet <string>(); var suppressCodecsAttribute = targetClass.GetCustomAttribute <LuceneTestCase.SuppressCodecsAttribute>(); if (suppressCodecsAttribute != null) { avoidCodecs.UnionWith(suppressCodecsAttribute.Value); } // set back to default LuceneTestCase.OldFormatImpersonationIsActive = false; savedCodec = Codec.Default; int randomVal = random.Next(10); if ("Lucene3x".Equals(LuceneTestCase.TestCodec, StringComparison.Ordinal) || ("random".Equals(LuceneTestCase.TestCodec, StringComparison.Ordinal) && "random".Equals(LuceneTestCase.TestPostingsFormat, StringComparison.Ordinal) && "random".Equals(LuceneTestCase.TestDocValuesFormat, StringComparison.Ordinal) && randomVal == 3 && !ShouldAvoidCodec("Lucene3x"))) // preflex-only setup { codec = Codec.ForName("Lucene3x"); if (Debugging.AssertsEnabled) { Debugging.Assert((codec is PreFlexRWCodec), "fix your ICodecFactory to scan Lucene.Net.Tests before Lucene.Net.TestFramework"); } LuceneTestCase.OldFormatImpersonationIsActive = true; } else if ("Lucene40".Equals(LuceneTestCase.TestCodec, StringComparison.Ordinal) || ("random".Equals(LuceneTestCase.TestCodec, StringComparison.Ordinal) && "random".Equals(LuceneTestCase.TestPostingsFormat, StringComparison.Ordinal) && randomVal == 0 && !ShouldAvoidCodec("Lucene40"))) // 4.0 setup { codec = Codec.ForName("Lucene40"); LuceneTestCase.OldFormatImpersonationIsActive = true; if (Debugging.AssertsEnabled) { Debugging.Assert((codec is Lucene40RWCodec), "fix your ICodecFactory to scan Lucene.Net.Tests before Lucene.Net.TestFramework"); } if (Debugging.AssertsEnabled) { Debugging.Assert((PostingsFormat.ForName("Lucene40") is Lucene40RWPostingsFormat), "fix your IPostingsFormatFactory to scan Lucene.Net.Tests before Lucene.Net.TestFramework"); } } else if ("Lucene41".Equals(LuceneTestCase.TestCodec, StringComparison.Ordinal) || ("random".Equals(LuceneTestCase.TestCodec, StringComparison.Ordinal) && "random".Equals(LuceneTestCase.TestPostingsFormat, StringComparison.Ordinal) && "random".Equals(LuceneTestCase.TestDocValuesFormat, StringComparison.Ordinal) && randomVal == 1 && !ShouldAvoidCodec("Lucene41"))) { codec = Codec.ForName("Lucene41"); LuceneTestCase.OldFormatImpersonationIsActive = true; if (Debugging.AssertsEnabled) { Debugging.Assert((codec is Lucene41RWCodec), "fix your ICodecFactory to scan Lucene.Net.Tests before Lucene.Net.TestFramework"); } } else if ("Lucene42".Equals(LuceneTestCase.TestCodec, StringComparison.Ordinal) || ("random".Equals(LuceneTestCase.TestCodec, StringComparison.Ordinal) && "random".Equals(LuceneTestCase.TestPostingsFormat, StringComparison.Ordinal) && "random".Equals(LuceneTestCase.TestDocValuesFormat, StringComparison.Ordinal) && randomVal == 2 && !ShouldAvoidCodec("Lucene42"))) { codec = Codec.ForName("Lucene42"); LuceneTestCase.OldFormatImpersonationIsActive = true; if (Debugging.AssertsEnabled) { Debugging.Assert((codec is Lucene42RWCodec), "fix your ICodecFactory to scan Lucene.Net.Tests before Lucene.Net.TestFramework"); } } else if ("Lucene45".Equals(LuceneTestCase.TestCodec, StringComparison.Ordinal) || ("random".Equals(LuceneTestCase.TestCodec, StringComparison.Ordinal) && "random".Equals(LuceneTestCase.TestPostingsFormat, StringComparison.Ordinal) && "random".Equals(LuceneTestCase.TestDocValuesFormat, StringComparison.Ordinal) && randomVal == 5 && !ShouldAvoidCodec("Lucene45"))) { codec = Codec.ForName("Lucene45"); LuceneTestCase.OldFormatImpersonationIsActive = true; if (Debugging.AssertsEnabled) { Debugging.Assert((codec is Lucene45RWCodec), "fix your ICodecFactory to scan Lucene.Net.Tests before Lucene.Net.TestFramework"); } } else if (("random".Equals(LuceneTestCase.TestPostingsFormat, StringComparison.Ordinal) == false) || ("random".Equals(LuceneTestCase.TestDocValuesFormat, StringComparison.Ordinal) == false)) { // the user wired postings or DV: this is messy // refactor into RandomCodec.... PostingsFormat format; if ("random".Equals(LuceneTestCase.TestPostingsFormat, StringComparison.Ordinal)) { format = PostingsFormat.ForName("Lucene41"); } else if ("MockRandom".Equals(LuceneTestCase.TestPostingsFormat, StringComparison.Ordinal)) { format = new MockRandomPostingsFormat(new Random(random.Next())); } else { format = PostingsFormat.ForName(LuceneTestCase.TestPostingsFormat); } DocValuesFormat dvFormat; if ("random".Equals(LuceneTestCase.TestDocValuesFormat, StringComparison.Ordinal)) { dvFormat = DocValuesFormat.ForName("Lucene45"); } else { dvFormat = DocValuesFormat.ForName(LuceneTestCase.TestDocValuesFormat); } codec = new Lucene46CodecAnonymousClass(format, dvFormat); } else if ("SimpleText".Equals(LuceneTestCase.TestCodec, StringComparison.Ordinal) || ("random".Equals(LuceneTestCase.TestCodec, StringComparison.Ordinal) && randomVal == 9 && LuceneTestCase.Rarely(random) && !ShouldAvoidCodec("SimpleText"))) { codec = new SimpleTextCodec(); } else if ("CheapBastard".Equals(LuceneTestCase.TestCodec, StringComparison.Ordinal) || ("random".Equals(LuceneTestCase.TestCodec, StringComparison.Ordinal) && randomVal == 8 && !ShouldAvoidCodec("CheapBastard") && !ShouldAvoidCodec("Lucene41"))) { // we also avoid this codec if Lucene41 is avoided, since thats the postings format it uses. codec = new CheapBastardCodec(); } else if ("Asserting".Equals(LuceneTestCase.TestCodec, StringComparison.Ordinal) || ("random".Equals(LuceneTestCase.TestCodec, StringComparison.Ordinal) && randomVal == 6 && !ShouldAvoidCodec("Asserting"))) { codec = new AssertingCodec(); } else if ("Compressing".Equals(LuceneTestCase.TestCodec, StringComparison.Ordinal) || ("random".Equals(LuceneTestCase.TestCodec, StringComparison.Ordinal) && randomVal == 5 && !ShouldAvoidCodec("Compressing"))) { codec = CompressingCodec.RandomInstance(random); } else if (!"random".Equals(LuceneTestCase.TestCodec, StringComparison.Ordinal)) { codec = Codec.ForName(LuceneTestCase.TestCodec); } else if ("random".Equals(LuceneTestCase.TestPostingsFormat, StringComparison.Ordinal)) { codec = new RandomCodec(random, avoidCodecs); } else { if (Debugging.AssertsEnabled) { Debugging.Assert(false); } } Codec.Default = codec; // Initialize locale/ timezone. string testLocale = SystemProperties.GetProperty("tests:locale", "random"); // LUCENENET specific - reformatted with : string testTimeZone = SystemProperties.GetProperty("tests:timezone", "random"); // LUCENENET specific - reformatted with : // Always pick a random one for consistency (whether tests.locale was specified or not). savedLocale = CultureInfo.CurrentCulture; CultureInfo randomLocale = LuceneTestCase.RandomCulture(random); locale = testLocale.Equals("random", StringComparison.Ordinal) ? randomLocale : LuceneTestCase.CultureForName(testLocale); #if FEATURE_CULTUREINFO_CURRENTCULTURE_SETTER CultureInfo.CurrentCulture = locale; #else Thread.CurrentThread.CurrentCulture = locale; #endif // TimeZone.getDefault will set user.timezone to the default timezone of the user's locale. // So store the original property value and restore it at end. // LUCENENET specific - commented //restoreProperties["user:timezone"] = SystemProperties.GetProperty("user:timezone"); savedTimeZone = TimeZoneInfo.Local; TimeZoneInfo randomTimeZone = LuceneTestCase.RandomTimeZone(random); timeZone = testTimeZone.Equals("random", StringComparison.Ordinal) ? randomTimeZone : TimeZoneInfo.FindSystemTimeZoneById(testTimeZone); //TimeZone.Default = TimeZone; // LUCENENET NOTE: There doesn't seem to be an equivalent to this, but I don't think we need it. similarity = random.NextBoolean() ? (Similarity) new DefaultSimilarity() : new RandomSimilarityProvider(random); // Check codec restrictions once at class level. try { CheckCodecRestrictions(codec); } catch (Exception e) { Console.Error.WriteLine("NOTE: " + e.Message + " Suppressed codecs: " + avoidCodecs); throw; // LUCENENET: CA2200: Rethrow to preserve stack details (https://docs.microsoft.com/en-us/visualstudio/code-quality/ca2200-rethrow-to-preserve-stack-details) } }
public override void Before(LuceneTestCase testInstance) { // if verbose: print some debugging stuff about which codecs are loaded. if (LuceneTestCase.VERBOSE) { ICollection <string> codecs = Codec.AvailableCodecs(); foreach (string codec in codecs) { Console.WriteLine("Loaded codec: '" + codec + "': " + Codec.ForName(codec).GetType().Name); } ICollection <string> postingsFormats = PostingsFormat.AvailablePostingsFormats(); foreach (string postingsFormat in postingsFormats) { Console.WriteLine("Loaded postingsFormat: '" + postingsFormat + "': " + PostingsFormat.ForName(postingsFormat).GetType().Name); } } savedInfoStream = InfoStream.Default; Random random = LuceneTestCase.Random(); bool v = random.NextBoolean(); if (LuceneTestCase.INFOSTREAM) { InfoStream.Default = new ThreadNameFixingPrintStreamInfoStream(Console.Out); } else if (v) { InfoStream.Default = new NullInfoStream(); } Type targetClass = testInstance.GetType(); avoidCodecs = new HashSet <string>(); var suppressCodecsAttribute = targetClass.GetTypeInfo().GetCustomAttribute <LuceneTestCase.SuppressCodecsAttribute>(); if (suppressCodecsAttribute != null) { avoidCodecs.AddAll(suppressCodecsAttribute.Value); } // set back to default LuceneTestCase.OLD_FORMAT_IMPERSONATION_IS_ACTIVE = false; savedCodec = Codec.Default; int randomVal = random.Next(10); if ("Lucene3x".Equals(LuceneTestCase.TEST_CODEC, StringComparison.Ordinal) || ("random".Equals(LuceneTestCase.TEST_CODEC, StringComparison.Ordinal) && "random".Equals(LuceneTestCase.TEST_POSTINGSFORMAT, StringComparison.Ordinal) && "random".Equals(LuceneTestCase.TEST_DOCVALUESFORMAT, StringComparison.Ordinal) && randomVal == 3 && !ShouldAvoidCodec("Lucene3x"))) // preflex-only setup { codec = Codec.ForName("Lucene3x"); Debug.Assert((codec is PreFlexRWCodec), "fix your ICodecFactory to scan Lucene.Net.Tests before Lucene.Net.TestFramework"); LuceneTestCase.OLD_FORMAT_IMPERSONATION_IS_ACTIVE = true; } else if ("Lucene40".Equals(LuceneTestCase.TEST_CODEC, StringComparison.Ordinal) || ("random".Equals(LuceneTestCase.TEST_CODEC, StringComparison.Ordinal) && "random".Equals(LuceneTestCase.TEST_POSTINGSFORMAT, StringComparison.Ordinal) && randomVal == 0 && !ShouldAvoidCodec("Lucene40"))) // 4.0 setup { codec = Codec.ForName("Lucene40"); LuceneTestCase.OLD_FORMAT_IMPERSONATION_IS_ACTIVE = true; Debug.Assert((codec is Lucene40RWCodec), "fix your ICodecFactory to scan Lucene.Net.Tests before Lucene.Net.TestFramework"); Debug.Assert((PostingsFormat.ForName("Lucene40") is Lucene40RWPostingsFormat), "fix your IPostingsFormatFactory to scan Lucene.Net.Tests before Lucene.Net.TestFramework"); } else if ("Lucene41".Equals(LuceneTestCase.TEST_CODEC, StringComparison.Ordinal) || ("random".Equals(LuceneTestCase.TEST_CODEC, StringComparison.Ordinal) && "random".Equals(LuceneTestCase.TEST_POSTINGSFORMAT, StringComparison.Ordinal) && "random".Equals(LuceneTestCase.TEST_DOCVALUESFORMAT, StringComparison.Ordinal) && randomVal == 1 && !ShouldAvoidCodec("Lucene41"))) { codec = Codec.ForName("Lucene41"); LuceneTestCase.OLD_FORMAT_IMPERSONATION_IS_ACTIVE = true; Debug.Assert((codec is Lucene41RWCodec), "fix your ICodecFactory to scan Lucene.Net.Tests before Lucene.Net.TestFramework"); } else if ("Lucene42".Equals(LuceneTestCase.TEST_CODEC, StringComparison.Ordinal) || ("random".Equals(LuceneTestCase.TEST_CODEC, StringComparison.Ordinal) && "random".Equals(LuceneTestCase.TEST_POSTINGSFORMAT, StringComparison.Ordinal) && "random".Equals(LuceneTestCase.TEST_DOCVALUESFORMAT, StringComparison.Ordinal) && randomVal == 2 && !ShouldAvoidCodec("Lucene42"))) { codec = Codec.ForName("Lucene42"); LuceneTestCase.OLD_FORMAT_IMPERSONATION_IS_ACTIVE = true; Debug.Assert((codec is Lucene42RWCodec), "fix your ICodecFactory to scan Lucene.Net.Tests before Lucene.Net.TestFramework"); } else if ("Lucene45".Equals(LuceneTestCase.TEST_CODEC, StringComparison.Ordinal) || ("random".Equals(LuceneTestCase.TEST_CODEC, StringComparison.Ordinal) && "random".Equals(LuceneTestCase.TEST_POSTINGSFORMAT, StringComparison.Ordinal) && "random".Equals(LuceneTestCase.TEST_DOCVALUESFORMAT, StringComparison.Ordinal) && randomVal == 5 && !ShouldAvoidCodec("Lucene45"))) { codec = Codec.ForName("Lucene45"); LuceneTestCase.OLD_FORMAT_IMPERSONATION_IS_ACTIVE = true; Debug.Assert((codec is Lucene45RWCodec), "fix your ICodecFactory to scan Lucene.Net.Tests before Lucene.Net.TestFramework"); } else if (("random".Equals(LuceneTestCase.TEST_POSTINGSFORMAT, StringComparison.Ordinal) == false) || ("random".Equals(LuceneTestCase.TEST_DOCVALUESFORMAT, StringComparison.Ordinal) == false)) { // the user wired postings or DV: this is messy // refactor into RandomCodec.... PostingsFormat format; if ("random".Equals(LuceneTestCase.TEST_POSTINGSFORMAT, StringComparison.Ordinal)) { format = PostingsFormat.ForName("Lucene41"); } else if ("MockRandom".Equals(LuceneTestCase.TEST_POSTINGSFORMAT, StringComparison.Ordinal)) { format = new MockRandomPostingsFormat(new Random(random.Next())); } else { format = PostingsFormat.ForName(LuceneTestCase.TEST_POSTINGSFORMAT); } DocValuesFormat dvFormat; if ("random".Equals(LuceneTestCase.TEST_DOCVALUESFORMAT, StringComparison.Ordinal)) { dvFormat = DocValuesFormat.ForName("Lucene45"); } else { dvFormat = DocValuesFormat.ForName(LuceneTestCase.TEST_DOCVALUESFORMAT); } codec = new Lucene46CodecAnonymousInnerClassHelper(this, format, dvFormat); } else if ("SimpleText".Equals(LuceneTestCase.TEST_CODEC, StringComparison.Ordinal) || ("random".Equals(LuceneTestCase.TEST_CODEC, StringComparison.Ordinal) && randomVal == 9 && LuceneTestCase.Rarely(random) && !ShouldAvoidCodec("SimpleText"))) { codec = new SimpleTextCodec(); } else if ("CheapBastard".Equals(LuceneTestCase.TEST_CODEC, StringComparison.Ordinal) || ("random".Equals(LuceneTestCase.TEST_CODEC, StringComparison.Ordinal) && randomVal == 8 && !ShouldAvoidCodec("CheapBastard") && !ShouldAvoidCodec("Lucene41"))) { // we also avoid this codec if Lucene41 is avoided, since thats the postings format it uses. codec = new CheapBastardCodec(); } else if ("Asserting".Equals(LuceneTestCase.TEST_CODEC, StringComparison.Ordinal) || ("random".Equals(LuceneTestCase.TEST_CODEC, StringComparison.Ordinal) && randomVal == 6 && !ShouldAvoidCodec("Asserting"))) { codec = new AssertingCodec(); } else if ("Compressing".Equals(LuceneTestCase.TEST_CODEC, StringComparison.Ordinal) || ("random".Equals(LuceneTestCase.TEST_CODEC, StringComparison.Ordinal) && randomVal == 5 && !ShouldAvoidCodec("Compressing"))) { codec = CompressingCodec.RandomInstance(random); } else if (!"random".Equals(LuceneTestCase.TEST_CODEC, StringComparison.Ordinal)) { codec = Codec.ForName(LuceneTestCase.TEST_CODEC); } else if ("random".Equals(LuceneTestCase.TEST_POSTINGSFORMAT, StringComparison.Ordinal)) { codec = new RandomCodec(random, avoidCodecs); } else { Debug.Assert(false); } Codec.Default = codec; // Initialize locale/ timezone. string testLocale = SystemProperties.GetProperty("tests.locale", "random"); string testTimeZone = SystemProperties.GetProperty("tests.timezone", "random"); // Always pick a random one for consistency (whether tests.locale was specified or not). savedLocale = CultureInfo.CurrentCulture; CultureInfo randomLocale = LuceneTestCase.RandomLocale(random); locale = testLocale.Equals("random", StringComparison.Ordinal) ? randomLocale : LuceneTestCase.LocaleForName(testLocale); #if NETSTANDARD CultureInfo.CurrentCulture = locale; #else Thread.CurrentThread.CurrentCulture = locale; #endif // TimeZone.getDefault will set user.timezone to the default timezone of the user's locale. // So store the original property value and restore it at end. restoreProperties["user.timezone"] = SystemProperties.GetProperty("user.timezone"); savedTimeZone = testInstance.TimeZone; TimeZoneInfo randomTimeZone = LuceneTestCase.RandomTimeZone(random); timeZone = testTimeZone.Equals("random", StringComparison.Ordinal) ? randomTimeZone : TimeZoneInfo.FindSystemTimeZoneById(testTimeZone); //TimeZone.Default = TimeZone; // LUCENENET NOTE: There doesn't seem to be an equivalent to this, but I don't think we need it. similarity = random.NextBoolean() ? (Similarity) new DefaultSimilarity() : new RandomSimilarityProvider(random); // Check codec restrictions once at class level. try { CheckCodecRestrictions(codec); } catch (Exception e) { Console.Error.WriteLine("NOTE: " + e.Message + " Suppressed codecs: " + Arrays.ToString(avoidCodecs.ToArray())); throw e; } }
/// <param name="outerInstance"> /// LUCENENET specific /// Passed in because <see cref="LuceneTestCase.NewSearcher(IndexReader)"/> /// is no longer static. /// </param> public SearcherThread(Directory directory, TimedThread[] threads, LuceneTestCase outerInstance) : base(threads) { OuterInstance = outerInstance; this.Directory = directory; }