/* * Copyright (c) 2002-2009 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] * * This file is part of Neo4j. * * Neo4j is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.neo4j.index.lucene; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.io.File; import java.util.HashMap; import java.util.Map; import org.junit.Before; import org.junit.Test; import org.neo4j.graphdb.Node; import org.neo4j.index.IndexService; import org.neo4j.index.Neo4jWithIndexTestCase; import org.neo4j.kernel.Config; import org.neo4j.kernel.EmbeddedGraphDatabase; import org.neo4j.kernel.impl.transaction.XaDataSourceManager; public class TestBothLuceneAndFulltext extends Neo4jWithIndexTestCase { private IndexService fulltextIndexService; @Override protected IndexService instantiateIndex() { return new LuceneIndexService( graphDb() ); } @Before public void setUpAdditionalFulltextIndex() throws Exception { this.fulltextIndexService = new LuceneFulltextIndexService( graphDb() ); } @Override protected void shutdownIndex() { super.beforeShutdown(); this.fulltextIndexService.shutdown(); } @Test public void testSome() throws Exception { Node node = graphDb().createNode(); String key = "some_key"; String value1 = "347384738-2"; String value2 = "Tjena hej hoj"; index().index( node, key, value1 ); this.fulltextIndexService.index( node, key, value2 ); restartTx(); assertEquals( node, index().getSingleNode( key, value1 ) ); assertEquals( node, this.fulltextIndexService.getSingleNode( key, "Tjena" ) ); index().removeIndex( node, "cpv", value1 ); this.fulltextIndexService.removeIndex( node, "cpv-ft", value2 ); node.delete(); } @Test public void testKeepLogsConfig() { File path = new File( "target/configdb" ); deleteFileOrDirectory( path ); Map<String,String> config = new HashMap<String,String>(); config.put( Config.KEEP_LOGICAL_LOGS, "nioneodb,lucene,lucene-fulltext" ); EmbeddedGraphDatabase db = new EmbeddedGraphDatabase( path.getPath(), config ); IndexService index = new LuceneIndexService( db ); IndexService fulltext = new LuceneFulltextIndexService( db ); XaDataSourceManager xaDsMgr = db.getConfig().getTxModule().getXaDataSourceManager(); assertTrue( xaDsMgr.getXaDataSource( "nioneodb" ).isLogicalLogKept() ); assertTrue( xaDsMgr.getXaDataSource( "lucene" ).isLogicalLogKept() ); assertTrue( xaDsMgr.getXaDataSource( "lucene-fulltext" ).isLogicalLogKept() ); db.shutdown(); index.shutdown(); fulltext.shutdown(); config.remove( Config.KEEP_LOGICAL_LOGS ); db = new EmbeddedGraphDatabase( path.getPath(), config ); index = new LuceneIndexService( db ); fulltext = new LuceneFulltextIndexService( db ); xaDsMgr = db.getConfig().getTxModule().getXaDataSourceManager(); assertTrue( !xaDsMgr.getXaDataSource( "nioneodb" ).isLogicalLogKept() ); assertTrue( !xaDsMgr.getXaDataSource( "lucene" ).isLogicalLogKept() ); assertTrue( !xaDsMgr.getXaDataSource( "lucene-fulltext" ).isLogicalLogKept() ); db.shutdown(); index.shutdown(); fulltext.shutdown(); config.put( Config.KEEP_LOGICAL_LOGS, Boolean.TRUE.toString() ); db = new EmbeddedGraphDatabase( path.getPath(), config ); index = new LuceneIndexService( db ); fulltext = new LuceneFulltextIndexService( db ); xaDsMgr = db.getConfig().getTxModule().getXaDataSourceManager(); assertTrue( xaDsMgr.getXaDataSource( "nioneodb" ).isLogicalLogKept() ); assertTrue( xaDsMgr.getXaDataSource( "lucene" ).isLogicalLogKept() ); assertTrue( xaDsMgr.getXaDataSource( "lucene-fulltext" ).isLogicalLogKept() ); db.shutdown(); index.shutdown(); fulltext.shutdown(); } }