[
https://issues.apache.org/jira/browse/FLINK-8731?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16544956#comment-16544956
]
ASF GitHub Bot commented on FLINK-8731:
---------------------------------------
Github user zentol commented on a diff in the pull request:
https://github.com/apache/flink/pull/6338#discussion_r202606214
--- Diff:
flink-runtime/src/test/java/org/apache/flink/runtime/io/network/partition/consumer/TestInputChannel.java
---
@@ -81,26 +72,21 @@ public TestInputChannel readBuffer(boolean
moreAvailable) throws IOException, In
}
public TestInputChannel readEndOfPartitionEvent() throws IOException,
InterruptedException {
- final Answer<Optional<BufferAndAvailability>> answer = new
Answer<Optional<BufferAndAvailability>>() {
- @Override
- public Optional<BufferAndAvailability>
answer(InvocationOnMock invocationOnMock) throws Throwable {
- // Return true after finishing
- when(mock.isReleased()).thenReturn(true);
-
- return Optional.of(new
BufferAndAvailability(EventSerializer.toBuffer(EndOfPartitionEvent.INSTANCE),
false, 0));
+ mock.addBufferAndAvailability(
+ new BufferAvailabilityProvider() {
+ @Override
+ public Optional<BufferAndAvailability>
getBufferAvailability() throws IOException, InterruptedException {
+ mock.setReleased();
+ return Optional.of(new
BufferAndAvailability(EventSerializer.toBuffer(EndOfPartitionEvent.INSTANCE),
+ false,
+ 0));
+ }
}
- };
-
- if (stubbing == null) {
- stubbing =
when(mock.getNextBuffer()).thenAnswer(answer);
- } else {
- stubbing = stubbing.thenAnswer(answer);
- }
-
+ );
return this;
}
- public InputChannel getInputChannel() {
+ public MockInputChannel getInputChannel() {
--- End diff --
It would be good if we could get by without exposing the mock. As far as i
can tell on GitHub the only usages of `MockInputChannel` methods outside of
this class are in `StreamTestSingleInputGate`:
```inputChannels[channelIndex].getInputChannel().addBufferAndAvailability(answer);```
```inputChannels[channelIndex].getInputChannel().setReleased();```
Since the `TestInputChannel` class is already accessed anyway we could move
these methods to the TestChannel class.
Note that currently this exposes a package-private class with a public
method, which means that anyone without package-private access will get a
compile error. Either make this method package private, or make the class
public.
> TwoInputStreamTaskTest flaky on travis
> --------------------------------------
>
> Key: FLINK-8731
> URL: https://issues.apache.org/jira/browse/FLINK-8731
> Project: Flink
> Issue Type: Bug
> Components: Streaming, Tests
> Affects Versions: 1.5.0
> Reporter: Chesnay Schepler
> Priority: Critical
> Labels: pull-request-available, test-stability
> Fix For: 1.5.2, 1.6.0
>
>
> https://travis-ci.org/zentol/flink/builds/344307861
> {code}
> Tests run: 5, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 2.479 sec <<<
> FAILURE! - in org.apache.flink.streaming.runtime.tasks.TwoInputStreamTaskTest
> testOpenCloseAndTimestamps(org.apache.flink.streaming.runtime.tasks.TwoInputStreamTaskTest)
> Time elapsed: 0.05 sec <<< ERROR!
> 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.TwoInputStreamTaskTest.testOpenCloseAndTimestamps(TwoInputStreamTaskTest.java:99)
> 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.runtime.io.network.partition.consumer.UnionInputGate.waitAndGetNextInputGate(UnionInputGate.java:212)
> at
> org.apache.flink.runtime.io.network.partition.consumer.UnionInputGate.getNextBufferOrEvent(UnionInputGate.java:158)
> at
> org.apache.flink.streaming.runtime.io.BarrierBuffer.getNextNonBlocked(BarrierBuffer.java:164)
> at
> org.apache.flink.streaming.runtime.io.StreamTwoInputProcessor.processInput(StreamTwoInputProcessor.java:292)
> at
> org.apache.flink.streaming.runtime.tasks.TwoInputStreamTask.run(TwoInputStreamTask.java:115)
> at
> org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:308)
> at
> org.apache.flink.streaming.runtime.tasks.StreamTaskTestHarness$TaskThread.run(StreamTaskTestHarness.java:437)
> {code}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)