Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Chu Peng 楚鹏
minikube
提交
eb95f293
M
minikube
项目概览
Chu Peng 楚鹏
/
minikube
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
minikube
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
eb95f293
编写于
7月 22, 2020
作者:
P
Priya Wadhwa
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add validation for distinct current steps to json output test
上级
ad083ba7
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
45 addition
and
9 deletion
+45
-9
test/integration/json_output_test.go
test/integration/json_output_test.go
+45
-9
未找到文件。
test/integration/json_output_test.go
浏览文件 @
eb95f293
...
...
@@ -27,9 +27,6 @@ import (
)
func
TestJSONOutput
(
t
*
testing
.
T
)
{
if
NoneDriver
()
||
DockerDriver
()
{
t
.
Skipf
(
"skipping: test drivers once all JSON output is enabled"
)
}
profile
:=
UniqueProfileName
(
"json-output"
)
ctx
,
cancel
:=
context
.
WithTimeout
(
context
.
Background
(),
Minutes
(
40
))
defer
Cleanup
(
t
,
profile
,
cancel
)
...
...
@@ -42,25 +39,61 @@ func TestJSONOutput(t *testing.T) {
t
.
Errorf
(
"failed to clean up: args %q: %v"
,
rr
.
Command
(),
err
)
}
type
validateJSONOutputFunc
func
(
context
.
Context
,
*
testing
.
T
,
*
RunResult
)
ces
,
err
:=
cloudEvents
(
t
,
rr
)
if
err
!=
nil
{
t
.
Fatalf
(
"converting to cloud events: %v
\n
"
,
err
)
}
type
validateJSONOutputFunc
func
(
context
.
Context
,
*
testing
.
T
,
[]
*
cloudEvent
)
t
.
Run
(
"serial"
,
func
(
t
*
testing
.
T
)
{
serialTests
:=
[]
struct
{
name
string
validator
validateJSONOutputFunc
}{
{
"
CloudEvents"
,
validateCloudEvent
s
},
{
"
DistinctCurrentSteps"
,
validateDistinctCurrentStep
s
},
}
for
_
,
stc
:=
range
serialTests
{
t
.
Run
(
stc
.
name
,
func
(
t
*
testing
.
T
)
{
stc
.
validator
(
ctx
,
t
,
rr
)
stc
.
validator
(
ctx
,
t
,
ces
)
})
}
})
}
// make sure each log has a distinct step
func
validateDistinctCurrentSteps
(
ctx
context
.
Context
,
t
*
testing
.
T
,
ces
[]
*
cloudEvent
)
{
steps
:=
map
[
string
]
string
{}
for
_
,
ce
:=
range
ces
{
currentStep
,
exists
:=
ce
.
data
[
"currentstep"
]
if
!
exists
{
continue
}
if
msg
,
alreadySeen
:=
steps
[
currentStep
];
alreadySeen
{
t
.
Fatalf
(
"step %v has already been assigned to another step %v:
\n
%v"
,
currentStep
,
msg
,
ces
)
}
steps
[
currentStep
]
=
ce
.
data
[
"message"
]
}
}
type
cloudEvent
struct
{
cloudevents
.
Event
data
map
[
string
]
string
}
func
newCloudEvent
(
t
*
testing
.
T
,
ce
cloudevents
.
Event
)
*
cloudEvent
{
m
:=
map
[
string
]
string
{}
data
:=
ce
.
Data
()
if
err
:=
json
.
Unmarshal
(
data
,
&
m
);
err
!=
nil
{
t
.
Fatalf
(
"marshalling cloud event: %v"
,
err
)
}
return
&
cloudEvent
{
Event
:
ce
,
data
:
m
,
}
}
// make sure all output can be marshaled as a cloud event
func
validateCloudEvents
(
ctx
context
.
Context
,
t
*
testing
.
T
,
rr
*
RunResult
)
{
func
cloudEvents
(
t
*
testing
.
T
,
rr
*
RunResult
)
([]
*
cloudEvent
,
error
)
{
ces
:=
[]
*
cloudEvent
{}
stdout
:=
strings
.
Split
(
rr
.
Stdout
.
String
(),
"
\n
"
)
for
_
,
s
:=
range
stdout
{
if
s
==
""
{
...
...
@@ -68,7 +101,10 @@ func validateCloudEvents(ctx context.Context, t *testing.T, rr *RunResult) {
}
event
:=
cloudevents
.
NewEvent
()
if
err
:=
json
.
Unmarshal
([]
byte
(
s
),
&
event
);
err
!=
nil
{
t
.
Fatalf
(
"unable to unmarshal output: %v
\n
%s"
,
err
,
s
)
t
.
Logf
(
"unable to marshal output: %v"
,
s
)
return
nil
,
err
}
ces
=
append
(
ces
,
newCloudEvent
(
t
,
event
))
}
return
ces
,
nil
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录