Search in sources :

Example 81 with Struct

use of org.apache.geode.cache.query.Struct in project geode by apache.

the class CopyOnReadQueryJUnitTest method helpTestCopyOnRead.

private void helpTestCopyOnRead(String queryString, int expectedResultsSize, int numObjects, int objectsAndResultsMultiplier, boolean hasIndex, boolean isPR, boolean containsInnerQuery) throws Exception {
    int expectedResultsSizeMultiplied = expectedResultsSize * objectsAndResultsMultiplier;
    int numInstances = numObjects * objectsAndResultsMultiplier;
    // We are a 1 VM test, replicated regions would put the actual domain object into the cache
    if (hasIndex && isPR) {
        // If we are PR we serialize the values
        // BUT if we have an index, we deserialize the values, so our instance count is double of our
        // put amount so far
        numInstances += numObjects * objectsAndResultsMultiplier;
    }
    assertEquals("Unexpected number of Portfolio instances", numInstances, Portfolio.instanceCount.get());
    // execute query
    QueryService qs = utils.getCache().getQueryService();
    Query query = qs.newQuery(queryString);
    SelectResults results = (SelectResults) query.execute();
    assertEquals("Results did not match expected count for query" + queryString, expectedResultsSizeMultiplied, results.size());
    for (Object o : results) {
        if (o instanceof Portfolio) {
            Portfolio p = (Portfolio) o;
            p.status = "discardStatus";
        } else {
            Struct struct = (Struct) o;
            Portfolio p = (Portfolio) struct.getFieldValues()[0];
            p.status = "discardStatus";
        }
    }
    if (!hasIndex && isPR) {
        // We are PR and we do not have an index, so we must deserialize all the values in the cache
        // at this point
        numInstances += (numObjects * objectsAndResultsMultiplier);
        if (containsInnerQuery) {
            // if we have an inner query, it would deserialize all objects for the inner query as well
            numInstances += numObjects * objectsAndResultsMultiplier;
        }
    }
    // So with all the deserialized objects we must also combine the query results of the query due
    // to copy on read
    assertEquals("Unexpected number of Portfolio instances for query " + query, numInstances + expectedResultsSizeMultiplied, Portfolio.instanceCount.get());
    results = (SelectResults) query.execute();
    assertEquals("No results were found", expectedResultsSizeMultiplied, results.size());
    for (Object o : results) {
        if (o instanceof Portfolio) {
            Portfolio p = (Portfolio) o;
            assertEquals("status should not have been changed", "testStatus", p.status);
        } else {
            Struct struct = (Struct) o;
            Portfolio p = (Portfolio) struct.getFieldValues()[0];
            assertEquals("status should not have been changed", "testStatus", p.status);
        }
    }
    if (!hasIndex && isPR) {
        // Again, because we have no index, we must deserialize the values in the region
        numInstances += (numObjects * objectsAndResultsMultiplier);
        if (containsInnerQuery) {
            // If we have an inner query, we must also deserialize the values in the region for this
            // query
            // We have some interesting logic in LocalRegion when deserializing. Based on these flags
            // we do not store the deserialized instance back in the cache
            numInstances += numObjects * objectsAndResultsMultiplier;
        }
    }
    // So with all the deserialized objects we must also combine the query results of two queries at
    // this point. These results themselves would have been copied
    assertEquals("Unexpected number of Portfolio instances", numInstances + expectedResultsSizeMultiplied * 2, Portfolio.instanceCount.get());
}
Also used : SelectResults(org.apache.geode.cache.query.SelectResults) Query(org.apache.geode.cache.query.Query) QueryService(org.apache.geode.cache.query.QueryService) Portfolio(org.apache.geode.cache.query.data.Portfolio) Struct(org.apache.geode.cache.query.Struct)

Example 82 with Struct

use of org.apache.geode.cache.query.Struct in project geode by apache.

the class CompiledGroupBySelect method applyGroupBy.

private void applyGroupBy(SelectResults baseResults, ExecutionContext context, boolean isStruct, SelectResults newResults, Aggregator[] aggregators, boolean isStructFields, boolean[] objectChangedMarker, int limitValue) throws FunctionDomainException, TypeMismatchException, NameResolutionException, QueryInvocationTargetException {
    Iterator iter = baseResults.iterator();
    Object[] orderByTupleHolderCurrent = null;
    Object[] orderByTupleHolderPrev = null;
    Object orderByCurrent = null;
    Object orderByPrev = null;
    boolean isSingleOrderBy = this.orderByAttrs.size() <= 1;
    if (!isSingleOrderBy) {
        orderByTupleHolderPrev = new Object[orderByAttrs.size()];
        orderByTupleHolderCurrent = new Object[orderByAttrs.size()];
    }
    boolean isFirst = true;
    Object prev = null;
    boolean unterminated = false;
    boolean keepAdding = true;
    while (iter.hasNext() && keepAdding) {
        Object current = iter.next();
        if (isSingleOrderBy) {
            orderByCurrent = this.getOrderByEvaluatedTuple(context, isSingleOrderBy, null, isStruct ? ((Struct) current).getFieldValues() : current, objectChangedMarker);
        } else {
            orderByTupleHolderCurrent = (Object[]) this.getOrderByEvaluatedTuple(context, isSingleOrderBy, orderByTupleHolderCurrent, isStruct ? ((Struct) current).getFieldValues() : current, objectChangedMarker);
        }
        if (isFirst || areOrderByTupleEqual(isSingleOrderBy, orderByPrev, orderByCurrent, orderByTupleHolderPrev, orderByTupleHolderCurrent)) {
            accumulate(isStruct, aggregators, current, objectChangedMarker);
            unterminated = true;
            isFirst = false;
        } else {
            keepAdding = terminateAndAddToResults(isStruct, newResults, aggregators, prev, context, isStructFields, limitValue);
            this.accumulate(isStruct, aggregators, current, objectChangedMarker);
            unterminated = true;
        }
        // swap the holder arrays
        Object[] temp = orderByTupleHolderCurrent;
        orderByTupleHolderCurrent = orderByTupleHolderPrev;
        orderByTupleHolderPrev = temp;
        orderByPrev = orderByCurrent;
        prev = current;
    }
    if (unterminated && keepAdding) {
        this.terminateAndAddToResults(isStruct, newResults, aggregators, prev, context, isStructFields, limitValue);
    }
    if (this.originalOrderByClause != null && limitValue > 0 && (context.getIsPRQueryNode() || context.getBucketList() == null)) {
        ((Bag) newResults).applyLimit(limitValue);
    }
}
Also used : Iterator(java.util.Iterator) Struct(org.apache.geode.cache.query.Struct)

Example 83 with Struct

use of org.apache.geode.cache.query.Struct in project geode by apache.

the class StructSetOrResultsSet method getOrderByComparatorAndLimitForQuery.

public Wrapper getOrderByComparatorAndLimitForQuery(String orderByQuery, int unorderedResultSize) throws FunctionDomainException, TypeMismatchException, NameResolutionException, QueryInvocationTargetException, NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException, NoSuchMethodException, InvocationTargetException {
    DefaultQuery q = (DefaultQuery) CacheUtils.getQueryService().newQuery(orderByQuery);
    CompiledSelect cs = q.getSimpleSelect();
    List<CompiledSortCriterion> orderByAttribs = null;
    if (cs.getType() == CompiledValue.GROUP_BY_SELECT) {
        Field originalOrderByMethod = CompiledGroupBySelect.class.getDeclaredField("originalOrderByClause");
        originalOrderByMethod.setAccessible(true);
        orderByAttribs = (List<CompiledSortCriterion>) originalOrderByMethod.get(cs);
    } else {
        orderByAttribs = cs.getOrderByAttrs();
    }
    ObjectType resultType = cs.getElementTypeForOrderByQueries();
    ExecutionContext context = new ExecutionContext(null, CacheUtils.getCache());
    final OrderByComparator obc = new OrderByComparator(orderByAttribs, resultType, context);
    Comparator baseComparator = obc;
    if (resultType.isStructType()) {
        baseComparator = new Comparator<Struct>() {

            @Override
            public int compare(Struct o1, Struct o2) {
                return obc.compare(o1.getFieldValues(), o2.getFieldValues());
            }
        };
    }
    final Comparator secondLevelComparator = baseComparator;
    final Comparator finalComparator = new Comparator() {

        @Override
        public int compare(Object o1, Object o2) {
            final boolean[] orderByColsEqual = new boolean[] { false };
            QueryObserverHolder.setInstance(new QueryObserverAdapter() {

                @Override
                public void orderByColumnsEqual() {
                    orderByColsEqual[0] = true;
                }
            });
            int result = secondLevelComparator.compare(o1, o2);
            if (result != 0 && orderByColsEqual[0]) {
                result = 0;
            }
            return result;
        }
    };
    Field hasUnmappedOrderByColsField = CompiledSelect.class.getDeclaredField("hasUnmappedOrderByCols");
    hasUnmappedOrderByColsField.setAccessible(true);
    boolean skip = ((Boolean) hasUnmappedOrderByColsField.get(cs)).booleanValue();
    ValidationLevel validationLevel = ValidationLevel.ALL;
    int limit;
    if (cs.getType() == CompiledValue.GROUP_BY_SELECT) {
        Field limitCVField = CompiledGroupBySelect.class.getDeclaredField("limit");
        limitCVField.setAccessible(true);
        CompiledValue limitCV = (CompiledValue) limitCVField.get(cs);
        Method evaluateLimitMethod = CompiledSelect.class.getDeclaredMethod("evaluateLimitValue", ExecutionContext.class, CompiledValue.class);
        evaluateLimitMethod.setAccessible(true);
        limit = ((Integer) evaluateLimitMethod.invoke(null, context, limitCV)).intValue();
    } else {
        limit = cs.getLimitValue(null);
    }
    if (limit != -1 && limit < unorderedResultSize) {
        // chances are that results will not match
        if (skip) {
            validationLevel = ValidationLevel.NONE;
        } else {
            validationLevel = ValidationLevel.ORDER_BY_ONLY;
        }
    } else {
        if (skip) {
            validationLevel = ValidationLevel.MATCH_ONLY;
        }
    }
    return new Wrapper(finalComparator, limit, validationLevel);
}
Also used : CompiledSortCriterion(org.apache.geode.cache.query.internal.CompiledSortCriterion) DefaultQuery(org.apache.geode.cache.query.internal.DefaultQuery) CompiledValue(org.apache.geode.cache.query.internal.CompiledValue) Method(java.lang.reflect.Method) Comparator(java.util.Comparator) OrderByComparator(org.apache.geode.cache.query.internal.OrderByComparator) Struct(org.apache.geode.cache.query.Struct) Field(java.lang.reflect.Field) ObjectType(org.apache.geode.cache.query.types.ObjectType) ExecutionContext(org.apache.geode.cache.query.internal.ExecutionContext) QueryObserverAdapter(org.apache.geode.cache.query.internal.QueryObserverAdapter) OrderByComparator(org.apache.geode.cache.query.internal.OrderByComparator) CompiledSelect(org.apache.geode.cache.query.internal.CompiledSelect)

Example 84 with Struct

use of org.apache.geode.cache.query.Struct in project geode by apache.

the class OrderByTestImplementation method testOrderByWithColumnAlias_Bug52041_1.

@Test
public void testOrderByWithColumnAlias_Bug52041_1() throws Exception {
    Region region = createRegion("portfolio", Portfolio.class);
    for (int i = 1; i < 200; ++i) {
        Portfolio pf = new Portfolio(i);
        pf.shortID = (short) ((short) i / 5);
        pf.status = "active";
        region.put("" + i, pf);
    }
    String queryStr = "select distinct p.status, p.shortID as short_id  from /portfolio p where p.ID >= 0 " + "order by short_id asc";
    QueryService qs = CacheUtils.getQueryService();
    Query query = qs.newQuery(queryStr);
    SelectResults<Struct> results = (SelectResults<Struct>) query.execute();
    Iterator<Struct> iter = results.asList().iterator();
    int counter = 0;
    while (iter.hasNext()) {
        Struct str = iter.next();
        assertEquals(counter, ((Short) str.get("short_id")).intValue());
        ++counter;
    }
    assertEquals(39, counter - 1);
    CompiledSelect cs = ((DefaultQuery) query).getSimpleSelect();
    List<CompiledSortCriterion> orderbyAtts = cs.getOrderByAttrs();
    assertEquals(orderbyAtts.get(0).getColumnIndex(), 1);
}
Also used : CompiledSortCriterion(org.apache.geode.cache.query.internal.CompiledSortCriterion) DefaultQuery(org.apache.geode.cache.query.internal.DefaultQuery) Query(org.apache.geode.cache.query.Query) DefaultQuery(org.apache.geode.cache.query.internal.DefaultQuery) Portfolio(org.apache.geode.cache.query.data.Portfolio) Struct(org.apache.geode.cache.query.Struct) SelectResults(org.apache.geode.cache.query.SelectResults) QueryService(org.apache.geode.cache.query.QueryService) CompiledSelect(org.apache.geode.cache.query.internal.CompiledSelect) Region(org.apache.geode.cache.Region) Test(org.junit.Test)

Example 85 with Struct

use of org.apache.geode.cache.query.Struct in project geode by apache.

the class OrderByTestImplementation method testOrderByWithNullValuesUseIndex.

@Test
public void testOrderByWithNullValuesUseIndex() throws Exception {
    // IN ORDER BY NULL values are treated as smallest. E.g For an ascending order by field
    // its null values are reported first and then the values in ascending order.
    String[] queries = { // 0
    "SELECT  distinct * FROM /portfolio1 pf1 where ID > 0 order by pkid", // 1 same as
    "SELECT  distinct * FROM /portfolio1 pf1 where ID > 0 order by pkid asc", // 2 null values are
    "SELECT  distinct * FROM /portfolio1 where ID > 0 order by pkid desc", // 3 null values
    "SELECT  distinct pkid FROM /portfolio1 pf1 where ID > 0 order by pkid", // 4
    "SELECT  distinct pkid FROM /portfolio1 pf1 where ID > 0 order by pkid asc", // 5 null
    "SELECT  distinct pkid FROM /portfolio1 pf1 where ID > 0 order by pkid desc", // 6
    "SELECT  distinct ID, pkid FROM /portfolio1 pf1 where ID < 1000 order by pkid", // 7
    "SELECT  distinct ID, pkid FROM /portfolio1 pf1 where ID > 3 order by pkid", // 8
    "SELECT  distinct ID, pkid FROM /portfolio1 pf1 where ID < 1000 order by pkid", // 9
    "SELECT  distinct ID, pkid FROM /portfolio1 pf1 where ID > 0 order by pkid" };
    Object[][] r = new Object[queries.length][2];
    QueryService qs;
    qs = CacheUtils.getQueryService();
    // Create Regions
    final int size = 9;
    final int numNullValues = 3;
    Region r1 = this.createRegion("portfolio1", Portfolio.class);
    for (int i = 1; i <= size; i++) {
        Portfolio pf = new Portfolio(i);
        // Add numNullValues null values.
        if (i <= numNullValues) {
            pf.pkid = null;
            pf.status = "a" + i;
        }
        r1.put(i + "", pf);
    }
    // Create Indexes
    this.createIndex("IDIndexPf1", IndexType.FUNCTIONAL, "ID", "/portfolio1");
    this.createIndex("PKIDIndexPf1", IndexType.FUNCTIONAL, "pkid", "/portfolio1");
    Query q = null;
    SelectResults results = null;
    List list = null;
    String str = "";
    try {
        // Query 0 - null values are first in the order.
        QueryObserverImpl observer = new QueryObserverImpl();
        QueryObserverHolder.setInstance(observer);
        str = queries[0];
        q = CacheUtils.getQueryService().newQuery(str);
        CacheUtils.getLogger().info("Executing query: " + str);
        results = (SelectResults) q.execute();
        if (assertIndexUsedOnQueryNode() && !observer.isIndexesUsed) {
            fail("Index is NOT uesd");
        }
        r[0][0] = results;
        list = results.asList();
        for (int i = 1; i <= size; i++) {
            Portfolio p = (Portfolio) list.get((i - 1));
            if (i <= numNullValues) {
                assertNull("Expected null value for pkid, p: " + p, p.pkid);
            } else {
                assertNotNull("Expected not null value for pkid", p.pkid);
                if (!p.pkid.equals("" + i)) {
                    fail(" Value of pkid is not in expected order.");
                }
            }
        }
        // Query 1 - null values are first in the order.
        str = queries[1];
        q = CacheUtils.getQueryService().newQuery(str);
        CacheUtils.getLogger().info("Executing query: " + str);
        results = (SelectResults) q.execute();
        list = results.asList();
        for (int i = 1; i <= size; i++) {
            Portfolio p = (Portfolio) list.get((i - 1));
            if (i <= numNullValues) {
                assertNull("Expected null value for pkid", p.pkid);
            } else {
                assertNotNull("Expected not null value for pkid", p.pkid);
                if (!p.pkid.equals("" + i)) {
                    fail(" Value of pkid is not in expected order.");
                }
            }
        }
        // Query 2 - null values are last in the order.
        str = queries[2];
        q = CacheUtils.getQueryService().newQuery(str);
        CacheUtils.getLogger().info("Executing query: " + str);
        results = (SelectResults) q.execute();
        list = results.asList();
        for (int i = 1; i <= size; i++) {
            Portfolio p = (Portfolio) list.get((i - 1));
            if (i > (size - numNullValues)) {
                assertNull("Expected null value for pkid", p.pkid);
            } else {
                assertNotNull("Expected not null value for pkid", p.pkid);
                if (!p.pkid.equals("" + (size - (i - 1)))) {
                    fail(" Value of pkid is not in expected order.");
                }
            }
        }
        // Query 3 - 1 distinct null value with pkid.
        str = queries[3];
        q = CacheUtils.getQueryService().newQuery(str);
        CacheUtils.getLogger().info("Executing query: " + str);
        results = (SelectResults) q.execute();
        list = results.asList();
        for (int i = 1; i <= list.size(); i++) {
            String pkid = (String) list.get((i - 1));
            if (i == 1) {
                assertNull("Expected null value for pkid", pkid);
            } else {
                assertNotNull("Expected not null value for pkid", pkid);
                if (!pkid.equals("" + (numNullValues + (i - 1)))) {
                    fail(" Value of pkid is not in expected order.");
                }
            }
        }
        // Query 4 - 1 distinct null value with pkid.
        observer = new QueryObserverImpl();
        QueryObserverHolder.setInstance(observer);
        str = queries[4];
        q = CacheUtils.getQueryService().newQuery(str);
        CacheUtils.getLogger().info("Executing query: " + str);
        results = (SelectResults) q.execute();
        if (assertIndexUsedOnQueryNode() && !observer.isIndexesUsed) {
            fail("Index is NOT uesd");
        }
        list = results.asList();
        for (int i = 1; i <= list.size(); i++) {
            String pkid = (String) list.get((i - 1));
            if (i == 1) {
                assertNull("Expected null value for pkid", pkid);
            } else {
                assertNotNull("Expected not null value for pkid", pkid);
                if (!pkid.equals("" + (numNullValues + (i - 1)))) {
                    fail(" Value of pkid is not in expected order.");
                }
            }
        }
        // Query 5 - 1 distinct null value with pkid at the end.
        str = queries[5];
        q = CacheUtils.getQueryService().newQuery(str);
        CacheUtils.getLogger().info("Executing query: " + str);
        results = (SelectResults) q.execute();
        list = results.asList();
        for (int i = 1; i <= list.size(); i++) {
            String pkid = (String) list.get((i - 1));
            if (i == (list.size())) {
                assertNull("Expected null value for pkid", pkid);
            } else {
                assertNotNull("Expected not null value for pkid", pkid);
                if (!pkid.equals("" + (size - (i - 1)))) {
                    fail(" Value of pkid is not in expected order.");
                }
            }
        }
        // Query 6 - ID field values should be in the same order.
        str = queries[6];
        q = CacheUtils.getQueryService().newQuery(str);
        CacheUtils.getLogger().info("Executing query: " + str);
        results = (SelectResults) q.execute();
        list = results.asList();
        for (int i = 1; i <= size; i++) {
            Struct strct = (Struct) list.get(i - 1);
            int id = ((Integer) strct.getFieldValues()[0]).intValue();
            // ID should be one of 1, 2, 3 because of distinct
            if (i <= numNullValues) {
                if (!(id == 1 || id == 2 || id == 3)) {
                    fail(" Value of ID is not as expected " + id);
                }
            } else {
                if (id != i) {
                    fail(" Value of ID is not as expected " + id);
                }
            }
        }
        // Query 7 - ID field values should be in the same order.
        str = queries[7];
        q = CacheUtils.getQueryService().newQuery(str);
        CacheUtils.getLogger().info("Executing query: " + str);
        results = (SelectResults) q.execute();
        list = results.asList();
        for (int i = 1; i <= list.size(); i++) {
            Struct strct = (Struct) list.get(i - 1);
            int id = ((Integer) strct.getFieldValues()[0]).intValue();
            if (id != (numNullValues + i)) {
                fail(" Value of ID is not as expected, " + id);
            }
        }
        // Query 8 - ID, pkid field values should be in the same order.
        str = queries[8];
        q = CacheUtils.getQueryService().newQuery(str);
        CacheUtils.getLogger().info("Executing query: " + str);
        results = (SelectResults) q.execute();
        list = results.asList();
        for (int i = 1; i <= size; i++) {
            Struct vals = (Struct) list.get((i - 1));
            int id = ((Integer) vals.get("ID")).intValue();
            String pkid = (String) vals.get("pkid");
            // ID should be one of 1, 2, 3 because of distinct
            if (i <= numNullValues) {
                if (!(id == 1 || id == 2 || id == 3)) {
                    fail(" Value of ID is not as expected " + id);
                }
                assertNull("Expected null value for pkid", pkid);
            } else {
                if (id != i) {
                    fail(" Value of ID is not as expected " + id);
                }
                assertNotNull("Expected not null value for pkid", pkid);
                if (!pkid.equals("" + i)) {
                    fail(" Value of pkid is not in expected order.");
                }
            }
        }
        // Query 9 - ID, pkid field values should be in the same order.
        str = queries[9];
        q = CacheUtils.getQueryService().newQuery(str);
        CacheUtils.getLogger().info("Executing query: " + str);
        results = (SelectResults) q.execute();
        list = results.asList();
        for (int i = 1; i <= list.size(); i++) {
            Struct vals = (Struct) list.get((i - 1));
            int id = ((Integer) vals.get("ID")).intValue();
            String pkid = (String) vals.get("pkid");
            if (i <= numNullValues) {
                assertNull("Expected null value for pkid, " + pkid, pkid);
                if (!(id == 1 || id == 2 || id == 3)) {
                    fail(" Value of ID is not as expected " + id);
                }
            } else {
                if (!pkid.equals("" + i)) {
                    fail(" Value of pkid is not as expected, " + pkid);
                }
                if (id != i) {
                    fail(" Value of ID is not as expected, " + id);
                }
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
        fail(q.getQueryString());
    }
}
Also used : Query(org.apache.geode.cache.query.Query) DefaultQuery(org.apache.geode.cache.query.internal.DefaultQuery) Portfolio(org.apache.geode.cache.query.data.Portfolio) RegionNotFoundException(org.apache.geode.cache.query.RegionNotFoundException) IndexInvalidException(org.apache.geode.cache.query.IndexInvalidException) IndexNameConflictException(org.apache.geode.cache.query.IndexNameConflictException) IndexExistsException(org.apache.geode.cache.query.IndexExistsException) Struct(org.apache.geode.cache.query.Struct) SelectResults(org.apache.geode.cache.query.SelectResults) QueryService(org.apache.geode.cache.query.QueryService) Region(org.apache.geode.cache.Region) ArrayList(java.util.ArrayList) List(java.util.List) Test(org.junit.Test)

Aggregations

Struct (org.apache.geode.cache.query.Struct)110 SelectResults (org.apache.geode.cache.query.SelectResults)80 QueryService (org.apache.geode.cache.query.QueryService)70 Region (org.apache.geode.cache.Region)67 Test (org.junit.Test)66 Query (org.apache.geode.cache.query.Query)57 Iterator (java.util.Iterator)54 Portfolio (org.apache.geode.cache.query.data.Portfolio)46 DefaultQuery (org.apache.geode.cache.query.internal.DefaultQuery)30 ObjectType (org.apache.geode.cache.query.types.ObjectType)30 CompiledSelect (org.apache.geode.cache.query.internal.CompiledSelect)27 StructType (org.apache.geode.cache.query.types.StructType)26 HashSet (java.util.HashSet)19 List (java.util.List)17 PortfolioPdx (org.apache.geode.cache.query.data.PortfolioPdx)17 CacheException (org.apache.geode.cache.CacheException)16 IntegrationTest (org.apache.geode.test.junit.categories.IntegrationTest)16 ArrayList (java.util.ArrayList)15 Host (org.apache.geode.test.dunit.Host)14 VM (org.apache.geode.test.dunit.VM)14