[
https://issues.apache.org/jira/browse/FLINK-9847?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16545119#comment-16545119
]
Congxian Qiu commented on FLINK-9847:
-------------------------------------
Hi, [~till.rohrmann] thank you for your reply.
After I debug some times, I always come to the following line
{code:java}
// line 108 of StreamTestSingleInputGate
when(inputChannels[channelIndex].getInputChannel().isReleased()).thenReturn(
true);
{code}
the stackTrace is below
{code:java}
0 = {StackTraceElement@2070}
"org.mockito.exceptions.Reporter.wrongTypeOfReturnValue(Reporter.java:478)"
1 = {StackTraceElement@2071}
"org.mockito.internal.stubbing.answers.AnswersValidator.validateReturnValue(AnswersValidator.java:73)"
2 = {StackTraceElement@2072}
"org.mockito.internal.stubbing.answers.AnswersValidator.validate(AnswersValidator.java:22)"
3 = {StackTraceElement@2073}
"org.mockito.internal.stubbing.InvocationContainerImpl.addAnswer(InvocationContainerImpl.java:61)"
4 = {StackTraceElement@2074}
"org.mockito.internal.stubbing.InvocationContainerImpl.addAnswer(InvocationContainerImpl.java:50)"
5 = {StackTraceElement@2075}
"org.mockito.internal.stubbing.OngoingStubbingImpl.thenAnswer(OngoingStubbingImpl.java:28)"
6 = {StackTraceElement@2076}
"org.mockito.internal.stubbing.BaseStubbing.thenReturn(BaseStubbing.java:18)"
7 = {StackTraceElement@2077}
"org.apache.flink.runtime.io.network.partition.consumer.StreamTestSingleInputGate$1.answer(StreamTestSingleInputGate.java:108)"
8 = {StackTraceElement@2078}
"org.apache.flink.runtime.io.network.partition.consumer.StreamTestSingleInputGate$1.answer(StreamTestSingleInputGate.java:97)"
9 = {StackTraceElement@2079}
"org.mockito.internal.stubbing.StubbedInvocationMatcher.answer(StubbedInvocationMatcher.java:34)"
10 = {StackTraceElement@2080}
"org.mockito.internal.handler.MockHandlerImpl.handle(MockHandlerImpl.java:91)"
11 = {StackTraceElement@2081}
"org.mockito.internal.handler.NullResultGuardian.handle(NullResultGuardian.java:29)"
12 = {StackTraceElement@2082}
"org.mockito.internal.handler.InvocationNotifierHandler.handle(InvocationNotifierHandler.java:38)"
13 = {StackTraceElement@2083}
"org.powermock.api.mockito.repackaged.MethodInterceptorFilter.intercept(MethodInterceptorFilter.java:60)"
14 = {StackTraceElement@2084}
"org.apache.flink.runtime.io.network.partition.consumer.InputChannel$$EnhancerByMockitoWithCGLIB$$162c23de.getNextBuffer(<generated>)"
15 = {StackTraceElement@2085}
"org.apache.flink.runtime.io.network.partition.consumer.SingleInputGate.getNextBufferOrEvent(SingleInputGate.java:545)"
16 = {StackTraceElement@2086}
"org.apache.flink.runtime.io.network.partition.consumer.SingleInputGate.getNextBufferOrEvent(SingleInputGate.java:502)"
17 = {StackTraceElement@2087}
"org.apache.flink.runtime.io.network.partition.consumer.SingleInputGate$$EnhancerByMockitoWithCGLIB$$2737bcc6.CGLIB$getNextBufferOrEvent$16(<generated>)"
18 = {StackTraceElement@2088}
"org.apache.flink.runtime.io.network.partition.consumer.SingleInputGate$$EnhancerByMockitoWithCGLIB$$2737bcc6$$FastClassByMockitoWithCGLIB$$aaa7ad20.invoke(<generated>)"
19 = {StackTraceElement@2089}
"org.mockito.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:216)"
20 = {StackTraceElement@2090}
"org.powermock.api.mockito.repackaged.DelegatingMockitoMethodProxy.invokeSuper(DelegatingMockitoMethodProxy.java:20)"
21 = {StackTraceElement@2091}
"org.mockito.internal.invocation.realmethod.DefaultRealMethod.invoke(DefaultRealMethod.java:21)"
22 = {StackTraceElement@2092}
"org.mockito.internal.invocation.realmethod.CleanTraceRealMethod.invoke(CleanTraceRealMethod.java:30)"
23 = {StackTraceElement@2093}
"org.mockito.internal.invocation.InvocationImpl.callRealMethod(InvocationImpl.java:112)"
24 = {StackTraceElement@2094}
"org.mockito.internal.stubbing.answers.CallsRealMethods.answer(CallsRealMethods.java:41)"
25 = {StackTraceElement@2095}
"org.mockito.internal.handler.MockHandlerImpl.handle(MockHandlerImpl.java:93)"
26 = {StackTraceElement@2096}
"org.mockito.internal.handler.NullResultGuardian.handle(NullResultGuardian.java:29)"
27 = {StackTraceElement@2097}
"org.mockito.internal.handler.InvocationNotifierHandler.handle(InvocationNotifierHandler.java:38)"
28 = {StackTraceElement@2098}
"org.powermock.api.mockito.repackaged.MethodInterceptorFilter.intercept(MethodInterceptorFilter.java:60)"
29 = {StackTraceElement@2099}
"org.apache.flink.runtime.io.network.partition.consumer.SingleInputGate$$EnhancerByMockitoWithCGLIB$$2737bcc6.getNextBufferOrEvent(<generated>)"
30 = {StackTraceElement@2100}
"org.apache.flink.streaming.runtime.io.BarrierBuffer.getNextNonBlocked(BarrierBuffer.java:165)"
31 = {StackTraceElement@2101}
"org.apache.flink.streaming.runtime.io.StreamInputProcessor.processInput(StreamInputProcessor.java:209)"
32 = {StackTraceElement@2102}
"org.apache.flink.streaming.runtime.tasks.OneInputStreamTask.run(OneInputStreamTask.java:105)"
33 = {StackTraceElement@2103}
"org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:300)"
34 = {StackTraceElement@2104}
"org.apache.flink.streaming.runtime.tasks.StreamTaskTestHarness$TaskThread.run(StreamTaskTestHarness.java:439)"
{code}
> OneInputStreamTaskTest.testWatermarksNotForwardedWithinChainWhenIdle unstable
> -----------------------------------------------------------------------------
>
> Key: FLINK-9847
> URL: https://issues.apache.org/jira/browse/FLINK-9847
> Project: Flink
> Issue Type: Bug
> Components: Tests
> Affects Versions: 1.6.0
> Reporter: Till Rohrmann
> Priority: Critical
> Labels: test-stability
> Fix For: 1.6.0
>
>
> The test
> {{OneInputStreamTaskTest.testWatermarksNotForwardedWithinChainWhenIdle}} is
> unstable. When executing repeatedly the test fails from time to time with
> {code}
> java.lang.Exception: error in task
> at
> org.apache.flink.streaming.runtime.tasks.StreamTaskTestHarness.waitForTaskCompletion(StreamTaskTestHarness.java:250)
> at
> org.apache.flink.streaming.runtime.tasks.StreamTaskTestHarness.waitForTaskCompletion(StreamTaskTestHarness.java:233)
> at
> org.apache.flink.streaming.runtime.tasks.OneInputStreamTaskTest.testWatermarksNotForwardedWithinChainWhenIdle(OneInputStreamTaskTest.java:348)
> at sun.reflect.GeneratedMethodAccessor8.invoke(Unknown Source)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
> at
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
> at
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
> at
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
> at org.junit.rules.TestWatcher$1.evaluate(TestWatcher.java:55)
> at org.junit.rules.RunRules.evaluate(RunRules.java:20)
> at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
> at
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
> at
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
> at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
> at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
> at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
> at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
> at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
> at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
> at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
> at
> com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
> at
> com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:67)
> at
> com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
> at
> com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
> Caused by: org.mockito.exceptions.misusing.WrongTypeOfReturnValue:
> Boolean cannot be returned by getChannelIndex()
> getChannelIndex() should return int
> ***
> If you're unsure why you're getting above error read on.
> Due to the nature of the syntax above problem might occur because:
> 1. This exception *might* occur in wrongly written multi-threaded tests.
> Please refer to Mockito FAQ on limitations of concurrency testing.
> 2. A spy is stubbed using when(spy.foo()).then() syntax. It is safer to stub
> spies -
> - with doReturn|Throw() family of methods. More in javadocs for
> Mockito.spy() method.
> at
> org.apache.flink.streaming.runtime.io.BarrierBuffer.getNextNonBlocked(BarrierBuffer.java:165)
> at
> org.apache.flink.streaming.runtime.io.StreamInputProcessor.processInput(StreamInputProcessor.java:209)
> at
> org.apache.flink.streaming.runtime.tasks.OneInputStreamTask.run(OneInputStreamTask.java:105)
> at
> org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:300)
> at
> org.apache.flink.streaming.runtime.tasks.StreamTaskTestHarness$TaskThread.run(StreamTaskTestHarness.java:437)
> {code}
> Given the exception I suspect that there is a problem with mocking in the
> {{OneInputStreamTaskTestHarness}}.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)