793871ca30e7e3034b328e206130d87ca9b0479d
[yardstick.git] / tests / unit / benchmark / scenarios / availability / test_monitor.py
1 #!/usr/bin/env python
2
3 ##############################################################################
4 # Copyright (c) 2015 Huawei Technologies Co.,Ltd and others.
5 #
6 # All rights reserved. This program and the accompanying materials
7 # are made available under the terms of the Apache License, Version 2.0
8 # which accompanies this distribution, and is available at
9 # http://www.apache.org/licenses/LICENSE-2.0
10 ##############################################################################
11
12 # Unittest for yardstick.benchmark.scenarios.availability.monitor
13
14 import mock
15 import unittest
16
17 from yardstick.benchmark.scenarios.availability import monitor
18
19 @mock.patch('yardstick.benchmark.scenarios.availability.monitor.subprocess')
20 class MonitorTestCase(unittest.TestCase):
21
22     def test__fun_execute_shell_command_successful(self, mock_subprocess):
23         cmd = "env"
24         mock_subprocess.check_output.return_value = (0, 'unittest')
25         exitcode, output = monitor._execute_shell_command(cmd)
26         self.assertEqual(exitcode, 0)
27
28     def test__fun_execute_shell_command_fail_cmd_exception(self, mock_subprocess):
29         cmd = "env"
30         mock_subprocess.check_output.side_effect = RuntimeError
31         exitcode, output = monitor._execute_shell_command(cmd)
32         self.assertEqual(exitcode, -1)
33
34     def test__fun_monitor_process_successful(self, mock_subprocess):
35         config = {
36             'monitor_cmd':'env',
37             'duration':0
38         }
39         mock_queue = mock.Mock()
40         mock_event = mock.Mock()
41
42         mock_subprocess.check_output.return_value = (0, 'unittest')
43         monitor._monitor_process(config, mock_queue, mock_event)
44
45     def test__fun_monitor_process_fail_cmd_execute_error(self, mock_subprocess):
46         config = {
47             'monitor_cmd':'env',
48             'duration':0
49         }
50         mock_queue = mock.Mock()
51         mock_event = mock.Mock()
52
53         mock_subprocess.check_output.side_effect = RuntimeError
54         monitor._monitor_process(config, mock_queue, mock_event)
55
56     def test__fun_monitor_process_fail_no_monitor_cmd(self, mock_subprocess):
57         config = {
58             'duration':0
59         }
60         mock_queue = mock.Mock()
61         mock_event = mock.Mock()
62
63         mock_subprocess.check_output.return_value = (-1, 'unittest')
64         monitor._monitor_process(config, mock_queue, mock_event)
65
66     @mock.patch('yardstick.benchmark.scenarios.availability.monitor.multiprocessing')
67     def test_monitor_all_successful(self, mock_multip, mock_subprocess):
68         config = {
69             'monitor_cmd':'env',
70             'duration':0
71         }
72         p = monitor.Monitor()
73         p.setup(config)
74         mock_multip.Queue().get.return_value = 'started'
75         p.start()
76
77         result = "monitor unitest"
78         mock_multip.Queue().get.return_value = result
79         p.stop()
80
81         ret = p.get_result()
82
83         self.assertEqual(result, ret)