[ 
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)

Reply via email to