@Override public int getNumberOfDocumentsInIndexByQuery(String indexName, String fieldName, String value) { IndexReaderAccessor indexReaderAccessor = resourceManager.getExtendedSearchIntegrator().getIndexReaderAccessor(); Term term = new Term( fieldName, value ); Query query = value.contains( "*" ) ? new WildcardQuery( term ) : new TermQuery( term ); try ( IndexReader reader = indexReaderAccessor.open( indexName ) ) { IndexSearcher searcher = new IndexSearcher( reader ); TopDocs topDocs = searcher.search( query, 100 ); return topDocs.totalHits; } catch (IOException e) { throw new RuntimeException( e ); } } }
private void testAdd(TestResourceManager masterResourceManager, List<DefaultTestResourceManager> slaveResourceManagers, TShirt ts, int expectedResults) throws ParseException { try ( Session slaveSession = slaveResourceManagers.get( 0 ).openSession() ) { Transaction tx = slaveSession.beginTransaction(); slaveSession.persist( ts ); tx.commit(); try ( Session masterSession = masterResourceManager.openSession() ) { // since this is an async backend, we expect to see // the values in the index *eventually*. POLLER.pollAssertion( () -> { List<?> result = doQuery( masterSession ); Assert.assertEquals( "Lots of time waited and still the document is not indexed on master yet!", expectedResults, result.size() ); } ); } } // Wait for the changes to be visible from the slaves POLLER.pollAssertion( () -> { for ( TestResourceManager resourceManager : slaveResourceManagers ) { try ( Session slaveSession = resourceManager.openSession() ) { List<?> result = doQuery( slaveSession ); Assert.assertEquals( "Lots of time waited and still the document is not visible from the slave yet!", expectedResults, result.size() ); } } } ); }
@Override public int getNumberOfDocumentsInIndex(String indexName) { try ( // TODO When using IndexReaderAccessor as below, ShardsTest fails; It seems to not know about // the custom shard identifier configured FSDirectory directory = FSDirectory.open( resourceManager.getBaseIndexDir().resolve( indexName ) ); IndexReader reader = DirectoryReader.open( directory ) ) { return reader.numDocs(); } catch (IOException e) { throw new RuntimeException( e ); } }
private boolean isActive(TestResourceManager manager) { return !manager.getSessionFactory().isClosed(); }
@Test public void masterElection() throws Exception { TestResourceManager masterResourceManager = determineJGroupsMaster(); List<DefaultTestResourceManager> slaveResourceManagers = determineJGroupsSlaves(); Assert.assertEquals( getExpectedNumberOfNodes() - 1, slaveResourceManagers.size() ); // Check that the first master works fine TShirt ts = new TShirt(); ts.setLogo( "Boston" ); ts.setSize( "XXL" ); ts.setLength( 23.4d ); testAdd( masterResourceManager, slaveResourceManagers, ts, 1 ); // Kill the master masterResourceManager.getSessionFactory().close(); // ... check that a new master is elected POLLER.pollAssertion( () -> { Assert.assertTrue( "Lots of time waited and still no new master has been elected!", wasJGroupsMasterElected() ); } ); masterResourceManager = determineJGroupsMaster(); slaveResourceManagers = determineJGroupsSlaves(); Assert.assertEquals( getExpectedNumberOfNodes() - 2, slaveResourceManagers.size() ); // ... and check that the new master actually performs work TShirt ts2 = new TShirt(); ts2.setLogo( "Mapple leaves" ); ts2.setSize( "L" ); ts2.setLength( 23.42d ); testAdd( masterResourceManager, slaveResourceManagers, ts2, 2 ); }
public Directory getDirectory(IndexedTypeIdentifier entityType) { ExtendedSearchIntegrator integrator = resourceManager.getExtendedSearchIntegrator(); Set<IndexManager> indexManagers = integrator.getIndexBinding( entityType ).getIndexManagerSelector().all(); DirectoryBasedIndexManager indexManager = (DirectoryBasedIndexManager) indexManagers.iterator().next(); return indexManager.getDirectoryProvider().getDirectory(); }
private void doTest(String directoryProviderName) throws Exception { init( directoryProviderName, Document.class, AlternateDocument.class ); Session s = getTestResourceManager().openSession(); s.getTransaction().begin(); Document document = s = getTestResourceManager().openSession(); s.getTransaction().begin(); TermQuery q = new TermQuery( new Term( "alt_title", "hibernate" ) ); s = getTestResourceManager().openSession(); s.getTransaction().begin(); s.delete( s.createCriteria( Document.class ).uniqueResult() );
private boolean isJGroupsMaster(TestResourceManager manager) { ExtendedSearchIntegrator integrator = manager.getExtendedSearchIntegrator(); try ( ServiceReference<NodeSelectorService> service = integrator.getServiceManager().requestReference( NodeSelectorService.class ) ) { NodeSelectorStrategy nodeSelector = service.get().getMasterNodeSelector( TShirt.INDEX_NAME ); return nodeSelector.isIndexOwnerLocal(); } }
try ( Session session = getTestResourceManager().openSession() ) { Actor actor1 = new Actor(); actor1.setId( 1L ); try ( Session session = getTestResourceManager().openSession(); FullTextSession ftSession = Search.getFullTextSession( session ) ) { try ( Session session = getTestResourceManager().openSession() ) { ActorLocation location = session.get( ActorLocation.class, 2L ); location.setLat( -24.0d ); try ( Session session = getTestResourceManager().openSession(); FullTextSession ftSession = Search.getFullTextSession( session ) ) {
@Override public int getNumberOfDocumentsInIndex(IndexedTypeIdentifier entityType) { ServiceManager serviceManager = resourceManager.getExtendedSearchIntegrator().getServiceManager(); Set<IndexManager> indexManagers = resourceManager.getExtendedSearchIntegrator() .getIndexBinding( entityType ) .getIndexManagerSelector().all(); List<URLEncodedString> indexNames = new ArrayList<>( indexManagers.size() ); for ( IndexManager indexManager : indexManagers ) { indexNames.add( URLEncodedString.fromString( ( (ElasticsearchIndexManager)indexManager ).getActualIndexName() ) ); } try ( ServiceReference<ElasticsearchService> esService = serviceManager.requestReference( ElasticsearchService.class ) ) { CountWork work = new CountWork.Builder( indexNames ) .type( URLEncodedString.fromString( entityType.getName() ) ) .build(); return esService.get().getWorkProcessor().executeSyncUnsafe( work ); } }
@Override public int getNumberOfDocumentsInIndex(String indexName) { ServiceManager serviceManager = resourceManager.getExtendedSearchIntegrator().getServiceManager(); try ( ServiceReference<ElasticsearchService> esService = serviceManager.requestReference( ElasticsearchService.class ) ) { CountWork work = new CountWork.Builder( ElasticsearchIndexNameNormalizer.getElasticsearchIndexName( indexName ) ) .build(); return esService.get().getWorkProcessor().executeSyncUnsafe( work ); } }
@Override public int getNumberOfDocumentsInIndexByQuery(String indexName, String fieldName, String value) { ServiceManager serviceManager = resourceManager.getExtendedSearchIntegrator().getServiceManager(); String query = value.contains( "*" ) ? "wildcard" : "term"; try ( ServiceReference<ElasticsearchService> esService = serviceManager.requestReference( ElasticsearchService.class ) ) { CountWork work = new CountWork.Builder( ElasticsearchIndexNameNormalizer.getElasticsearchIndexName( indexName ) ) .query( JsonBuilder.object() .add( "query", JsonBuilder.object() .add( query, JsonBuilder.object() .addProperty( fieldName, value ) ) ).build() ) .build(); return esService.get().getWorkProcessor().executeSyncUnsafe( work ); } }