summaryrefslogtreecommitdiffstats
path: root/lib/tests/test_fencing.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/tests/test_fencing.py')
-rw-r--r--lib/tests/test_fencing.py123
1 files changed, 123 insertions, 0 deletions
diff --git a/lib/tests/test_fencing.py b/lib/tests/test_fencing.py
new file mode 100644
index 0000000..6ee9385
--- /dev/null
+++ b/lib/tests/test_fencing.py
@@ -0,0 +1,123 @@
+#!/usr/bin/python
+
+import unittest
+import sys
+sys.path.append("..")
+import fencing
+import copy
+
+class Test_join2(unittest.TestCase):
+ def test_single(self):
+ words = ["Mike"]
+ self.assertEqual(fencing._join2(words), "Mike")
+ self.assertEqual(fencing._join2(words, last_separator=" xor "), "Mike")
+ self.assertEqual(fencing._join2(words, normal_separator=" xor "), "Mike")
+
+ def test_double(self):
+ words = ["Mike", "John"]
+ self.assertEqual(fencing._join2(words), "Mike and John")
+ self.assertEqual(fencing._join2(words, last_separator=" xor "), "Mike xor John")
+ self.assertEqual(fencing._join2(words, normal_separator=" xor "), "Mike and John")
+
+ def test_triple(self):
+ words = ["Mike", "John", "Adam"]
+ self.assertEqual(fencing._join2(words), "Mike, John and Adam")
+ self.assertEqual(fencing._join2(words, last_separator=" xor "), "Mike, John xor Adam")
+ self.assertEqual(fencing._join2(words, normal_separator=" xor "), "Mike xor John and Adam")
+
+ def test_quadruple(self):
+ words = ["Eve", "Mike", "John", "Adam"]
+ self.assertEqual(fencing._join2(words), "Eve, Mike, John and Adam")
+ self.assertEqual(fencing._join2(words, last_separator=" xor "), "Eve, Mike, John xor Adam")
+ self.assertEqual(fencing._join2(words, normal_separator=" xor "), "Eve xor Mike xor John and Adam")
+
+class Test_add_dependency_options(unittest.TestCase):
+ basic_set = fencing.DEPENDENCY_OPT["default"]
+
+ def test_add_nothing(self):
+ self.assertEqual(set(fencing._add_dependency_options([])), set(self.basic_set))
+ self.assertEqual(set(fencing._add_dependency_options(["not-exist"])), set(self.basic_set))
+
+ def test_add_single(self):
+ self.assertEqual(set(fencing._add_dependency_options(["passwd"])), set(self.basic_set + ["passwd_script"]))
+
+ def test_add_tuple(self):
+ self.assertEqual(set(fencing._add_dependency_options(["ssl", "passwd"])), \
+ set(self.basic_set + ["passwd_script", "ssl_secure", "ssl_insecure", "gnutlscli_path"]))
+
+class Test_set_default_values(unittest.TestCase):
+ original_all_opt = None
+
+ def setUp(self):
+ # all_opt[*]["default"] can be changed during tests
+ self.original_all_opt = copy.deepcopy(fencing.all_opt)
+
+ def tearDown(self):
+ fencing.all_opt = copy.deepcopy(self.original_all_opt)
+
+ def _prepare_options(self, device_opts, args = {}):
+ device_opts = fencing._add_dependency_options(device_opts) + device_opts
+
+ arg_opts = args
+ options = dict(arg_opts)
+ options["device_opt"] = device_opts
+ fencing._update_metadata(options)
+ return fencing._set_default_values(options)
+
+ def test_status_io(self):
+ options = self._prepare_options([])
+
+ self.assertEqual(options["--action"], "reboot")
+ self.assertIsNone(options.get("--not-exist", None))
+
+ def test_status_fabric(self):
+ options = self._prepare_options(["fabric_fencing"])
+ self.assertEqual(options["--action"], "off")
+
+ def test_ipport_nothing(self):
+ # should fail because connection method (telnet/ssh/...) is not set at all
+ self.assertRaises(IndexError, self._prepare_options, ["ipaddr"])
+
+ def test_ipport_set(self):
+ options = self._prepare_options(["ipaddr", "telnet"], {"--ipport" : "999"})
+ self.assertEqual(options["--ipport"], "999")
+
+ def test_ipport_telnet(self):
+ options = self._prepare_options(["ipaddr", "telnet"])
+ self.assertEqual(options["--ipport"], "23")
+
+ def test_ipport_ssh(self):
+ options = self._prepare_options(["ipaddr", "secure"], {"--ssh" : "1"})
+ self.assertEqual(options["--ipport"], "22")
+
+ def test_ipport_sshtelnet_use_telnet(self):
+ options = self._prepare_options(["ipaddr", "secure", "telnet"])
+ self.assertEqual(options["--ipport"], "23")
+
+ def test_ipport_sshtelnet_use_ssh(self):
+ options = self._prepare_options(["ipaddr", "secure", "telnet"], {"--ssh" : "1"})
+ self.assertEqual(options["--ipport"], "22")
+
+ def test_ipport_ssl(self):
+ options = self._prepare_options(["ipaddr", "ssl"], {"--ssl-secure" : "1"})
+ self.assertEqual(options["--ipport"], "443")
+
+ def test_ipport_ssl_insecure_as_default(self):
+ fencing.all_opt["ssl_insecure"]["default"] = "1"
+ options = self._prepare_options(["ipaddr", "ssl"])
+ self.assertEqual(options["--ipport"], "443")
+
+ def test_ipport_snmp(self):
+ options = self._prepare_options(["ipaddr", "community"])
+ self.assertEqual(options["--ipport"], "161")
+
+ def test_ipport_web(self):
+ options = self._prepare_options(["ipaddr", "web", "ssl"])
+ self.assertEqual(options["--ipport"], "80")
+
+ def test_path_telnet(self):
+ options = self._prepare_options(["ipaddr", "telnet"])
+ self.assertTrue("--telnet-path" in options)
+
+if __name__ == '__main__':
+ unittest.main()