Skip to content

Flaky gRPC tests #1106

Closed
Closed
@felixbarny

Description

@felixbarny

There have been some improvements with #1095 but gRPC tests still seem to be flaky.

See also #1105 (comment)

co.elastic.apm.agent.grpc.v1_6_1.GrpcServerInstrumentationTest.asyncClientCallShouldWorkLikeRegularCall

Click to expand
Error Message
Assertion condition defined as a lambda expression in co.elastic.apm.agent.MockReporter 
Expecting actual not to be empty within 100 milliseconds.
Stacktrace
org.awaitility.core.ConditionTimeoutException: 
Assertion condition defined as a lambda expression in co.elastic.apm.agent.MockReporter 
Expecting actual not to be empty within 100 milliseconds.
	at org.awaitility.core.ConditionAwaiter.await(ConditionAwaiter.java:148)
	at org.awaitility.core.AssertionCondition.await(AssertionCondition.java:119)
	at org.awaitility.core.AssertionCondition.await(AssertionCondition.java:31)
	at org.awaitility.core.ConditionFactory.until(ConditionFactory.java:873)
	at org.awaitility.core.ConditionFactory.untilAsserted(ConditionFactory.java:657)
	at co.elastic.apm.agent.MockReporter.getFirstTransaction(MockReporter.java:195)
	at co.elastic.apm.agent.grpc.AbstractGrpcServerInstrumentationTest.getFirstTransaction(AbstractGrpcServerInstrumentationTest.java:166)
	at co.elastic.apm.agent.grpc.AbstractGrpcServerInstrumentationTest.asyncClientCallShouldWorkLikeRegularCall(AbstractGrpcServerInstrumentationTest.java:113)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:72)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$4(NodeTestTask.java:108)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:72)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:98)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:74)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1378)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$4(NodeTestTask.java:112)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:72)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:98)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:74)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1378)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$4(NodeTestTask.java:112)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:72)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:98)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:74)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:170)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:154)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:90)
	at org.junit.platform.surefire.provider.JUnitPlatformProvider.invokeAllTests(JUnitPlatformProvider.java:132)
	at org.junit.platform.surefire.provider.JUnitPlatformProvider.invoke(JUnitPlatformProvider.java:111)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:290)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:242)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:121)
Caused by: java.lang.AssertionError: 
Expecting actual not to be empty
	at co.elastic.apm.agent.MockReporter.lambda$getFirstTransaction$0(MockReporter.java:195)
	at org.awaitility.core.AssertionCondition.lambda$new$0(AssertionCondition.java:53)
	at org.awaitility.core.ConditionAwaiter$ConditionPoller.call(ConditionAwaiter.java:203)
	at org.awaitility.core.ConditionAwaiter$ConditionPoller.call(ConditionAwaiter.java:190)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1135)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
	at java.base/java.lang.Thread.run(Thread.java:844)
Standard Error
[main] WARN co.elastic.apm.agent.impl.ElasticApmTracer - Attempting to resume the agent when it is in a RUNNING state
[main] INFO co.elastic.apm.agent.grpc.testapp.HelloServer - starting grpc server on port 50051
[main] INFO co.elastic.apm.agent.grpc.testapp.HelloServer - grpc server start complete
[grpc-default-executor-1] DEBUG co.elastic.apm.agent.impl.transaction.AbstractSpan - increment references to '' 00-09c3332eaa5ff1776fecddfb789123a7-5e3a27630a958468-01 (82239d3) (1)
[grpc-default-executor-1] DEBUG co.elastic.apm.agent.impl.transaction.AbstractSpan - increment references to 'helloworld.Hello/SayHello' 00-09c3332eaa5ff1776fecddfb789123a7-5e3a27630a958468-01 (82239d3) (2)
[grpc-default-executor-0] INFO co.elastic.apm.agent.grpc.testapp.HelloServer - start processing
[grpc-default-executor-0] INFO co.elastic.apm.agent.grpc.testapp.HelloServer - end of processing, response not sent yet
[grpc-default-executor-0] INFO co.elastic.apm.agent.grpc.testapp.HelloServer - start sending response
[grpc-default-executor-0] INFO co.elastic.apm.agent.grpc.testapp.HelloServer - end of sending response
[main] INFO co.elastic.apm.agent.grpc.testapp.HelloClient - client channel has been properly shut down
[main] INFO co.elastic.apm.agent.grpc.testapp.HelloServer - stopping grpc server
[main] INFO co.elastic.apm.agent.grpc.testapp.HelloServer - grpc server shutdown complete

co.elastic.apm.agent.grpc.v1_6_1.GrpcServerInstrumentationTest.bidiStreamingCallShouldBeIgnored

Click to expand
Error Message
Assertion condition defined as a lambda expression in co.elastic.apm.agent.MockReporter 
Expecting empty but was:<['helloworld.Hello/SayHello' 00-09c3332eaa5ff1776fecddfb789123a7-5e3a27630a958468-01 (82239d3)]> within 100 milliseconds.
Stacktrace
org.awaitility.core.ConditionTimeoutException: 
Assertion condition defined as a lambda expression in co.elastic.apm.agent.MockReporter 
Expecting empty but was:<['helloworld.Hello/SayHello' 00-09c3332eaa5ff1776fecddfb789123a7-5e3a27630a958468-01 (82239d3)]> within 100 milliseconds.
	at org.awaitility.core.ConditionAwaiter.await(ConditionAwaiter.java:148)
	at org.awaitility.core.AssertionCondition.await(AssertionCondition.java:119)
	at org.awaitility.core.AssertionCondition.await(AssertionCondition.java:31)
	at org.awaitility.core.ConditionFactory.until(ConditionFactory.java:873)
	at org.awaitility.core.ConditionFactory.untilAsserted(ConditionFactory.java:657)
	at co.elastic.apm.agent.MockReporter.assertNoTransaction(MockReporter.java:207)
	at co.elastic.apm.agent.grpc.AbstractGrpcServerInstrumentationTest.checkNoTransaction(AbstractGrpcServerInstrumentationTest.java:162)
	at co.elastic.apm.agent.grpc.AbstractGrpcServerInstrumentationTest.bidiStreamingCallShouldBeIgnored(AbstractGrpcServerInstrumentationTest.java:152)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:72)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$4(NodeTestTask.java:108)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:72)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:98)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:74)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1378)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$4(NodeTestTask.java:112)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:72)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:98)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:74)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1378)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$4(NodeTestTask.java:112)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:72)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:98)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:74)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:170)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:154)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:90)
	at org.junit.platform.surefire.provider.JUnitPlatformProvider.invokeAllTests(JUnitPlatformProvider.java:132)
	at org.junit.platform.surefire.provider.JUnitPlatformProvider.invoke(JUnitPlatformProvider.java:111)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:290)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:242)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:121)
Caused by: java.lang.AssertionError: 
Expecting empty but was:<['helloworld.Hello/SayHello' 00-09c3332eaa5ff1776fecddfb789123a7-5e3a27630a958468-01 (82239d3)]>
	at co.elastic.apm.agent.MockReporter.lambda$assertNoTransaction$1(MockReporter.java:207)
	at org.awaitility.core.AssertionCondition.lambda$new$0(AssertionCondition.java:53)
	at org.awaitility.core.ConditionAwaiter$ConditionPoller.call(ConditionAwaiter.java:203)
	at org.awaitility.core.ConditionAwaiter$ConditionPoller.call(ConditionAwaiter.java:190)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1135)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
	at java.base/java.lang.Thread.run(Thread.java:844)
Standard Error
[main] WARN co.elastic.apm.agent.impl.ElasticApmTracer - Attempting to resume the agent when it is in a RUNNING state
[main] INFO co.elastic.apm.agent.grpc.testapp.HelloServer - starting grpc server on port 50051
[main] INFO co.elastic.apm.agent.grpc.testapp.HelloServer - grpc server start complete
[grpc-default-executor-1] DEBUG co.elastic.apm.agent.impl.transaction.AbstractSpan - decrement references to 'helloworld.Hello/SayHello' 00-09c3332eaa5ff1776fecddfb789123a7-5e3a27630a958468-01 (82239d3) (1)
[main] DEBUG co.elastic.apm.agent.impl.transaction.AbstractSpan - decrement references to 'helloworld.Hello/SayHello' 00-09c3332eaa5ff1776fecddfb789123a7-5e3a27630a958468-01 (82239d3) (0)
[main] INFO co.elastic.apm.agent.grpc.testapp.HelloClient - client channel has been properly shut down
[main] INFO co.elastic.apm.agent.grpc.testapp.HelloServer - stopping grpc server
[main] INFO co.elastic.apm.agent.grpc.testapp.HelloServer - grpc server shutdown complete

Metadata

Metadata

Assignees

Labels

flaky-testUnstable or unreliable test cases.

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions