From 29b9d222381b4a5051129f4c6cb4f0d0213d7de7 Mon Sep 17 00:00:00 2001 From: Drew Hubl Date: Tue, 22 May 2018 20:35:40 -0700 Subject: [PATCH] Log successful connections to mongo --- st2common/st2common/models/db/__init__.py | 4 +++ st2common/tests/unit/test_db.py | 35 ++++++++++++++++++++--- 2 files changed, 35 insertions(+), 4 deletions(-) diff --git a/st2common/st2common/models/db/__init__.py b/st2common/st2common/models/db/__init__.py index 95f65e6116..d2b1099c0d 100644 --- a/st2common/st2common/models/db/__init__.py +++ b/st2common/st2common/models/db/__init__.py @@ -112,6 +112,10 @@ def _db_connect(db_name, db_host, db_port, username=None, password=None, port=db_port, tz_aware=True, username=username, password=password, **ssl_kwargs) + + LOG.info('Successfully connected to database "%s" @ "%s" as user "%s".' % ( + db_name, host_string, str(username_string))) + return connection diff --git a/st2common/tests/unit/test_db.py b/st2common/tests/unit/test_db.py index 378fd4376a..d794800e11 100644 --- a/st2common/tests/unit/test_db.py +++ b/st2common/tests/unit/test_db.py @@ -70,6 +70,12 @@ def test_db_setup_connecting_info_logging(self, mock_log): actual_message = mock_log.info.call_args_list[0][0][0] self.assertEqual(expected_message, actual_message) + # Check for helpful error messages if the connection is successful + expected_log_message = ('Successfully connected to database "st2" @ "localhost:27017" as ' + 'user "user_st2".') + actual_log_message = mock_log.info.call_args_list[1][0][0] + self.assertEqual(expected_log_message, actual_log_message) + # 2. Password provided as part of uri string (single host) db_host = 'mongodb://user_st22:pass_st22@127.0.0.2:5555' username = None @@ -78,9 +84,14 @@ def test_db_setup_connecting_info_logging(self, mock_log): password=password) expected_message = 'Connecting to database "st2" @ "127.0.0.2:5555" as user "user_st22".' - actual_message = mock_log.info.call_args_list[1][0][0] + actual_message = mock_log.info.call_args_list[2][0][0] self.assertEqual(expected_message, actual_message) + expected_log_message = ('Successfully connected to database "st2" @ "127.0.0.2:5555" as ' + 'user "user_st22".') + actual_log_message = mock_log.info.call_args_list[3][0][0] + self.assertEqual(expected_log_message, actual_log_message) + # 3. Password provided as part of uri string (single host) - username # provided as argument has precedence db_host = 'mongodb://user_st210:pass_st23@127.0.0.2:5555' @@ -90,9 +101,14 @@ def test_db_setup_connecting_info_logging(self, mock_log): password=password) expected_message = 'Connecting to database "st2" @ "127.0.0.2:5555" as user "user_st23".' - actual_message = mock_log.info.call_args_list[2][0][0] + actual_message = mock_log.info.call_args_list[4][0][0] self.assertEqual(expected_message, actual_message) + expected_log_message = ('Successfully connected to database "st2" @ "127.0.0.2:5555" as ' + 'user "user_st23".') + actual_log_message = mock_log.info.call_args_list[5][0][0] + self.assertEqual(expected_log_message, actual_log_message) + # 4. Just host provided in the url string db_host = 'mongodb://127.0.0.2:5555' username = 'user_st24' @@ -101,9 +117,14 @@ def test_db_setup_connecting_info_logging(self, mock_log): password=password) expected_message = 'Connecting to database "st2" @ "127.0.0.2:5555" as user "user_st24".' - actual_message = mock_log.info.call_args_list[3][0][0] + actual_message = mock_log.info.call_args_list[6][0][0] self.assertEqual(expected_message, actual_message) + expected_log_message = ('Successfully connected to database "st2" @ "127.0.0.2:5555" as ' + 'user "user_st24".') + actual_log_message = mock_log.info.call_args_list[7][0][0] + self.assertEqual(expected_log_message, actual_log_message) + # 5. Multiple hosts specified as part of connection uri db_host = 'mongodb://user6:pass6@host1,host2,host3' username = None @@ -113,9 +134,15 @@ def test_db_setup_connecting_info_logging(self, mock_log): expected_message = ('Connecting to database "st2" @ "host1:27017,host2:27017,host3:27017 ' '(replica set)" as user "user6".') - actual_message = mock_log.info.call_args_list[4][0][0] + actual_message = mock_log.info.call_args_list[8][0][0] self.assertEqual(expected_message, actual_message) + expected_log_message = ('Successfully connected to database "st2" @ ' + '"host1:27017,host2:27017,host3:27017 ' + '(replica set)" as user "user6".') + actual_log_message = mock_log.info.call_args_list[9][0][0] + self.assertEqual(expected_log_message, actual_log_message) + class DbCleanupTest(DbTestCase):