@@ -7,110 +7,117 @@ SPDX-License-Identifier: Apache-2.0
7
7
package container_test
8
8
9
9
import (
10
- "fmt"
11
-
12
10
"github.com/hyperledger/fabric/core/container"
13
11
"github.com/hyperledger/fabric/core/container/ccintf"
14
12
"github.com/hyperledger/fabric/core/container/mock"
13
+ "github.com/pkg/errors"
15
14
"golang.org/x/net/context"
16
15
17
16
. "github.com/onsi/ginkgo"
18
17
. "github.com/onsi/gomega"
19
18
)
20
19
21
20
var _ = Describe ("Container" , func () {
22
- Describe ("StartContainerReq " , func () {
21
+ Describe ("VMCReqs " , func () {
23
22
var (
24
- ctxt = context .Background ()
25
- startReq * container.StartContainerReq
26
- fakeVM * mock.VM
23
+ fakeVM * mock.VM
24
+ ctxt context.Context
27
25
)
28
26
29
27
BeforeEach (func () {
30
- startReq = & container.StartContainerReq {
31
- CCID : ccintf.CCID {Name : "start-name" },
32
- Args : []string {"foo" , "bar" },
33
- Env : []string {"Bar" , "Foo" },
34
- FilesToUpload : map [string ][]byte {
35
- "Foo" : []byte ("bar" ),
36
- },
37
- Builder : & mock.Builder {},
38
- }
28
+ ctxt = context .Background ()
39
29
fakeVM = & mock.VM {}
40
30
})
41
31
42
- Describe ("Do" , func () {
43
- It ("Returns a response with no error when things go fine" , func () {
44
- fakeVM .StartReturns (nil )
45
- err := startReq .Do (ctxt , fakeVM )
46
- Expect (err ).NotTo (HaveOccurred ())
47
- Expect (fakeVM .StartCallCount ()).To (Equal (1 ))
48
- rctxt , ccid , args , env , filesToUpload , builder := fakeVM .StartArgsForCall (0 )
49
- Expect (rctxt ).To (Equal (ctxt ))
50
- Expect (ccid ).To (Equal (startReq .CCID ))
51
- Expect (args ).To (Equal (startReq .Args ))
52
- Expect (env ).To (Equal (startReq .Env ))
53
- Expect (filesToUpload ).To (Equal (startReq .FilesToUpload ))
54
- Expect (builder ).To (Equal (startReq .Builder ))
32
+ Describe ("StartContainerReq" , func () {
33
+ var (
34
+ startReq * container.StartContainerReq
35
+ )
36
+
37
+ BeforeEach (func () {
38
+ startReq = & container.StartContainerReq {
39
+ CCID : ccintf.CCID {Name : "start-name" },
40
+ Args : []string {"foo" , "bar" },
41
+ Env : []string {"Bar" , "Foo" },
42
+ FilesToUpload : map [string ][]byte {
43
+ "Foo" : []byte ("bar" ),
44
+ },
45
+ Builder : & mock.Builder {},
46
+ }
55
47
})
56
48
57
- It ("Returns an error when the vm does" , func () {
58
- err := fmt .Errorf ("Boo" )
59
- fakeVM .StartReturns (err )
60
- rerr := startReq .Do (ctxt , fakeVM )
61
- Expect (rerr ).To (Equal (err ))
49
+ Describe ("Do" , func () {
50
+ It ("starts a vm" , func () {
51
+ err := startReq .Do (ctxt , fakeVM )
52
+ Expect (err ).NotTo (HaveOccurred ())
53
+ Expect (fakeVM .StartCallCount ()).To (Equal (1 ))
54
+ rctxt , ccid , args , env , filesToUpload , builder := fakeVM .StartArgsForCall (0 )
55
+ Expect (rctxt ).To (Equal (ctxt ))
56
+ Expect (ccid ).To (Equal (ccintf.CCID {Name : "start-name" }))
57
+ Expect (args ).To (Equal ([]string {"foo" , "bar" }))
58
+ Expect (env ).To (Equal ([]string {"Bar" , "Foo" }))
59
+ Expect (filesToUpload ).To (Equal (map [string ][]byte {
60
+ "Foo" : []byte ("bar" ),
61
+ }))
62
+ Expect (builder ).To (Equal (& mock.Builder {}))
63
+ })
64
+
65
+ Context ("when the vm provider fails" , func () {
66
+ It ("returns the error" , func () {
67
+ fakeVM .StartReturns (errors .New ("Boo" ))
68
+ err := startReq .Do (ctxt , fakeVM )
69
+ Expect (err ).To (MatchError ("Boo" ))
70
+ })
71
+ })
62
72
})
63
- })
64
73
65
- Describe ("GetCCID" , func () {
66
- It ("Returns the CCID embedded in the structure" , func () {
67
- Expect (startReq .GetCCID ()).To (Equal (startReq .CCID ))
74
+ Describe ("GetCCID" , func () {
75
+ It ("Returns the CCID embedded in the structure" , func () {
76
+ Expect (startReq .GetCCID ()).To (Equal (ccintf.CCID {Name : "start-name" }))
77
+ })
68
78
})
69
79
})
70
- })
71
80
72
- Describe ("StopContainerReq" , func () {
73
- var (
74
- ctxt = context .Background ()
75
- stopReq * container.StopContainerReq
76
- fakeVM * mock.VM
77
- )
78
-
79
- BeforeEach (func () {
80
- stopReq = & container.StopContainerReq {
81
- CCID : ccintf.CCID {Name : "stop-name" },
82
- Timeout : 283 ,
83
- Dontkill : true ,
84
- Dontremove : false ,
85
- }
86
- fakeVM = & mock.VM {}
87
- })
88
-
89
- Describe ("Do" , func () {
90
- It ("Returns a response with no error when things go fine" , func () {
91
- fakeVM .StartReturns (nil )
92
- resp := stopReq .Do (ctxt , fakeVM )
93
- Expect (resp ).To (BeNil ())
94
- Expect (fakeVM .StopCallCount ()).To (Equal (1 ))
95
- rctxt , ccid , timeout , dontKill , dontRemove := fakeVM .StopArgsForCall (0 )
96
- Expect (rctxt ).To (Equal (ctxt ))
97
- Expect (ccid ).To (Equal (stopReq .CCID ))
98
- Expect (timeout ).To (Equal (stopReq .Timeout ))
99
- Expect (dontKill ).To (Equal (stopReq .Dontkill ))
100
- Expect (dontRemove ).To (Equal (stopReq .Dontremove ))
81
+ Describe ("StopContainerReq" , func () {
82
+ var (
83
+ stopReq * container.StopContainerReq
84
+ )
85
+
86
+ BeforeEach (func () {
87
+ stopReq = & container.StopContainerReq {
88
+ CCID : ccintf.CCID {Name : "stop-name" },
89
+ Timeout : 283 ,
90
+ Dontkill : true ,
91
+ Dontremove : false ,
92
+ }
101
93
})
102
94
103
- It ("Returns an error when the vm does" , func () {
104
- err := fmt .Errorf ("Boo" )
105
- fakeVM .StopReturns (err )
106
- rerr := stopReq .Do (ctxt , fakeVM )
107
- Expect (rerr ).To (Equal (err ))
95
+ Describe ("Do" , func () {
96
+ It ("stops the vm" , func () {
97
+ resp := stopReq .Do (ctxt , fakeVM )
98
+ Expect (resp ).To (BeNil ())
99
+ Expect (fakeVM .StopCallCount ()).To (Equal (1 ))
100
+ rctxt , ccid , timeout , dontKill , dontRemove := fakeVM .StopArgsForCall (0 )
101
+ Expect (rctxt ).To (Equal (ctxt ))
102
+ Expect (ccid ).To (Equal (ccintf.CCID {Name : "stop-name" }))
103
+ Expect (timeout ).To (Equal (uint (283 )))
104
+ Expect (dontKill ).To (Equal (true ))
105
+ Expect (dontRemove ).To (Equal (false ))
106
+ })
107
+
108
+ Context ("when the vm provider fails" , func () {
109
+ It ("returns the error" , func () {
110
+ fakeVM .StopReturns (errors .New ("Boo" ))
111
+ err := stopReq .Do (ctxt , fakeVM )
112
+ Expect (err ).To (MatchError ("Boo" ))
113
+ })
114
+ })
108
115
})
109
- })
110
116
111
- Describe ("GetCCID" , func () {
112
- It ("Returns the CCID embedded in the structure" , func () {
113
- Expect (stopReq .GetCCID ()).To (Equal (stopReq .CCID ))
117
+ Describe ("GetCCID" , func () {
118
+ It ("Returns the CCID embedded in the structure" , func () {
119
+ Expect (stopReq .GetCCID ()).To (Equal (ccintf.CCID {Name : "stop-name" }))
120
+ })
114
121
})
115
122
})
116
123
})
@@ -133,15 +140,18 @@ var _ = Describe("Container", func() {
133
140
})
134
141
135
142
Describe ("Process" , func () {
136
- It ("Panics if there is no underlying VM provider" , func () {
137
- Expect (func () { vmController .Process (ctxt , "Unknown-Type" , nil ) }).To (Panic ())
138
- Expect (vmProvider .NewVMCallCount ()).To (Equal (0 ))
139
- })
140
- It ("Returns no error if the underlying VM provider is successful" , func () {
143
+ It ("completes the request using the correct vm provider" , func () {
141
144
err := vmController .Process (ctxt , "FakeProvider" , vmcReq )
142
145
Expect (vmProvider .NewVMCallCount ()).To (Equal (1 ))
143
146
Expect (err ).NotTo (HaveOccurred ())
144
147
})
148
+
149
+ Context ("the request is for an unknown VM provider type" , func () {
150
+ It ("causes the system to halt as this is a serious bug" , func () {
151
+ Expect (func () { vmController .Process (ctxt , "Unknown-Type" , nil ) }).To (Panic ())
152
+ Expect (vmProvider .NewVMCallCount ()).To (Equal (0 ))
153
+ })
154
+ })
145
155
})
146
156
})
147
157
})
0 commit comments