use of org.apache.geode.test.dunit.SerializableRunnable in project geode by apache.
the class PdxQueryCQDUnitTest method testCqAndInterestRegistrationsWithFailOver.
/**
* Tests client-server query on PdxInstance.
*/
@Test
public void testCqAndInterestRegistrationsWithFailOver() throws CacheException {
final Host host = Host.getHost(0);
VM vm0 = host.getVM(0);
VM vm1 = host.getVM(1);
VM vm2 = host.getVM(2);
VM vm3 = host.getVM(3);
final int numberOfEntries = 10;
// where id > 5 (0-5)
final int queryLimit = 6;
final String[] queries = new String[] { "SELECT * FROM " + regName + " p WHERE p.ticker = 'vmware'", "SELECT * FROM " + regName + " WHERE id > 5" };
// Start server1
vm0.invoke(new CacheSerializableRunnable("Create Bridge Server") {
public void run2() throws CacheException {
configAndStartBridgeServer(false, true);
Region region = getRootRegion().getSubregion(regionName);
}
});
// Start server2
vm1.invoke(new CacheSerializableRunnable("Create Bridge Server") {
public void run2() throws CacheException {
configAndStartBridgeServer(false, true);
Region region = getRootRegion().getSubregion(regionName);
}
});
// Start server3
vm2.invoke(new CacheSerializableRunnable("Create Bridge Server") {
public void run2() throws CacheException {
configAndStartBridgeServer(false, true);
Region region = getRootRegion().getSubregion(regionName);
}
});
// Client pool.
final int port0 = vm0.invoke(() -> PdxQueryCQTestBase.getCacheServerPort());
final int port1 = vm1.invoke(() -> PdxQueryCQTestBase.getCacheServerPort());
final int port2 = vm2.invoke(() -> PdxQueryCQTestBase.getCacheServerPort());
final String host0 = NetworkUtils.getServerHostName(vm0.getHost());
// Create client pool.
final String poolName = "testCqPool";
createPool(vm3, poolName, new String[] { host0, host0, host0 }, new int[] { port1, port0, port2 }, true, 1);
final String cqName = "testCq";
vm3.invoke(new CacheSerializableRunnable("init region") {
public void run2() throws CacheException {
QueryService localQueryService = null;
AttributesFactory factory = new AttributesFactory();
factory.setScope(Scope.LOCAL);
ClientServerTestCase.configureConnectionPool(factory, host0, port1, -1, true, -1, -1, null);
Region region = createRegion(regionName, rootRegionName, factory.create());
for (int i = 0; i < numberOfEntries; i++) {
region.put("key-" + i, new TestObject(i, "vmware"));
}
}
});
SerializableRunnable subscribe = new CacheSerializableRunnable("subscribe") {
public void run2() throws CacheException {
// Register interest
Region region = getRootRegion().getSubregion(regionName);
List list = new ArrayList();
for (int i = 1; i <= numberOfEntries * 3; i++) {
if (i % 4 == 0) {
list.add("key-" + i);
}
}
region.registerInterest(list);
LogWriterUtils.getLogWriter().info("### Create CQ. ###" + cqName);
// Get CQ Service.
QueryService qService = null;
try {
qService = (PoolManager.find(poolName)).getQueryService();
} catch (Exception cqe) {
Assert.fail("Failed to getCQService.", cqe);
}
// Create CQ Attributes.
for (int i = 0; i < queries.length; i++) {
CqAttributesFactory cqf = new CqAttributesFactory();
CqListener[] cqListeners = { new CqQueryTestListener(LogWriterUtils.getLogWriter()) };
((CqQueryTestListener) cqListeners[0]).cqName = (cqName + i);
cqf.initCqListeners(cqListeners);
CqAttributes cqa = cqf.create();
// Create CQ.
try {
CqQuery cq = qService.newCq(cqName + i, queries[i], cqa);
SelectResults sr = cq.executeWithInitialResults();
for (Object o : sr.asSet()) {
Struct s = (Struct) o;
Object value = s.get("value");
if (!(value instanceof TestObject)) {
fail("Expected type TestObject, not found in result set. Found type :" + o.getClass());
}
}
} catch (Exception ex) {
AssertionError err = new AssertionError("Failed to create CQ " + cqName + " . ");
err.initCause(ex);
LogWriterUtils.getLogWriter().info("QueryService is :" + qService, err);
throw err;
}
}
}
};
vm3.invoke(subscribe);
// Check for TestObject instances on Server2.
// It should be 0
vm1.invoke(new CacheSerializableRunnable("Create Bridge Server") {
public void run2() throws CacheException {
assertEquals(0, TestObject.numInstance);
}
});
vm0.invoke(new CacheSerializableRunnable("Create Bridge Server") {
public void run2() throws CacheException {
Region region = getRootRegion().getSubregion(regionName);
// Check for TestObject instances.
assertEquals(0, TestObject.numInstance);
}
});
// update
vm3.invoke(new CacheSerializableRunnable("Update") {
public void run2() throws CacheException {
Region region = getRootRegion().getSubregion(regionName);
for (int i = 0; i < numberOfEntries * 2; i++) {
region.put("key-" + i, new TestObject(i, "vmware"));
}
}
});
// Validate CQs.
for (int i = 0; i < queries.length; i++) {
int expectedEvent = 0;
int updateEvents = 0;
if (i != 0) {
expectedEvent = (numberOfEntries * 2) - queryLimit;
updateEvents = numberOfEntries - queryLimit;
} else {
expectedEvent = numberOfEntries * 2;
updateEvents = numberOfEntries;
}
validateCq(vm3, cqName + i, expectedEvent, numberOfEntries, updateEvents);
}
vm0.invoke(new CacheSerializableRunnable("Create Bridge Server") {
public void run2() throws CacheException {
Region region = getRootRegion().getSubregion(regionName);
// Check for TestObject instances.
assertEquals(0, TestObject.numInstance);
}
});
vm1.invoke(new CacheSerializableRunnable("Create Bridge Server") {
public void run2() throws CacheException {
assertEquals(0, TestObject.numInstance);
}
});
// Update
vm3.invokeAsync(new CacheSerializableRunnable("Update") {
public void run2() throws CacheException {
Region region = getRootRegion().getSubregion(regionName);
for (int i = 0; i < numberOfEntries * 2; i++) {
region.put("key-" + i, new TestObject(i, "vmware"));
}
}
});
// Kill server
this.closeClient(vm0);
// validate cq
for (int i = 0; i < queries.length; i++) {
int expectedEvent = 0;
int updateEvents = 0;
if (i != 0) {
// Double the previous time
expectedEvent = (numberOfEntries * 4) - (queryLimit * 2);
updateEvents = (numberOfEntries * 3) - (queryLimit * 2);
} else {
expectedEvent = numberOfEntries * 4;
updateEvents = numberOfEntries * 3;
}
validateCq(vm3, cqName + i, expectedEvent, numberOfEntries, updateEvents);
}
this.closeClient(vm1);
// Check for TestObject instances on Server3.
// It should be 0
vm2.invoke(new CacheSerializableRunnable("Create Bridge Server") {
public void run2() throws CacheException {
assertEquals(0, TestObject.numInstance);
}
});
this.closeClient(vm2);
this.closeClient(vm3);
}
use of org.apache.geode.test.dunit.SerializableRunnable in project geode by apache.
the class PdxQueryCQDUnitTest method testCqAndInterestRegistrations.
/**
* Tests client-server query on PdxInstance.
*/
@Test
public void testCqAndInterestRegistrations() throws CacheException {
final Host host = Host.getHost(0);
VM vm0 = host.getVM(0);
VM vm1 = host.getVM(1);
VM vm2 = host.getVM(2);
VM vm3 = host.getVM(3);
final int numberOfEntries = 10;
// where id > 5 (0-5)
final int queryLimit = 6;
final String[] queries = new String[] { "SELECT * FROM " + regName + " p WHERE p.ticker = 'vmware'", "SELECT * FROM " + regName + " WHERE id > 5" };
// Start server1
vm0.invoke(new CacheSerializableRunnable("Create Bridge Server") {
public void run2() throws CacheException {
configAndStartBridgeServer(false, true);
Region region = getRootRegion().getSubregion(regionName);
}
});
// Start server2
vm1.invoke(new CacheSerializableRunnable("Create Bridge Server") {
public void run2() throws CacheException {
configAndStartBridgeServer(false, true);
Region region = getRootRegion().getSubregion(regionName);
}
});
// Client pool.
final int port0 = vm0.invoke(() -> PdxQueryCQTestBase.getCacheServerPort());
final int port1 = vm1.invoke(() -> PdxQueryCQTestBase.getCacheServerPort());
final String host0 = NetworkUtils.getServerHostName(vm0.getHost());
// Create client pool.
final String poolName = "testCqPool";
createPool(vm2, poolName, new String[] { host0, host0 }, new int[] { port0, port1 }, true);
createPool(vm3, poolName, new String[] { host0, host0 }, new int[] { port1, port0 }, true);
final String cqName = "testCq";
vm3.invoke(new CacheSerializableRunnable("init region") {
public void run2() throws CacheException {
QueryService localQueryService = null;
AttributesFactory factory = new AttributesFactory();
factory.setScope(Scope.LOCAL);
ClientServerTestCase.configureConnectionPool(factory, host0, port1, -1, true, -1, -1, null);
Region region = createRegion(regionName, rootRegionName, factory.create());
for (int i = 0; i < numberOfEntries; i++) {
region.put("key-" + i, new TestObject(i, "vmware"));
}
}
});
vm2.invoke(new CacheSerializableRunnable("init region") {
public void run2() throws CacheException {
QueryService localQueryService = null;
AttributesFactory factory = new AttributesFactory();
factory.setScope(Scope.LOCAL);
ClientServerTestCase.configureConnectionPool(factory, host0, port0, -1, true, -1, -1, null);
Region region = createRegion(regionName, rootRegionName, factory.create());
}
});
SerializableRunnable subscribe = new CacheSerializableRunnable("subscribe") {
public void run2() throws CacheException {
// Register interest
Region region = getRootRegion().getSubregion(regionName);
List list = new ArrayList();
for (int i = 1; i <= numberOfEntries * 3; i++) {
if (i % 4 == 0) {
list.add("key-" + i);
}
}
region.registerInterest(list);
LogWriterUtils.getLogWriter().info("### Create CQ. ###" + cqName);
// Get CQ Service.
QueryService qService = null;
try {
qService = (PoolManager.find(poolName)).getQueryService();
} catch (Exception cqe) {
Assert.fail("Failed to getCQService.", cqe);
}
// Create CQ Attributes.
for (int i = 0; i < queries.length; i++) {
CqAttributesFactory cqf = new CqAttributesFactory();
CqListener[] cqListeners = { new CqQueryTestListener(LogWriterUtils.getLogWriter()) };
((CqQueryTestListener) cqListeners[0]).cqName = (cqName + i);
cqf.initCqListeners(cqListeners);
CqAttributes cqa = cqf.create();
// Create CQ.
try {
CqQuery cq = qService.newCq(cqName + i, queries[i], cqa);
SelectResults sr = cq.executeWithInitialResults();
for (Object o : sr.asSet()) {
Struct s = (Struct) o;
Object value = s.get("value");
if (!(value instanceof TestObject)) {
fail("Expected type TestObject, not found in result set. Found type :" + o.getClass());
}
}
} catch (Exception ex) {
AssertionError err = new AssertionError("Failed to create CQ " + cqName + " . ");
err.initCause(ex);
LogWriterUtils.getLogWriter().info("QueryService is :" + qService, err);
throw err;
}
}
}
};
vm2.invoke(subscribe);
vm3.invoke(subscribe);
// Check for TestObject instances on Server2.
// It should be 0
vm1.invoke(new CacheSerializableRunnable("Create Bridge Server") {
public void run2() throws CacheException {
assertEquals(0, TestObject.numInstance);
}
});
vm0.invoke(new CacheSerializableRunnable("Create Bridge Server") {
public void run2() throws CacheException {
Region region = getRootRegion().getSubregion(regionName);
// Check for TestObject instances.
assertEquals(0, TestObject.numInstance);
}
});
vm3.invoke(new CacheSerializableRunnable("Update") {
public void run2() throws CacheException {
Region region = getRootRegion().getSubregion(regionName);
for (int i = 0; i < numberOfEntries * 2; i++) {
region.put("key-" + i, new TestObject(i, "vmware"));
}
}
});
// Validate CQs.
for (int i = 0; i < queries.length; i++) {
int expectedEvent = 0;
int updateEvents = 0;
if (i != 0) {
expectedEvent = numberOfEntries * 2 - queryLimit;
updateEvents = numberOfEntries - queryLimit;
} else {
expectedEvent = numberOfEntries * 2;
updateEvents = numberOfEntries;
}
validateCq(vm2, cqName + i, expectedEvent, numberOfEntries, updateEvents);
validateCq(vm3, cqName + i, expectedEvent, numberOfEntries, updateEvents);
}
vm0.invoke(new CacheSerializableRunnable("Create Bridge Server") {
public void run2() throws CacheException {
Region region = getRootRegion().getSubregion(regionName);
// Check for TestObject instances.
assertEquals(0, TestObject.numInstance);
}
});
// Check for TestObject instances on Server2.
// It should be 0
vm1.invoke(new CacheSerializableRunnable("Create Bridge Server") {
public void run2() throws CacheException {
assertEquals(0, TestObject.numInstance);
}
});
this.closeClient(vm2);
this.closeClient(vm3);
this.closeClient(vm1);
this.closeClient(vm0);
}
use of org.apache.geode.test.dunit.SerializableRunnable in project geode by apache.
the class PartitionedRegionCqQueryDUnitTest method createServer.
/**
* Create a bridge server with partitioned region.
*
* @param server VM where to create the bridge server.
* @param port bridge server port.
* @param isAccessor if true the under lying partitioned region will not host data on this vm.
* @param redundantCopies number of redundant copies for the primary bucket.
*/
public void createServer(VM server, final int port, final boolean isAccessor, final int redundantCopies) {
SerializableRunnable createServer = new CacheSerializableRunnable("Create Cache Server") {
public void run2() throws CacheException {
LogWriterUtils.getLogWriter().info("### Create Cache Server. ###");
AttributesFactory attr = new AttributesFactory();
PartitionAttributesFactory paf = new PartitionAttributesFactory();
if (isAccessor) {
paf.setLocalMaxMemory(0);
}
PartitionAttributes prAttr = paf.setTotalNumBuckets(197).setRedundantCopies(redundantCopies).create();
attr.setPartitionAttributes(prAttr);
assertFalse(getSystem().isLoner());
// 0);
for (int i = 0; i < regions.length; i++) {
Region r = createRegion(regions[i], attr.create());
LogWriterUtils.getLogWriter().info("Server created the region: " + r);
}
try {
startBridgeServer(port, true);
} catch (Exception ex) {
Assert.fail("While starting CacheServer", ex);
}
}
};
server.invoke(createServer);
}
use of org.apache.geode.test.dunit.SerializableRunnable in project geode by apache.
the class CqStatsDUnitTest method postSetUp.
@Override
public final void postSetUp() throws Exception {
// avoid IllegalStateException from HandShake by connecting all vms to
// system before creating pool
getSystem();
Invoke.invokeInEveryVM(new SerializableRunnable("getSystem") {
@Override
public void run() {
getSystem();
}
});
postSetUpCqStatsDUnitTest();
}
use of org.apache.geode.test.dunit.SerializableRunnable in project geode by apache.
the class CqQueryUsingPoolDUnitTest method createClient.
/* Create Client */
public void createClient(VM client, final int[] serverPorts, final String serverHost, final String redundancyLevel, final String poolName) {
SerializableRunnable createQService = new CacheSerializableRunnable("Create Client") {
@Override
public void run2() throws CacheException {
LogWriterUtils.getLogWriter().info("### Create Client. ###");
// Initialize CQ Service.
try {
getCache().getQueryService();
IgnoredException.addIgnoredException("java.net.ConnectException");
} catch (Exception cqe) {
Assert.fail("Failed to getCQService.", cqe);
}
AttributesFactory regionFactory = new AttributesFactory();
regionFactory.setScope(Scope.LOCAL);
if (poolName != null) {
regionFactory.setPoolName(poolName);
} else {
if (redundancyLevel != null) {
ClientServerTestCase.configureConnectionPool(regionFactory, serverHost, serverPorts, true, Integer.parseInt(redundancyLevel), -1, null);
} else {
ClientServerTestCase.configureConnectionPool(regionFactory, serverHost, serverPorts, true, -1, -1, null);
}
}
for (int i = 0; i < regions.length; i++) {
createRegion(regions[i], regionFactory.createRegionAttributes());
LogWriterUtils.getLogWriter().info("### Successfully Created Region on Client :" + regions[i]);
// region1.getAttributesMutator().setCacheListener(new CqListener());
}
}
};
client.invoke(createQService);
}
Aggregations