Skip to content

Commit e46cfe2

Browse files
authored
Merge pull request kubernetes#91974 from weijiehu/azure_controller_standard
Improves unit test code coverage for azure_controller_standard
2 parents 7f61ab8 + c6e6a97 commit e46cfe2

File tree

1 file changed

+68
-12
lines changed

1 file changed

+68
-12
lines changed

staging/src/k8s.io/legacy-cloud-providers/azure/azure_controller_standard_test.go

Lines changed: 68 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -44,19 +44,36 @@ func TestStandardAttachDisk(t *testing.T) {
4444
defer ctrl.Finish()
4545

4646
testCases := []struct {
47-
desc string
48-
nodeName types.NodeName
49-
expectedErr bool
47+
desc string
48+
nodeName types.NodeName
49+
isManagedDisk bool
50+
isAttachFail bool
51+
expectedErr bool
5052
}{
5153
{
52-
desc: "an error shall be returned if there's no corresponding vms",
53-
nodeName: "vm2",
54-
expectedErr: true,
54+
desc: "an error shall be returned if there's no corresponding vms",
55+
nodeName: "vm2",
56+
isManagedDisk: true,
57+
expectedErr: true,
5558
},
5659
{
57-
desc: "no error shall be returned if everything's good",
58-
nodeName: "vm1",
59-
expectedErr: false,
60+
desc: "no error shall be returned if everything's good",
61+
nodeName: "vm1",
62+
isManagedDisk: true,
63+
expectedErr: false,
64+
},
65+
{
66+
desc: "no error shall be returned if everything's good with non managed disk",
67+
nodeName: "vm1",
68+
isManagedDisk: false,
69+
expectedErr: false,
70+
},
71+
{
72+
desc: "an error shall be returned if update attach disk failed",
73+
nodeName: "vm1",
74+
isManagedDisk: true,
75+
isAttachFail: true,
76+
expectedErr: true,
6077
},
6178
}
6279

@@ -66,12 +83,28 @@ func TestStandardAttachDisk(t *testing.T) {
6683
expectedVMs := setTestVirtualMachines(testCloud, map[string]string{"vm1": "PowerState/Running"}, false)
6784
mockVMsClient := testCloud.VirtualMachinesClient.(*mockvmclient.MockInterface)
6885
for _, vm := range expectedVMs {
86+
vm.StorageProfile = &compute.StorageProfile{
87+
OsDisk: &compute.OSDisk{
88+
Name: to.StringPtr("osdisk1"),
89+
ManagedDisk: &compute.ManagedDiskParameters{
90+
ID: to.StringPtr("ManagedID"),
91+
DiskEncryptionSet: &compute.DiskEncryptionSetParameters{
92+
ID: to.StringPtr("DiskEncryptionSetID"),
93+
},
94+
},
95+
},
96+
DataDisks: &[]compute.DataDisk{},
97+
}
6998
mockVMsClient.EXPECT().Get(gomock.Any(), testCloud.ResourceGroup, *vm.Name, gomock.Any()).Return(vm, nil).AnyTimes()
7099
}
71100
mockVMsClient.EXPECT().Get(gomock.Any(), testCloud.ResourceGroup, "vm2", gomock.Any()).Return(compute.VirtualMachine{}, &retry.Error{HTTPStatusCode: http.StatusNotFound, RawError: cloudprovider.InstanceNotFound}).AnyTimes()
72-
mockVMsClient.EXPECT().Update(gomock.Any(), testCloud.ResourceGroup, gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).AnyTimes()
101+
if test.isAttachFail {
102+
mockVMsClient.EXPECT().Update(gomock.Any(), testCloud.ResourceGroup, gomock.Any(), gomock.Any(), gomock.Any()).Return(&retry.Error{HTTPStatusCode: http.StatusNotFound, RawError: cloudprovider.InstanceNotFound}).AnyTimes()
103+
} else {
104+
mockVMsClient.EXPECT().Update(gomock.Any(), testCloud.ResourceGroup, gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).AnyTimes()
105+
}
73106

74-
err := vmSet.AttachDisk(true, "",
107+
err := vmSet.AttachDisk(test.isManagedDisk, "",
75108
"uri", test.nodeName, 0, compute.CachingTypesReadOnly, "", false)
76109
assert.Equal(t, test.expectedErr, err != nil, "TestCase[%d]: %s, err: %v", i, test.desc, err)
77110
}
@@ -85,6 +118,7 @@ func TestStandardDetachDisk(t *testing.T) {
85118
desc string
86119
nodeName types.NodeName
87120
diskName string
121+
isDetachFail bool
88122
expectedError bool
89123
}{
90124
{
@@ -104,6 +138,12 @@ func TestStandardDetachDisk(t *testing.T) {
104138
diskName: "disk1",
105139
expectedError: false,
106140
},
141+
{
142+
desc: "an error shall be returned if detach disk failed",
143+
nodeName: "vm1",
144+
isDetachFail: true,
145+
expectedError: true,
146+
},
107147
}
108148

109149
for i, test := range testCases {
@@ -115,7 +155,11 @@ func TestStandardDetachDisk(t *testing.T) {
115155
mockVMsClient.EXPECT().Get(gomock.Any(), testCloud.ResourceGroup, *vm.Name, gomock.Any()).Return(vm, nil).AnyTimes()
116156
}
117157
mockVMsClient.EXPECT().Get(gomock.Any(), testCloud.ResourceGroup, "vm2", gomock.Any()).Return(compute.VirtualMachine{}, &retry.Error{HTTPStatusCode: http.StatusNotFound, RawError: cloudprovider.InstanceNotFound}).AnyTimes()
118-
mockVMsClient.EXPECT().Update(gomock.Any(), testCloud.ResourceGroup, gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).AnyTimes()
158+
if test.isDetachFail {
159+
mockVMsClient.EXPECT().Update(gomock.Any(), testCloud.ResourceGroup, gomock.Any(), gomock.Any(), gomock.Any()).Return(&retry.Error{HTTPStatusCode: http.StatusNotFound, RawError: cloudprovider.InstanceNotFound}).AnyTimes()
160+
} else {
161+
mockVMsClient.EXPECT().Update(gomock.Any(), testCloud.ResourceGroup, gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).AnyTimes()
162+
}
119163

120164
err := vmSet.DetachDisk(test.diskName, "", test.nodeName)
121165
assert.Equal(t, test.expectedError, err != nil, "TestCase[%d]: %s", i, test.desc)
@@ -129,6 +173,7 @@ func TestGetDataDisks(t *testing.T) {
129173
var testCases = []struct {
130174
desc string
131175
nodeName types.NodeName
176+
isDataDiskNull bool
132177
expectedDataDisks []compute.DataDisk
133178
expectedError bool
134179
crt azcache.AzureCacheReadType
@@ -164,13 +209,24 @@ func TestGetDataDisks(t *testing.T) {
164209
expectedError: false,
165210
crt: azcache.CacheReadTypeUnsafe,
166211
},
212+
{
213+
desc: "nil shall be returned if DataDisk is null",
214+
nodeName: "vm1",
215+
isDataDiskNull: true,
216+
expectedDataDisks: nil,
217+
expectedError: false,
218+
crt: azcache.CacheReadTypeDefault,
219+
},
167220
}
168221
for i, test := range testCases {
169222
testCloud := GetTestCloud(ctrl)
170223
vmSet := testCloud.vmSet
171224
expectedVMs := setTestVirtualMachines(testCloud, map[string]string{"vm1": "PowerState/Running"}, false)
172225
mockVMsClient := testCloud.VirtualMachinesClient.(*mockvmclient.MockInterface)
173226
for _, vm := range expectedVMs {
227+
if test.isDataDiskNull {
228+
vm.StorageProfile = &compute.StorageProfile{}
229+
}
174230
mockVMsClient.EXPECT().Get(gomock.Any(), testCloud.ResourceGroup, *vm.Name, gomock.Any()).Return(vm, nil).AnyTimes()
175231
}
176232
mockVMsClient.EXPECT().Get(gomock.Any(), testCloud.ResourceGroup, gomock.Not("vm1"), gomock.Any()).Return(compute.VirtualMachine{}, &retry.Error{HTTPStatusCode: http.StatusNotFound, RawError: cloudprovider.InstanceNotFound}).AnyTimes()

0 commit comments

Comments
 (0)