Revision 61bbbed7 htools/Ganeti/HTools/QC.hs

b/htools/Ganeti/HTools/QC.hs
695 695
-- | Check that an instance add with too high memory or disk will be
696 696
-- rejected.
697 697
prop_Node_addPriFM node inst = Instance.mem inst >= Node.fMem node &&
698
                               not (Node.failN1 node)
698
                               not (Node.failN1 node) &&
699
                               not (Instance.instanceOffline inst)
699 700
                               ==>
700 701
                               case Node.addPri node inst'' of
701 702
                                 Types.OpFail Types.FailMem -> True
......
715 716
          inst'' = inst' { Instance.dsk = Instance.dsk inst }
716 717

  
717 718
prop_Node_addPriFC node inst (Positive extra) =
718
    not (Node.failN1 node) ==>
719
    not (Node.failN1 node) &&
720
    not (Instance.instanceOffline inst) ==>
719 721
        case Node.addPri node inst'' of
720 722
          Types.OpFail Types.FailCPU -> True
721 723
          _ -> False
......
726 728
-- | Check that an instance add with too high memory or disk will be
727 729
-- rejected.
728 730
prop_Node_addSec node inst pdx =
729
    (Instance.mem inst >= (Node.fMem node - Node.rMem node) ||
731
    ((Instance.mem inst >= (Node.fMem node - Node.rMem node) &&
732
      not (Instance.instanceOffline inst)) ||
730 733
     Instance.dsk inst >= Node.fDsk node) &&
731 734
    not (Node.failN1 node)
732 735
    ==> isFailure (Node.addSec node inst pdx)
733 736
        where _types = (node::Node.Node, inst::Instance.Instance, pdx::Int)
734 737

  
738
-- | Check that an offline instance with reasonable disk size can always
739
-- be added.
740
prop_Node_addPriOffline node =
741
    forAll (arbitrary `suchThat`
742
            (\ x ->  (Instance.dsk x  < Node.fDsk node) &&
743
                      Instance.instanceOffline x)) $ \inst ->
744
    case Node.addPri node inst of
745
      Types.OpGood _ -> True
746
      _ -> False
747

  
748
prop_Node_addSecOffline node pdx =
749
    forAll (arbitrary `suchThat`
750
            (\ x ->  (Instance.dsk x  < Node.fDsk node) &&
751
                      Instance.instanceOffline x)) $ \inst ->
752
    case Node.addSec node inst pdx of
753
      Types.OpGood _ -> True
754
      _ -> False
755

  
735 756
-- | Checks for memory reservation changes.
736 757
prop_Node_rMem inst =
758
    not (Instance.instanceOffline inst) ==>
737 759
    forAll (arbitrary `suchThat` ((> Types.unitMem) . Node.fMem)) $ \node ->
738 760
    -- ab = auto_balance, nb = non-auto_balance
739 761
    -- we use -1 as the primary node of the instance
......
808 830
              , 'prop_Node_addPriFD
809 831
              , 'prop_Node_addPriFC
810 832
              , 'prop_Node_addSec
833
              , 'prop_Node_addPriOffline
834
              , 'prop_Node_addSecOffline
811 835
              , 'prop_Node_rMem
812 836
              , 'prop_Node_setMdsk
813 837
              , 'prop_Node_tagMaps_idempotent

Also available in: Unified diff