@@ -57,10 +57,16 @@ type fakeIOHandler struct{}
57
57
func (handler * fakeIOHandler ) ReadDir (dirname string ) ([]os.FileInfo , error ) {
58
58
switch dirname {
59
59
case "/dev/disk/by-path/" :
60
- f := & fakeFileInfo {
60
+ f1 := & fakeFileInfo {
61
61
name : "pci-0000:41:00.0-fc-0x500a0981891b8dc5-lun-0" ,
62
62
}
63
- return []os.FileInfo {f }, nil
63
+ f2 := & fakeFileInfo {
64
+ name : "fc-0x5005076810213b32-lun-2" ,
65
+ }
66
+ f3 := & fakeFileInfo {
67
+ name : "abc-0000:41:00.0-fc-0x5005076810213404-lun-0" ,
68
+ }
69
+ return []os.FileInfo {f1 , f2 , f3 }, nil
64
70
case "/sys/block/" :
65
71
f := & fakeFileInfo {
66
72
name : "dm-1" ,
@@ -88,18 +94,58 @@ func (handler *fakeIOHandler) WriteFile(filename string, data []byte, perm os.Fi
88
94
}
89
95
90
96
func TestSearchDisk (t * testing.T ) {
91
- fakeMounter := fcDiskMounter {
92
- fcDisk : & fcDisk {
97
+ tests := []struct {
98
+ name string
99
+ wwns []string
100
+ lun string
101
+ expectError bool
102
+ }{
103
+ {
104
+ name : "PCI disk" ,
93
105
wwns : []string {"500a0981891b8dc5" },
94
106
lun : "0" ,
95
- io : & fakeIOHandler {},
96
107
},
97
- deviceUtil : util .NewDeviceHandler (util .NewIOHandler ()),
108
+ {
109
+ name : "Non PCI disk" ,
110
+ wwns : []string {"5005076810213b32" },
111
+ lun : "2" ,
112
+ },
113
+ {
114
+ name : "Invalid Storage Controller" ,
115
+ wwns : []string {"5005076810213404" },
116
+ lun : "0" ,
117
+ expectError : true ,
118
+ },
119
+ {
120
+ name : "Non existing disk" ,
121
+ wwns : []string {"500507681fffffff" },
122
+ lun : "0" ,
123
+ expectError : true ,
124
+ },
98
125
}
99
- devicePath , error := searchDisk (fakeMounter )
100
- // if no disk matches input wwn and lun, exit
101
- if devicePath == "" || error != nil {
102
- t .Errorf ("no fc disk found" )
126
+
127
+ for _ , test := range tests {
128
+ t .Run (test .name , func (t * testing.T ) {
129
+ fakeMounter := fcDiskMounter {
130
+ fcDisk : & fcDisk {
131
+ wwns : test .wwns ,
132
+ lun : test .lun ,
133
+ io : & fakeIOHandler {},
134
+ },
135
+ deviceUtil : util .NewDeviceHandler (util .NewIOHandler ()),
136
+ }
137
+ devicePath , err := searchDisk (fakeMounter )
138
+ if test .expectError && err == nil {
139
+ t .Errorf ("expected error but got none" )
140
+ }
141
+ if ! test .expectError && err != nil {
142
+ t .Errorf ("got unexpected error: %s" , err )
143
+ }
144
+ // if no disk matches input wwn and lun, exit
145
+ if devicePath == "" && ! test .expectError {
146
+ t .Errorf ("no fc disk found" )
147
+ }
148
+ })
103
149
}
104
150
}
105
151
0 commit comments