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 2009/11/14 09:07:05 UTC

svn commit: r836138 - in /incubator/lucene.net/trunk/C#/src: Lucene.Net/Store/ Test/Index/ Test/Store/ Test/Util/

Author: digy
Date: Sat Nov 14 08:07:04 2009
New Revision: 836138

URL: http://svn.apache.org/viewvc?rev=836138&view=rev
Log:
LUCENENET-235 TestIndexWriter.patch
LUCENENET-244 Remaining Tests in Lucene.Net.Store

Modified:
    incubator/lucene.net/trunk/C#/src/Lucene.Net/Store/FSDirectory.cs
    incubator/lucene.net/trunk/C#/src/Test/Index/TestIndexWriter.cs
    incubator/lucene.net/trunk/C#/src/Test/Store/TestDirectory.cs
    incubator/lucene.net/trunk/C#/src/Test/Store/TestLockFactory.cs
    incubator/lucene.net/trunk/C#/src/Test/Store/TestRAMDirectory.cs
    incubator/lucene.net/trunk/C#/src/Test/Store/TestWindowsMMap.cs
    incubator/lucene.net/trunk/C#/src/Test/Util/LuceneTestCase.cs

Modified: incubator/lucene.net/trunk/C#/src/Lucene.Net/Store/FSDirectory.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Lucene.Net/Store/FSDirectory.cs?rev=836138&r1=836137&r2=836138&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Lucene.Net/Store/FSDirectory.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Lucene.Net/Store/FSDirectory.cs Sat Nov 14 08:07:04 2009
@@ -16,6 +16,7 @@
  */
 
 using System;
+using System.Collections.Generic;
 
 // Used only for WRITE_LOCK_NAME in deprecated create=true case:
 using IndexFileNameFilter = Lucene.Net.Index.IndexFileNameFilter;
@@ -119,7 +120,7 @@
 		/// </summary>
 		/// <deprecated> Not used by any non-deprecated methods anymore
 		/// </deprecated>
-		private static readonly System.Collections.IDictionary DIRECTORIES = new System.Collections.Hashtable();
+        private static readonly Dictionary<string, FSDirectory> DIRECTORIES = new Dictionary<string, FSDirectory>();
 		
 		private static bool disableLocks = false;
 		
@@ -171,7 +172,7 @@
 		
 		/// <summary>The default class which implements filesystem-based directories. </summary>
 		// deprecated
-		private static readonly System.Type IMPL = typeof(Lucene.Net.Store.FSDirectory);
+        private static readonly System.Type IMPL = typeof(Lucene.Net.Store.SimpleFSDirectory);
 		
 		private static System.Security.Cryptography.HashAlgorithm DIGESTER;
 		
@@ -278,21 +279,20 @@
         public static FSDirectory GetDirectory(System.IO.DirectoryInfo file, LockFactory lockFactory)
         {
             FSDirectory dir;
-            lock (DIRECTORIES.SyncRoot)
+            lock (DIRECTORIES)
             {
-                dir = (FSDirectory)DIRECTORIES[file];
-                if (dir == null)
+                if(!DIRECTORIES.TryGetValue(file.FullName, out dir))
                 {
                     try
                     {
-                        dir = (FSDirectory)System.Activator.CreateInstance(IMPL);
+                        dir = (FSDirectory)System.Activator.CreateInstance(IMPL, true);
                     }
                     catch (System.Exception e)
                     {
                         throw new System.SystemException("cannot load FSDirectory class: " + e.ToString(), e);
                     }
                     dir.Init(file, lockFactory);
-                    DIRECTORIES[file] = dir;
+                    DIRECTORIES.Add(file.FullName, dir);
                 }
                 else
                 {
@@ -409,21 +409,11 @@
 		{
 			if (!checked_Renamed)
 			{
-				bool tmpBool;
-				if (System.IO.File.Exists(directory.FullName))
-					tmpBool = true;
-				else
-					tmpBool = System.IO.Directory.Exists(directory.FullName);
-				if (!tmpBool)
-				{
-					try {
-                        System.IO.Directory.CreateDirectory(directory.FullName);
-                    }
-                    catch (Exception)
-                    {
-						throw new System.IO.IOException("Cannot create directory: " + directory);
-                    }
-				}
+                if (!this.directory.Exists)
+                {
+                    this.directory.Create();
+                    this.directory.Refresh(); // need to see the creation
+                }
 				
 				checked_Renamed = true;
 			}
@@ -437,27 +427,10 @@
 			EnsureOpen();
 			CreateDir();
 			System.IO.FileInfo file = new System.IO.FileInfo(System.IO.Path.Combine(directory.FullName, name));
-			bool tmpBool;
-			if (System.IO.File.Exists(file.FullName))
-				tmpBool = true;
-			else
-				tmpBool = System.IO.Directory.Exists(file.FullName);
-			bool tmpBool2;
-			if (System.IO.File.Exists(file.FullName))
-			{
-				System.IO.File.Delete(file.FullName);
-				tmpBool2 = true;
-			}
-			else if (System.IO.Directory.Exists(file.FullName))
-			{
-				System.IO.Directory.Delete(file.FullName);
-				tmpBool2 = true;
-			}
-			else
-				tmpBool2 = false;
-			if (tmpBool && !tmpBool2)
-			// delete existing, if any
-				throw new System.IO.IOException("Cannot overwrite: " + file);
+            if (file.Exists)
+            {
+                file.Delete(); // handled by caller if error
+            }
 		}
 		
 		/// <summary>The underlying filesystem directory </summary>
@@ -495,6 +468,9 @@
 		/// <summary>Creates an FSDirectory instance, trying to pick the
 		/// best implementation given the current environment.
 		/// The directory returned uses the {@link NativeFSLockFactory}.
+        /// 
+        /// <p>Currently this returns {@link SimpleFSDirectory} as
+        /// NIOFSDirectory is currently not supported.
 		/// 
 		/// <p>Currently this returns {@link SimpleFSDirectory} as
 		/// NIOFSDirectory is currently not supported.
@@ -563,7 +539,7 @@
 			{
 				return new NIOFSDirectory(path, lockFactory);
 			}
-		}
+        }
 		
 		/* will move to ctor, when reflection is removed in 3.0 */
 		private void  Init(System.IO.DirectoryInfo path, LockFactory lockFactory)
@@ -723,12 +699,7 @@
 		{
 			EnsureOpen();
 			System.IO.FileInfo file = new System.IO.FileInfo(System.IO.Path.Combine(directory.FullName, name));
-			bool tmpBool;
-			if (System.IO.File.Exists(file.FullName))
-				tmpBool = true;
-			else
-				tmpBool = System.IO.Directory.Exists(file.FullName);
-			return tmpBool;
+            return file.Exists;
 		}
 		
 		/// <summary>Returns the time the named file was last modified. </summary>
@@ -767,21 +738,7 @@
 		{
 			EnsureOpen();
 			System.IO.FileInfo file = new System.IO.FileInfo(System.IO.Path.Combine(directory.FullName, name));
-			bool tmpBool;
-			if (System.IO.File.Exists(file.FullName))
-			{
-				System.IO.File.Delete(file.FullName);
-				tmpBool = true;
-			}
-			else if (System.IO.Directory.Exists(file.FullName))
-			{
-				System.IO.Directory.Delete(file.FullName);
-				tmpBool = true;
-			}
-			else
-				tmpBool = false;
-			if (!tmpBool)
-				throw new System.IO.IOException("Cannot delete " + file);
+            file.Delete();
 		}
 		
 		/// <summary>Renames an existing file in the directory. 
@@ -794,118 +751,8 @@
 			lock (this)
 			{
 				EnsureOpen();
-				System.IO.FileInfo old = new System.IO.FileInfo(System.IO.Path.Combine(directory.FullName, from));
-				System.IO.FileInfo nu = new System.IO.FileInfo(System.IO.Path.Combine(directory.FullName, to));
-				
-				/* This is not atomic.  If the program crashes between the call to
-				delete() and the call to renameTo() then we're screwed, but I've
-				been unable to figure out how else to do this... */
-				
-				bool tmpBool;
-				if (System.IO.File.Exists(nu.FullName))
-					tmpBool = true;
-				else
-					tmpBool = System.IO.Directory.Exists(nu.FullName);
-				if (tmpBool)
-				{
-					bool tmpBool2;
-					if (System.IO.File.Exists(nu.FullName))
-					{
-						System.IO.File.Delete(nu.FullName);
-						tmpBool2 = true;
-					}
-					else if (System.IO.Directory.Exists(nu.FullName))
-					{
-						System.IO.Directory.Delete(nu.FullName);
-						tmpBool2 = true;
-					}
-					else
-						tmpBool2 = false;
-					if (!tmpBool2)
-						throw new System.IO.IOException("Cannot delete " + nu);
-				}
-				
-				// Rename the old file to the new one. Unfortunately, the renameTo()
-				// method does not work reliably under some JVMs.  Therefore, if the
-				// rename fails, we manually rename by copying the old file to the new one
-                try
-                {
-                    old.MoveTo(nu.FullName);
-                }
-                catch
-				{
-					System.IO.Stream in_Renamed = null;
-					System.IO.Stream out_Renamed = null;
-					try
-					{
-						in_Renamed = new System.IO.FileStream(old.FullName, System.IO.FileMode.Open, System.IO.FileAccess.Read);
-						out_Renamed = new System.IO.FileStream(nu.FullName, System.IO.FileMode.Create);
-						// see if the buffer needs to be initialized. Initialization is
-						// only done on-demand since many VM's will never run into the renameTo
-						// bug and hence shouldn't waste 1K of mem for no reason.
-						if (buffer == null)
-						{
-							buffer = new byte[1024];
-						}
-						int len;
-						while ((len = in_Renamed.Read(buffer, 0, buffer.Length)) >= 0)
-						{
-							out_Renamed.Write(buffer, 0, len);
-						}
-						
-						// delete the old file.
-						bool tmpBool3;
-						if (System.IO.File.Exists(old.FullName))
-						{
-							System.IO.File.Delete(old.FullName);
-							tmpBool3 = true;
-						}
-						else if (System.IO.Directory.Exists(old.FullName))
-						{
-							System.IO.Directory.Delete(old.FullName);
-							tmpBool3 = true;
-						}
-						else
-							tmpBool3 = false;
-						bool generatedAux = tmpBool3;
-					}
-					catch (System.IO.IOException ioe)
-					{
-						System.IO.IOException newExc = new System.IO.IOException("Cannot rename " + old + " to " + nu, ioe);
-						throw newExc;
-					}
-					finally
-					{
-						try
-						{
-							if (in_Renamed != null)
-							{
-								try
-								{
-									in_Renamed.Close();
-								}
-								catch (System.IO.IOException e)
-								{
-									throw new System.SystemException("Cannot close input stream: " + e.ToString(), e);
-								}
-							}
-						}
-						finally
-						{
-							if (out_Renamed != null)
-							{
-								try
-								{
-									out_Renamed.Close();
-								}
-								catch (System.IO.IOException e)
-								{
-									throw new System.SystemException("Cannot close output stream: " + e.ToString(), e);
-								}
-							}
-						}
-					}
-				}
+                System.IO.FileInfo old = new System.IO.FileInfo(System.IO.Path.Combine(directory.FullName, from));
+                old.MoveTo(System.IO.Path.Combine(directory.FullName, to));
 			}
 		}
 		
@@ -1045,20 +892,22 @@
 				if (isOpen && --refCount <= 0)
 				{
 					isOpen = false;
-					lock (DIRECTORIES.SyncRoot)
+					lock (DIRECTORIES)
 					{
-						DIRECTORIES.Remove(directory);
+						DIRECTORIES.Remove(directory.FullName);
 					}
 				}
 			}
 		}
-		
+
+        [System.Obsolete("A DirectoryInfo is more appropriate, however this is here for backwards compatibility. This will be removed in the 3.0 release")]
 		public virtual System.IO.FileInfo GetFile()
 		{
 			EnsureOpen();
 			return new System.IO.FileInfo(directory.FullName);
 		}
 
+
         // Java Lucene implements GetFile() which returns a FileInfo.
         // For Lucene.Net, GetDirectory() is more appropriate
         public virtual System.IO.DirectoryInfo GetDirectory()

Modified: incubator/lucene.net/trunk/C#/src/Test/Index/TestIndexWriter.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Test/Index/TestIndexWriter.cs?rev=836138&r1=836137&r2=836138&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Test/Index/TestIndexWriter.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Test/Index/TestIndexWriter.cs Sat Nov 14 08:07:04 2009
@@ -420,6 +420,10 @@
 		public TestIndexWriter(System.String name):base(name, testWithNewApiData)
 		{
 		}
+
+        public TestIndexWriter() : base("", testWithNewApiData)
+        {
+        }
 		
         [Test]
 		public virtual void  TestDocCount()
@@ -4569,7 +4573,7 @@
 			
 			internal virtual void  LaunchThreads(int numIter)
 			{
-				
+                threads = new SupportClass.ThreadClass[NUM_THREADS]; //{{DIGY}} Should this be created somewhere else?
 				for (int i = 0; i < NUM_THREADS; i++)
 				{
 					threads[i] = new AnonymousClassThread2(numIter, this);

Modified: incubator/lucene.net/trunk/C#/src/Test/Store/TestDirectory.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Test/Store/TestDirectory.cs?rev=836138&r1=836137&r2=836138&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Test/Store/TestDirectory.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Test/Store/TestDirectory.cs Sat Nov 14 08:07:04 2009
@@ -69,7 +69,7 @@
 			dirs[0] = new SimpleFSDirectory(path, null);
 			// dirs[1] = new NIOFSDirectory(path, null);
             System.Console.WriteLine("Skipping NIOFSDirectory() test under Lucene.Net");
-			dirs[2] = new MMapDirectory(path, null);
+			dirs[1] = new MMapDirectory(path, null);
 			
 			for (int i = 0; i < sz; i++)
 			{

Modified: incubator/lucene.net/trunk/C#/src/Test/Store/TestLockFactory.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Test/Store/TestLockFactory.cs?rev=836138&r1=836137&r2=836138&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Test/Store/TestLockFactory.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Test/Store/TestLockFactory.cs Sat Nov 14 08:07:04 2009
@@ -428,7 +428,7 @@
 			System.IO.FileInfo fdir2 = _TestUtil.GetTempDir("TestLockFactory.8.Lockdir");
 			Directory dir1 = FSDirectory.Open(new System.IO.DirectoryInfo(fdir1.FullName), new NativeFSLockFactory(fdir1));
 			// same directory, but locks are stored somewhere else. The prefix of the lock factory should != null
-			Directory dir2 = FSDirectory.Open(new System.IO.DirectoryInfo(fdir2.FullName), new NativeFSLockFactory(fdir2));
+			Directory dir2 = FSDirectory.Open(new System.IO.DirectoryInfo(fdir1.FullName), new NativeFSLockFactory(fdir2));
 			
 			System.String prefix1 = dir1.GetLockFactory().GetLockPrefix();
 			Assert.IsNull(prefix1, "Lock prefix for lockDir same as directory should be null");

Modified: incubator/lucene.net/trunk/C#/src/Test/Store/TestRAMDirectory.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Test/Store/TestRAMDirectory.cs?rev=836138&r1=836137&r2=836138&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Test/Store/TestRAMDirectory.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Test/Store/TestRAMDirectory.cs Sat Nov 14 08:07:04 2009
@@ -16,6 +16,7 @@
  */
 
 using System;
+using System.IO;
 
 using NUnit.Framework;
 
@@ -94,14 +95,14 @@
 		private int docsToAdd = 500;
 		
 		// setup the index
-		[Test]
+		[SetUp]
 		public override void  SetUp()
 		{
 			base.SetUp();
 			System.String tempDir = System.IO.Path.GetTempPath();
 			if (tempDir == null)
 				throw new System.IO.IOException("java.io.tmpdir undefined, cannot run test");
-			indexDir = new System.IO.FileInfo(tempDir + "\\" + "RAMDirIndex");
+			indexDir = new System.IO.FileInfo(Path.Combine(tempDir, "RAMDirIndex"));
 			
 			IndexWriter writer = new IndexWriter(indexDir, new WhitespaceAnalyzer(), true, IndexWriter.MaxFieldLength.LIMITED);
 			// add some documents
@@ -255,15 +256,10 @@
 		{
 			base.TearDown();
 			// cleanup 
-			bool tmpBool;
-			if (System.IO.File.Exists(indexDir.FullName))
-				tmpBool = true;
-			else
-				tmpBool = System.IO.Directory.Exists(indexDir.FullName);
-			if (indexDir != null && tmpBool)
-			{
-				RmDir(indexDir);
-			}
+            if(System.IO.Directory.Exists(indexDir.FullName))
+            {
+                System.IO.Directory.Delete(indexDir.FullName, true);
+            }
 		}
 		
 		// LUCENE-1196
@@ -280,41 +276,5 @@
 			i.Close();
 			dir.Close();
 		}
-		
-		private void  RmDir(System.IO.FileInfo dir)
-		{
-			System.IO.FileInfo[] files = SupportClass.FileSupport.GetFiles(dir);
-			for (int i = 0; i < files.Length; i++)
-			{
-				bool tmpBool;
-				if (System.IO.File.Exists(files[i].FullName))
-				{
-					System.IO.File.Delete(files[i].FullName);
-					tmpBool = true;
-				}
-				else if (System.IO.Directory.Exists(files[i].FullName))
-				{
-					System.IO.Directory.Delete(files[i].FullName);
-					tmpBool = true;
-				}
-				else
-					tmpBool = false;
-				bool generatedAux = tmpBool;
-			}
-			bool tmpBool2;
-			if (System.IO.File.Exists(dir.FullName))
-			{
-				System.IO.File.Delete(dir.FullName);
-				tmpBool2 = true;
-			}
-			else if (System.IO.Directory.Exists(dir.FullName))
-			{
-				System.IO.Directory.Delete(dir.FullName);
-				tmpBool2 = true;
-			}
-			else
-				tmpBool2 = false;
-			bool generatedAux2 = tmpBool2;
-		}
 	}
 }
\ No newline at end of file

Modified: incubator/lucene.net/trunk/C#/src/Test/Store/TestWindowsMMap.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Test/Store/TestWindowsMMap.cs?rev=836138&r1=836137&r2=836138&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Test/Store/TestWindowsMMap.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Test/Store/TestWindowsMMap.cs Sat Nov 14 08:07:04 2009
@@ -36,7 +36,7 @@
 		private const System.String alphabet = "abcdefghijklmnopqrstuvwzyz";
 		private System.Random random;
 		
-		[Test]
+		[SetUp]
 		public override void  SetUp()
 		{
 			base.SetUp();

Modified: incubator/lucene.net/trunk/C#/src/Test/Util/LuceneTestCase.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/C%23/src/Test/Util/LuceneTestCase.cs?rev=836138&r1=836137&r2=836138&view=diff
==============================================================================
--- incubator/lucene.net/trunk/C#/src/Test/Util/LuceneTestCase.cs (original)
+++ incubator/lucene.net/trunk/C#/src/Test/Util/LuceneTestCase.cs Sat Nov 14 08:07:04 2009
@@ -116,6 +116,7 @@
 			
 			TokenStream.SetOnlyUseNewAPI(savedAPISetting);
 			//base.TearDown();  // {{Aroush-2.9}}
+            this.seed_init = false;
 		}
 		
 		/// <summary> Asserts that FieldCacheSanityChecker does not detect any