Thanks John! 😊 BR, Mario ________________________________ Šalje: John Blum <jb...@pivotal.io> Poslano: 7. veljače 2020. 20:18 Prima: user@geode.apache.org <user@geode.apache.org> Predmet: Re: ClientCache didn't close properly
These sort of problems are the exact types of things that Spring Test for Apache Geode (STDG) [1] was designed to handle. I experienced similar problems while testing features in the SDG, SSDG and SBDG projects, which is how STDG came to be. However, since you are not using Spring in this case, there are a few things you should be aware of. 1. ClientCache.close() does NOT guarantee that the [client] cache instance has been fully stopped and that all resources are properly released in a timely manner. 2. Depending on your version of Geode, the SSL state is maintained in static references that can linger without proper cleanup, especially in and between automated tests, and particularly if you are not forking new JVMs per test. 3. You should be careful how you set Geode properties (e.g. as Java System properties). Your approach (i.e. using the API) should be generally fine, however, keep in mind #1 above! 4. etc... There are other things to be aware of as well, but I simply wanted to list a few here for your reference. You can use this setup/tear down logic [2] from STDG as a guide in your own test scaffolding. You can safely ignore the Spring-specific tear down logic. As 1 example of testing SSL, you can review the SBDG test suite, beginning here [3]. SBDG offers support [4] to auto-configure SSL for Apache Geode, depending on your configuration. As you can imagine, SBDG's test suite is very comprehensive (given the auto-configuration for many Geode features), and because I don't like forking JVMs, it is imperative that each test properly cleanup after itself in a reliable manner especially if 1 tests uses SSL and the rest don't. Anyway... Hope this helps (give you ideas/pointers/etc)! Regards, -j [1] https://github.com/spring-projects/spring-test-data-geode [2] https://github.com/spring-projects/spring-test-data-geode/blob/master/spring-data-geode-test/src/main/java/org/springframework/data/gemfire/tests/integration/IntegrationTestsSupport.java#L106-L250 [3] https://github.com/spring-projects/spring-boot-data-geode/blob/master/spring-geode-autoconfigure/src/test/java/org/springframework/geode/boot/autoconfigure/security/ssl/AutoConfiguredSslIntegrationTests.java [4] https://docs.spring.io/spring-boot-data-geode-build/1.3.x/reference/html5/#geode-security-ssl On Fri, Feb 7, 2020 at 5:17 AM Mario Kevo <mario.k...@est.tech> wrote: Hi all, We are using java client to test some functionality and it seems that we have a problem with the client cache. We started locator and server with SSL enabled. On the client side also add SSL parameters, create proxy region, put some entries and it works. Properties props = new Properties(); props.setProperty("ssl-enabled-components", "all"); props.setProperty("ssl-keystore", keystorePath); ... ClientCache clientCache = new ClientCacheFactory(props).addPoolLocator("localhost", 10334) .set("log-level", "info").create(); ... clientCache.close(); After that we start another test with some other properties. As we are connecting from non-SSL-enabled client to SSL-enabled locator we should get an exception, but didn't. Properties props = new Properties(); props.setProperty("log-file", "test.log"); // no ssll parameters ... ClientCache clientCache = new ClientCacheFactory(props).addPoolLocator("localhost", 10334) .set("log-level", "info").create(); ... clientCache.close(); Despite of that we have in logs that GemFire Properties defined with api has only this property changed but it somehow take also the cache from the test before. The same thing happened if we change order of tests execution. Does anyone know is there a possibility that cache is saved somewhere and if yes how to delete it? How to avoid this issue? BR, Mario -- -John Spring Data Team