@Test public void testInjectionHappened() throws Exception { SearchIntegrator searchFactory = getSearchFactory().unwrap( SearchIntegrator.class ); MessageSenderService sender = searchFactory.getServiceManager().requestService( MessageSenderService.class ); Assert.assertTrue( masterChannel.getAddress().equals( sender.getAddress() ) ); searchFactory.getServiceManager().releaseService( MessageSenderService.class ); }
@Override public void run() { try { String name = "Emmanuel" + index; final Class<?> aClass = MutableFactoryTest.getClassByNumber( index, searchIntegrator.getServiceManager() ); System.err.println( "Creating index #" + index + " for class " + aClass ); searchIntegrator.addClasses( aClass ); Object entity = aClass.getConstructor( Integer.class, String.class ) .newInstance( index, name ); helper.index( entity, index ); EntityIndexBinding indexBindingForEntity = searchIntegrator.getIndexBindings().get( aClass ); assertNotNull( indexBindingForEntity ); Set<IndexManager> indexManagers = indexBindingForEntity.getIndexManagerSelector().all(); assertEquals( 1, indexManagers.size() ); helper.assertThat( "name", "emmanuel" + index ) .from( aClass ) .hasResultSize( 1 ); } catch (ClassNotFoundException | InvocationTargetException | NoSuchMethodException | IllegalAccessException | InstantiationException e) { throw new IllegalStateException( "Unexpected exception while manipulating dynamically created classes", e ); } } }
@Override public void receive(Message message) { try { final byte[] rawBuffer = message.getRawBuffer(); final int messageOffset = message.getOffset(); final int bufferLength = message.getLength(); byte[] serializedQueue = MessageSerializationHelper.extractSerializedQueue( messageOffset, bufferLength, rawBuffer ); ServiceManager serviceManager = integrator.getServiceManager(); LuceneWorkSerializer luceneWorkSerializer = serviceManager.requestService( LuceneWorkSerializer.class ); List<LuceneWork> queue = luceneWorkSerializer.toLuceneWorks( serializedQueue ); queues++; works += queue.size(); serviceManager.releaseService( LuceneWorkSerializer.class ); } catch (ClassCastException e) { throw new SearchException( e ); } } }
@Test public void testMultiThreadedAddClasses() throws Exception { searchIntegrator = integratorResource.create( new SearchConfigurationForTest() ); int numberOfClasses = 100; int numberOfThreads = 10; new ConcurrentRunner( numberOfClasses, numberOfThreads, new TaskFactory() { @Override public Runnable createRunnable(int i) throws Exception { return new DoAddClass( i ); } } ) .setTimeout( 1, TimeUnit.MINUTES ) .execute(); for ( int i = 0; i < numberOfClasses; i++ ) { final Class<?> classByNumber = getClassByNumber( i, searchIntegrator.getServiceManager() ); helper.assertThat( "name", "emmanuel" + i ) .from( classByNumber ) .hasResultSize( 1 ); } }