use of org.apache.geode.cache.RegionAttributes in project geode by apache.
the class CQJUnitTest method testValidateCQ.
/**
* Test to make sure CQs that have invalid syntax throw QueryInvalidException, and CQs that have
* unsupported CQ features throw UnsupportedOperationException
*/
@Test
public void testValidateCQ() throws Exception {
AttributesFactory attributesFactory = new AttributesFactory();
RegionAttributes regionAttributes = attributesFactory.create();
// The order by query computes dependency after compilation so the region has to be present
// for the query to progress further to throw UnsupportedOperationException
cache.createRegion("region", regionAttributes);
// default attributes
CqAttributes attrs = new CqAttributesFactory().create();
// valid CQ
this.qs.newCq("SELECT * FROM /region WHERE status = 'active'", attrs);
// invalid syntax
try {
this.qs.newCq("this query is garbage", attrs);
fail("should have thrown a QueryInvalidException");
} catch (QueryInvalidException e) {
// pass
}
String[] unsupportedCQs = new String[] { // not "just" a select statement
"(select * from /region where status = 'active').isEmpty", // cannot be DISTINCT
"select DISTINCT * from /region WHERE status = 'active'", // references more than one region
"select * from /region1 r1, /region2 r2 where r1 = r2", // where clause refers to a region
"select * from /region r where r.val = /region.size", // more than one iterator in FROM clause
"select * from /portfolios p1, p1.positions p2 where p2.id = 'IBM'", // first iterator in FROM clause is not just a region path
"select * from /region.entries e where e.value.id = 23", // has projections
"select id from /region where status = 'active'", // has ORDER BY
"select * from /region where status = 'active' ORDER BY id" };
for (int i = 0; i < unsupportedCQs.length; i++) {
try {
this.qs.newCq(unsupportedCQs[i], attrs);
fail("should have thrown UnsupportedOperationException for query #" + i);
} catch (UnsupportedOperationException e) {
// pass
}
}
}
use of org.apache.geode.cache.RegionAttributes in project geode by apache.
the class ClientToServerDeltaDUnitTest method createServerCache.
/*
* create server cache
*/
public static Integer createServerCache(Boolean attachListener, Boolean isEmpty, Boolean clone, Boolean enableDelta) throws Exception {
// for validation
updates = 0;
create = 0;
firstUpdate = null;
secondUpdate = null;
error = false;
Properties props = new Properties();
props.setProperty(DELTA_PROPAGATION, enableDelta.toString());
new ClientToServerDeltaDUnitTest().createCache(props);
AttributesFactory factory = new AttributesFactory();
factory.setScope(Scope.DISTRIBUTED_ACK);
factory.setConcurrencyChecksEnabled(true);
if (isEmpty) {
factory.setSubscriptionAttributes(new SubscriptionAttributes(InterestPolicy.ALL));
factory.setDataPolicy(DataPolicy.EMPTY);
} else {
factory.setDataPolicy(DataPolicy.REPLICATE);
}
factory.setCloningEnabled(clone);
RegionAttributes attrs = factory.create();
region = cache.createRegion(REGION_NAME, attrs);
AttributesMutator am = region.getAttributesMutator();
if (attachListener) {
am.addCacheListener(new CacheListenerAdapter() {
@Override
public void afterCreate(EntryEvent event) {
create++;
}
@Override
public void afterUpdate(EntryEvent event) {
switch(updates) {
case 0:
// first delta
validateUpdates(event, firstUpdate, "FIRST");
updates++;
break;
case 1:
// combine delta
validateUpdates(event, firstUpdate, "FIRST");
validateUpdates(event, secondUpdate, "SECOND");
updates++;
break;
default:
break;
}
}
});
} else if (!isEmpty) {
am.addCacheListener(new CacheListenerAdapter() {
@Override
public void afterCreate(EntryEvent event) {
switch(create) {
case 1:
validateUpdates(event, firstUpdate, "FIRST");
create++;
break;
case 2:
validateUpdates(event, secondUpdate, "SECOND");
create++;
break;
default:
create++;
break;
}
}
});
}
CacheServer server = cache.addCacheServer();
int port = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
server.setPort(port);
// ensures updates to be sent instead of invalidations
server.setNotifyBySubscription(true);
server.start();
return new Integer(server.getPort());
}
use of org.apache.geode.cache.RegionAttributes in project geode by apache.
the class CQListGIIDUnitTest method createClientCache.
public static void createClientCache(Integer port1, Integer port2, Integer port3, String rLevel, Boolean addListener) throws Exception {
CacheServerTestUtil.disableShufflingOfEndpoints();
String host = NetworkUtils.getIPLiteral();
Properties props = new Properties();
props.setProperty(MCAST_PORT, "0");
props.setProperty(LOCATORS, "");
new CQListGIIDUnitTest().createCache(props);
PoolFactory pf = PoolManager.createFactory();
int endPointCount = 1;
pf.addServer(host, port1);
if (port2.intValue() != -1) {
pf.addServer(host, port2);
endPointCount++;
}
if (port3.intValue() != -1) {
pf.addServer(host, port3);
endPointCount++;
}
pf.setRetryAttempts(5);
pf.setReadTimeout(2500);
pf.setSocketBufferSize(32768);
pf.setPingInterval(1000);
pf.setMinConnections(endPointCount * 2);
pf.setSubscriptionRedundancy(Integer.parseInt(rLevel));
pf.setSubscriptionEnabled(true).create("clientPool");
try {
cache.getQueryService();
} catch (Exception cqe) {
Assert.fail("Failed to getCQService.", cqe);
}
AttributesFactory factory = new AttributesFactory();
factory.setScope(Scope.LOCAL);
factory.setPoolName("clientPool");
RegionAttributes attrs = factory.create();
createRegion(regions[0], "root", attrs);
createRegion(regions[1], "root", attrs);
logger = cache.getLogger();
}
use of org.apache.geode.cache.RegionAttributes in project geode by apache.
the class CQListGIIDUnitTest method createServerCache.
public static Integer createServerCache(String ePolicy, Integer cap) throws Exception {
new CQListGIIDUnitTest().createCache(new Properties());
AttributesFactory factory = new AttributesFactory();
factory.setScope(Scope.DISTRIBUTED_ACK);
factory.setDataPolicy(DataPolicy.REPLICATE);
RegionAttributes attrs = factory.create();
// cache.createRegion(regionName, attrs);
createRegion(regions[0], "root", attrs);
createRegion(regions[1], "root", attrs);
Thread.sleep(2000);
logger = cache.getLogger();
int port = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
CacheServer server1 = cache.addCacheServer();
server1.setPort(port);
server1.setNotifyBySubscription(true);
if (ePolicy != null) {
File overflowDirectory = new File("bsi_overflow_" + port);
overflowDirectory.mkdir();
DiskStoreFactory dsf = cache.createDiskStoreFactory();
File[] dirs1 = new File[] { overflowDirectory };
server1.getClientSubscriptionConfig().setEvictionPolicy(ePolicy);
server1.getClientSubscriptionConfig().setCapacity(cap.intValue());
// specify diskstore for this server
server1.getClientSubscriptionConfig().setDiskStoreName(dsf.setDiskDirs(dirs1).create("bsi").getName());
}
server1.start();
Thread.sleep(2000);
return Integer.valueOf(server1.getPort());
}
use of org.apache.geode.cache.RegionAttributes in project geode by apache.
the class DeltaToRegionRelationCQRegistrationDUnitTest method createClientCache2.
/*
* create client cache and return's primary server location object (primary)
*/
public static Integer createClientCache2(String host1, String host2, Integer port1, Integer port2) throws Exception {
Properties props = new Properties();
props.setProperty(MCAST_PORT, "0");
props.setProperty(LOCATORS, "");
new DeltaToRegionRelationCQRegistrationDUnitTest().createCache(props);
PoolImpl p = (PoolImpl) PoolManager.createFactory().addServer(host1, port1.intValue()).addServer(host2, port2.intValue()).setThreadLocalConnections(true).setMinConnections(3).setSubscriptionEnabled(true).setSubscriptionRedundancy(0).setReadTimeout(10000).setSocketBufferSize(32768).create("DeltaToRegionRelationCQRegistrationTestPool");
AttributesFactory factory = new AttributesFactory();
factory.setScope(Scope.DISTRIBUTED_ACK);
factory.setDataPolicy(DataPolicy.EMPTY);
factory.setPoolName(p.getName());
// region with empty data policy
RegionAttributes attrs = factory.create();
cache.createRegion(REGION_NAME1, attrs);
factory.setDataPolicy(DataPolicy.NORMAL);
attrs = factory.create();
// region with non empty data policy
cache.createRegion(REGION_NAME2, attrs);
return new Integer(p.getPrimaryPort());
}
Aggregations