Skip to content

Commit dbaec23

Browse files
committed
Added tests for iib_metrics_client
1 parent 003ffa2 commit dbaec23

File tree

2 files changed

+86
-17
lines changed

2 files changed

+86
-17
lines changed

tests/test_iib_client.py

Lines changed: 0 additions & 17 deletions
This file was deleted.

tests/test_iib_metrics_client.py

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
# -*- coding: utf-8 -*-
2+
"""Tests for `iib_metrics_client`."""
3+
import os
4+
import sys
5+
import unittest
6+
try:
7+
from unittest.mock import patch
8+
except ImportError:
9+
from mock import patch
10+
from iib_metrics_client import (
11+
main,
12+
put_metric_to_gateway,
13+
static_content,
14+
PrometheusBadResponse)
15+
sys.path.append(os.getcwd())
16+
17+
18+
class MockFunction():
19+
@staticmethod
20+
def mock_logging_info(msg):
21+
"""Mock for `logger.info` function."""
22+
pass
23+
24+
@staticmethod
25+
def mock_run_iib_command(**kwargs):
26+
"""Mock for `run_iib_command` function."""
27+
return 'OK'
28+
29+
@staticmethod
30+
def mock_put_metric_to_gateway(metric_data, job):
31+
"""Mock for `put_metric_to_gateway` function."""
32+
pass
33+
34+
35+
class TestMain(unittest.TestCase):
36+
Mocked = MockFunction()
37+
@patch('iib_metrics_client.logger.info', side_effect=Mocked.mock_logging_info)
38+
@patch('iib_metrics_client.run_iib_command', side_effect=Mocked.mock_run_iib_command)
39+
@patch('iib_metrics_client.put_metric_to_gateway', side_efgect=Mocked.mock_put_metric_to_gateway)
40+
def test_main(self,
41+
mock_logging_info,
42+
mock_run_iib_command,
43+
mock_put_metric_to_gateway):
44+
"""Tests for `main` function."""
45+
with patch('iib_metrics_client.get_brokers_status') as mock_get_brokers_status:
46+
mock_get_brokers_status.return_value = [['TEST', 'running.', 'TEST']]
47+
self.assertEqual(main(), None)
48+
mock_get_brokers_status.return_value = [['TEST', 'stopped.', 'TEST']]
49+
self.assertEqual(main(), None)
50+
51+
@patch('iib_metrics_client.logger.info', side_effect=Mocked.mock_logging_info)
52+
@patch('iib_metrics_client.logger.error', side_effect=Exception())
53+
def test_main_exception(self, mock_logging_info, mock_logging_error):
54+
"""Test for `main` function for exceptions."""
55+
with patch('iib_metrics_client.run_iib_command') as mock_iib_command:
56+
mock_iib_command.side_effect = PrometheusBadResponse
57+
self.assertRaises(Exception, main)
58+
mock_iib_command.side_effect = Exception()
59+
self.assertRaises(Exception, main)
60+
61+
62+
class TestPutMetricToGateway(unittest.TestCase):
63+
Mocked = MockFunction()
64+
@patch('iib_metrics_client.logger.info', side_effect=Mocked.mock_logging_info)
65+
def test_put_metric_to_gateway(self, mock_logging_info):
66+
"""Tests for `put_metric_to_gateway` function."""
67+
with patch('iib_metrics_client.requests.put') as mock_request:
68+
mock_request.return_value.ok = True
69+
self.assertEqual(put_metric_to_gateway(metric_data='', job='TEST'), None)
70+
mock_request.return_value.ok = False
71+
self.assertRaises(PrometheusBadResponse, put_metric_to_gateway, metric_data='', job='TEST')
72+
73+
@patch('iib_metrics_client.logger.info', side_effect=Mocked.mock_logging_info)
74+
def test_put_metric_to_gateway_except(self, mock_logging_info):
75+
"""Test for `put_metric_to_gateway` function for `ConnectionError` exceptions."""
76+
self.assertRaises(PrometheusBadResponse, put_metric_to_gateway, metric_data='', job='TEST')
77+
78+
79+
class TestStaticContent(unittest.TestCase):
80+
def test_static_content(self):
81+
"""Test for `static_content` function."""
82+
self.assertIsInstance(static_content(), str)
83+
84+
85+
if __name__ == '__main__':
86+
unittest.main()

0 commit comments

Comments
 (0)