📄 testgdataindexer.java
字号:
IndexDocument iDoc = new IndexDocumentStub(doc,delTerm, IndexAction.INSERT); /* * write doc to index */ this.indexer.writer.addDocument(doc); this.indexer.closeWriter(); IndexSearcher s = new IndexSearcher(this.dir); Hits h = s.search(new TermQuery(delTerm)); assertEquals(1, h.length()); s.close(); /* * del doc via indexer */ iDoc = new IndexDocumentStub(doc,delTerm, IndexAction.DELETE); this.indexer.deleteDocument(iDoc); assertEquals(0,this.indexer.docsAdded.get()); assertEquals(1,this.indexer.docsDeleted.get()); assertEquals(0,this.indexer.docsUpdated.get()); this.indexer.commit(false); s = new IndexSearcher(this.dir); h = s.search(new TermQuery(delTerm)); assertEquals(0, h.length()); s.close(); /* * test insert / del without optimize */ iDoc = new IndexDocumentStub(doc,delTerm, IndexAction.INSERT); this.indexer.addDocument(iDoc); iDoc = new IndexDocumentStub(doc,delTerm, IndexAction.DELETE); this.indexer.deleteDocument(iDoc); this.indexer.commit(false); s = new IndexSearcher(this.dir); h = s.search(new TermQuery(delTerm)); assertEquals(0, h.length()); s.close(); /* * test insert / del / update without optimize */ iDoc = new IndexDocumentStub(doc,delTerm, IndexAction.INSERT); this.indexer.addDocument(iDoc); iDoc = new IndexDocumentStub(doc,delTerm, IndexAction.DELETE); this.indexer.deleteDocument(iDoc); iDoc = new IndexDocumentStub(doc,delTerm, IndexAction.INSERT); this.indexer.addDocument(iDoc); this.indexer.commit(false); s = new IndexSearcher(this.dir); h = s.search(new TermQuery(delTerm)); assertEquals(1, h.length()); s.close(); /* * test insert / update / del without optimize */ iDoc = new IndexDocumentStub(doc,delTerm, IndexAction.INSERT); this.indexer.addDocument(iDoc); iDoc = new IndexDocumentStub(doc,delTerm, IndexAction.UPDATE); this.indexer.updateDocument(iDoc); iDoc = new IndexDocumentStub(doc,delTerm, IndexAction.DELETE); this.indexer.deleteDocument(iDoc); this.indexer.commit(false); s = new IndexSearcher(this.dir); h = s.search(new TermQuery(delTerm)); assertEquals(0, h.length()); s.close(); iDoc = new IndexDocumentStub(doc,delTerm, IndexAction.UPDATE); try{ this.indexer.deleteDocument(iDoc); fail("document has not delete action "); }catch (GdataIndexerException e) { } } /* * Test method for * 'org.apache.lucene.gdata.search.index.GDataIndexer.commit(boolean)' */ public void testCommit() throws IOException { String id = "myID"; Field f = new Field(FIELD_ID, id, Field.Store.YES, Field.Index.UN_TOKENIZED); Document doc = new Document(); doc.add(f); Term delTerm = new Term(FIELD_ID, id); IndexDocument iDoc = new IndexDocumentStub(doc,delTerm, IndexAction.INSERT); this.indexer.addDocument(iDoc); iDoc = new IndexDocumentStub(doc,delTerm, IndexAction.UPDATE); this.indexer.updateDocument(iDoc); this.indexer.updateDocument(iDoc); iDoc = new IndexDocumentStub(doc,delTerm, IndexAction.DELETE); this.indexer.deleteDocument(iDoc); IndexEventListenerStub evListener = new IndexEventListenerStub(); this.indexer.registerIndexEventListener(evListener); assertEquals(1,this.indexer.docsAdded.get()); assertEquals(1,this.indexer.docsDeleted.get()); assertEquals(2,this.indexer.docsUpdated.get()); assertEquals(0,evListener.getCalledCount()); this.indexer.commit(true); this.indexer.commit(false); assertEquals(1,evListener.getCalledCount()); assertEquals(0,this.indexer.docsAdded.get()); assertEquals(0,this.indexer.docsDeleted.get()); assertEquals(0,this.indexer.docsUpdated.get()); IndexSearcher s = new IndexSearcher(this.dir); Hits h = s.search(new TermQuery(delTerm)); assertEquals(0, h.length()); s.close(); } /* * Test method for * 'org.apache.lucene.gdata.search.index.GDataIndexer.registerIndexEventListener(IndexEventListener)' */ public void testRegisterIndexEventListener() { IndexEventListenerStub evListener = new IndexEventListenerStub(); this.indexer.registerIndexEventListener(evListener); this.indexer.registerIndexEventListener(evListener); assertEquals(0,evListener.getCalledCount()); this.indexer.notifyCommitListeners("someId"); this.indexer.notifyCommitListeners("someId"); assertEquals(2,evListener.getCalledCount()); } /* * Test method for * 'org.apache.lucene.gdata.search.index.GDataIndexer.removeIndexEventListener(IndexEventListener)' */ public void testRemoveIndexEventListener() { IndexEventListenerStub evListener = new IndexEventListenerStub(); this.indexer.registerIndexEventListener(evListener); assertEquals(0,evListener.getCalledCount()); this.indexer.notifyCommitListeners("someId"); assertEquals(1,evListener.getCalledCount()); this.indexer.removeIndexEventListener(evListener); this.indexer.removeIndexEventListener(evListener); this.indexer.notifyCommitListeners("someId"); assertEquals(1,evListener.getCalledCount()); } /* * Test method for * 'org.apache.lucene.gdata.search.index.GDataIndexer.notifyCommitListeners(String)' */ public void testNotifyCommitListeners() { IndexEventListenerStub evListener = new IndexEventListenerStub(); IndexEventListenerStub evListener1 = new IndexEventListenerStub(); IndexEventListenerStub evListener2 = new IndexEventListenerStub(); this.indexer.registerIndexEventListener(evListener); this.indexer.registerIndexEventListener(evListener1); this.indexer.registerIndexEventListener(evListener2); assertEquals(0,evListener.getCalledCount()); this.indexer.notifyCommitListeners("someId"); assertEquals(1,evListener.getCalledCount()); assertEquals(1,evListener1.getCalledCount()); assertEquals(1,evListener2.getCalledCount()); this.indexer.removeIndexEventListener(evListener); this.indexer.notifyCommitListeners("someId"); assertEquals(1,evListener.getCalledCount()); assertEquals(2,evListener1.getCalledCount()); assertEquals(2,evListener2.getCalledCount()); } /* * Test method for * 'org.apache.lucene.gdata.search.index.GDataIndexer.closeWriter()' */ public void testCloseWriter() throws IOException{ assertNotNull(this.indexer.writer); this.indexer.closeWriter(); assertNull(this.indexer.writer); } /* * Test method for * 'org.apache.lucene.gdata.search.index.GDataIndexer.closeSearcher()' */ public void testCloseSearcher() throws IOException { this.indexer.openSearcher(); assertNotNull(this.indexer.searcher); this.indexer.closeSearcher(); assertNull(this.indexer.searcher); } /* * Test method for * 'org.apache.lucene.gdata.search.index.GDataIndexer.openSearcher()' */ public void testOpenSearcher() throws IOException { this.indexer.searcher = null; this.indexer.openSearcher(); assertNotNull(this.indexer.searcher); } /* * Test method for * 'org.apache.lucene.gdata.search.index.GDataIndexer.openWriter()' */ public void testOpenWriter() throws IOException { this.indexer.closeWriter(); assertNull(this.indexer.writer); this.indexer.openWriter(); assertNotNull(this.indexer.writer); } /* * Test method for * 'org.apache.lucene.gdata.search.index.GDataIndexer.destroy()' */ public void testDestroy() throws InterruptedException, IOException { this.indexer.destroy(); String id = "myID"; Field f = new Field(FIELD_ID, id, Field.Store.YES, Field.Index.UN_TOKENIZED); Document doc = new Document(); doc.add(f); Term delTerm = new Term(FIELD_ID, id); IndexDocument iDoc = new IndexDocumentStub(doc, delTerm, IndexAction.INSERT); Future<IndexDocument> future = new FutureStub<IndexDocument>(iDoc); try{ this.indexer.addIndexableDocumentTask(future); fail("indexer already closed exc. expected"); }catch (IllegalStateException e) {} this.indexer = GDataIndexer.createGdataIndexer(config, dir, true); CountDownLatch documentLatch = new CountDownLatch(1); iDoc = new IndexDocumentStub(doc, delTerm, IndexAction.INSERT,documentLatch); CountDownLatch latch = new CountDownLatch(1); future = new FutureStub<IndexDocument>(iDoc,latch,true); this.indexer.addIndexableDocumentTask(future); this.indexer.destroy(); latch.countDown(); documentLatch.await(5000,TimeUnit.MILLISECONDS); // wait active for the commit while(this.indexer.writer != null){} IndexSearcher s = new IndexSearcher(this.dir); Hits h = s.search(new TermQuery(delTerm)); assertEquals(1, h.length()); s.close(); } public void testInnerClassFuture() throws InterruptedException, ExecutionException, TimeoutException{ Future f = new GDataIndexer.FinishingFuture(); assertNull(f.get()); assertNull(f.get(0,TimeUnit.MICROSECONDS)); assertTrue(f.isDone()); assertFalse(f.isCancelled()); assertFalse(f.cancel(true)); } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -