]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-deploy.git/commitdiff
some tests for the new mon_errors check
authorAlfredo Deza <alfredo.deza@inktank.com>
Tue, 24 Sep 2013 16:21:12 +0000 (12:21 -0400)
committerAlfredo Deza <alfredo.deza@inktank.com>
Tue, 24 Sep 2013 16:21:12 +0000 (12:21 -0400)
Signed-off-by: Alfredo Deza <alfredo.deza@inktank.com>
ceph_deploy/tests/test_mon.py [new file with mode: 0644]

diff --git a/ceph_deploy/tests/test_mon.py b/ceph_deploy/tests/test_mon.py
new file mode 100644 (file)
index 0000000..dde74ba
--- /dev/null
@@ -0,0 +1,46 @@
+from ceph_deploy import mon
+from mock import Mock
+
+
+# NOTE: If at some point we re-use this helper, move it out
+# and make it even more generic
+
+def make_fake_conn(receive_returns=None):
+    receive_returns = receive_returns or (['{}'], '', 0)
+    conn = Mock()
+    conn.return_value = conn
+    conn.execute = conn
+    conn.receive = Mock(return_value=receive_returns)
+    conn.result = Mock(return_value=conn)
+    return conn
+
+
+class TestCatchCommonErrors(object):
+
+    def setup(self):
+        self.logger = Mock()
+
+    def assert_logger_message(self, logger, msg):
+        calls = logger.call_args_list
+        for log_call in calls:
+            if msg in log_call[0][0]:
+                return True
+        raise AssertionError('"%s" was not found in any of %s' % (msg, calls))
+
+    def test_warn_if_no_intial_members(self):
+        fake_conn = make_fake_conn()
+        mon.catch_mon_errors(fake_conn, self.logger, 'host', {})
+        expected_msg = 'is not defined in `mon initial members`'
+        self.assert_logger_message(self.logger.warning, expected_msg)
+
+    def test_warn_if_not_mon_in_monmap(self):
+        fake_conn = make_fake_conn()
+        mon.catch_mon_errors(fake_conn, self.logger, 'host', {})
+        expected_msg = 'does not exist in monmap'
+        self.assert_logger_message(self.logger.warning, expected_msg)
+
+    def test_warn_if_not_public_addr_and_not_public_netw(self):
+        fake_conn = make_fake_conn()
+        mon.catch_mon_errors(fake_conn, self.logger, 'host', {'global': ''})
+        expected_msg = 'neither `public_addr` nor `public_network`'
+        self.assert_logger_message(self.logger.warning, expected_msg)