Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
H
helm3
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
go
helm3
Commits
488ca6fd
Commit
488ca6fd
authored
May 09, 2017
by
Michelle Noorali
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix(*): return non-zero exit code on test failure
* resolves #2089
parent
a9f0be9b
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
230 additions
and
42 deletions
+230
-42
test_run.proto
_proto/hapi/release/test_run.proto
+1
-0
tiller.proto
_proto/hapi/services/tiller.proto
+3
-0
helm_test.go
cmd/helm/helm_test.go
+25
-3
release_testing.go
cmd/helm/release_testing.go
+20
-0
release_testing_test.go
cmd/helm/release_testing_test.go
+105
-0
chart.pb.go
pkg/proto/hapi/chart/chart.pb.go
+1
-1
config.pb.go
pkg/proto/hapi/chart/config.pb.go
+1
-1
metadata.pb.go
pkg/proto/hapi/chart/metadata.pb.go
+1
-1
template.pb.go
pkg/proto/hapi/chart/template.pb.go
+1
-1
hook.pb.go
pkg/proto/hapi/release/hook.pb.go
+1
-1
info.pb.go
pkg/proto/hapi/release/info.pb.go
+1
-1
release.pb.go
pkg/proto/hapi/release/release.pb.go
+1
-1
status.pb.go
pkg/proto/hapi/release/status.pb.go
+1
-1
test_run.pb.go
pkg/proto/hapi/release/test_run.pb.go
+22
-18
test_suite.pb.go
pkg/proto/hapi/release/test_suite.pb.go
+1
-1
tiller.pb.go
pkg/proto/hapi/services/tiller.pb.go
+0
-0
version.pb.go
pkg/proto/hapi/version/version.pb.go
+1
-1
environment.go
pkg/releasetesting/environment.go
+7
-7
environment_test.go
pkg/releasetesting/environment_test.go
+28
-1
test_suite.go
pkg/releasetesting/test_suite.go
+4
-2
release_server.go
pkg/tiller/release_server.go
+5
-1
No files found.
_proto/hapi/release/test_run.proto
View file @
488ca6fd
...
...
@@ -26,6 +26,7 @@ message TestRun {
UNKNOWN
=
0
;
SUCCESS
=
1
;
FAILURE
=
2
;
RUNNING
=
3
;
}
string
name
=
1
;
...
...
_proto/hapi/services/tiller.proto
View file @
488ca6fd
...
...
@@ -20,6 +20,7 @@ import "hapi/chart/chart.proto";
import
"hapi/chart/config.proto"
;
import
"hapi/release/release.proto"
;
import
"hapi/release/info.proto"
;
import
"hapi/release/test_run.proto"
;
import
"hapi/release/status.proto"
;
import
"hapi/version/version.proto"
;
...
...
@@ -327,4 +328,6 @@ message TestReleaseRequest {
// TestReleaseResponse represents a message from executing a test
message
TestReleaseResponse
{
string
msg
=
1
;
hapi.release.TestRun.Status
status
=
2
;
}
cmd/helm/helm_test.go
View file @
488ca6fd
...
...
@@ -24,6 +24,7 @@ import (
"math/rand"
"os"
"regexp"
"sync"
"testing"
"github.com/golang/protobuf/ptypes/timestamp"
...
...
@@ -122,8 +123,9 @@ func releaseMock(opts *releaseOptions) *release.Release {
}
type
fakeReleaseClient
struct
{
rels
[]
*
release
.
Release
err
error
rels
[]
*
release
.
Release
responses
map
[
string
]
release
.
TestRun_Status
err
error
}
var
_
helm
.
Interface
=
&
fakeReleaseClient
{}
...
...
@@ -198,7 +200,27 @@ func (c *fakeReleaseClient) ReleaseHistory(rlsName string, opts ...helm.HistoryO
}
func
(
c
*
fakeReleaseClient
)
RunReleaseTest
(
rlsName
string
,
opts
...
helm
.
ReleaseTestOption
)
(
<-
chan
*
rls
.
TestReleaseResponse
,
<-
chan
error
)
{
return
nil
,
nil
results
:=
make
(
chan
*
rls
.
TestReleaseResponse
,
len
(
c
.
responses
))
errc
:=
make
(
chan
error
,
1
)
go
func
()
{
var
wg
sync
.
WaitGroup
for
m
,
s
:=
range
c
.
responses
{
wg
.
Add
(
1
)
go
func
(
msg
string
,
status
release
.
TestRun_Status
)
{
defer
wg
.
Done
()
results
<-
&
rls
.
TestReleaseResponse
{
Msg
:
msg
,
Status
:
status
}
}(
m
,
s
)
}
wg
.
Wait
()
close
(
results
)
close
(
errc
)
}()
return
results
,
errc
}
func
(
c
*
fakeReleaseClient
)
Option
(
opt
...
helm
.
Option
)
helm
.
Interface
{
...
...
cmd/helm/release_testing.go
View file @
488ca6fd
...
...
@@ -23,6 +23,7 @@ import (
"github.com/spf13/cobra"
"k8s.io/helm/pkg/helm"
"k8s.io/helm/pkg/proto/hapi/release"
)
const
releaseTestDesc
=
`
...
...
@@ -75,16 +76,35 @@ func (t *releaseTestCmd) run() (err error) {
helm
.
ReleaseTestTimeout
(
t
.
timeout
),
helm
.
ReleaseTestCleanup
(
t
.
cleanup
),
)
testErr
:=
&
testErr
{}
for
{
select
{
case
err
:=
<-
errc
:
if
prettyError
(
err
)
==
nil
&&
testErr
.
failed
>
0
{
return
testErr
.
Error
()
}
return
prettyError
(
err
)
case
res
,
ok
:=
<-
c
:
if
!
ok
{
break
}
if
res
.
Status
==
release
.
TestRun_FAILURE
{
testErr
.
failed
++
}
fmt
.
Fprintf
(
t
.
out
,
res
.
Msg
+
"
\n
"
)
}
}
}
type
testErr
struct
{
failed
int
}
func
(
err
*
testErr
)
Error
()
error
{
return
fmt
.
Errorf
(
"%v test(s) failed"
,
err
.
failed
)
}
cmd/helm/release_testing_test.go
0 → 100644
View file @
488ca6fd
/*
Copyright 2016 The Kubernetes Authors All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package
main
import
(
"bytes"
"testing"
"k8s.io/helm/pkg/proto/hapi/release"
)
func
TestReleaseTesting
(
t
*
testing
.
T
)
{
tests
:=
[]
struct
{
name
string
args
[]
string
flags
[]
string
responses
map
[
string
]
release
.
TestRun_Status
fail
bool
}{
{
name
:
"basic test"
,
args
:
[]
string
{
"example-release"
},
flags
:
[]
string
{},
responses
:
map
[
string
]
release
.
TestRun_Status
{
"PASSED: green lights everywhere"
:
release
.
TestRun_SUCCESS
},
fail
:
false
,
},
{
name
:
"test failure"
,
args
:
[]
string
{
"example-fail"
},
flags
:
[]
string
{},
responses
:
map
[
string
]
release
.
TestRun_Status
{
"FAILURE: red lights everywhere"
:
release
.
TestRun_FAILURE
},
fail
:
true
,
},
{
name
:
"test unknown"
,
args
:
[]
string
{
"example-unknown"
},
flags
:
[]
string
{},
responses
:
map
[
string
]
release
.
TestRun_Status
{
"UNKNOWN: yellow lights everywhere"
:
release
.
TestRun_UNKNOWN
},
fail
:
false
,
},
{
name
:
"test error"
,
args
:
[]
string
{
"example-error"
},
flags
:
[]
string
{},
responses
:
map
[
string
]
release
.
TestRun_Status
{
"ERROR: yellow lights everywhere"
:
release
.
TestRun_FAILURE
},
fail
:
true
,
},
{
name
:
"test running"
,
args
:
[]
string
{
"example-running"
},
flags
:
[]
string
{},
responses
:
map
[
string
]
release
.
TestRun_Status
{
"RUNNING: things are happpeningggg"
:
release
.
TestRun_RUNNING
},
fail
:
false
,
},
{
name
:
"multiple tests example"
,
args
:
[]
string
{
"example-suite"
},
flags
:
[]
string
{},
responses
:
map
[
string
]
release
.
TestRun_Status
{
"RUNNING: things are happpeningggg"
:
release
.
TestRun_RUNNING
,
"PASSED: party time"
:
release
.
TestRun_SUCCESS
,
"RUNNING: things are happening again"
:
release
.
TestRun_RUNNING
,
"FAILURE: good thing u checked :)"
:
release
.
TestRun_FAILURE
,
"RUNNING: things are happpeningggg yet again"
:
release
.
TestRun_RUNNING
,
"PASSED: feel free to party again"
:
release
.
TestRun_SUCCESS
},
fail
:
true
,
},
}
for
_
,
tt
:=
range
tests
{
c
:=
&
fakeReleaseClient
{
responses
:
tt
.
responses
}
buf
:=
bytes
.
NewBuffer
(
nil
)
cmd
:=
newReleaseTestCmd
(
c
,
buf
)
cmd
.
ParseFlags
(
tt
.
flags
)
err
:=
cmd
.
RunE
(
cmd
,
tt
.
args
)
if
err
==
nil
&&
tt
.
fail
{
t
.
Errorf
(
"%q did not fail but should have failed"
,
tt
.
name
)
}
if
err
!=
nil
{
if
tt
.
fail
{
continue
}
else
{
t
.
Errorf
(
"%q reported error: %s"
,
tt
.
name
,
err
)
}
}
}
}
pkg/proto/hapi/chart/chart.pb.go
View file @
488ca6fd
...
...
@@ -101,7 +101,7 @@ func init() { proto.RegisterFile("hapi/chart/chart.proto", fileDescriptor0) }
var
fileDescriptor0
=
[]
byte
{
// 242 bytes of a gzipped FileDescriptorProto
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x0
0
,
0x00
,
0x00
,
0x02
,
0xff
,
0x6c
,
0x90
,
0xb1
,
0x4e
,
0xc3
,
0x30
,
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x0
9
,
0x6e
,
0x88
,
0x02
,
0xff
,
0x6c
,
0x90
,
0xb1
,
0x4e
,
0xc3
,
0x30
,
0x10
,
0x86
,
0x15
,
0x4a
,
0x0a
,
0x1c
,
0x2c
,
0x58
,
0x08
,
0x4c
,
0xa7
,
0x8a
,
0x09
,
0x75
,
0x70
,
0x50
,
0x11
,
0x0f
,
0x00
,
0xcc
,
0x2c
,
0x16
,
0x13
,
0xdb
,
0xb5
,
0xb9
,
0xa4
,
0x91
,
0x52
,
0x3b
,
0xaa
,
0x5d
,
0xa4
,
0xbe
,
0x3b
,
0x03
,
0xea
,
0xd9
,
0xa6
,
0x09
,
0xea
,
0x12
,
0x29
,
0xf7
,
0x7d
,
0xff
,
0xe5
,
0xbf
,
...
...
pkg/proto/hapi/chart/config.pb.go
View file @
488ca6fd
...
...
@@ -64,7 +64,7 @@ func init() { proto.RegisterFile("hapi/chart/config.proto", fileDescriptor1) }
var
fileDescriptor1
=
[]
byte
{
// 182 bytes of a gzipped FileDescriptorProto
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x0
0
,
0x00
,
0x00
,
0x02
,
0xff
,
0xe2
,
0x12
,
0xcf
,
0x48
,
0x2c
,
0xc8
,
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x0
9
,
0x6e
,
0x88
,
0x02
,
0xff
,
0xe2
,
0x12
,
0xcf
,
0x48
,
0x2c
,
0xc8
,
0xd4
,
0x4f
,
0xce
,
0x48
,
0x2c
,
0x2a
,
0xd1
,
0x4f
,
0xce
,
0xcf
,
0x4b
,
0xcb
,
0x4c
,
0xd7
,
0x2b
,
0x28
,
0xca
,
0x2f
,
0xc9
,
0x17
,
0xe2
,
0x02
,
0x49
,
0xe8
,
0x81
,
0x25
,
0x94
,
0x16
,
0x30
,
0x72
,
0xb1
,
0x39
,
0x83
,
0x25
,
0x85
,
0x04
,
0xb8
,
0x98
,
0x8b
,
0x12
,
0xcb
,
0x25
,
0x18
,
0x15
,
0x18
,
0x35
,
0x38
,
0x83
,
...
...
pkg/proto/hapi/chart/metadata.pb.go
View file @
488ca6fd
...
...
@@ -218,7 +218,7 @@ func init() { proto.RegisterFile("hapi/chart/metadata.proto", fileDescriptor2) }
var
fileDescriptor2
=
[]
byte
{
// 354 bytes of a gzipped FileDescriptorProto
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x0
0
,
0x00
,
0x00
,
0x02
,
0xff
,
0x6c
,
0x92
,
0x5f
,
0x4b
,
0xe3
,
0x40
,
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x0
9
,
0x6e
,
0x88
,
0x02
,
0xff
,
0x6c
,
0x92
,
0x5f
,
0x4b
,
0xe3
,
0x40
,
0x14
,
0xc5
,
0x37
,
0x9b
,
0xe6
,
0xdf
,
0xcd
,
0x76
,
0xb7
,
0x0c
,
0x4b
,
0x99
,
0x5d
,
0x44
,
0x42
,
0xf1
,
0x21
,
0x4f
,
0x29
,
0x28
,
0x88
,
0xcf
,
0x82
,
0xf8
,
0xa0
,
0x6d
,
0x25
,
0xf8
,
0x07
,
0x7c
,
0x1b
,
0x93
,
0x4b
,
0x3b
,
0xd8
,
0xcc
,
0x84
,
0xc9
,
0xa8
,
0xf8
,
0x7d
,
0xfd
,
0x20
,
0x32
,
0x93
,
0xa4
,
0x8d
,
0xe0
,
...
...
pkg/proto/hapi/chart/template.pb.go
View file @
488ca6fd
...
...
@@ -51,7 +51,7 @@ func init() { proto.RegisterFile("hapi/chart/template.proto", fileDescriptor3) }
var
fileDescriptor3
=
[]
byte
{
// 107 bytes of a gzipped FileDescriptorProto
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x0
0
,
0x00
,
0x00
,
0x02
,
0xff
,
0xe2
,
0x92
,
0xcc
,
0x48
,
0x2c
,
0xc8
,
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x0
9
,
0x6e
,
0x88
,
0x02
,
0xff
,
0xe2
,
0x92
,
0xcc
,
0x48
,
0x2c
,
0xc8
,
0xd4
,
0x4f
,
0xce
,
0x48
,
0x2c
,
0x2a
,
0xd1
,
0x2f
,
0x49
,
0xcd
,
0x2d
,
0xc8
,
0x49
,
0x2c
,
0x49
,
0xd5
,
0x2b
,
0x28
,
0xca
,
0x2f
,
0xc9
,
0x17
,
0xe2
,
0x02
,
0x49
,
0xe9
,
0x81
,
0xa5
,
0x94
,
0x8c
,
0xb8
,
0x38
,
0x42
,
0xa0
,
0xb2
,
0x42
,
0x42
,
0x5c
,
0x2c
,
0x79
,
0x89
,
0xb9
,
0xa9
,
0x12
,
0x8c
,
0x0a
,
0x8c
,
0x1a
,
...
...
pkg/proto/hapi/release/hook.pb.go
View file @
488ca6fd
...
...
@@ -167,7 +167,7 @@ func init() { proto.RegisterFile("hapi/release/hook.proto", fileDescriptor0) }
var
fileDescriptor0
=
[]
byte
{
// 371 bytes of a gzipped FileDescriptorProto
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x0
0
,
0x00
,
0x00
,
0x02
,
0xff
,
0x64
,
0x90
,
0xdf
,
0x8e
,
0x93
,
0x40
,
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x0
9
,
0x6e
,
0x88
,
0x02
,
0xff
,
0x64
,
0x90
,
0xdf
,
0x8e
,
0x93
,
0x40
,
0x14
,
0x87
,
0x65
,
0x5b
,
0xa0
,
0x3d
,
0x5d
,
0xd7
,
0x71
,
0x62
,
0x74
,
0xd2
,
0x1b
,
0xc9
,
0x5e
,
0x71
,
0x35
,
0x98
,
0x35
,
0x3e
,
0x00
,
0xdb
,
0x1d
,
0x75
,
0xb3
,
0x84
,
0x36
,
0x03
,
0xc4
,
0xc4
,
0x1b
,
0xc2
,
0xc6
,
0x69
,
0x21
,
0x2d
,
0x0c
,
0x29
,
0x53
,
0x7d
,
0x33
,
0x9f
,
0xc4
,
0x07
,
0x32
,
0x33
,
0xfc
,
0x89
,
...
...
pkg/proto/hapi/release/info.pb.go
View file @
488ca6fd
...
...
@@ -73,7 +73,7 @@ func init() { proto.RegisterFile("hapi/release/info.proto", fileDescriptor1) }
var
fileDescriptor1
=
[]
byte
{
// 235 bytes of a gzipped FileDescriptorProto
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x0
0
,
0x00
,
0x00
,
0x02
,
0xff
,
0x84
,
0x8f
,
0x31
,
0x4f
,
0xc3
,
0x30
,
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x0
9
,
0x6e
,
0x88
,
0x02
,
0xff
,
0x84
,
0x8f
,
0x31
,
0x4f
,
0xc3
,
0x30
,
0x10
,
0x85
,
0x95
,
0x52
,
0x5a
,
0xd5
,
0x6d
,
0x19
,
0x2c
,
0x24
,
0x42
,
0x16
,
0x22
,
0xa6
,
0x0e
,
0xc8
,
0x91
,
0x80
,
0x1d
,
0x81
,
0xba
,
0xb0
,
0x06
,
0x26
,
0x16
,
0xe4
,
0xe2
,
0x73
,
0xb1
,
0xe4
,
0xe6
,
0x2c
,
0xfb
,
0x3a
,
0xf0
,
0x2f
,
0xf8
,
0xc9
,
0xa8
,
0xb6
,
0x83
,
0xd2
,
0xa9
,
0xab
,
0xbf
,
0xf7
,
0x3e
,
0xbf
,
...
...
pkg/proto/hapi/release/release.pb.go
View file @
488ca6fd
...
...
@@ -106,7 +106,7 @@ func init() { proto.RegisterFile("hapi/release/release.proto", fileDescriptor2)
var
fileDescriptor2
=
[]
byte
{
// 256 bytes of a gzipped FileDescriptorProto
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x0
0
,
0x00
,
0x00
,
0x02
,
0xff
,
0x64
,
0x90
,
0xbf
,
0x4e
,
0xc3
,
0x40
,
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x0
9
,
0x6e
,
0x88
,
0x02
,
0xff
,
0x64
,
0x90
,
0xbf
,
0x4e
,
0xc3
,
0x40
,
0x0c
,
0xc6
,
0x95
,
0x36
,
0x7f
,
0x1a
,
0xc3
,
0x82
,
0x07
,
0xb0
,
0x22
,
0x86
,
0x88
,
0x01
,
0x22
,
0x86
,
0x54
,
0x82
,
0x37
,
0x80
,
0x05
,
0xd6
,
0x1b
,
0xd9
,
0x8e
,
0xe8
,
0x42
,
0x4e
,
0xa5
,
0xe7
,
0x28
,
0x17
,
0xf1
,
0x2c
,
0x3c
,
0x2e
,
0xba
,
0x3f
,
0x85
,
0x94
,
0x2e
,
0x4e
,
0xec
,
0xdf
,
0xa7
,
0xcf
,
0xdf
,
0x19
,
...
...
pkg/proto/hapi/release/status.pb.go
View file @
488ca6fd
...
...
@@ -106,7 +106,7 @@ func init() { proto.RegisterFile("hapi/release/status.proto", fileDescriptor3) }
var
fileDescriptor3
=
[]
byte
{
// 291 bytes of a gzipped FileDescriptorProto
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x0
0
,
0x00
,
0x00
,
0x02
,
0xff
,
0x54
,
0x90
,
0xdf
,
0x6a
,
0xc2
,
0x30
,
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x0
9
,
0x6e
,
0x88
,
0x02
,
0xff
,
0x54
,
0x90
,
0xdf
,
0x6a
,
0xc2
,
0x30
,
0x14
,
0xc6
,
0x57
,
0xad
,
0x3a
,
0x8f
,
0x22
,
0x21
,
0x1b
,
0xac
,
0xca
,
0x06
,
0xc5
,
0xab
,
0xde
,
0xac
,
0x05
,
0xf7
,
0x04
,
0xdb
,
0x12
,
0x87
,
0xac
,
0x54
,
0x69
,
0x2b
,
0xfb
,
0x73
,
0x53
,
0xaa
,
0x9e
,
0x39
,
0xa1
,
0x34
,
0xd2
,
0x24
,
0x17
,
0x7b
,
0x88
,
0xbd
,
0xf3
,
0x68
,
0x2b
,
0x74
,
0x5e
,
0x7e
,
0xf9
,
0xfd
,
...
...
pkg/proto/hapi/release/test_run.pb.go
View file @
488ca6fd
...
...
@@ -20,17 +20,20 @@ const (
TestRun_UNKNOWN
TestRun_Status
=
0
TestRun_SUCCESS
TestRun_Status
=
1
TestRun_FAILURE
TestRun_Status
=
2
TestRun_RUNNING
TestRun_Status
=
3
)
var
TestRun_Status_name
=
map
[
int32
]
string
{
0
:
"UNKNOWN"
,
1
:
"SUCCESS"
,
2
:
"FAILURE"
,
3
:
"RUNNING"
,
}
var
TestRun_Status_value
=
map
[
string
]
int32
{
"UNKNOWN"
:
0
,
"SUCCESS"
:
1
,
"FAILURE"
:
2
,
"RUNNING"
:
3
,
}
func
(
x
TestRun_Status
)
String
()
string
{
...
...
@@ -94,22 +97,23 @@ func init() {
func
init
()
{
proto
.
RegisterFile
(
"hapi/release/test_run.proto"
,
fileDescriptor4
)
}
var
fileDescriptor4
=
[]
byte
{
// 265 bytes of a gzipped FileDescriptorProto
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x02
,
0xff
,
0x84
,
0x8f
,
0x41
,
0x4b
,
0xfb
,
0x40
,
0x14
,
0xc4
,
0xff
,
0xc9
,
0xbf
,
0x26
,
0x64
,
0x53
,
0x24
,
0xec
,
0x29
,
0x54
,
0xc1
,
0xd0
,
0x53
,
0x4e
,
0xbb
,
0x50
,
0xbd
,
0x78
,
0xf0
,
0x10
,
0x4b
,
0x05
,
0x51
,
0x22
,
0x6c
,
0x1a
,
0x04
,
0x2f
,
0x65
,
0xab
,
0xaf
,
0x35
,
0x90
,
0x64
,
0x43
,
0xf6
,
0xe5
,
0x8b
,
0xf8
,
0x89
,
0x65
,
0x93
,
0xad
,
0x78
,
0xf3
,
0xf6
,
0x86
,
0xf9
,
0xcd
,
0x30
,
0x8f
,
0x5c
,
0x7c
,
0xca
,
0xae
,
0xe2
,
0x3d
,
0xd4
,
0x20
,
0x35
,
0x70
,
0x04
,
0x8d
,
0xbb
,
0x7e
,
0x68
,
0x59
,
0xd7
,
0x2b
,
0x54
,
0x74
,
0x6e
,
0x4c
,
0x66
,
0xcd
,
0xc5
,
0xd5
,
0x51
,
0xa9
,
0x63
,
0x0d
,
0x7c
,
0xf4
,
0xf6
,
0xc3
,
0x81
,
0x63
,
0xd5
,
0x80
,
0x46
,
0xd9
,
0x74
,
0x13
,
0xbe
,
0xfc
,
0x72
,
0x89
,
0xbf
,
0x05
,
0x8d
,
0x62
,
0x68
,
0x29
,
0x25
,
0xb3
,
0x56
,
0x36
,
0x10
,
0x3b
,
0x89
,
0x93
,
0x06
,
0x62
,
0xbc
,
0xe9
,
0x0d
,
0xf1
,
0x34
,
0x4a
,
0x1c
,
0x74
,
0xec
,
0x26
,
0x4e
,
0x7a
,
0xbe
,
0xba
,
0x64
,
0xbf
,
0xfb
,
0x99
,
0x8d
,
0xb2
,
0x62
,
0x64
,
0x84
,
0x65
,
0x4d
,
0x53
,
0xd5
,
0x1e
,
0x54
,
0xfc
,
0x7f
,
0x6a
,
0x32
,
0x37
,
0xbd
,
0x25
,
0x44
,
0xa3
,
0xec
,
0x11
,
0x3e
,
0x76
,
0x12
,
0xe3
,
0x59
,
0xe2
,
0xa4
,
0xe1
,
0x6a
,
0xc1
,
0xa6
,
0x7d
,
0xec
,
0xb4
,
0x8f
,
0x6d
,
0x4f
,
0xfb
,
0x44
,
0x60
,
0xe9
,
0x0c
,
0xe9
,
0x1d
,
0x99
,
0xbf
,
0xab
,
0xa6
,
0xab
,
0xc1
,
0x86
,
0xcf
,
0xfe
,
0x0c
,
0x87
,
0x3f
,
0x7c
,
0x86
,
0x4b
,
0x4e
,
0xbc
,
0x69
,
0x1f
,
0x0d
,
0x89
,
0x5f
,
0xe6
,
0x4f
,
0xf9
,
0xcb
,
0x6b
,
0x1e
,
0xfd
,
0x33
,
0xa2
,
0x28
,
0xd7
,
0xeb
,
0x4d
,
0x51
,
0x44
,
0x8e
,
0x11
,
0x0f
,
0xd9
,
0xe3
,
0x73
,
0x29
,
0x36
,
0x91
,
0x7b
,
0x1f
,
0xbc
,
0xf9
,
0xf6
,
0xc1
,
0xbd
,
0x37
,
0x96
,
0x5f
,
0x7f
,
0x07
,
0x00
,
0x00
,
0xff
,
0xff
,
0x8d
,
0xb9
,
0xce
,
0x57
,
0x74
,
0x01
,
0x00
,
0x00
,
// 274 bytes of a gzipped FileDescriptorProto
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x09
,
0x6e
,
0x88
,
0x02
,
0xff
,
0x84
,
0x8f
,
0xc1
,
0x4b
,
0xfb
,
0x30
,
0x1c
,
0xc5
,
0x7f
,
0xe9
,
0xf6
,
0x6b
,
0x69
,
0x3a
,
0xa4
,
0xe4
,
0x54
,
0xa6
,
0x60
,
0xd9
,
0xa9
,
0xa7
,
0x14
,
0xa6
,
0x17
,
0x41
,
0x0f
,
0x75
,
0x4c
,
0x19
,
0x4a
,
0x84
,
0x74
,
0x45
,
0xf0
,
0x32
,
0x32
,
0xcd
,
0x66
,
0xa1
,
0x6d
,
0x4a
,
0xf3
,
0xed
,
0xdf
,
0xe3
,
0xbf
,
0x2a
,
0x69
,
0x33
,
0xf1
,
0xe6
,
0xed
,
0xfb
,
0x78
,
0x9f
,
0xf7
,
0xf2
,
0x82
,
0xcf
,
0x3f
,
0x45
,
0x5b
,
0xa6
,
0x9d
,
0xac
,
0xa4
,
0xd0
,
0x32
,
0x05
,
0xa9
,
0x61
,
0xd7
,
0xf5
,
0x0d
,
0x6d
,
0x3b
,
0x05
,
0x8a
,
0xcc
,
0x8c
,
0x49
,
0xad
,
0x39
,
0xbf
,
0x3c
,
0x2a
,
0x75
,
0xac
,
0x64
,
0x3a
,
0x78
,
0xfb
,
0xfe
,
0x90
,
0x42
,
0x59
,
0x4b
,
0x0d
,
0xa2
,
0x6e
,
0x47
,
0x7c
,
0xf1
,
0xe5
,
0x60
,
0x6f
,
0x2b
,
0x35
,
0xf0
,
0xbe
,
0x21
,
0x04
,
0x4f
,
0x1b
,
0x51
,
0xcb
,
0x08
,
0xc5
,
0x28
,
0xf1
,
0xf9
,
0x70
,
0x93
,
0x6b
,
0xec
,
0x6a
,
0x10
,
0xd0
,
0xeb
,
0xc8
,
0x89
,
0x51
,
0x72
,
0xb6
,
0xbc
,
0xa0
,
0xbf
,
0xfb
,
0xa9
,
0x8d
,
0xd2
,
0x7c
,
0x60
,
0xb8
,
0x65
,
0x4d
,
0x53
,
0xd9
,
0x1c
,
0x54
,
0x34
,
0x19
,
0x9b
,
0xcc
,
0x4d
,
0x6e
,
0x30
,
0xd6
,
0x20
,
0x3a
,
0x90
,
0x1f
,
0x3b
,
0x01
,
0xd1
,
0x34
,
0x46
,
0x49
,
0xb0
,
0x9c
,
0xd3
,
0x71
,
0x1f
,
0x3d
,
0xed
,
0xa3
,
0xdb
,
0xd3
,
0x3e
,
0xee
,
0x5b
,
0x3a
,
0x03
,
0x72
,
0x87
,
0x67
,
0xef
,
0xaa
,
0x6e
,
0x2b
,
0x69
,
0xc3
,
0xff
,
0xff
,
0x0c
,
0x07
,
0x3f
,
0x7c
,
0x06
,
0x8b
,
0x5b
,
0xec
,
0x8e
,
0xfb
,
0x48
,
0x80
,
0xbd
,
0x82
,
0x3d
,
0xb1
,
0x97
,
0x57
,
0x16
,
0xfe
,
0x33
,
0x22
,
0x2f
,
0x56
,
0xab
,
0x75
,
0x9e
,
0x87
,
0xc8
,
0x88
,
0x87
,
0x6c
,
0xf3
,
0x5c
,
0xf0
,
0x75
,
0xe8
,
0x18
,
0xc1
,
0x0b
,
0xc6
,
0x36
,
0xec
,
0x31
,
0x9c
,
0xdc
,
0xfb
,
0x6f
,
0x9e
,
0xfd
,
0xed
,
0xde
,
0x1d
,
0x5e
,
0xba
,
0xfa
,
0x0e
,
0x00
,
0x00
,
0xff
,
0xff
,
0x31
,
0x86
,
0x46
,
0xdb
,
0x81
,
0x01
,
0x00
,
0x00
,
}
pkg/proto/hapi/release/test_suite.pb.go
View file @
488ca6fd
...
...
@@ -58,7 +58,7 @@ func init() { proto.RegisterFile("hapi/release/test_suite.proto", fileDescriptor
var
fileDescriptor5
=
[]
byte
{
// 207 bytes of a gzipped FileDescriptorProto
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x0
0
,
0x00
,
0x00
,
0x02
,
0xff
,
0x84
,
0x8f
,
0xc1
,
0x4a
,
0x86
,
0x40
,
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x0
9
,
0x6e
,
0x88
,
0x02
,
0xff
,
0x84
,
0x8f
,
0xc1
,
0x4a
,
0x86
,
0x40
,
0x14
,
0x85
,
0x31
,
0x21
,
0x71
,
0x74
,
0x35
,
0x10
,
0x88
,
0x11
,
0x49
,
0x2b
,
0x57
,
0x33
,
0x60
,
0xab
,
0x16
,
0x2d
,
0xec
,
0x11
,
0xcc
,
0x55
,
0x1b
,
0x19
,
0xeb
,
0x66
,
0xc2
,
0xe8
,
0x0c
,
0x73
,
0xef
,
0xbc
,
0x5a
,
0xcf
,
0x17
,
0xea
,
0x18
,
0x41
,
0x8b
,
0x7f
,
0xfd
,
0x7d
,
0xe7
,
0x9c
,
0x7b
,
0xd9
,
0xdd
,
0x97
,
...
...
pkg/proto/hapi/services/tiller.pb.go
View file @
488ca6fd
This diff is collapsed.
Click to expand it.
pkg/proto/hapi/version/version.pb.go
View file @
488ca6fd
...
...
@@ -69,7 +69,7 @@ func init() { proto.RegisterFile("hapi/version/version.proto", fileDescriptor0)
var
fileDescriptor0
=
[]
byte
{
// 151 bytes of a gzipped FileDescriptorProto
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x0
0
,
0x00
,
0x00
,
0x02
,
0xff
,
0xe2
,
0x92
,
0xca
,
0x48
,
0x2c
,
0xc8
,
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x0
9
,
0x6e
,
0x88
,
0x02
,
0xff
,
0xe2
,
0x92
,
0xca
,
0x48
,
0x2c
,
0xc8
,
0xd4
,
0x2f
,
0x4b
,
0x2d
,
0x2a
,
0xce
,
0xcc
,
0xcf
,
0x83
,
0xd1
,
0x7a
,
0x05
,
0x45
,
0xf9
,
0x25
,
0xf9
,
0x42
,
0x3c
,
0x20
,
0x39
,
0x3d
,
0xa8
,
0x98
,
0x52
,
0x3a
,
0x17
,
0x7b
,
0x18
,
0x84
,
0x29
,
0x24
,
0xce
,
0xc5
,
0x5e
,
0x9c
,
0x9a
,
0x1b
,
0x5f
,
0x96
,
0x5a
,
0x24
,
0xc1
,
0xa8
,
0xc0
,
0xa8
,
0xc1
,
0x19
,
0xc4
,
...
...
pkg/releasetesting/environment.go
View file @
488ca6fd
...
...
@@ -83,31 +83,31 @@ func (env *Environment) streamResult(r *release.TestRun) error {
func
(
env
*
Environment
)
streamRunning
(
name
string
)
error
{
msg
:=
"RUNNING: "
+
name
return
env
.
streamMessage
(
msg
)
return
env
.
streamMessage
(
msg
,
release
.
TestRun_RUNNING
)
}
func
(
env
*
Environment
)
streamError
(
info
string
)
error
{
msg
:=
"ERROR: "
+
info
return
env
.
streamMessage
(
msg
)
return
env
.
streamMessage
(
msg
,
release
.
TestRun_FAILURE
)
}
func
(
env
*
Environment
)
streamFailed
(
name
string
)
error
{
msg
:=
fmt
.
Sprintf
(
"FAILED: %s, run `kubectl logs %s --namespace %s` for more info"
,
name
,
name
,
env
.
Namespace
)
return
env
.
streamMessage
(
msg
)
return
env
.
streamMessage
(
msg
,
release
.
TestRun_FAILURE
)
}
func
(
env
*
Environment
)
streamSuccess
(
name
string
)
error
{
msg
:=
fmt
.
Sprintf
(
"PASSED: %s"
,
name
)
return
env
.
streamMessage
(
msg
)
return
env
.
streamMessage
(
msg
,
release
.
TestRun_SUCCESS
)
}
func
(
env
*
Environment
)
streamUnknown
(
name
,
info
string
)
error
{
msg
:=
fmt
.
Sprintf
(
"UNKNOWN: %s: %s"
,
name
,
info
)
return
env
.
streamMessage
(
msg
)
return
env
.
streamMessage
(
msg
,
release
.
TestRun_UNKNOWN
)
}
func
(
env
*
Environment
)
streamMessage
(
msg
string
)
error
{
resp
:=
&
services
.
TestReleaseResponse
{
Msg
:
msg
}
func
(
env
*
Environment
)
streamMessage
(
msg
string
,
status
release
.
TestRun_Status
)
error
{
resp
:=
&
services
.
TestReleaseResponse
{
Msg
:
msg
,
Status
:
status
}
return
env
.
Stream
.
Send
(
resp
)
}
...
...
pkg/releasetesting/environment_test.go
View file @
488ca6fd
...
...
@@ -24,6 +24,7 @@ import (
"testing"
"k8s.io/helm/pkg/proto/hapi/release"
"k8s.io/helm/pkg/proto/hapi/services"
tillerEnv
"k8s.io/helm/pkg/tiller/environment"
)
...
...
@@ -88,6 +89,29 @@ func TestDeleteTestPodsFailingDelete(t *testing.T) {
}
}
func
TestStreamMessage
(
t
*
testing
.
T
)
{
mockTestEnv
:=
newMockTestingEnvironment
()
expectedMessage
:=
"testing streamMessage"
expectedStatus
:=
release
.
TestRun_SUCCESS
err
:=
mockTestEnv
.
streamMessage
(
expectedMessage
,
expectedStatus
)
if
err
!=
nil
{
t
.
Errorf
(
"Expected no errors, got 1: %s"
,
err
)
}
stream
:=
mockTestEnv
.
Stream
.
(
*
mockStream
)
if
len
(
stream
.
messages
)
!=
1
{
t
.
Errorf
(
"Expected 1 message, got: %v"
,
len
(
stream
.
messages
))
}
if
stream
.
messages
[
0
]
.
Msg
!=
expectedMessage
{
t
.
Errorf
(
"Expected message: %s, got: %s"
,
expectedMessage
,
stream
.
messages
[
0
])
}
if
stream
.
messages
[
0
]
.
Status
!=
expectedStatus
{
t
.
Errorf
(
"Expected status: %v, got: %v"
,
expectedStatus
,
stream
.
messages
[
0
]
.
Status
)
}
}
type
MockTestingEnvironment
struct
{
*
Environment
}
...
...
@@ -110,7 +134,10 @@ func (mte MockTestingEnvironment) streamError(info string) error { retur
func
(
mte
MockTestingEnvironment
)
streamFailed
(
name
string
)
error
{
return
nil
}
func
(
mte
MockTestingEnvironment
)
streamSuccess
(
name
string
)
error
{
return
nil
}
func
(
mte
MockTestingEnvironment
)
streamUnknown
(
name
,
info
string
)
error
{
return
nil
}
func
(
mte
MockTestingEnvironment
)
streamMessage
(
msg
string
)
error
{
return
nil
}
func
(
mte
MockTestingEnvironment
)
streamMessage
(
msg
string
,
status
release
.
TestRun_Status
)
error
{
mte
.
Stream
.
Send
(
&
services
.
TestReleaseResponse
{
Msg
:
msg
,
Status
:
status
})
return
nil
}
type
getFailingKubeClient
struct
{
tillerEnv
.
PrintingKubeClient
...
...
pkg/releasetesting/test_suite.go
View file @
488ca6fd
...
...
@@ -65,7 +65,8 @@ func (ts *TestSuite) Run(env *Environment) error {
ts
.
StartedAt
=
timeconv
.
Now
()
if
len
(
ts
.
TestManifests
)
==
0
{
env
.
streamMessage
(
"No Tests Found"
)
// TODO: make this better, adding test run status on test suite is weird
env
.
streamMessage
(
"No Tests Found"
,
release
.
TestRun_UNKNOWN
)
}
for
_
,
testManifest
:=
range
ts
.
TestManifests
{
...
...
@@ -78,6 +79,7 @@ func (ts *TestSuite) Run(env *Environment) error {
if
err
:=
env
.
streamRunning
(
test
.
result
.
Name
);
err
!=
nil
{
return
err
}
test
.
result
.
Status
=
release
.
TestRun_RUNNING
resourceCreated
:=
true
if
err
:=
env
.
createTestPod
(
test
);
err
!=
nil
{
...
...
@@ -93,7 +95,7 @@ func (ts *TestSuite) Run(env *Environment) error {
status
,
err
=
env
.
getTestPodStatus
(
test
)
if
err
!=
nil
{
resourceCleanExit
=
false
if
streamErr
:=
env
.
stream
Unknown
(
test
.
result
.
Name
,
test
.
result
.
Info
);
streamErr
!=
nil
{
if
streamErr
:=
env
.
stream
Error
(
test
.
result
.
Info
);
streamErr
!=
nil
{
return
streamErr
}
}
...
...
pkg/tiller/release_server.go
View file @
488ca6fd
...
...
@@ -1141,5 +1141,9 @@ func (s *ReleaseServer) RunReleaseTest(req *services.TestReleaseRequest, stream
testEnv
.
DeleteTestPods
(
tSuite
.
TestManifests
)
}
return
s
.
env
.
Releases
.
Update
(
rel
)
if
err
:=
s
.
env
.
Releases
.
Update
(
rel
);
err
!=
nil
{
log
.
Printf
(
"test: Failed to store updated release: %s"
,
err
)
}
return
nil
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment