use of org.apache.geode.cache.query.CqAttributes in project geode by apache.
the class CqQueryDUnitTest method validateCQError.
private void validateCQError(VM vm, final String cqName, final int numError) {
vm.invoke(new CacheSerializableRunnable("Validate CQs") {
public void run2() throws CacheException {
LogWriterUtils.getLogWriter().info("### Validating CQ. ### " + cqName);
// Get CQ Service.
QueryService cqService = null;
try {
cqService = getCache().getQueryService();
} catch (Exception cqe) {
cqe.printStackTrace();
fail("Failed to getCQService.");
}
CqQuery cQuery = cqService.getCq(cqName);
if (cQuery == null) {
fail("Failed to get CqQuery for CQ : " + cqName);
}
CqAttributes cqAttr = cQuery.getCqAttributes();
CqListener cqListener = cqAttr.getCqListener();
CqQueryTestListener listener = (CqQueryTestListener) cqListener;
listener.printInfo(false);
// Check for totalEvents count.
if (numError != noTest) {
// Result size validation.
listener.printInfo(true);
assertEquals("Total Event Count mismatch", numError, listener.getErrorEventCount());
}
}
});
}
use of org.apache.geode.cache.query.CqAttributes in project geode by apache.
the class CqPerfUsingPoolDUnitTest method testCQPerf.
/**
* Tests the cq performance.
*
* @throws Exception
*/
@Ignore("perf")
@Test
public void testCQPerf() throws Exception {
final Host host = Host.getHost(0);
VM server = host.getVM(0);
VM client = host.getVM(1);
cqDUnitTest.createServer(server);
final int port = server.invoke(() -> CqQueryUsingPoolDUnitTest.getCacheServerPort());
final String host0 = NetworkUtils.getServerHostName(server.getHost());
// Create client.
cqDUnitTest.createClient(client, port, host0);
final String cqName = "testCQPerf_0";
client.invoke(new CacheSerializableRunnable("Create CQ :" + cqName) {
public void run2() throws CacheException {
LogWriterUtils.getLogWriter().info("### Create CQ. ###" + cqName);
// Get CQ Service.
QueryService cqService = null;
try {
cqService = getCache().getQueryService();
} catch (Exception cqe) {
cqe.printStackTrace();
fail("Failed to getCQService.");
}
// Create CQ Attributes.
CqAttributesFactory cqf = new CqAttributesFactory();
CqListener[] cqListeners = { new CqTimeTestListener(LogWriterUtils.getLogWriter()) };
((CqTimeTestListener) cqListeners[0]).cqName = cqName;
cqf.initCqListeners(cqListeners);
CqAttributes cqa = cqf.create();
// Create and Execute CQ.
try {
CqQuery cq1 = cqService.newCq(cqName, cqDUnitTest.cqs[0], cqa);
assertTrue("newCq() state mismatch", cq1.getState().isStopped());
cq1.execute();
} catch (Exception ex) {
LogWriterUtils.getLogWriter().info("CqService is :" + cqService);
ex.printStackTrace();
AssertionError err = new AssertionError("Failed to create CQ " + cqName + " . ");
err.initCause(ex);
throw err;
}
}
});
final int size = 50;
// Create values.
cqDUnitTest.createValuesWithTime(client, cqDUnitTest.regions[0], size);
Wait.pause(5000);
// Update values
cqDUnitTest.createValuesWithTime(client, cqDUnitTest.regions[0], size);
client.invoke(new CacheSerializableRunnable("Validate CQs") {
public void run2() throws CacheException {
LogWriterUtils.getLogWriter().info("### Validating CQ. ### " + cqName);
// Get CQ Service.
QueryService cqService = null;
try {
cqService = getCache().getQueryService();
} catch (Exception cqe) {
cqe.printStackTrace();
fail("Failed to getCqService.");
}
CqQuery cQuery = cqService.getCq(cqName);
if (cQuery == null) {
fail("Failed to get CqQuery for CQ : " + cqName);
}
// CqAttributes cqAttr = cQuery.getCqAttributes();
// CqListener cqListeners[] = cqAttr.getCqListeners();
// CqTimeTestListener listener = (CqTimeTestListener) cqListeners[0];
// Wait for all the create to arrive.
// for (int i=1; i <= size; i++) {
// listener.waitForCreated(cqDUnitTest.KEY+i);
// }
// Wait for all the update to arrive.
// for (int i=1; i <= size; i++) {
// listener.waitForUpdated(cqDUnitTest.KEY+i);
// }
// getLogWriter().info("### Time taken for Creation of " + size + " events is :" +
// listener.getTotalQueryCreateTime());
// getLogWriter().info("### Time taken for Update of " + size + " events is :" +
// listener.getTotalQueryUpdateTime());
}
});
Wait.pause(10 * 60 * 1000);
// Close.
cqDUnitTest.closeClient(client);
cqDUnitTest.closeServer(server);
}
use of org.apache.geode.cache.query.CqAttributes in project geode by apache.
the class CqQueryDUnitTest method mutateCQAttributes.
// Exercise CQ attributes mutator functions
private void mutateCQAttributes(VM vm, final String cqName, final int mutator_function) throws Exception {
vm.invoke(new CacheSerializableRunnable("Stop CQ :" + cqName) {
public void run2() throws CacheException {
CqQuery cq1 = null;
LogWriterUtils.getLogWriter().info("### CQ attributes mutator for ###" + cqName);
// Get CQ Service.
QueryService cqService = null;
try {
cqService = getCache().getQueryService();
} catch (Exception cqe) {
cqe.printStackTrace();
fail("Failed to getCQService.");
}
// Get CQ.
try {
cq1 = cqService.getCq(cqName);
} catch (Exception ex) {
ex.printStackTrace();
fail("Failed to get CQ " + cqName + " . " + ex.getMessage());
}
CqAttributesMutator cqAttrMutator = cq1.getCqAttributesMutator();
CqAttributes cqAttr = cq1.getCqAttributes();
CqListener[] cqListeners;
switch(mutator_function) {
case CREATE:
// Reinitialize with 2 CQ Listeners
CqListener[] cqListenersArray = { new CqQueryTestListener(getCache().getLogger()), new CqQueryTestListener(getCache().getLogger()) };
cqAttrMutator.initCqListeners(cqListenersArray);
cqListeners = cqAttr.getCqListeners();
assertEquals("CqListener count mismatch", cqListeners.length, 2);
break;
case UPDATE:
// Add 2 new CQ Listeners
CqListener newListener1 = new CqQueryTestListener(getCache().getLogger());
CqListener newListener2 = new CqQueryTestListener(getCache().getLogger());
cqAttrMutator.addCqListener(newListener1);
cqAttrMutator.addCqListener(newListener2);
cqListeners = cqAttr.getCqListeners();
assertEquals("CqListener count mismatch", cqListeners.length, 3);
break;
case DESTROY:
cqListeners = cqAttr.getCqListeners();
cqAttrMutator.removeCqListener(cqListeners[0]);
cqListeners = cqAttr.getCqListeners();
assertEquals("CqListener count mismatch", cqListeners.length, 2);
// Remove a listener and validate
cqAttrMutator.removeCqListener(cqListeners[0]);
cqListeners = cqAttr.getCqListeners();
assertEquals("CqListener count mismatch", cqListeners.length, 1);
break;
}
}
});
}
use of org.apache.geode.cache.query.CqAttributes in project geode by apache.
the class CqQueryDUnitTest method waitForError.
private void waitForError(VM vm, final String cqName, final String errorMessage) {
vm.invoke(new CacheSerializableRunnable("validate cq count") {
public void run2() throws CacheException {
QueryService cqService = null;
try {
cqService = getCache().getQueryService();
} catch (Exception cqe) {
cqe.printStackTrace();
fail("Failed to getCQService.");
}
CqQuery cQuery = cqService.getCq(cqName);
if (cQuery == null) {
fail("Failed to get CqQuery for CQ : " + cqName);
}
CqAttributes cqAttr = cQuery.getCqAttributes();
CqListener[] cqListener = cqAttr.getCqListeners();
CqQueryTestListener listener = (CqQueryTestListener) cqListener[0];
listener.waitForError(errorMessage);
}
});
}
use of org.apache.geode.cache.query.CqAttributes in project geode by apache.
the class CqQueryDUnitTest method createAndExecCQNoName.
/* Register CQs with no name, execute, and close */
public void createAndExecCQNoName(VM vm, final String queryStr) {
vm.invoke(new CacheSerializableRunnable("Create CQ with no name:") {
public void run2() throws CacheException {
// pause(60 * 1000);
LogWriterUtils.getLogWriter().info("### DEBUG CREATE CQ START ####");
// pause(20 * 1000);
LogWriterUtils.getLogWriter().info("### Create CQ with no name. ###");
// Get CQ Service.
QueryService cqService = null;
CqQuery cq1 = null;
String cqName = null;
try {
cqService = getCache().getQueryService();
} catch (Exception cqe) {
cqe.printStackTrace();
fail("Failed to getCQService.");
}
SelectResults cqResults = null;
for (int i = 0; i < 20; ++i) {
// Create CQ Attributes.
CqAttributesFactory cqf = new CqAttributesFactory();
CqListener[] cqListeners = { new CqQueryTestListener(LogWriterUtils.getLogWriter()) };
cqf.initCqListeners(cqListeners);
CqAttributes cqa = cqf.create();
// Create CQ with no name and execute with initial results.
try {
cq1 = cqService.newCq(queryStr, cqa);
((CqQueryTestListener) cqListeners[0]).cqName = cq1.getName();
} catch (Exception ex) {
LogWriterUtils.getLogWriter().info("CQService is :" + cqService);
ex.printStackTrace();
fail("Failed to create CQ with no name" + " . " + ex.getMessage());
}
if (cq1 == null) {
LogWriterUtils.getLogWriter().info("Failed to get CqQuery object for CQ with no name.");
} else {
cqName = cq1.getName();
LogWriterUtils.getLogWriter().info("Created CQ with no name, generated CQ name: " + cqName + " CQ state:" + cq1.getState());
assertTrue("Create CQ with no name illegal state", cq1.getState().isStopped());
}
if (i % 2 == 0) {
try {
cqResults = cq1.executeWithInitialResults();
} catch (Exception ex) {
LogWriterUtils.getLogWriter().info("CqService is :" + cqService);
ex.printStackTrace();
fail("Failed to execute CQ with initial results, cq name: " + cqName + " . " + ex.getMessage());
}
LogWriterUtils.getLogWriter().info("initial result size = " + cqResults.size());
LogWriterUtils.getLogWriter().info("CQ state after execute with initial results = " + cq1.getState());
assertTrue("executeWithInitialResults() state mismatch", cq1.getState().isRunning());
} else {
try {
cq1.execute();
} catch (Exception ex) {
LogWriterUtils.getLogWriter().info("CQService is :" + cqService);
ex.printStackTrace();
fail("Failed to execute CQ " + cqName + " . " + ex.getMessage());
}
LogWriterUtils.getLogWriter().info("CQ state after execute = " + cq1.getState());
assertTrue("execute() state mismatch", cq1.getState().isRunning());
}
// Close the CQ
try {
cq1.close();
} catch (Exception ex) {
LogWriterUtils.getLogWriter().info("CqService is :" + cqService, ex);
fail("Failed to close CQ " + cqName + " . " + ex.getMessage());
}
assertTrue("closeCq() state mismatch", cq1.getState().isClosed());
}
}
});
}
Aggregations