Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Chu Peng 楚鹏
minikube
提交
7f7587d9
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,发现更多精彩内容 >>
提交
7f7587d9
编写于
12月 20, 2018
作者:
T
Thomas Stromberg
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Rename TeeWithPrefix to TeePrefix to match Go idioms
上级
9b707fe2
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
15 addition
and
17 deletion
+15
-17
pkg/minikube/bootstrapper/ssh_runner.go
pkg/minikube/bootstrapper/ssh_runner.go
+2
-2
pkg/util/utils.go
pkg/util/utils.go
+2
-3
pkg/util/utils_test.go
pkg/util/utils_test.go
+9
-10
test/integration/util/util.go
test/integration/util/util.go
+2
-2
未找到文件。
pkg/minikube/bootstrapper/ssh_runner.go
浏览文件 @
7f7587d9
...
...
@@ -80,13 +80,13 @@ func teeSSH(s *ssh.Session, cmd string, outB io.Writer, errB io.Writer) error {
wg
.
Add
(
2
)
go
func
()
{
if
err
:=
util
.
Tee
With
Prefix
(
util
.
ErrPrefix
,
errPipe
,
errB
,
glog
.
Infof
);
err
!=
nil
{
if
err
:=
util
.
TeePrefix
(
util
.
ErrPrefix
,
errPipe
,
errB
,
glog
.
Infof
);
err
!=
nil
{
glog
.
Errorf
(
"tee stderr: %v"
,
err
)
}
wg
.
Done
()
}()
go
func
()
{
if
err
:=
util
.
Tee
With
Prefix
(
util
.
OutPrefix
,
outPipe
,
outB
,
glog
.
Infof
);
err
!=
nil
{
if
err
:=
util
.
TeePrefix
(
util
.
OutPrefix
,
outPipe
,
outB
,
glog
.
Infof
);
err
!=
nil
{
glog
.
Errorf
(
"tee stdout: %v"
,
err
)
}
wg
.
Done
()
...
...
pkg/util/utils.go
浏览文件 @
7f7587d9
...
...
@@ -205,10 +205,9 @@ func MaybeChownDirRecursiveToMinikubeUser(dir string) error {
return
nil
}
// Tee
WithPrefix logs new lines from a reader. Designed to be run in the background
.
func
Tee
With
Prefix
(
prefix
string
,
r
io
.
Reader
,
w
io
.
Writer
,
logger
func
(
format
string
,
args
...
interface
{}))
error
{
// Tee
Prefix copies bytes from a reader to writer, logging each new line
.
func
TeePrefix
(
prefix
string
,
r
io
.
Reader
,
w
io
.
Writer
,
logger
func
(
format
string
,
args
...
interface
{}))
error
{
scanner
:=
bufio
.
NewScanner
(
r
)
// Collect individual bytes so that we don't accidentally strip newlines required by callers.
scanner
.
Split
(
bufio
.
ScanBytes
)
var
line
bytes
.
Buffer
...
...
pkg/util/utils_test.go
浏览文件 @
7f7587d9
...
...
@@ -163,39 +163,38 @@ func TestGetBinaryDownloadURL(t *testing.T) {
}
func
TestTee
With
Prefix
(
t
*
testing
.
T
)
{
func
TestTeePrefix
(
t
*
testing
.
T
)
{
var
in
bytes
.
Buffer
var
out
bytes
.
Buffer
var
logged
strings
.
Builder
logSink
:=
func
(
format
string
,
args
...
interface
{})
{
logged
.
WriteString
(
"("
)
logged
.
WriteString
(
fmt
.
Sprintf
(
format
,
args
...
))
logged
.
WriteString
(
")"
)
logged
.
WriteString
(
"("
+
fmt
.
Sprintf
(
format
,
args
...
)
+
")"
)
}
// Simulate the primary use case: tee in the background. This also helps avoid I/O races.
var
wg
sync
.
WaitGroup
wg
.
Add
(
1
)
go
func
()
{
Tee
WithPrefix
(
":
"
,
&
in
,
&
out
,
logSink
)
Tee
Prefix
(
":
"
,
&
in
,
&
out
,
logSink
)
wg
.
Done
()
}()
in
.
Write
([]
byte
(
"goo"
))
in
.
Write
([]
byte
(
"
\n
"
))
in
.
Write
([]
byte
(
"gle"
))
in
.
Write
([]
byte
(
"g
\r\n\r\n
"
))
in
.
Write
([]
byte
(
"le"
))
wg
.
Wait
()
gotBytes
:=
out
.
Bytes
()
wantBytes
:=
[]
byte
(
"goo
\n
gle"
)
wantBytes
:=
[]
byte
(
"goo
\n
g
\r\n\r\n
le"
)
if
!
bytes
.
Equal
(
gotBytes
,
wantBytes
)
{
t
.
Errorf
(
"
got bytes: %v, want: %v
"
,
gotBytes
,
wantBytes
)
t
.
Errorf
(
"
output=%q, want: %q
"
,
gotBytes
,
wantBytes
)
}
gotLog
:=
logged
.
String
()
wantLog
:=
"(:
goo)(: g
le)"
wantLog
:=
"(:
goo)(:g)(:
le)"
if
gotLog
!=
wantLog
{
t
.
Errorf
(
"
got log %q, want log
%q"
,
gotLog
,
wantLog
)
t
.
Errorf
(
"
log=%q, want:
%q"
,
gotLog
,
wantLog
)
}
}
test/integration/util/util.go
浏览文件 @
7f7587d9
...
...
@@ -95,13 +95,13 @@ func (m *MinikubeRunner) teeRun(cmd *exec.Cmd) (string, string, error) {
var
wg
sync
.
WaitGroup
wg
.
Add
(
2
)
go
func
()
{
if
err
:=
commonutil
.
Tee
With
Prefix
(
commonutil
.
ErrPrefix
,
errPipe
,
&
errB
,
Logf
);
err
!=
nil
{
if
err
:=
commonutil
.
TeePrefix
(
commonutil
.
ErrPrefix
,
errPipe
,
&
errB
,
Logf
);
err
!=
nil
{
m
.
T
.
Logf
(
"tee: %v"
,
err
)
}
wg
.
Done
()
}()
go
func
()
{
if
err
:=
commonutil
.
Tee
With
Prefix
(
commonutil
.
OutPrefix
,
outPipe
,
&
outB
,
Logf
);
err
!=
nil
{
if
err
:=
commonutil
.
TeePrefix
(
commonutil
.
OutPrefix
,
outPipe
,
&
outB
,
Logf
);
err
!=
nil
{
m
.
T
.
Logf
(
"tee: %v"
,
err
)
}
wg
.
Done
()
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录