Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
doujutun3207
flink
提交
1ebd44a6
F
flink
项目概览
doujutun3207
/
flink
与 Fork 源项目一致
从无法访问的项目Fork
通知
24
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
flink
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
1ebd44a6
编写于
9月 25, 2017
作者:
A
Aljoscha Krettek
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[FLINK-7635] Add side-output test in WindowOperatorContractTest
上级
c151a537
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
54 addition
and
0 deletion
+54
-0
flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/operators/windowing/WindowOperatorContractTest.java
...ntime/operators/windowing/WindowOperatorContractTest.java
+54
-0
未找到文件。
flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/operators/windowing/WindowOperatorContractTest.java
浏览文件 @
1ebd44a6
...
...
@@ -366,6 +366,60 @@ public abstract class WindowOperatorContractTest extends TestLogger {
}
/**
* This also verifies that the timestamps ouf side-emitted records is correct.
*/
@Test
public
void
testSideOutput
()
throws
Exception
{
final
OutputTag
<
Integer
>
integerOutputTag
=
new
OutputTag
<
Integer
>(
"int-out"
)
{};
final
OutputTag
<
Long
>
longOutputTag
=
new
OutputTag
<
Long
>(
"long-out"
)
{};
WindowAssigner
<
Integer
,
TimeWindow
>
mockAssigner
=
mockTimeWindowAssigner
();
Trigger
<
Integer
,
TimeWindow
>
mockTrigger
=
mockTrigger
();
InternalWindowFunction
<
Iterable
<
Integer
>,
Void
,
Integer
,
TimeWindow
>
windowFunction
=
new
InternalWindowFunction
<
Iterable
<
Integer
>,
Void
,
Integer
,
TimeWindow
>()
{
@Override
public
void
process
(
Integer
integer
,
TimeWindow
window
,
InternalWindowContext
ctx
,
Iterable
<
Integer
>
input
,
Collector
<
Void
>
out
)
throws
Exception
{
Integer
inputValue
=
input
.
iterator
().
next
();
ctx
.
output
(
integerOutputTag
,
inputValue
);
ctx
.
output
(
longOutputTag
,
inputValue
.
longValue
());
}
@Override
public
void
clear
(
TimeWindow
window
,
InternalWindowContext
context
)
throws
Exception
{}
};
OneInputStreamOperatorTestHarness
<
Integer
,
Void
>
testHarness
=
createWindowOperator
(
mockAssigner
,
mockTrigger
,
0L
,
windowFunction
);
testHarness
.
open
();
final
long
windowEnd
=
42L
;
when
(
mockAssigner
.
assignWindows
(
anyInt
(),
anyLong
(),
anyAssignerContext
()))
.
thenReturn
(
Collections
.
singletonList
(
new
TimeWindow
(
0
,
windowEnd
)));
shouldFireOnElement
(
mockTrigger
);
testHarness
.
processElement
(
new
StreamRecord
<>(
17
,
5L
));
assertThat
(
testHarness
.
getSideOutput
(
integerOutputTag
),
contains
(
isStreamRecord
(
17
,
windowEnd
-
1
)));
assertThat
(
testHarness
.
getSideOutput
(
longOutputTag
),
contains
(
isStreamRecord
(
17L
,
windowEnd
-
1
)));
}
@Test
public
void
testAssignerIsInvokedOncePerElement
()
throws
Exception
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录