"""Script for unittesting the cli module"""
import unittest
+import time
from cStringIO import StringIO
import ganeti
"""Test how we handle splitting an empty string"""
self.failUnlessEqual(cli._SplitKeyVal("option", ""), {})
+
class TestIdentKeyVal(unittest.TestCase):
"""Testing case for cli.check_ident_key_val"""
self.assertEqual(cikv("-foo"), ("foo", None))
self.assertRaises(ParameterError, cikv, "-foo:a=c")
+ # Check negative numbers
+ self.assertEqual(cikv("-1:remove"), ("-1", {
+ "remove": True,
+ }))
+ self.assertEqual(cikv("-29447:add,size=4G"), ("-29447", {
+ "add": True,
+ "size": "4G",
+ }))
+ for i in ["-:", "-"]:
+ self.assertEqual(cikv(i), ("", None))
+
class TestToStream(unittest.TestCase):
"""Test the ToStream functions"""
def CountPending(self):
return len(self._query)
- def Query(self, res, fields, filter_):
+ def Query(self, res, fields, qfilter):
if res != constants.QR_NODE:
raise Exception("Querying wrong resource")
if exp_fields != fields:
raise Exception("Expected fields %s, got %s" % (exp_fields, fields))
- if not (filter_ is None or check_filter(filter_)):
+ if not (qfilter is None or check_filter(qfilter)):
raise Exception("Filter doesn't match expectations")
return objects.QueryResponse(fields=None, data=result)
def testNoMaster(self):
cl = self._FakeClient()
- def _CheckFilter(filter_):
- self.assertEqual(filter_, [qlang.OP_NOT, [qlang.OP_TRUE, "master"]])
+ def _CheckFilter(qfilter):
+ self.assertEqual(qfilter, [qlang.OP_NOT, [qlang.OP_TRUE, "master"]])
return True
cl.AddQueryResult(["name", "offline", "sip"], _CheckFilter, [
def testNoMasterFilterNodeName(self):
cl = self._FakeClient()
- def _CheckFilter(filter_):
- self.assertEqual(filter_,
+ def _CheckFilter(qfilter):
+ self.assertEqual(qfilter,
[qlang.OP_AND,
[qlang.OP_OR] + [[qlang.OP_EQUAL, "name", name]
for name in ["node2", "node3"]],
def testNodeGroup(self):
cl = self._FakeClient()
- def _CheckFilter(filter_):
- self.assertEqual(filter_,
+ def _CheckFilter(qfilter):
+ self.assertEqual(qfilter,
[qlang.OP_OR, [qlang.OP_EQUAL, "group", "foobar"],
[qlang.OP_EQUAL, "group.uuid", "foobar"]])
return True
self.assertEqual(cl.CountPending(), 0)
+class TestFormatTimestamp(unittest.TestCase):
+ def testGood(self):
+ self.assertEqual(cli.FormatTimestamp((0, 1)),
+ time.strftime("%F %T", time.localtime(0)) + ".000001")
+ self.assertEqual(cli.FormatTimestamp((1332944009, 17376)),
+ (time.strftime("%F %T", time.localtime(1332944009)) +
+ ".017376"))
+
+ def testWrong(self):
+ for i in [0, [], {}, "", [1]]:
+ self.assertEqual(cli.FormatTimestamp(i), "?")
+
+
if __name__ == '__main__':
testutils.GanetiTestProgram()