Skip to content

Facing java.lang.IllegalStateException: "Identity method not found" at com.nordstrom.automation.junit.AtomicTest.getParticles(AtomicTest.java:240) #142

@notsatyarth

Description

@notsatyarth

Hi there,

I'm using the junit-foundation library to implement global timeouts for tests in a failry large gradle project.

For some of the tests,during the clean up I face the following error

java.lang.IllegalStateException: Identity method not found at com.nordstrom.automation.junit.AtomicTest.getParticles(AtomicTest.java:240) at com.nordstrom.automation.junit.AtomicTest.<init>(AtomicTest.java:43) at com.nordstrom.automation.junit.EachTestNotifierInit.newAtomicTestFor(EachTestNotifierInit.java:107) at com.nordstrom.automation.junit.EachTestNotifierInit.interceptor(EachTestNotifierInit.java:41) at org.junit.internal.runners.model.EachTestNotifier.<init>(EachTestNotifier.java) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:363) at org.junit.runners.BlockJUnit4ClassRunner.runChild$original$PhnKCA3m(BlockJUnit4ClassRunner.java:103) at org.junit.runners.BlockJUnit4ClassRunner.runChild$original$PhnKCA3m$accessor$Y74gkPeT(BlockJUnit4ClassRunner.java) at org.junit.runners.BlockJUnit4ClassRunner$auxiliary$MCHFEZgV.call(Unknown Source) at com.nordstrom.automation.junit.LifecycleHooks.callProxy(LifecycleHooks.java:455) at com.nordstrom.automation.junit.RunChild.intercept(RunChild.java:65) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java) at org.junit.runners.JUnit4.runChild$accessor$khMrxDDh(JUnit4.java) at org.junit.runners.JUnit4$auxiliary$0r2uqXdO.call(Unknown Source) at com.nordstrom.automation.junit.LifecycleHooks.callProxy(LifecycleHooks.java:455) at com.nordstrom.automation.junit.RunChild.intercept(RunChild.java:65) at org.junit.runners.JUnit4.runChild(JUnit4.java) at org.junit.runners.JUnit4.runChild(JUnit4.java) at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.ParentRunner.run$original$EjMHBF56(ParentRunner.java:413) at org.junit.runners.ParentRunner.run$original$EjMHBF56$accessor$dgWkb7MX(ParentRunner.java) at org.junit.runners.ParentRunner$auxiliary$Ml8wyf1e.call(Unknown Source) at com.nordstrom.automation.junit.LifecycleHooks.callProxy(LifecycleHooks.java:455) at com.nordstrom.automation.junit.Run.intercept(Run.java:82) at org.junit.runners.ParentRunner.run(ParentRunner.java) at org.junit.runners.BlockJUnit4ClassRunner.run$accessor$Y74gkPeT(BlockJUnit4ClassRunner.java) at org.junit.runners.BlockJUnit4ClassRunner$auxiliary$S58rmsvh.call(Unknown Source) at com.nordstrom.automation.junit.LifecycleHooks.callProxy(LifecycleHooks.java:455) at com.nordstrom.automation.junit.Run.intercept(Run.java:82) at org.junit.runners.BlockJUnit4ClassRunner.run(BlockJUnit4ClassRunner.java) at org.junit.runners.JUnit4.run$accessor$khMrxDDh(JUnit4.java) at org.junit.runners.JUnit4$auxiliary$iUV6LmcK.call(Unknown Source) at com.nordstrom.automation.junit.LifecycleHooks.callProxy(LifecycleHooks.java:455) at com.nordstrom.automation.junit.Run.intercept(Run.java:82) at org.junit.runners.JUnit4.run(JUnit4.java) at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.runTestClass(JUnitTestClassExecutor.java:112) at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:58) at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:40) at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(AbstractJUnitTestClassProcessor.java:60) at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:52) at jdk.internal.reflect.GeneratedMethodAccessor127.invoke(Unknown Source) at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:568) at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36) at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33) at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94) at jdk.proxyXX.$ProxyXX.processTestClass(Unknown Source) at org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:176) at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129) at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100) at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60) at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56) at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:113) at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:65) at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69) at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74) 

I also see DEBUG junit foundation logs, but I have not explicitly enabled these

08:32:23.739 [Test worker] DEBUG com.nordstrom.automation.junit.Run -- runStarted: org.junit.runners.JUnit4@e725190 |   -- | --   | 08:32:25.358 [Test worker] DEBUG com.nordstrom.automation.junit.RunAnnouncer -- testFinished: test 1|     | 08:32:26.414 [Test worker] DEBUG com.nordstrom.automation.junit.RunAnnouncer -- testFinished: test 2 |     | 08:32:27.482 [Test worker] DEBUG com.nordstrom.automation.junit.RunAnnouncer -- testFinished: test 3|     | 08:32:37.144 [Test worker] DEBUG com.nordstrom.automation.junit.RunAnnouncer -- testFailure: com.foo.TestClass: Identity method not found |     | 08:32:37.144 [Test worker] DEBUG com.nordstrom.automation.junit.Run -- runFinished: org.junit.runners.JUnit4@e725190 

I have enabled the timeout using the following config

target.tasks.withType(org.gradle.api.tasks.testing.Test::class.java).configureEach { systemProperty("junit.timeout.test", 1 * 60 * 1000) // 1 minute timeout systemProperty("junit.timeout.retry", "5") // 5 retries doFirst { val classpath = (this as org.gradle.api.tasks.testing.Test).classpath.files val junitFoundation = classpath.find { it.name.contains("junit-foundation") }?.absolutePath if (junitFoundation != null) { logger.lifecycle("JUnit-Foundation agent found at: $junitFoundation") // Configure the Java agent for timeout jvmArgs = (jvmArgs ?: emptyList()).plus( listOf( "-javaagent:$junitFoundation" ) ) logger.debug("JUnit-Foundation agent configured with TEST_TIMEOUT: 1ms") } else { logger.error("Could not find junit-foundation JAR in classpath") logger.debug( "Available JARs: {}", classpath.filter { it.name.contains("junit") }.map { it.name } ) } } } 

I'm using junit 4.13.2 , JDK 17 , junit-foundation 17.2.4

Any recommendations on what could be going wrong here and how can I debug this ?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions