Revision 0bff0b12 test/ganeti.cmdlib_unittest.py

b/test/ganeti.cmdlib_unittest.py
69 69
    for op in sorted(mcpu.Processor.DISPATCH_TABLE):
70 70
      lu = mcpu.Processor.DISPATCH_TABLE[op]
71 71
      lu_name = lu.__name__
72
      self.failIf(hasattr(lu, "_OP_REQP"), "LU '%s' has old-style _OP_REQP" %
73
                  lu_name)
74
      self.failIf(hasattr(lu, "_OP_DEFS"), "LU '%s' has old-style _OP_DEFS" %
75
                  lu_name)
76
      # this needs to remain a list!
77
      defined_params = [v[0] for v in lu._OP_PARAMS]
78
      for row in lu._OP_PARAMS:
79
        # this relies on there being at least one element
80
        param_name = row[0]
81
        self.failIf(len(row) != 3, "LU '%s' parameter %s has invalid length" %
82
                    (lu_name, param_name))
83
        self.failIf(defined_params.count(param_name) > 1, "LU '%s' parameter"
84
                    " '%s' is defined multiple times" % (lu_name, param_name))
85

  
86
  def testParamsDefined(self):
87
    for op in sorted(mcpu.Processor.DISPATCH_TABLE):
88
      lu = mcpu.Processor.DISPATCH_TABLE[op]
89
      lu_name = lu.__name__
90
      # TODO: this doesn't deal with recursive slots definitions
91
      all_params = set(op.__slots__)
92
      defined_params = set(v[0] for v in lu._OP_PARAMS)
93
      missing = all_params.difference(defined_params)
94
      self.failIf(missing, "Undeclared parameter types for LU '%s': %s" %
95
                  (lu_name, utils.CommaJoin(missing)))
96
      extra = defined_params.difference(all_params)
97
      self.failIf(extra, "Extra parameter types for LU '%s': %s" %
98
                  (lu_name, utils.CommaJoin(extra)))
72
      self.failIf(hasattr(lu, "_OP_REQP"),
73
                  msg=("LU '%s' has old-style _OP_REQP" % lu_name))
74
      self.failIf(hasattr(lu, "_OP_DEFS"),
75
                  msg=("LU '%s' has old-style _OP_DEFS" % lu_name))
76
      self.failIf(hasattr(lu, "_OP_PARAMS"),
77
                  msg=("LU '%s' has old-style _OP_PARAMS" % lu_name))
99 78

  
100 79

  
101 80
class TestIAllocatorChecks(testutils.GanetiTestCase):

Also available in: Unified diff