/* * Hibernate Search, full-text search for your domain model * * License: GNU Lesser General Public License (LGPL), version 2.1 or later * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. */ package org.hibernate.search.test.shards; import static org.junit.Assert.assertTrue; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; import org.hibernate.search.filter.impl.FullTextFilterImpl; import org.hibernate.search.indexes.spi.IndexManager; import org.hibernate.search.testsupport.indexmanager.RamIndexManagerFactory; import org.junit.Before; import org.junit.Rule; import org.junit.Test; /** * @author Chase Seibert */ public class CustomerShardingStrategyTest { @Rule public RamIndexManagerFactory managerFactory = new RamIndexManagerFactory(); private CustomerShardingStrategy shardStrategy; @Before public void setUp() throws Exception { shardStrategy = new CustomerShardingStrategy(); // initialize w/ 10 shards shardStrategy.initialize( null, managerFactory.createArray( 10 ) ); } @Test public void testGetDirectoryProvidersForQuery() { FullTextFilterImpl filter = new FullTextFilterImpl(); filter.setName( "customer" ); filter.setParameter( "customerID", 5 ); // customerID == 5 should correspond to just a single shard instance IndexManager[] providers = shardStrategy.getIndexManagersForQuery( new FullTextFilterImpl[] { filter } ); assertTrue( providers.length == 1 ); // create a dummy document for the same customerID, and make sure the shard it would be // indexed on matches the shard returned by getDirectoryProvidersForQuery() Document document = new Document(); document.add( new Field( "customerID", "5", Field.Store.NO, Field.Index.NOT_ANALYZED ) ); assertTrue( providers[0].equals( shardStrategy.getIndexManagerForAddition( null, null, null, document ) ) ); } }