[ 
https://issues.apache.org/jira/browse/GEODE-1378?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15287722#comment-15287722
 ] 

Dan Smith commented on GEODE-1378:
----------------------------------

I have some changes to fix this, but I'm still seeing checkMissedTests take 
some time on the core. I dumped some stacks, and it looks like now it's 
spending time redefining classes with powermock. I'm not sure if there is much 
we can go about this, other than stop using powermock.

{noformat}
"Test worker" #10 prio=5 os_prio=0 tid=0x00007f6904da5000 nid=0x1fd3d runnable 
[0x00007f68ebbab000]
   java.lang.Thread.State: RUNNABLE
        at 
javassist.compiler.MemberResolver.lookupClass(MemberResolver.java:397)
        at 
javassist.compiler.MemberResolver.lookupField(MemberResolver.java:306)
        at javassist.compiler.MemberCodeGen.fieldAccess(MemberCodeGen.java:1053)
        at javassist.compiler.MemberCodeGen.atFieldRead(MemberCodeGen.java:867)
        at javassist.compiler.CodeGen.atExpr(CodeGen.java:1495)
        at javassist.compiler.ast.Expr.accept(Expr.java:68)
        at javassist.compiler.CodeGen.compileOprands(CodeGen.java:1201)
        at javassist.compiler.CodeGen.booleanExpr(CodeGen.java:1125)
        at javassist.compiler.CodeGen.compileBooleanExpr(CodeGen.java:237)
        at javassist.compiler.CodeGen.atIfStmnt(CodeGen.java:384)
        at javassist.compiler.CodeGen.atStmnt(CodeGen.java:355)
        at javassist.compiler.ast.Stmnt.accept(Stmnt.java:50)
        at javassist.compiler.CodeGen.atStmnt(CodeGen.java:351)
        at javassist.compiler.ast.Stmnt.accept(Stmnt.java:50)
        at javassist.compiler.Javac.compileStmnt(Javac.java:569)
        at javassist.expr.FieldAccess.replace(FieldAccess.java:212)
        at 
org.powermock.core.transformers.impl.MainMockTransformer$PowerMockExpressionEditor.edit(MainMockTransformer.java:265)
        at javassist.expr.ExprEditor.loopBody(ExprEditor.java:198)
        at javassist.expr.ExprEditor.doit(ExprEditor.java:91)
        at javassist.CtClassType.instrument(CtClassType.java:1437)
        at 
org.powermock.core.transformers.impl.MainMockTransformer.transform(MainMockTransformer.java:74)
        at 
org.powermock.core.classloader.MockClassLoader.loadMockClass(MockClassLoader.java:252)
        at 
org.powermock.core.classloader.MockClassLoader.loadModifiedClass(MockClassLoader.java:180)
        at 
org.powermock.core.classloader.DeferSupportingClassLoader.loadClass(DeferSupportingClassLoader.java:70)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:348)
        at 
sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(CoreReflectionFactory.java:114)
        at 
sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:125)
        at 
sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:49)
        at 
sun.reflect.annotation.AnnotationParser.parseSig(AnnotationParser.java:439)
        at 
sun.reflect.annotation.AnnotationParser.parseClassValue(AnnotationParser.java:420)
        at 
sun.reflect.annotation.AnnotationParser.parseClassArray(AnnotationParser.java:724)
        at 
sun.reflect.annotation.AnnotationParser.parseArray(AnnotationParser.java:531)
        at 
sun.reflect.annotation.AnnotationParser.parseMemberValue(AnnotationParser.java:355)
        at 
sun.reflect.annotation.AnnotationParser.parseAnnotation2(AnnotationParser.java:286)
        at 
sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:120)
        at 
sun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.java:72)
        at java.lang.Class.createAnnotationData(Class.java:3521)
        at java.lang.Class.annotationData(Class.java:3510)
        at java.lang.Class.getAnnotation(Class.java:3415)
        at 
org.junit.internal.MethodSorter.getDeclaredMethods(MethodSorter.java:52)
        at 
org.junit.internal.runners.TestClass.getAnnotatedMethods(TestClass.java:45)
        at 
org.junit.internal.runners.MethodValidator.validateTestMethods(MethodValidator.java:71)
        at 
org.junit.internal.runners.MethodValidator.validateStaticMethods(MethodValidator.java:44)
        at 
org.junit.internal.runners.MethodValidator.validateMethodsForDefaultRunner(MethodValidator.java:50)
        at 
org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.validate(PowerMockJUnit44RunnerDelegateImpl.java:108)
        at 
org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.<init>(PowerMockJUnit44RunnerDelegateImpl.java:70)
        at 
org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl.<init>(PowerMockJUnit47RunnerDelegateImpl.java:42)
        at 
org.powermock.modules.junit4.internal.impl.PowerMockJUnit49RunnerDelegateImpl.<init>(PowerMockJUnit49RunnerDelegateImpl.java:25)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at 
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at 
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
        at 
org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.createDelegatorFromClassloader(JUnit4TestSuiteChunkerImpl.java:156)
        at 
org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.createDelegatorFromClassloader(JUnit4TestSuiteChunkerImpl.java:40)
        at 
org.powermock.tests.utils.impl.AbstractTestSuiteChunkerImpl.createTestDelegators(AbstractTestSuiteChunkerImpl.java:244)
        at 
org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.<init>(JUnit4TestSuiteChunkerImpl.java:61)
        at 
org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.<init>(AbstractCommonPowerMockRunner.java:32)
        at 
org.powermock.modules.junit4.PowerMockRunner.<init>(PowerMockRunner.java:34)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at 
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at 
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
        at 
org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104)
        at 
org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86)
        at 
org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
        at 
org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
        at 
org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
        at 
org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33)
        - locked <0x00000000ffc10498> (a java.lang.Object)
        at 
org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.runTestClass(JUnitTestClassExecuter.java:84)
        at 
org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.execute(JUnitTestClassExecuter.java:56)
        at 
org.gradle.api.internal.tasks.testing.junit.JUnitTestClassProcessor.processTestClass(JUnitTestClassProcessor.java:66)
        at 
org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:51)
        at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at 
org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
        at 
org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
        at 
org.gradle.messaging.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
        at 
org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
        at com.sun.proxy.$Proxy2.processTestClass(Unknown Source)
        at 
org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:109)
        at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at 
org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
        at 
org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
        at 
org.gradle.messaging.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:360)
        at 
org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
        at 
org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
{noformat}

> checkMissedTests launches dunit VMs, takes time
> -----------------------------------------------
>
>                 Key: GEODE-1378
>                 URL: https://issues.apache.org/jira/browse/GEODE-1378
>             Project: Geode
>          Issue Type: Bug
>          Components: build, tests
>            Reporter: Dan Smith
>            Assignee: Dan Smith
>
> The checkMissedTests target actually triggers the launch of dunit VMs, even 
> though no tests are run (normally).
> I think this has to do with how the dunit framework is written and how we are 
> using categories.
> For junit 4 tests, we are launching the dunit framework from a BeforeClass in 
> JUnit4DistributedTest method. For unit 3 tests, we launch the dunit framework 
> from with the constructor of Junt3DistributedTests.
> I think junit is calling one of these things (probably the junit 3 
> contructor) when it is determining the categories of the tests. That's 
> causing the checkMissedTests target to launch all of the dunit VMs even 
> though it doesn't run the tests.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to