Revision 74ff6aed test/hs/Test/Ganeti/HTools/Node.hs

b/test/hs/Test/Ganeti/HTools/Node.hs
214 214
                     , Instance.diskTemplate = dt }
215 215
  in (Node.addPri node inst'' ==? Bad Types.FailDisk)
216 216

  
217
-- | Check if an instance exceeds a spindles limit or has no spindles set.
218
hasInstTooManySpindles :: Instance.Instance -> Int -> Bool
219
hasInstTooManySpindles inst sp_lim =
220
  case Instance.getTotalSpindles inst of
221
    Just s -> s > sp_lim
222
    Nothing -> True
223

  
224
-- | Check that adding a primary instance with too many spindles fails
225
-- with type FailSpindles (when exclusive storage is enabled).
226
prop_addPriFS :: Instance.Instance -> Property
227
prop_addPriFS inst =
228
  forAll genExclStorNode $ \node ->
229
  forAll (elements Instance.localStorageTemplates) $ \dt ->
230
  hasInstTooManySpindles inst (Node.fSpindles node) &&
231
    not (Node.failN1 node) ==>
232
  let inst' = setInstanceSmallerThanNode node inst
233
      inst'' = inst' { Instance.disks = Instance.disks inst
234
                     , Instance.diskTemplate = dt }
235
  in (Node.addPri node inst'' ==? Bad Types.FailSpindles)
236

  
217 237
-- | Check that adding a primary instance with too many VCPUs fails
218 238
-- with type FailCPU.
219 239
prop_addPriFC :: Property
......
233 253
prop_addSec node inst pdx =
234 254
  ((Instance.mem inst >= (Node.fMem node - Node.rMem node) &&
235 255
    not (Instance.isOffline inst)) ||
236
   Instance.dsk inst >= Node.fDsk node) &&
256
   Instance.dsk inst >= Node.fDsk node ||
257
   (Node.exclStorage node &&
258
    hasInstTooManySpindles inst (Node.fSpindles node))) &&
237 259
  not (Node.failN1 node) ==>
238 260
      isBad (Node.addSec node inst pdx)
239 261

  
......
419 441
            , 'prop_setXmem
420 442
            , 'prop_addPriFM
421 443
            , 'prop_addPriFD
444
            , 'prop_addPriFS
422 445
            , 'prop_addPriFC
423 446
            , 'prop_addPri_NoN1Fail
424 447
            , 'prop_addSec

Also available in: Unified diff