blob: 8c51376351a14724ce08ce420d3887503ae184cd [file] [log] [blame]
package com.gemstone.gemfire.tools.databrowser.dunit;
import java.util.ArrayList;
import java.util.List;
import java.util.Collection;
import java.util.Iterator;
import java.util.Arrays;
import junit.framework.Assert;
import com.gemstone.gemfire.cache.query.types.StructType;
import com.gemstone.gemfire.mgmt.DataBrowser.model.member.GemFireMember;
import com.gemstone.gemfire.mgmt.DataBrowser.query.IntrospectionResult;
import com.gemstone.gemfire.mgmt.DataBrowser.query.QueryExecutionException;
import com.gemstone.gemfire.mgmt.DataBrowser.query.QueryResult;
import com.gemstone.gemfire.tools.databrowser.data.Customer;
import dunit.SerializableRunnable;
public class ObjectTypeQueryResultDUnitTest extends DataBrowserDUnitTestCase {
public ObjectTypeQueryResultDUnitTest(String name) {
super(name);
}
@Override
public void populateData() {
List result = new ArrayList();
result.add(new Customer(1, "Hrishi", "Pune"));
populateRegion(DEFAULT_REGION_PATH, result.toArray());
}
public void testPrimitiveObjectQueryResult() throws Exception {
browser.invoke(new SerializableRunnable() {
public void run() {
// GemFireMember[] members = connection.getMembers();
//
// Assert.assertEquals(1, members.length);
// Assert.assertEquals(GemFireMember.GEMFIRE_CACHE_SERVER, members[0].getType());
String queryString = "SELECT distinct name FROM "+DEFAULT_REGION_PATH+" where name = 'Hrishi'";
QueryResult result = null;
try {
result = connection.executeQuery(queryString, null);
Assert.assertNotNull(result);
}
catch (QueryExecutionException e) {
fail("Failed to execute query through data browser",e);
}
IntrospectionResult [] result_t = result.getIntrospectionResult();
Assert.assertEquals(1, result_t.length);
IntrospectionResult metaInfo = result_t[0];
verifyPrimitiveType(metaInfo, String.class);
Collection<?> q_result = result.getQueryResult();
Iterator iter = q_result.iterator();
Object temp = iter.next();
try {
Assert.assertEquals("Hrishi", result.getColumnValue(temp, 0));
}
catch (Exception e) {
fail("Failed to read the value for column 0.",e);
}
}
});
}
public void testCompositeObjectQueryResult() throws Exception {
browser.invoke(new SerializableRunnable() {
public void run() {
// GemFireMember[] members = connection.getMembers();
//
// Assert.assertEquals(1, members.length);
// Assert.assertEquals(GemFireMember.GEMFIRE_CACHE_SERVER, members[0].getType());
String queryString = "SELECT * FROM "+DEFAULT_REGION_PATH+" where name = 'Hrishi'";
QueryResult result = null;
try {
result = connection.executeQuery(queryString, null);
Assert.assertNotNull(result);
}
catch (QueryExecutionException e) {
fail("Failed to execute query through data browser",e);
}
IntrospectionResult [] result_t = result.getIntrospectionResult();
Assert.assertEquals(1, result_t.length);
IntrospectionResult metaInfo = result_t[0];
Assert.assertEquals(3, metaInfo.getColumnCount());
List fields = Arrays.asList(new String[]{"name", "id", "address"});
List classtypes = Arrays.asList(new String[]{"java.lang.String","java.lang.Integer", "java.lang.String"});
List<Integer> columntypes = Arrays.asList(new Integer[] {IntrospectionResult.PRIMITIVE_TYPE_COLUMN,
IntrospectionResult.PRIMITIVE_TYPE_COLUMN,
IntrospectionResult.PRIMITIVE_TYPE_COLUMN});
verifyType(metaInfo, Customer.class, fields, classtypes, columntypes);
}
});
}
public void testStructQueryResult() {
browser.invoke(new SerializableRunnable() {
public void run() {
// GemFireMember[] members = connection.getMembers();
// Assert.assertEquals(1, members.length);
// Assert.assertEquals(GemFireMember.GEMFIRE_CACHE_SERVER, members[0].getType());
String queryString = "SELECT id , name FROM "+DEFAULT_REGION_PATH;
QueryResult result = null;
try {
result = connection.executeQuery(queryString, null);
Assert.assertNotNull(result);
}
catch (QueryExecutionException e) {
fail("Failed to execute query through data browser",e);
}
IntrospectionResult [] temp = result.getIntrospectionResult();
Assert.assertEquals(1, temp.length);
IntrospectionResult metaInfo = temp[0];
Assert.assertEquals(2, metaInfo.getColumnCount());
List fields = Arrays.asList(new String[]{"name", "id"});
List classtypes = Arrays.asList(new String[]{"java.lang.Object","java.lang.Object"});
List<Integer> columntypes = Arrays.asList(new Integer[] {IntrospectionResult.UNKNOWN_TYPE_COLUMN,
IntrospectionResult.UNKNOWN_TYPE_COLUMN });
verifyType(metaInfo, StructType.class, fields, classtypes, columntypes);
Collection temp1 = result.getQueryResult();
Assert.assertEquals(1, temp1.size());
Iterator iter = temp1.iterator();
Object tuple = iter.next();
try {
int index = metaInfo.getColumnIndex("id");
Class colClass = metaInfo.getColumnClass(tuple, index);
Assert.assertTrue(colClass.getCanonicalName().equals("java.lang.Integer"));
Assert.assertTrue(metaInfo.getColumnType(tuple,index) == IntrospectionResult.PRIMITIVE_TYPE_COLUMN);
index = metaInfo.getColumnIndex("name");
colClass = metaInfo.getColumnClass(tuple, index);
Assert.assertTrue(colClass.getCanonicalName().equals("java.lang.String"));
Assert.assertTrue(metaInfo.getColumnType(tuple,index) == IntrospectionResult.PRIMITIVE_TYPE_COLUMN);
}
catch (Exception e) {
fail("Failed to execute test ",e);
}
}
});
}
public void testIntegerType() {
browser.invoke(new SerializableRunnable() {
public void run() {
// GemFireMember[] members = connection.getMembers();
// Assert.assertEquals(1, members.length);
// Assert.assertEquals(GemFireMember.GEMFIRE_CACHE_SERVER, members[0].getType());
String queryString = DEFAULT_REGION_PATH+".size";
QueryResult result = null;
try {
result = connection.executeQuery(queryString, null);
Assert.assertNotNull(result);
}
catch (QueryExecutionException e) {
fail("Failed to execute query through data browser",e);
}
IntrospectionResult [] temp = result.getIntrospectionResult();
Assert.assertEquals(1, temp.length);
IntrospectionResult metaInfo = temp[0];
verifyPrimitiveType(metaInfo, Integer.class);
}
});
}
}