You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by Yonik Seeley <ys...@gmail.com> on 2005/12/07 19:32:04 UTC
Re: svn commit: r351548 - in /lucene/java/trunk/src/test/org/apache/lucene: index/store/FSDirectoryTest.java index/store/TestFSDirectory.java util/StringHelperTest.java util/TestStringHelper.java
TestFSDirectory fails for me:
[junit] Testcase:
testTmpDirIsPlainFile(org.apache.lucene.index.store.TestFSDirectory):
Caused an ERROR
[junit] Access is denied
[junit] java.io.IOException: Access is denied
[junit] at java.io.WinNTFileSystem.createFileExclusively(Native Method)
[junit] at java.io.File.createNewFile(File.java:850)
[junit] at
org.apache.lucene.index.store.TestFSDirectory.testTmpDirIsPlainFile(TestFSDirectory.java:66)
I fixed the obvious error, only to then hit another error... after
fixing that one I realized that the test probably couldn't even test
what the comments suggested since it can't force a re-read of the
lockDir property.
Should this test just be removed?
-Yonik
On 12/1/05, ehatcher@apache.org <eh...@apache.org> wrote:
> Author: ehatcher
> Date: Thu Dec 1 17:21:20 2005
> New Revision: 351548
>
> URL: http://svn.apache.org/viewcvs?rev=351548&view=rev
> Log:
> Renamed test files to match the conventional pattern used, allowing these tests to run from 'ant test'
>
> Added:
> lucene/java/trunk/src/test/org/apache/lucene/index/store/TestFSDirectory.java
> lucene/java/trunk/src/test/org/apache/lucene/util/TestStringHelper.java
> Removed:
> lucene/java/trunk/src/test/org/apache/lucene/index/store/FSDirectoryTest.java
> lucene/java/trunk/src/test/org/apache/lucene/util/StringHelperTest.java
>
> Added: lucene/java/trunk/src/test/org/apache/lucene/index/store/TestFSDirectory.java
> URL: http://svn.apache.org/viewcvs/lucene/java/trunk/src/test/org/apache/lucene/index/store/TestFSDirectory.java?rev=351548&view=auto
> ==============================================================================
> --- lucene/java/trunk/src/test/org/apache/lucene/index/store/TestFSDirectory.java (added)
> +++ lucene/java/trunk/src/test/org/apache/lucene/index/store/TestFSDirectory.java Thu Dec 1 17:21:20 2005
> @@ -0,0 +1,149 @@
> +package org.apache.lucene.index.store;
> +
> +/**
> + * Copyright 2005 The Apache Software Foundation
> + *
> + * Licensed 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.File;
> +import java.io.IOException;
> +
> +import junit.framework.TestCase;
> +
> +import org.apache.lucene.analysis.standard.StandardAnalyzer;
> +import org.apache.lucene.index.IndexWriter;
> +
> +/**
> + * Test to illustrate the problem found when trying to open an IndexWriter in
> + * a situation where the the property <code>org.apache.lucene.lockDir</code>
> + * was not set and the one specified by <code>java.io.tmpdir</code> had been
> + * set to a non-existent path. What I observed is that this combination of
> + * conditions resulted in a <code>NullPointerException</code> being thrown in
> + * the <code>create()</code> method in <code>FSDirectory</code>, where
> + * <code>files.length</code> is de-referenced, but <code>files</code> is
> + * </code>null</code>.
> + *
> + * @author Michael Goddard
> + */
> +
> +public class TestFSDirectory extends TestCase {
> +
> + /**
> + * What happens if the Lucene lockDir doesn't exist?
> + *
> + * @throws Exception
> + */
> + public void testNonExistentTmpDir() throws Exception {
> + orgApacheLuceneLockDir = System.setProperty(
> + "org.apache.lucene.lockDir", NON_EXISTENT_DIRECTORY);
> + String exceptionClassName = openIndexWriter();
> + if (exceptionClassName == null
> + || exceptionClassName.equals("java.io.IOException"))
> + assertTrue(true);
> + else
> + fail("Caught an unexpected Exception");
> + }
> +
> + /**
> + * What happens if the Lucene lockDir is a regular file instead of a
> + * directory?
> + *
> + * @throws Exception
> + */
> + public void testTmpDirIsPlainFile() throws Exception {
> + shouldBeADirectory = new File(NON_EXISTENT_DIRECTORY);
> + shouldBeADirectory.createNewFile();
> + String exceptionClassName = openIndexWriter();
> + if (exceptionClassName == null
> + || exceptionClassName.equals("java.io.IOException"))
> + assertTrue(true);
> + else
> + fail("Caught an unexpected Exception");
> + }
> +
> + public static final String FILE_SEP = System.getProperty("file.separator");
> +
> + public static final String NON_EXISTENT_DIRECTORY = System
> + .getProperty("java.io.tmpdir")
> + + FILE_SEP + "highly_improbable_directory_name";
> +
> + public static final String TEST_INDEX_DIR = System
> + .getProperty("java.io.tmpdir")
> + + FILE_SEP + "temp_index";
> +
> + private String orgApacheLuceneLockDir;
> +
> + private File shouldBeADirectory;
> +
> + public void tearDown() {
> + if (orgApacheLuceneLockDir != null)
> + System.setProperty("org.apache.lucene.lockDir",
> + orgApacheLuceneLockDir);
> + if (shouldBeADirectory != null && shouldBeADirectory.exists()) {
> + try {
> + shouldBeADirectory.delete();
> + } catch (Exception e) {
> + e.printStackTrace();
> + }
> + }
> + File deletableIndex = new File(TEST_INDEX_DIR);
> + if (deletableIndex.exists())
> + try {
> + rmDir(deletableIndex);
> + } catch (Exception e) {
> + e.printStackTrace();
> + }
> + }
> +
> + /**
> + * Open an IndexWriter<br>
> + * Catch any (expected) IOException<br>
> + * Close the IndexWriter
> + */
> + private static String openIndexWriter() {
> + IndexWriter iw = null;
> + String ret = null;
> + try {
> + iw = new IndexWriter(TEST_INDEX_DIR, new StandardAnalyzer(), true);
> + } catch (IOException e) {
> + ret = e.toString();
> + e.printStackTrace();
> + } catch (NullPointerException e) {
> + ret = e.toString();
> + e.printStackTrace();
> + } finally {
> + if (iw != null) {
> + try {
> + iw.close();
> + } catch (IOException ioe) {
> + // ignore this
> + }
> + }
> + }
> + return ret;
> + }
> +
> + private static void rmDir(File dirName) throws Exception {
> + if (dirName.exists()) {
> + if (dirName.isDirectory()) {
> + File[] contents = dirName.listFiles();
> + for (int i = 0; i < contents.length; i++)
> + rmDir(contents[i]);
> + dirName.delete();
> + } else {
> + dirName.delete();
> + }
> + }
> + }
> +}
>
> Added: lucene/java/trunk/src/test/org/apache/lucene/util/TestStringHelper.java
> URL: http://svn.apache.org/viewcvs/lucene/java/trunk/src/test/org/apache/lucene/util/TestStringHelper.java?rev=351548&view=auto
> ==============================================================================
> --- lucene/java/trunk/src/test/org/apache/lucene/util/TestStringHelper.java (added)
> +++ lucene/java/trunk/src/test/org/apache/lucene/util/TestStringHelper.java Thu Dec 1 17:21:20 2005
> @@ -0,0 +1,39 @@
> +package org.apache.lucene.util;
> +
> +/**
> + * Copyright 2004 The Apache Software Foundation
> + *
> + * Licensed 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 junit.framework.TestCase;
> +
> +public class TestStringHelper extends TestCase {
> +
> +
> + public void testStringDifference() {
> + String test1 = "test";
> + String test2 = "testing";
> +
> + int result = StringHelper.stringDifference(test1, test2);
> + assertTrue(result == 4);
> +
> + test2 = "foo";
> + result = StringHelper.stringDifference(test1, test2);
> + assertTrue(result == 0);
> +
> + test2 = "test";
> + result = StringHelper.stringDifference(test1, test2);
> + assertTrue(result == 4);
> + }
> +}
---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-dev-help@lucene.apache.org
Re: svn commit: r351548 - in /lucene/java/trunk/src/test/org/apache/lucene: index/store/FSDirectoryTest.java index/store/TestFSDirectory.java util/StringHelperTest.java util/TestStringHelper.java
Posted by Erik Hatcher <er...@ehatchersolutions.com>.
On Dec 7, 2005, at 1:32 PM, Yonik Seeley wrote:
> TestFSDirectory fails for me:
>
> [junit] Testcase:
> testTmpDirIsPlainFile(org.apache.lucene.index.store.TestFSDirectory):
> Caused an ERROR
> [junit] Access is denied
> [junit] java.io.IOException: Access is denied
> [junit] at java.io.WinNTFileSystem.createFileExclusively
> (Native Method)
> [junit] at java.io.File.createNewFile(File.java:850)
> [junit] at
> org.apache.lucene.index.store.TestFSDirectory.testTmpDirIsPlainFile
> (TestFSDirectory.java:66)
>
> I fixed the obvious error, only to then hit another error... after
> fixing that one I realized that the test probably couldn't even test
> what the comments suggested since it can't force a re-read of the
> lockDir property.
>
> Should this test just be removed?
I haven't looked at the details yet, but just ran the full clean test
suite and it passed for me on Mac OS X:
[junit] Testsuite: org.apache.lucene.index.store.TestFSDirectory
[junit] Tests run: 2, Failures: 0, Errors: 0, Time elapsed:
1.875 sec
I'll look at it further, but if you feel this is a bogus test I'm
fine with it being removed.
Erik
---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-dev-help@lucene.apache.org