package org.infinispan.server.test.query;
import static org.infinispan.server.test.util.ITestUtils.SERVER1_MGMT_PORT;
import static org.junit.Assert.assertEquals;
import java.util.List;
import javax.management.ObjectName;
import org.infinispan.arquillian.core.InfinispanResource;
import org.infinispan.arquillian.core.RemoteInfinispanServer;
import org.infinispan.arquillian.utils.MBeanServerConnectionProvider;
import org.infinispan.client.hotrod.Search;
import org.infinispan.protostream.sampledomain.User;
import org.infinispan.query.dsl.QueryBuilder;
import org.infinispan.server.infinispan.spi.InfinispanSubsystem;
import org.infinispan.server.test.category.Queries;
import org.jboss.arquillian.junit.Arquillian;
import org.junit.Before;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.junit.runner.RunWith;
/**
* Tests manual indexing in server.
*
* @author anistor@redhat.com
* @author vchepeli@redhat.com
*
*/
@Category(Queries.class)
@RunWith(Arquillian.class)
public class ManualIndexingIT extends RemoteQueryBaseIT {
private static final String CACHE_CONTAINER_NAME = "clustered";
private static final String CACHE_NAME = "localtestcache_manual";
@InfinispanResource("remote-query-1")
protected RemoteInfinispanServer server;
private MBeanServerConnectionProvider jmxConnectionProvider;
public ManualIndexingIT() {
super(CACHE_CONTAINER_NAME, CACHE_NAME);
}
@Override
public RemoteInfinispanServer getServer() {
return server;
}
@Before
@Override
public void setUp() throws Exception {
super.setUp();
jmxConnectionProvider = new MBeanServerConnectionProvider(getServer().getHotrodEndpoint().getInetAddress().getHostName(), SERVER1_MGMT_PORT);
}
@Test
public void testManualIndexing() throws Exception {
QueryBuilder qb = Search.getQueryFactory(remoteCache).from(User.class)
.having("name").eq("Tom");
User user = new User();
user.setId(1);
user.setName("Tom");
user.setSurname("Cat");
user.setGender(User.Gender.MALE);
remoteCache.put(1, user);
assertEquals(0, qb.build().list().size());
//manual indexing
ObjectName massIndexerName = new ObjectName("jboss." + InfinispanSubsystem.SUBSYSTEM_NAME + ":type=Query,manager="
+ ObjectName.quote(CACHE_CONTAINER_NAME)
+ ",cache=" + ObjectName.quote(CACHE_NAME)
+ ",component=MassIndexer");
jmxConnectionProvider.getConnection().invoke(massIndexerName, "start", null, null);
List<User> list = qb.build().list();
assertEquals(1, list.size());
User foundUser = list.get(0);
assertEquals(1, foundUser.getId());
assertEquals("Tom", foundUser.getName());
assertEquals("Cat", foundUser.getSurname());
assertEquals(User.Gender.MALE, foundUser.getGender());
}
}