@@ -28,10 +28,16 @@ import (
28
28
)
29
29
30
30
var _ = Describe ("AffinityGroup Unit Tests" , func () {
31
+ const (
32
+ errorMessage = "Fake Error"
33
+ )
34
+
35
+ fakeError := errors .New (errorMessage )
31
36
var ( // Declare shared vars.
32
37
mockCtrl * gomock.Controller
33
38
mockClient * cloudstack.CloudStackClient
34
39
ags * cloudstack.MockAffinityGroupServiceIface
40
+ vms * cloudstack.MockVirtualMachineServiceIface
35
41
client cloud.Client
36
42
)
37
43
@@ -40,6 +46,7 @@ var _ = Describe("AffinityGroup Unit Tests", func() {
40
46
mockCtrl = gomock .NewController (GinkgoT ())
41
47
mockClient = cloudstack .NewMockClient (mockCtrl )
42
48
ags = mockClient .AffinityGroup .(* cloudstack.MockAffinityGroupServiceIface )
49
+ vms = mockClient .VirtualMachine .(* cloudstack.MockVirtualMachineServiceIface )
43
50
client = cloud .NewClientFromCSAPIClient (mockClient )
44
51
dummies .SetDummyVars ()
45
52
})
@@ -48,20 +55,79 @@ var _ = Describe("AffinityGroup Unit Tests", func() {
48
55
mockCtrl .Finish ()
49
56
})
50
57
51
- It ("fetches an affinity group" , func () {
52
- dummies .AffinityGroup .ID = "" // Force name fetching.
53
- ags .EXPECT ().GetAffinityGroupByName (dummies .AffinityGroup .Name ).Return (& cloudstack.AffinityGroup {}, 1 , nil )
58
+ Context ("Fetch or Create Affinity group" , func () {
59
+ It ("fetches an affinity group by Name" , func () {
60
+ dummies .AffinityGroup .ID = "" // Force name fetching.
61
+ ags .EXPECT ().GetAffinityGroupByName (dummies .AffinityGroup .Name ).Return (& cloudstack.AffinityGroup {}, 1 , nil )
62
+
63
+ Ω (client .GetOrCreateAffinityGroup (dummies .AffinityGroup )).Should (Succeed ())
64
+ })
65
+
66
+ It ("fetches an affinity group by ID" , func () {
67
+ ags .EXPECT ().GetAffinityGroupByID (dummies .AffinityGroup .ID ).Return (& cloudstack.AffinityGroup {}, 1 , nil )
68
+
69
+ Ω (client .GetOrCreateAffinityGroup (dummies .AffinityGroup )).Should (Succeed ())
70
+ })
71
+
72
+ It ("creates an affinity group" , func () {
73
+ // dummies.SetDummyDomainAndAccount()
74
+ // dummies.SetDummyDomainID()
75
+ ags .EXPECT ().GetAffinityGroupByID (dummies .AffinityGroup .ID ).Return (nil , - 1 , fakeError )
76
+ ags .EXPECT ().NewCreateAffinityGroupParams (dummies .AffinityGroup .Name , dummies .AffinityGroup .Type ).
77
+ Return (& cloudstack.CreateAffinityGroupParams {})
78
+ ags .EXPECT ().CreateAffinityGroup (ParamMatch (And (NameEquals (dummies .AffinityGroup .Name )))).
79
+ Return (& cloudstack.CreateAffinityGroupResponse {}, nil )
80
+
81
+ Ω (client .GetOrCreateAffinityGroup (dummies .AffinityGroup )).Should (Succeed ())
82
+ })
83
+
84
+ It ("creates an affinity group if Name provided returns more than one affinity group" , func () {
85
+ dummies .AffinityGroup .ID = "" // Force name fetching.
86
+ agp := & cloudstack.CreateAffinityGroupParams {}
87
+ ags .EXPECT ().GetAffinityGroupByName (dummies .AffinityGroup .Name ).Return (& cloudstack.AffinityGroup {}, 2 , nil )
88
+ ags .EXPECT ().NewCreateAffinityGroupParams (gomock .Any (), gomock .Any ()).Return (agp )
89
+ ags .EXPECT ().CreateAffinityGroup (agp ).Return (& cloudstack.CreateAffinityGroupResponse {}, nil )
54
90
55
- Ω (client .GetOrCreateAffinityGroup (dummies .AffinityGroup )).Should (Succeed ())
91
+ Ω (client .GetOrCreateAffinityGroup (dummies .AffinityGroup )).Should (Succeed ())
92
+ })
93
+
94
+ It ("creates an affinity group if getting affinity group by name fails" , func () {
95
+ dummies .AffinityGroup .ID = "" // Force name fetching.
96
+ agp := & cloudstack.CreateAffinityGroupParams {}
97
+ ags .EXPECT ().GetAffinityGroupByName (dummies .AffinityGroup .Name ).Return (nil , - 1 , fakeError )
98
+ ags .EXPECT ().NewCreateAffinityGroupParams (gomock .Any (), gomock .Any ()).Return (agp )
99
+ ags .EXPECT ().CreateAffinityGroup (agp ).Return (& cloudstack.CreateAffinityGroupResponse {}, nil )
100
+
101
+ Ω (client .GetOrCreateAffinityGroup (dummies .AffinityGroup )).Should (Succeed ())
102
+ })
103
+
104
+ It ("creates an affinity group if ID provided returns more than one affinity group" , func () {
105
+ agp := & cloudstack.CreateAffinityGroupParams {}
106
+ ags .EXPECT ().GetAffinityGroupByID (dummies .AffinityGroup .ID ).Return (& cloudstack.AffinityGroup {}, 2 , nil )
107
+ ags .EXPECT ().NewCreateAffinityGroupParams (gomock .Any (), gomock .Any ()).Return (agp )
108
+ ags .EXPECT ().CreateAffinityGroup (agp ).Return (& cloudstack.CreateAffinityGroupResponse {}, nil )
109
+
110
+ Ω (client .GetOrCreateAffinityGroup (dummies .AffinityGroup )).Should (Succeed ())
111
+ })
112
+
113
+ It ("creates an affinity group if getting affinity group by ID fails" , func () {
114
+ agp := & cloudstack.CreateAffinityGroupParams {}
115
+ ags .EXPECT ().GetAffinityGroupByID (dummies .AffinityGroup .ID ).Return (nil , - 1 , fakeError )
116
+ ags .EXPECT ().NewCreateAffinityGroupParams (gomock .Any (), gomock .Any ()).Return (agp )
117
+ ags .EXPECT ().CreateAffinityGroup (agp ).Return (& cloudstack.CreateAffinityGroupResponse {}, nil )
118
+
119
+ Ω (client .GetOrCreateAffinityGroup (dummies .AffinityGroup )).Should (Succeed ())
120
+ })
56
121
})
57
- It ("creates an affinity group" , func () {
58
- ags .EXPECT ().GetAffinityGroupByID (dummies .AffinityGroup .ID ).Return (nil , - 1 , errors .New ("FakeError" ))
59
- ags .EXPECT ().NewCreateAffinityGroupParams (dummies .AffinityGroup .Name , dummies .AffinityGroup .Type ).
60
- Return (& cloudstack.CreateAffinityGroupParams {})
61
- ags .EXPECT ().CreateAffinityGroup (ParamMatch (And (NameEquals (dummies .AffinityGroup .Name )))).
62
- Return (& cloudstack.CreateAffinityGroupResponse {}, nil )
63
-
64
- Ω (client .GetOrCreateAffinityGroup (dummies .AffinityGroup )).Should (Succeed ())
122
+
123
+ Context ("Delete Affinity group in CloudStack" , func () {
124
+ It ("delete affinity group" , func () {
125
+ agp := & cloudstack.DeleteAffinityGroupParams {}
126
+ ags .EXPECT ().NewDeleteAffinityGroupParams ().Return (agp )
127
+ ags .EXPECT ().DeleteAffinityGroup (agp ).Return (& cloudstack.DeleteAffinityGroupResponse {}, nil )
128
+
129
+ Ω (client .DeleteAffinityGroup (dummies .AffinityGroup )).Should (Succeed ())
130
+ })
65
131
})
66
132
67
133
Context ("AffinityGroup Integ Tests" , Label ("integ" ), func () {
@@ -94,4 +160,30 @@ var _ = Describe("AffinityGroup Unit Tests", func() {
94
160
Ω (client .FetchAffinityGroup (dummies .AffinityGroup )).ShouldNot (Succeed ())
95
161
})
96
162
})
163
+
164
+ It ("Associate affinity group" , func () {
165
+ uagp := & cloudstack.UpdateVMAffinityGroupParams {}
166
+ vmp := & cloudstack.StartVirtualMachineParams {}
167
+ vms .EXPECT ().GetVirtualMachineByID (* dummies .CSMachine1 .Spec .InstanceID ).Return (& cloudstack.VirtualMachine {}, 1 , nil )
168
+ ags .EXPECT ().NewUpdateVMAffinityGroupParams (* dummies .CSMachine1 .Spec .InstanceID ).Return (uagp )
169
+ vms .EXPECT ().NewStopVirtualMachineParams (* dummies .CSMachine1 .Spec .InstanceID ).Return (& cloudstack.StopVirtualMachineParams {})
170
+ vms .EXPECT ().StopVirtualMachine (& cloudstack.StopVirtualMachineParams {}).Return (& cloudstack.StopVirtualMachineResponse {State : "Stopping" }, nil )
171
+ ags .EXPECT ().UpdateVMAffinityGroup (uagp ).Return (& cloudstack.UpdateVMAffinityGroupResponse {}, nil )
172
+ vms .EXPECT ().NewStartVirtualMachineParams (* dummies .CSMachine1 .Spec .InstanceID ).Return (vmp )
173
+ vms .EXPECT ().StartVirtualMachine (vmp ).Return (& cloudstack.StartVirtualMachineResponse {}, nil )
174
+ Ω (client .AssociateAffinityGroup (dummies .CSMachine1 , * dummies .AffinityGroup )).Should (Succeed ())
175
+ })
176
+
177
+ It ("Disassociate affinity group" , func () {
178
+ uagp := & cloudstack.UpdateVMAffinityGroupParams {}
179
+ vmp := & cloudstack.StartVirtualMachineParams {}
180
+ vms .EXPECT ().GetVirtualMachineByID (* dummies .CSMachine1 .Spec .InstanceID ).Return (& cloudstack.VirtualMachine {}, 1 , nil )
181
+ ags .EXPECT ().NewUpdateVMAffinityGroupParams (* dummies .CSMachine1 .Spec .InstanceID ).Return (uagp )
182
+ vms .EXPECT ().NewStopVirtualMachineParams (* dummies .CSMachine1 .Spec .InstanceID ).Return (& cloudstack.StopVirtualMachineParams {})
183
+ vms .EXPECT ().StopVirtualMachine (& cloudstack.StopVirtualMachineParams {}).Return (& cloudstack.StopVirtualMachineResponse {State : "Stopping" }, nil )
184
+ ags .EXPECT ().UpdateVMAffinityGroup (uagp ).Return (& cloudstack.UpdateVMAffinityGroupResponse {}, nil )
185
+ vms .EXPECT ().NewStartVirtualMachineParams (* dummies .CSMachine1 .Spec .InstanceID ).Return (vmp )
186
+ vms .EXPECT ().StartVirtualMachine (vmp ).Return (& cloudstack.StartVirtualMachineResponse {}, nil )
187
+ Ω (client .DisassociateAffinityGroup (dummies .CSMachine1 , * dummies .AffinityGroup )).Should (Succeed ())
188
+ })
97
189
})
0 commit comments