@@ -8,12 +8,7 @@ namespace VirtualClient.Contracts
8
8
using System . IO ;
9
9
using System . Linq ;
10
10
using System . Text ;
11
- using System . Threading . Tasks ;
12
- using AutoFixture ;
13
- using VirtualClient . Common ;
14
- using Microsoft . Extensions . Azure ;
15
11
using NUnit . Framework ;
16
- using VirtualClient . Contracts . Parser ;
17
12
18
13
[ TestFixture ]
19
14
[ Category ( "Unit" ) ]
@@ -111,6 +106,22 @@ public void DiskFiltersCanFilterOnBiggestDisksOnLinux()
111
106
Assert . IsTrue ( object . ReferenceEquals ( this . disks . ElementAt ( 2 ) , result . ElementAt ( 1 ) ) ) ;
112
107
}
113
108
109
+ [ Test ]
110
+ public void DiskFiltersCanFilterOnBiggestDisksOnLinuxForDisksWithoutVolumePartititions ( )
111
+ {
112
+ this . disks = this . mockFixture . CreateDisks ( PlatformID . Unix , false ) ;
113
+ this . disks . ElementAt ( 0 ) . Properties [ "size" ] = 3 * 1024 * 1024 ;
114
+ this . disks . ElementAt ( 1 ) . Properties [ "size" ] = 1 * 1024 * 1024 ;
115
+ this . disks . ElementAt ( 2 ) . Properties [ "size" ] = 3 * 1024 * 1024 ;
116
+ this . disks . ElementAt ( 3 ) . Properties [ "size" ] = 2 * 1024 * 1024 ;
117
+
118
+ string filterString = "biggestsize" ;
119
+ IEnumerable < Disk > result = DiskFilters . FilterDisks ( this . disks , filterString , PlatformID . Unix ) ;
120
+ Assert . AreEqual ( 2 , result . Count ( ) ) ;
121
+ Assert . IsTrue ( object . ReferenceEquals ( this . disks . ElementAt ( 0 ) , result . ElementAt ( 0 ) ) ) ;
122
+ Assert . IsTrue ( object . ReferenceEquals ( this . disks . ElementAt ( 2 ) , result . ElementAt ( 1 ) ) ) ;
123
+ }
124
+
114
125
[ Test ]
115
126
public void DiskFiltersCanFilterOnBiggestDisksOnWindows ( )
116
127
{
@@ -126,6 +137,23 @@ public void DiskFiltersCanFilterOnBiggestDisksOnWindows()
126
137
Assert . IsTrue ( object . ReferenceEquals ( this . disks . ElementAt ( 2 ) , result . ElementAt ( 0 ) ) ) ;
127
138
}
128
139
140
+ [ Test ]
141
+ [ Ignore ( "We can support this in the future if we add a 'Size' property to the Disk object for Windows (e.g. DiskPart -> list disks)." ) ]
142
+ public void DiskFiltersCanFilterOnBiggestDisksOnWindowsForDisksWithoutVolumePartititions ( )
143
+ {
144
+ this . disks = this . mockFixture . CreateDisks ( PlatformID . Win32NT , false ) ;
145
+ this . disks . ElementAt ( 0 ) . Properties [ "Size" ] = 3 * 1024 * 1024 ;
146
+ this . disks . ElementAt ( 1 ) . Properties [ "Size" ] = 1 * 1024 * 1024 ;
147
+ this . disks . ElementAt ( 2 ) . Properties [ "Size" ] = 3 * 1024 * 1024 ;
148
+ this . disks . ElementAt ( 3 ) . Properties [ "Size" ] = 2 * 1024 * 1024 ;
149
+
150
+ string filterString = "biggestsize" ;
151
+ IEnumerable < Disk > result = DiskFilters . FilterDisks ( this . disks , filterString , PlatformID . Unix ) ;
152
+ Assert . AreEqual ( 2 , result . Count ( ) ) ;
153
+ Assert . IsTrue ( object . ReferenceEquals ( this . disks . ElementAt ( 0 ) , result . ElementAt ( 0 ) ) ) ;
154
+ Assert . IsTrue ( object . ReferenceEquals ( this . disks . ElementAt ( 2 ) , result . ElementAt ( 1 ) ) ) ;
155
+ }
156
+
129
157
[ Test ]
130
158
public void DiskFiltersCanFilterOnSmallestDisksOnLinux ( )
131
159
{
@@ -142,6 +170,22 @@ public void DiskFiltersCanFilterOnSmallestDisksOnLinux()
142
170
Assert . IsTrue ( object . ReferenceEquals ( this . disks . ElementAt ( 3 ) , result . ElementAt ( 1 ) ) ) ;
143
171
}
144
172
173
+ [ Test ]
174
+ public void DiskFiltersCanFilterOnSmallestDisksOnLinuxForDisksWithoutVolumePartitions ( )
175
+ {
176
+ this . disks = this . mockFixture . CreateDisks ( PlatformID . Unix , false ) ;
177
+ this . disks . ElementAt ( 0 ) . Properties [ "size" ] = 3 * 1024 * 1024 ;
178
+ this . disks . ElementAt ( 1 ) . Properties [ "size" ] = 1 * 1024 * 1024 ;
179
+ this . disks . ElementAt ( 2 ) . Properties [ "size" ] = 3 * 1024 * 1024 ;
180
+ this . disks . ElementAt ( 3 ) . Properties [ "size" ] = 1 * 1024 * 1024 ;
181
+
182
+ string filterString = "smallestSize" ;
183
+ IEnumerable < Disk > result = DiskFilters . FilterDisks ( this . disks , filterString , PlatformID . Unix ) ;
184
+ Assert . AreEqual ( 2 , result . Count ( ) ) ;
185
+ Assert . IsTrue ( object . ReferenceEquals ( this . disks . ElementAt ( 1 ) , result . ElementAt ( 0 ) ) ) ;
186
+ Assert . IsTrue ( object . ReferenceEquals ( this . disks . ElementAt ( 3 ) , result . ElementAt ( 1 ) ) ) ;
187
+ }
188
+
145
189
[ Test ]
146
190
public void DiskFiltersCanFilterOnSmallestDisksOnWindows ( )
147
191
{
@@ -158,7 +202,23 @@ public void DiskFiltersCanFilterOnSmallestDisksOnWindows()
158
202
}
159
203
160
204
[ Test ]
161
- public void DiskFiltersCanFilterOnOsDisk ( )
205
+ [ Ignore ( "We can support this in the future if we add a 'Size' property to the Disk object for Windows (e.g. DiskPart -> list disks)." ) ]
206
+ public void DiskFiltersCanFilterOnSmallestDisksOnWindowsForDisksWithoutVolumePartitions ( )
207
+ {
208
+ this . disks = this . mockFixture . CreateDisks ( PlatformID . Win32NT , false ) ;
209
+ this . disks . ElementAt ( 0 ) . Properties [ "Size" ] = "6 GB" ;
210
+ this . disks . ElementAt ( 1 ) . Properties [ "Size" ] = "4 TB" ;
211
+ this . disks . ElementAt ( 2 ) . Properties [ "Size" ] = "5TB" ;
212
+ this . disks . ElementAt ( 3 ) . Properties [ "Size" ] = "7 mb" ;
213
+
214
+ string filterString = "smallestSize" ;
215
+ IEnumerable < Disk > result = DiskFilters . FilterDisks ( this . disks , filterString , PlatformID . Win32NT ) ;
216
+ Assert . AreEqual ( 1 , result . Count ( ) ) ;
217
+ Assert . IsTrue ( object . ReferenceEquals ( this . disks . ElementAt ( 3 ) , result . ElementAt ( 0 ) ) ) ;
218
+ }
219
+
220
+ [ Test ]
221
+ public void DiskFiltersCanFilterOnOsDiskOnLinux ( )
162
222
{
163
223
this . disks = this . mockFixture . CreateDisks ( PlatformID . Unix , true ) ;
164
224
@@ -180,6 +240,75 @@ public void DiskFiltersCanFilterOnOsDisk()
180
240
Assert . IsTrue ( object . ReferenceEquals ( this . disks . ElementAt ( 3 ) , result3 . ElementAt ( 2 ) ) ) ;
181
241
}
182
242
243
+ [ Test ]
244
+ public void DiskFiltersCanFilterOnOsDiskOnLinuxForDisksWithoutVolumePartitions ( )
245
+ {
246
+ this . disks = this . mockFixture . CreateDisks ( PlatformID . Unix , false ) ;
247
+
248
+ string filterString = "osdisk" ;
249
+ IEnumerable < Disk > result = DiskFilters . FilterDisks ( this . disks , filterString , PlatformID . Unix ) ;
250
+ Assert . AreEqual ( 1 , result . Count ( ) ) ;
251
+ Assert . IsTrue ( object . ReferenceEquals ( this . disks . ElementAt ( 0 ) , result . ElementAt ( 0 ) ) ) ;
252
+
253
+ string filterString2 = "osdisk:true" ;
254
+ IEnumerable < Disk > result2 = DiskFilters . FilterDisks ( this . disks , filterString2 , PlatformID . Unix ) ;
255
+ Assert . AreEqual ( 1 , result2 . Count ( ) ) ;
256
+ Assert . IsTrue ( object . ReferenceEquals ( this . disks . ElementAt ( 0 ) , result2 . ElementAt ( 0 ) ) ) ;
257
+
258
+ string filterString3 = "osdisk:false" ;
259
+ IEnumerable < Disk > result3 = DiskFilters . FilterDisks ( this . disks , filterString3 , PlatformID . Unix ) ;
260
+ Assert . AreEqual ( 3 , result3 . Count ( ) ) ;
261
+ Assert . IsTrue ( object . ReferenceEquals ( this . disks . ElementAt ( 1 ) , result3 . ElementAt ( 0 ) ) ) ;
262
+ Assert . IsTrue ( object . ReferenceEquals ( this . disks . ElementAt ( 2 ) , result3 . ElementAt ( 1 ) ) ) ;
263
+ Assert . IsTrue ( object . ReferenceEquals ( this . disks . ElementAt ( 3 ) , result3 . ElementAt ( 2 ) ) ) ;
264
+ }
265
+
266
+ [ Test ]
267
+ public void DiskFiltersCanFilterOnOsDiskOnWindows ( )
268
+ {
269
+ this . disks = this . mockFixture . CreateDisks ( PlatformID . Win32NT , true ) ;
270
+
271
+ string filterString = "osdisk" ;
272
+ IEnumerable < Disk > result = DiskFilters . FilterDisks ( this . disks , filterString , PlatformID . Win32NT ) ;
273
+ Assert . AreEqual ( 1 , result . Count ( ) ) ;
274
+ Assert . IsTrue ( object . ReferenceEquals ( this . disks . ElementAt ( 0 ) , result . ElementAt ( 0 ) ) ) ;
275
+
276
+ string filterString2 = "osdisk:true" ;
277
+ IEnumerable < Disk > result2 = DiskFilters . FilterDisks ( this . disks , filterString2 , PlatformID . Win32NT ) ;
278
+ Assert . AreEqual ( 1 , result2 . Count ( ) ) ;
279
+ Assert . IsTrue ( object . ReferenceEquals ( this . disks . ElementAt ( 0 ) , result2 . ElementAt ( 0 ) ) ) ;
280
+
281
+ string filterString3 = "osdisk:false" ;
282
+ IEnumerable < Disk > result3 = DiskFilters . FilterDisks ( this . disks , filterString3 , PlatformID . Win32NT ) ;
283
+ Assert . AreEqual ( 3 , result3 . Count ( ) ) ;
284
+ Assert . IsTrue ( object . ReferenceEquals ( this . disks . ElementAt ( 1 ) , result3 . ElementAt ( 0 ) ) ) ;
285
+ Assert . IsTrue ( object . ReferenceEquals ( this . disks . ElementAt ( 2 ) , result3 . ElementAt ( 1 ) ) ) ;
286
+ Assert . IsTrue ( object . ReferenceEquals ( this . disks . ElementAt ( 3 ) , result3 . ElementAt ( 2 ) ) ) ;
287
+ }
288
+
289
+ [ Test ]
290
+ public void DiskFiltersCanFilterOnOsDiskOnWindowsForDisksWithoutVolumePartitions ( )
291
+ {
292
+ this . disks = this . mockFixture . CreateDisks ( PlatformID . Win32NT , false ) ;
293
+
294
+ string filterString = "osdisk" ;
295
+ IEnumerable < Disk > result = DiskFilters . FilterDisks ( this . disks , filterString , PlatformID . Win32NT ) ;
296
+ Assert . AreEqual ( 1 , result . Count ( ) ) ;
297
+ Assert . IsTrue ( object . ReferenceEquals ( this . disks . ElementAt ( 0 ) , result . ElementAt ( 0 ) ) ) ;
298
+
299
+ string filterString2 = "osdisk:true" ;
300
+ IEnumerable < Disk > result2 = DiskFilters . FilterDisks ( this . disks , filterString2 , PlatformID . Win32NT ) ;
301
+ Assert . AreEqual ( 1 , result2 . Count ( ) ) ;
302
+ Assert . IsTrue ( object . ReferenceEquals ( this . disks . ElementAt ( 0 ) , result2 . ElementAt ( 0 ) ) ) ;
303
+
304
+ string filterString3 = "osdisk:false" ;
305
+ IEnumerable < Disk > result3 = DiskFilters . FilterDisks ( this . disks , filterString3 , PlatformID . Win32NT ) ;
306
+ Assert . AreEqual ( 3 , result3 . Count ( ) ) ;
307
+ Assert . IsTrue ( object . ReferenceEquals ( this . disks . ElementAt ( 1 ) , result3 . ElementAt ( 0 ) ) ) ;
308
+ Assert . IsTrue ( object . ReferenceEquals ( this . disks . ElementAt ( 2 ) , result3 . ElementAt ( 1 ) ) ) ;
309
+ Assert . IsTrue ( object . ReferenceEquals ( this . disks . ElementAt ( 3 ) , result3 . ElementAt ( 2 ) ) ) ;
310
+ }
311
+
183
312
[ Test ]
184
313
public void DiskFiltersCanFilterOnBiggestNonOsDisk ( )
185
314
{
@@ -197,7 +326,7 @@ public void DiskFiltersCanFilterOnBiggestNonOsDisk()
197
326
}
198
327
199
328
[ Test ]
200
- public void DiskFiltersCanFilterOnSizeBiggerThan ( )
329
+ public void DiskFiltersCanFilterOnSizeBiggerThanOnLinux ( )
201
330
{
202
331
this . disks = this . mockFixture . CreateDisks ( PlatformID . Unix , true ) ;
203
332
this . disks . ElementAt ( 0 ) . Properties [ "size" ] = ( long ) 5 * 1024 * 1024 * 1024 ;
@@ -213,7 +342,24 @@ public void DiskFiltersCanFilterOnSizeBiggerThan()
213
342
}
214
343
215
344
[ Test ]
216
- public void DiskFiltersCanFilterOnSizeLessThan ( )
345
+ [ Ignore ( "We can support this in the future if we add a 'Size' property to the Disk object for Windows (e.g. DiskPart -> list disks) and consider that in the filtering." ) ]
346
+ public void DiskFiltersCanFilterOnSizeBiggerThanOnWindows ( )
347
+ {
348
+ this . disks = this . mockFixture . CreateDisks ( PlatformID . Win32NT , true ) ;
349
+ this . disks . ElementAt ( 0 ) . Properties [ "Size" ] = ( long ) 5 * 1024 * 1024 * 1024 ;
350
+ this . disks . ElementAt ( 1 ) . Properties [ "Size" ] = ( long ) 2 * 1024 * 1024 * 1024 ;
351
+ this . disks . ElementAt ( 2 ) . Properties [ "Size" ] = ( long ) 3 * 1024 * 1024 * 1024 ;
352
+ this . disks . ElementAt ( 3 ) . Properties [ "Size" ] = ( long ) 7 * 1024 * 1024 * 1024 ;
353
+
354
+ string filterString = "SizeGreaterThan:4gb" ;
355
+ IEnumerable < Disk > result = DiskFilters . FilterDisks ( this . disks , filterString , PlatformID . Win32NT ) ;
356
+ Assert . AreEqual ( 2 , result . Count ( ) ) ;
357
+ Assert . IsTrue ( object . ReferenceEquals ( this . disks . ElementAt ( 0 ) , result . ElementAt ( 0 ) ) ) ;
358
+ Assert . IsTrue ( object . ReferenceEquals ( this . disks . ElementAt ( 3 ) , result . ElementAt ( 1 ) ) ) ;
359
+ }
360
+
361
+ [ Test ]
362
+ public void DiskFiltersCanFilterOnSizeLessThanOnLinux ( )
217
363
{
218
364
this . disks = this . mockFixture . CreateDisks ( PlatformID . Unix , true ) ;
219
365
this . disks . ElementAt ( 0 ) . Properties [ "size" ] = ( long ) 5 * 1024 * 1024 * 1024 ;
@@ -228,6 +374,23 @@ public void DiskFiltersCanFilterOnSizeLessThan()
228
374
Assert . IsTrue ( object . ReferenceEquals ( this . disks . ElementAt ( 2 ) , result . ElementAt ( 1 ) ) ) ;
229
375
}
230
376
377
+ [ Test ]
378
+ [ Ignore ( "We can support this in the future if we add a 'Size' property to the Disk object for Windows (e.g. DiskPart -> list disks) and consider that in the filtering." ) ]
379
+ public void DiskFiltersCanFilterOnSizeLessThanOnWindows ( )
380
+ {
381
+ this . disks = this . mockFixture . CreateDisks ( PlatformID . Unix , true ) ;
382
+ this . disks . ElementAt ( 0 ) . Properties [ "Size" ] = ( long ) 5 * 1024 * 1024 * 1024 ;
383
+ this . disks . ElementAt ( 1 ) . Properties [ "Size" ] = ( long ) 3 * 1024 * 1024 * 1024 ;
384
+ this . disks . ElementAt ( 2 ) . Properties [ "Size" ] = ( long ) 2 * 1024 * 1024 * 1024 ;
385
+ this . disks . ElementAt ( 3 ) . Properties [ "Size" ] = ( long ) 7 * 1024 * 1024 * 1024 ;
386
+
387
+ string filterString = "SizeLessThan:4000 Mb" ;
388
+ IEnumerable < Disk > result = DiskFilters . FilterDisks ( this . disks , filterString , PlatformID . Unix ) ;
389
+ Assert . AreEqual ( 2 , result . Count ( ) ) ;
390
+ Assert . IsTrue ( object . ReferenceEquals ( this . disks . ElementAt ( 1 ) , result . ElementAt ( 0 ) ) ) ;
391
+ Assert . IsTrue ( object . ReferenceEquals ( this . disks . ElementAt ( 2 ) , result . ElementAt ( 1 ) ) ) ;
392
+ }
393
+
231
394
[ Test ]
232
395
public void DiskFiltersCanFilterOnSizeLessThanAndNonOs ( )
233
396
{
@@ -271,6 +434,19 @@ public void DiskFiltersCanFilterOnDiskPathInLinux()
271
434
Assert . IsTrue ( object . ReferenceEquals ( this . disks . ElementAt ( 3 ) , result . ElementAt ( 1 ) ) ) ;
272
435
}
273
436
437
+ [ Test ]
438
+ public void DiskFiltersCanFilterOnDiskPathInLinuxWhenDisksHaveNoVolumePartitions ( )
439
+ {
440
+ this . disks = this . mockFixture . CreateDisks ( PlatformID . Unix , false ) ;
441
+
442
+ // The disks are sdc, sdd, sde, sdf
443
+ string filterString = "DiskPath:/dev/sdc,/dev/sde" ;
444
+ IEnumerable < Disk > result = DiskFilters . FilterDisks ( this . disks , filterString , PlatformID . Unix ) ;
445
+ Assert . AreEqual ( 2 , result . Count ( ) ) ;
446
+ Assert . IsTrue ( object . ReferenceEquals ( this . disks . ElementAt ( 1 ) , result . ElementAt ( 0 ) ) ) ;
447
+ Assert . IsTrue ( object . ReferenceEquals ( this . disks . ElementAt ( 3 ) , result . ElementAt ( 1 ) ) ) ;
448
+ }
449
+
274
450
[ Test ]
275
451
public void DiskFiltersCanFilterOnDiskPathInWindows ( )
276
452
{
@@ -285,6 +461,20 @@ public void DiskFiltersCanFilterOnDiskPathInWindows()
285
461
Assert . IsTrue ( object . ReferenceEquals ( this . disks . ElementAt ( 2 ) , result . ElementAt ( 1 ) ) ) ;
286
462
}
287
463
464
+ [ Test ]
465
+ public void DiskFiltersCanFilterOnDiskPathInWindowsWhenDisksHaveNoVolumePartitions ( )
466
+ {
467
+ this . mockFixture . Setup ( PlatformID . Win32NT ) ;
468
+ this . disks = this . mockFixture . CreateDisks ( PlatformID . Win32NT , false ) ;
469
+
470
+ // The disks \\.\PHYSICALDISK0,\\.\PHYSICALDISK2
471
+ string filterString = @"DiskPath:\\.\PHYSICALDISK0,\\.\PHYSICALDISK2" ;
472
+ IEnumerable < Disk > result = DiskFilters . FilterDisks ( this . disks , filterString , PlatformID . Win32NT ) ;
473
+ Assert . AreEqual ( 2 , result . Count ( ) ) ;
474
+ Assert . IsTrue ( object . ReferenceEquals ( this . disks . ElementAt ( 0 ) , result . ElementAt ( 0 ) ) ) ;
475
+ Assert . IsTrue ( object . ReferenceEquals ( this . disks . ElementAt ( 2 ) , result . ElementAt ( 1 ) ) ) ;
476
+ }
477
+
288
478
[ Test ]
289
479
public void DiskFiltersHandlesAnomaliesEncounters_1 ( )
290
480
{
0 commit comments