package org.infinispan.test.integration.as.wildfly;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.util.List;
import javax.ejb.EJBTransactionRolledbackException;
import javax.inject.Inject;
import org.apache.lucene.document.Document;
import org.infinispan.test.integration.as.wildfly.controller.MemberRegistration;
import org.infinispan.test.integration.as.wildfly.model.Member;
import org.jboss.arquillian.container.test.api.OperateOnDeployment;
import org.jboss.arquillian.junit.InSequence;
import org.junit.Test;
@SuppressWarnings("unused")
class MemberRegistrationBase {
private final static double GD_LATITUDE = 37.769645;
private final static double GD_LONGITUDE = -122.446428;
private final static double CH_LATITUDE = 37.780392;
private final static double CH_LONGITUDE = -122.513898;
private final static double CBGB_LATITUDE = 40.726157;
private final static double CBGB_LONGITUDE = -73.992116;
private final static double KD_LATITUDE = 40.723165;
private final static double KD_LONGITUDE = -73.987439;
private final static double BG_LATITUDE = 41.874808;
private final static double BG_LONGITUDE = -87.625983;
@Inject
MemberRegistration memberRegistration;
@Test
@InSequence(value = 1)
@OperateOnDeployment("dep.active-1")
public void
testRegister() throws Exception {
assertEquals("Index size isn't correct", 0, memberRegistration.indexSize());
Member newMember = memberRegistration.getNewMember();
newMember.setName("Davide D'Alto");
newMember.setEmail("davide@mailinator.com");
newMember.setPhoneNumber("2125551234");
newMember.setLatitude(CH_LATITUDE);
newMember.setLongitude(CH_LONGITUDE);
memberRegistration.register();
assertNotNull(newMember.getId());
assertEquals("Index size isn't correct", 1, memberRegistration.indexSize());
}
@Test(expected = EJBTransactionRolledbackException.class)
@InSequence(value = 2)
@OperateOnDeployment("dep.active-1")
public void testRegisterConstraint() throws Exception {
Member newMember = memberRegistration.getNewMember();
newMember.setName("Davide D'Altoe");
newMember.setEmail("davide@mailinator.com");
newMember.setPhoneNumber("2125551235");
newMember.setLatitude(CH_LATITUDE);
newMember.setLongitude(CH_LONGITUDE);
memberRegistration.register();
}
@Test
@InSequence(value = 3)
@OperateOnDeployment("dep.active-2")
public void testNewMemberSearch() throws Exception {
Member newMember = memberRegistration.getNewMember();
newMember.setName("Peter O'Tall");
newMember.setEmail("peter@mailinator.com");
newMember.setPhoneNumber("4643646643");
newMember.setLatitude(KD_LATITUDE);
newMember.setLongitude(KD_LONGITUDE);
memberRegistration.register();
List<Member> search = memberRegistration.search("Peter");
assertFalse("Expected at least one result after the indexing", search.isEmpty());
assertEquals("Search hasn't found a new member", newMember.getName(), search.get(0).getName());
assertEquals("Index size isn't correct", 2, memberRegistration.indexSize());
}
@Test
@InSequence(value = 4)
@OperateOnDeployment("dep.active-2")
public void testNewMemberLuceneSearch() throws Exception {
List<Member> search = memberRegistration.luceneSearch("Peter");
assertFalse("Expected at least one result after the indexing", search.isEmpty());
assertEquals("Lucene search hasn't found a member", "Peter O'Tall", search.get(0).getName());
}
@Test
@InSequence(value = 5)
@OperateOnDeployment("dep.active-2")
public void testNewMemberIndexSearch() throws Exception {
List<Document> search = memberRegistration.indexSearch("Peter");
assertFalse("Expected at least one result after the indexing", search.isEmpty());
assertEquals("Lucene search hasn't found a member", "Peter O'Tall", search.get(0).get("name"));
}
@Test
@InSequence(value = 6)
@OperateOnDeployment("dep.active-2")
public void testNonExistingMember() throws Exception {
List<Member> search = memberRegistration.search("TotallyInventedName");
assertNotNull("Search should never return null", search);
assertTrue("Search results should be empty", search.isEmpty());
}
@Test
@InSequence(value = 7)
@OperateOnDeployment("dep.active-2")
public void testLuceneNonExistingMember() throws Exception {
List<Member> search = memberRegistration.luceneSearch("TotallyInventedName");
assertNotNull("Search should never return null", search);
assertTrue("Search results should be empty", search.isEmpty());
}
@Test
@InSequence(value = 8)
@OperateOnDeployment("dep.active-2")
public void testIndexNonExistingMember() throws Exception {
List<Document> search = memberRegistration.indexSearch("TotallyInventedName");
assertNotNull("Search should never return null", search);
assertTrue("Search results should be empty", search.isEmpty());
}
@Test
@InSequence(value = 9)
@OperateOnDeployment("dep.active-2")
public void testPurgeIndex() throws Exception {
memberRegistration.purgeMemberIndex();
List<Member> search = memberRegistration.search("Peter");
assertNotNull("Search should never return null", search);
assertTrue("Search results should be empty", search.isEmpty());
assertEquals("Index size isn't correct", 0, memberRegistration.indexSize());
}
@Test
@InSequence(value = 10)
@OperateOnDeployment("dep.active-2")
public void testReIndex() throws Exception {
memberRegistration.indexMembers();
List<Member> search = memberRegistration.search("Peter");
assertFalse("Expected at least one result after the indexing", search.isEmpty());
assertEquals("Search hasn't found a new member after reindex", "Peter O'Tall", search.get(0).getName());
assertEquals("Index size isn't correct", 2, memberRegistration.indexSize());
}
@Test
@InSequence(value = 11)
@OperateOnDeployment("dep.active-1")
public void testNewMemberSpatialSearchNearGD() throws Exception {
List<Member> members = memberRegistration.spatialSearch(GD_LATITUDE, GD_LONGITUDE, 10);
assertEquals("Expected one result from spatial search", 1, members.size());
assertEquals("Spatial search did not find the correct member", "Davide D'Alto", members.get(0).getName());
}
@Test
@InSequence(value = 12)
@OperateOnDeployment("dep.active-1")
public void testNewMemberSpatialSearchNearGDWithDistance() throws Exception {
List<Object[]> membersWithDistance = memberRegistration.spatialSearchWithDistance(GD_LATITUDE, GD_LONGITUDE, 10);
assertEquals("Expected one result from spatial search", 1, membersWithDistance.size());
assertEquals("Spatial search did not find the correct member", "Davide D'Alto",
((Member) membersWithDistance.get(0)[1]).getName());
assertTrue("Distance was not greater than zero", (Double) membersWithDistance.get(0)[0] > 0);
}
@Test
@InSequence(value = 13)
@OperateOnDeployment("dep.active-1")
public void testNewMemberSpatialSearchNearCBGB() throws Exception {
List<Member> members = memberRegistration.spatialSearch(CBGB_LATITUDE, CBGB_LONGITUDE, 10);
assertEquals("Expected one result from spatial search", 1, members.size());
assertEquals("Spatial search did not find the correct member", "Peter O'Tall", members.get(0).getName());
}
@Test
@InSequence(value = 14)
@OperateOnDeployment("dep.active-1")
public void testNewMemberSpatialSearchNearCBGBWithDistance() throws Exception {
List<Object[]> membersWithDistance = memberRegistration.spatialSearchWithDistance(CBGB_LATITUDE, CBGB_LONGITUDE,
10);
assertEquals("Expected one result from spatial search", 1, membersWithDistance.size());
assertEquals("Spatial search did not find the correct member", "Peter O'Tall",
((Member) membersWithDistance.get(0)[1]).getName());
assertTrue("Distance was not greater than zero", (Double) membersWithDistance.get(0)[0] > 0);
}
@Test
@InSequence(value = 15)
@OperateOnDeployment("dep.active-1")
public void testNewMemberSpatialSearchNearBG() throws Exception {
List<Member> members = memberRegistration.spatialSearch(BG_LATITUDE, BG_LONGITUDE, 10);
assertEquals("Expected one result from spatial search", 0, members.size());
}
@Test
@InSequence(value = 16)
@OperateOnDeployment("dep.active-1")
public void testNewMemberSpatialSearchNearBGWithDistance() throws Exception {
List<Object[]> membersWithDistance = memberRegistration.spatialSearchWithDistance(BG_LATITUDE, BG_LONGITUDE, 10);
assertEquals("Expected one result from spatial search", 0, membersWithDistance.size());
}
@Test
@InSequence(value = 17)
@OperateOnDeployment("dep.active-1")
public void testNewMemberSpatialSearchLongDistance() throws Exception {
List<Member> members = memberRegistration.spatialSearch(GD_LATITUDE, GD_LONGITUDE, 5000);
assertEquals("Expected one result from spatial search", 2, members.size());
assertEquals("Spatial search did not find the correct member", "Davide D'Alto", members.get(0).getName());
assertEquals("Spatial search did not find the correct member", "Peter O'Tall", members.get(1).getName());
}
@Test
@InSequence(value = 18)
@OperateOnDeployment("dep.active-1")
public void testNewMemberSpatialSearchLongDistanceWithDistance() throws Exception {
List<Object[]> membersWithDistance = memberRegistration
.spatialSearchWithDistance(GD_LATITUDE, GD_LONGITUDE, 5000);
assertEquals("Expected one result from spatial search", 2, membersWithDistance.size());
assertEquals("Spatial search did not find the correct member", "Davide D'Alto",
((Member) membersWithDistance.get(0)[1]).getName());
assertTrue("Distance was not greater than zero", (Double) membersWithDistance.get(0)[0] > 0);
assertEquals("Spatial search did not find the correct member", "Peter O'Tall",
((Member) membersWithDistance.get(1)[1]).getName());
assertTrue("Distance was not greater than zero", (Double) membersWithDistance.get(1)[0] > 0);
}
}