[
https://issues.apache.org/jira/browse/GEODE-9706?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Owen Nichols updated GEODE-9706:
--------------------------------
Fix Version/s: 1.15.0
> OutOfMemoryDUnitTest can be improved
> ------------------------------------
>
> Key: GEODE-9706
> URL: https://issues.apache.org/jira/browse/GEODE-9706
> Project: Geode
> Issue Type: Test
> Components: redis
> Affects Versions: 1.15.0
> Reporter: Darrel Schneider
> Assignee: Donal Evans
> Priority: Minor
> Fix For: 1.15.0, 1.16.0
>
>
> Kirk Lund made the following suggestions for improving OutOfMemoryDUnitTest:
> You might want to consider using ExecutorServiceRule or
> DistributedExecutorServiceRule with a CompletableFuture instead of directly
> using a thread:
> {code:java}
> @Rule
> public ExecutorServiceRule executorServiceRule = new ExecutorServiceRule();
> CompletableFuture<Void> memoryPressure = executorServiceRule.runAsync(()
> -> {
> try {
> while (true) {
> Thread.sleep(1000);
> }
> } catch (InterruptedException e) {
> // done
> }
> });
> // do something
> memoryPressure.cancel(true);
> {code}
> The cancel(true) will interrupt the thread. If the test throws before that,
> ExecutorServiceRule will clean up any threads during tear down by invoking
> shutdownNow which will also interrupt any running threads. If the thread
> resists interrupt and hangs, the rule should print a stack trace for it as a
> test failure which would then make it easy to debug.
> ExecutorServiceRule will work well within the controller JVM. If you need a
> version of the rule that works within any JVM in a dunit test, then use
> DistributedExecutorServiceRule.
> Also when the test does a "join()" add a timeout like so:
> {code:java}
> join(GeodeAwaitility.getTimeout().getSeconds(), TimeUnit.SECONDS);
> {code}
--
This message was sent by Atlassian Jira
(v8.20.1#820001)