diff --git a/Makefile.am b/Makefile.am index 3ad319b206371af519c8ccdcff838fe8a40da90b..64b15e631e2320a56ec93b7fc450e4fb3bcd123c 100644 --- a/Makefile.am +++ b/Makefile.am @@ -325,6 +325,7 @@ dist_TESTS = \ test/ganeti.confd_client_unittest.py \ test/ganeti.config_unittest.py \ test/ganeti.constants_unittest.py \ + test/ganeti.errors_unittest.py \ test/ganeti.hooks_unittest.py \ test/ganeti.http_unittest.py \ test/ganeti.locking_unittest.py \ diff --git a/test/ganeti.errors_unittest.py b/test/ganeti.errors_unittest.py new file mode 100755 index 0000000000000000000000000000000000000000..d5a37b6468a16b1aefba07b66981a3a1b0174937 --- /dev/null +++ b/test/ganeti.errors_unittest.py @@ -0,0 +1,67 @@ +#!/usr/bin/python +# + +# Copyright (C) 2010 Google Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. + + +"""Script for testing ganeti.backend""" + +import os +import sys +import unittest + +from ganeti import errors + +import testutils + + +class TestErrors(testutils.GanetiTestCase): + def testGetErrorClass(self): + tdata = { + "": None, + ".": None, + "-": None, + "ECODE_INVAL": None, + "NoErrorClassName": None, + "GenericError": errors.GenericError, + "ProgrammerError": errors.ProgrammerError, + } + + for name, cls in tdata.items(): + self.assert_(errors.GetErrorClass(name) is cls) + + def testEncodeException(self): + self.assertEqualValues(errors.EncodeException(Exception("Foobar")), + ("Exception", ("Foobar", ))) + err = errors.GenericError(True, 100, "foo", ["x", "y"]) + self.assertEqualValues(errors.EncodeException(err), + ("GenericError", (True, 100, "foo", ["x", "y"]))) + + def testMaybeRaise(self): + # These shouldn't raise + for i in [None, 1, 2, 3, "Hello World", (1, ), (1, 2, 3), + ("NoErrorClassName", []), ("NoErrorClassName", None), + ("GenericError", [1, 2, 3], None), ("GenericError", 1)]: + errors.MaybeRaise(i) + + self.assertRaises(errors.GenericError, errors.MaybeRaise, + ("GenericError", ["Hello"])) + + +if __name__ == "__main__": + testutils.GanetiTestProgram()