Good stuff Mircea!! :)
As a FYI, a similar technique is used in AS to track unclosed connections:
On Wed, 24 Feb 2010 17:17:47 +0100, Mircea Markus
<mircea.markus(a)jboss.com> wrote:
Thanks!
I've been using testNG listener to notify me whenever a thread finishes
processing a test. Whenever a cache is created, I create a stack trace
and determine which method performed the call:
private static String extractMethodName() {
StackTraceElement[] stack = Thread.currentThread().getStackTrace();
if (stack.length == 0) return null;
for (int i = stack.length - 1; i > 0; i--)
{
StackTraceElement e = stack[i];
String className = e.getClassName();
if ((className.indexOf("org.infinispan") != -1) &&
className.indexOf("org.infinispan.test") < 0)
return e.toString();
}
return null;
}
On 24 Feb 2010, at 18:12, Vladimir Blagojevic wrote:
> Very cool! You are even reporting the line number! How did you do this
> CacheManager tracking?
> On 2010-02-24, at 11:06 AM, Mircea Markus wrote:
>
>> Hi,
>>
>> I've added a sanity check to verify weather all the CacheManagers
>> created by a test are being shutdown within the same test[1].
>> The cool part is that if a CM is not being closed, the fwk will report
>> you where the unclosed CacheManager was created (java file and line,
>> see bellow), so that you don't have to spend too much time looking
>> into code ;)
>> E.g.
>>
>> [pool-2-thread-7] Test
>> testTxChangesOnAtomicMap(org.infinispan.atomic.AtomicMapFunctionalTest)
>> succeeded.
>> Test suite progress: tests succeeded: 179, failed: 1, skipped: 0.
>> [pool-2-thread-7] Test
>> testTxChangesOnAtomicMapNoLocks(org.infinispan.atomic.AtomicMapFunctionalTest)
>> succeeded.
>> Test suite progress: tests succeeded: 180, failed: 1, skipped: 0.
>>
>>
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>> !!!!!! (pool-2-thread-7) Exiting because
>> atomic.AtomicMapFunctionalTest has NOT shut down all the cache
>> managers it has started !!!!!!!
>> !!!!!! (pool-2-thread-7) The still-running cacheManager was created
>> here:
>>
org.infinispan.atomic.AtomicMapFunctionalTest.setUp(AtomicMapFunctionalTest.java:33)
>> !!!!!!!
>>
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>>
>> Cheers,
>> Mircea
>>
>> [
1]https://jira.jboss.org/jira/browse/ISPN-314
>> _______________________________________________
>> infinispan-dev mailing list
>> infinispan-dev(a)lists.jboss.org
>>
https://lists.jboss.org/mailman/listinfo/infinispan-dev
>
>
> _______________________________________________
> infinispan-dev mailing list
> infinispan-dev(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/infinispan-dev
_______________________________________________
infinispan-dev mailing list
infinispan-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/infinispan-dev
--
Galder ZamarreƱo
Sr. Software Engineer
Infinispan, JBoss Cache