/* * Copyright 2002-2007 the original author or authors. * * 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. */ package org.springmodules.lucene.index.factory; import java.io.IOException; import junit.framework.TestCase; import org.apache.lucene.analysis.SimpleAnalyzer; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; import org.apache.lucene.index.IndexReader; import org.apache.lucene.index.IndexWriter; import org.apache.lucene.store.RAMDirectory; import org.springmodules.lucene.index.LuceneIndexAccessException; /** * @author Thierry Templier */ public class SimpleIndexFactoryTests extends TestCase { private RAMDirectory directory; /** * @see junit.framework.TestCase#setUp() */ protected void setUp() throws Exception { //Initialization of the index this.directory = new RAMDirectory(); IndexWriter indexWriter = new IndexWriter(this.directory,new SimpleAnalyzer(),true); Document document = new Document(); document.add(new Field("field", "a sample", Field.Store.YES, Field.Index.TOKENIZED)); document.add(new Field("filter", "a sample filter", Field.Store.YES, Field.Index.TOKENIZED)); document.add(new Field("sort", "2", Field.Store.YES, Field.Index.UN_TOKENIZED)); indexWriter.addDocument(document); indexWriter.close(); } /** * @see junit.framework.TestCase#tearDown() */ protected void tearDown() throws Exception { this.directory=null; } private void closeIndexReader(LuceneIndexReader indexReader) { if( indexReader!=null ) { try { indexReader.close(); } catch (IOException ex) { fail(); } } } private void closeIndexWriter(LuceneIndexWriter indexWriter) { if( indexWriter!=null ) { try { indexWriter.close(); } catch (IOException ex) { fail(); } } } private void closeIndexReader(IndexReader indexReader) { if( indexReader!=null ) { try { indexReader.close(); } catch (IOException ex) { fail(); } } } private void closeIndexWriter(IndexWriter indexWriter) { if( indexWriter!=null ) { try { indexWriter.close(); } catch (IOException ex) { fail(); } } } final public void testGetIndexFactoryReader() { SimpleIndexFactory indexFactory = new SimpleIndexFactory(); try { indexFactory.getIndexReader(); fail(); } catch(LuceneIndexAccessException ex) {} } final public void testGetIndexFactoryWriter() { SimpleIndexFactory indexFactory = new SimpleIndexFactory(); try { indexFactory.getIndexWriter(); fail(); } catch(LuceneIndexAccessException ex) {} } final public void testGetIndexReader() { SimpleIndexFactory indexFactory = new SimpleIndexFactory(); indexFactory.setDirectory(this.directory); LuceneIndexReader indexReader = null; try { indexReader=indexFactory.getIndexReader(); assertNotNull(indexReader); assertFalse(indexReader.hasDeletions()); } finally { closeIndexReader(indexReader); } } final public void testIndexLockingWithReader() throws Exception { SimpleIndexFactory indexFactory = new SimpleIndexFactory(); indexFactory.setDirectory(this.directory); IndexWriter indexWriter = null; LuceneIndexReader indexReader = null; try { indexWriter = new IndexWriter(this.directory, new SimpleAnalyzer(), false); indexReader = indexFactory.getIndexReader(); fail(); } catch(LuceneIndexAccessException ex) { } finally { closeIndexReader(indexReader); closeIndexWriter(indexWriter); } } final public void testIndexLockingResolvingWithReader() throws Exception { SimpleIndexFactory indexFactory = new SimpleIndexFactory(); indexFactory.setDirectory(this.directory); indexFactory.setResolveLock(true); IndexWriter indexWriter = null; LuceneIndexReader indexReader = null; try { indexWriter = new IndexWriter(this.directory, new SimpleAnalyzer(), false); indexReader = indexFactory.getIndexReader(); } catch(LuceneIndexAccessException ex) { } finally { closeIndexReader(indexReader); closeIndexWriter(indexWriter); } } final public void testGetIndexWriter() throws Exception { SimpleIndexFactory indexFactory = new SimpleIndexFactory(); indexFactory.setDirectory(this.directory); indexFactory.setAnalyzer(new SimpleAnalyzer()); LuceneIndexWriter indexWriter = null; try { indexWriter = indexFactory.getIndexWriter(); assertNotNull(indexWriter); Document document = new Document(); document.add(new Field("field", "a sample", Field.Store.YES, Field.Index.TOKENIZED)); document.add(new Field("filter", "a sample filter", Field.Store.YES, Field.Index.TOKENIZED)); document.add(new Field("sort", "3", Field.Store.YES, Field.Index.UN_TOKENIZED)); indexWriter.addDocument(document); } finally { closeIndexWriter(indexWriter); } } final public void testIndexLockingWithWrier() throws Exception { SimpleIndexFactory indexFactory = new SimpleIndexFactory(); indexFactory.setDirectory(this.directory); IndexWriter indexWriter1 = null; LuceneIndexWriter indexWriter2 = null; try { indexWriter1 = new IndexWriter(this.directory, new SimpleAnalyzer(), false); indexWriter2 = indexFactory.getIndexWriter(); fail(); } catch(LuceneIndexAccessException ex) { } finally { closeIndexWriter(indexWriter2); closeIndexWriter(indexWriter1); } } final public void testIndexLockingResolvingWithWriter() throws Exception { SimpleIndexFactory indexFactory = new SimpleIndexFactory(); indexFactory.setDirectory(this.directory); indexFactory.setResolveLock(true); IndexWriter indexWriter1 = null; LuceneIndexWriter indexWriter2 = null; try { indexWriter1 = new IndexWriter(this.directory, new SimpleAnalyzer(), false); indexWriter2 = indexFactory.getIndexWriter(); } catch(LuceneIndexAccessException ex) { } finally { closeIndexWriter(indexWriter2); closeIndexWriter(indexWriter1); } } final public void testIndexNoCreationWithReader() throws Exception { SimpleIndexFactory indexFactory = new SimpleIndexFactory(); indexFactory.setDirectory(new RAMDirectory()); indexFactory.setCreate(false); LuceneIndexReader indexReader = null; try { indexReader = indexFactory.getIndexReader(); fail(); } catch(LuceneIndexAccessException ex) { } finally { closeIndexReader(indexReader); } } final public void testIndexCreationWithReader() throws Exception { SimpleIndexFactory indexFactory = new SimpleIndexFactory(); indexFactory.setDirectory(new RAMDirectory()); indexFactory.setCreate(true); LuceneIndexReader indexReader = null; try { indexReader = indexFactory.getIndexReader(); } catch(LuceneIndexAccessException ex) { } finally { closeIndexReader(indexReader); } } final public void testIndexNoCreationWithWriter() throws Exception { SimpleIndexFactory indexFactory = new SimpleIndexFactory(); indexFactory.setDirectory(new RAMDirectory()); indexFactory.setCreate(false); LuceneIndexWriter indexWriter = null; try { indexWriter = indexFactory.getIndexWriter(); fail(); } catch(LuceneIndexAccessException ex) { } finally { closeIndexWriter(indexWriter); } } final public void testIndexCreationWithWriter() throws Exception { SimpleIndexFactory indexFactory = new SimpleIndexFactory(); indexFactory.setDirectory(new RAMDirectory()); indexFactory.setCreate(true); LuceneIndexWriter indexWriter = null; try { indexWriter = indexFactory.getIndexWriter(); } finally { closeIndexWriter(indexWriter); } } }