Hi there Andrei.

#1: Clients and Servers cannot coexist within the same JVM. What has been done for testing within Geode, is that we use the concept of a VM <https://github.com/apache/geode/blob/develop/geode-core/src/test/java/org/apache/geode/test/dunit/VM.java>. Which allows us to start multiple servers/clients in the same JVM. You can review the JUnit4BasicDUnitTest <https://github.com/apache/geode/blob/develop/geode-core/src/test/java/org/apache/geode/test/dunit/tests/JUnit4BasicDUnitTest.java> to get an idea how we use it.

#2: Correct. CQ's is a client-side concept. If you want similar behavior, you could try writing a custom CacheListener (or AsyncEventListener for a more batch oriented approach) if you need to trigger something on the server-side.

#3: We do have a Java API that you could use to create Regions. Geode JavaDoc <http://geode.apache.org/releases/latest/javadoc/index.html>. You could also look at the Geode in 5min <https://cwiki.apache.org/confluence/display/GEODE/Index#Index-Geodein5minutesGeodein5minutes>, as the Java API creates a region on the Client. If you were to use that approach on the Server you would use Server Region Factory <http://geode.apache.org/releases/latest/javadoc/org/apache/geode/cache/Cache.html#createRegionFactory--> to create a region (in Java code) on the server. If you needed to trigger this from a client, you could always use a Function <http://geode.apache.org/docs/guide/developing/function_exec/chapter_overview.html> that could create a Region on the server. Once, the regions are create on the server(s) those regions will be usable for queries and cq's.

--Udo


On 12/8/16 10:28, Andrei Sereda wrote:
Hello,

I'm trying to bootstrap my application with prefabricated geode (gemfire) cache for simple tests.

Basically what is necessary is to create a couple of regions, populate them and run some queries (including CQ) on the top of existing data, perhaps also validate transaction functionality.

Ideally one should be able to re-create regions (recycle cache) multiple times. This also, has to run independently (no external process dependencies) as part of existing build

I can't find an easy way to do so for the following reasons (please correct me if I'm wrong) :

1) Client and Server caches can't coexists on the same JVM. Does it mean one has to start a separate process for server ?

2) It seems that CQs can't be executed on server cache.

3) No easy way to create (non-local) regions programmatically on a remote server cache (see (1)). They should be visible for queries / CQs. Preferably avoiding starting a locator (another process) ?

Please point me to some examples if they exist.

Current version of product is gemfire v7 but looking at the code of geode concepts remained the same.

Thanks,
Andrei.



Reply via email to