Skip to content

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

Open
@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