You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucenenet.apache.org by di...@apache.org on 2011/05/29 20:37:14 UTC

[Lucene.Net] svn commit: r1128925 - /incubator/lucene.net/branches/Lucene.Net_2_9_4g/test/contrib/SimpleFacetedSearch/TestSimpleFacetedSearch.cs

Author: digy
Date: Sun May 29 18:37:14 2011
New Revision: 1128925

URL: http://svn.apache.org/viewvc?rev=1128925&view=rev
Log:
[LUCENENET-415] One more test case for SFS

Modified:
    incubator/lucene.net/branches/Lucene.Net_2_9_4g/test/contrib/SimpleFacetedSearch/TestSimpleFacetedSearch.cs

Modified: incubator/lucene.net/branches/Lucene.Net_2_9_4g/test/contrib/SimpleFacetedSearch/TestSimpleFacetedSearch.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net_2_9_4g/test/contrib/SimpleFacetedSearch/TestSimpleFacetedSearch.cs?rev=1128925&r1=1128924&r2=1128925&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net_2_9_4g/test/contrib/SimpleFacetedSearch/TestSimpleFacetedSearch.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net_2_9_4g/test/contrib/SimpleFacetedSearch/TestSimpleFacetedSearch.cs Sun May 29 18:37:14 2011
@@ -19,6 +19,7 @@ using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
+using System.Threading;
 
 using Lucene.Net.Analysis;
 using Lucene.Net.Documents;
@@ -40,7 +41,7 @@ namespace Lucene.Net.Search
         IndexReader _Reader;
 
         [SetUp]
-        public void Setup()
+        public void SetUp()
         {
 
             IndexWriter writer = new IndexWriter(_Dir, new StandardAnalyzer(), true);
@@ -212,6 +213,73 @@ namespace Lucene.Net.Search
             Assert.AreEqual(0, hits.HitsPerFacet.Length);
         }
 
+        int _errorCount = 0;
+        void MultiThreadedAccessThread(object o)
+        {
+            SimpleFacetedSearch sfs = (SimpleFacetedSearch)o;
+
+            Query query = new QueryParser(Lucene.Net.Util.Version.LUCENE_29, "text", new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29)).Parse("block*");
+
+            for (int i = 0; i < 2000; i++)
+            {
+                SimpleFacetedSearch.Hits hits = sfs.Search(query);
+                
+                if (6 != hits.HitsPerFacet.Length) _errorCount++;
+                
+                foreach (SimpleFacetedSearch.HitsPerFacet hpg in hits.HitsPerFacet)
+                {
+                    if (hpg.Name[0] == "us" && hpg.Name[1] == "CCN" && hpg.Name[2] == "politics")
+                    {
+                        if (1 != hpg.HitCount) _errorCount++;
+                    }
+                    else
+                    if (hpg.Name[0] == "en" && hpg.Name[1] == "BCC" && hpg.Name[2] == "tech")
+                    {
+                        if (1 != hpg.HitCount) _errorCount++;
+                    }
+                    else
+                    if (hpg.Name[0] == "us" && hpg.Name[1] == "CCN" && hpg.Name[2] == "sport")
+                    {
+                        if (1 != hpg.HitCount) _errorCount++;
+                    }
+                    else
+                    if (hpg.Name[0] == "en" && hpg.Name[1] == "CCN" && hpg.Name[2] == "tech")
+                    {
+                        if (1 != hpg.HitCount) _errorCount++;
+                    }
+                    else
+                    {
+                        if (0 != hpg.HitCount) _errorCount++;
+                    }
+
+                    if (4 != hits.TotalHitCount) _errorCount++;
+                }
+            }
+            
+        }
+
+        [Test]
+        public void TestMultiThreadedAccess()
+        {
+            Query query = new QueryParser(Lucene.Net.Util.Version.LUCENE_29, "text", new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29)).Parse("block*");
+
+            SimpleFacetedSearch sfs = new SimpleFacetedSearch(_Reader, new string[] { "lang", "source", "category" });
+            _errorCount = 0;
+
+            Thread[] t = new Thread[20];
+            for (int i = 0; i < t.Length; i++)
+            {
+                t[i] = new Thread(MultiThreadedAccessThread);
+                t[i].Start(sfs);
+            }
+            for (int i = 0; i < t.Length; i++)
+            {
+                t[i].Join();
+            }
+            
+            Assert.AreEqual(0, _errorCount);
+        }
+
         /// <summary>
         /// *****************************************************
         /// * SAMPLE USAGE                                      *