Files
monitorstack/tests/test_plugin_process.py
Kevin Carter e808ba1f7d Add Cinder block pool metrics (#25)
The PR adds the cinder block pool metrics so that we can now retrieve
insights into the environment on the capacity all active storage pools.
This PR also creates tests for the new plugins and reduces duplication
across plugins by centralizing the runner method into the init of the
tests module.

This should now bring total code coverage to 100%

Signed-off-by: Kevin Carter <kevin.carter@rackspace.com>
2017-03-19 15:31:46 -05:00

71 lines
2.5 KiB
Python

# Copyright 2017, Major Hayden <major@mhtx.net>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Tests for the process plugin."""
import mock
from monitorstack.plugins import process
import tests # Import the test base module
class TestUptime(object):
"""Tests for the uptime monitor class."""
def test_run_failure(self):
"""Ensure the run() method works."""
process_name = 'dont-go-chasing-waterfalls'
result = tests.runner('process', extra_args=[process_name])
assert result['variables'] == {process_name: 0}
assert result['exit_code'] == 1
def test_run_success(self):
"""Ensure the run() method works."""
process_name = '/'
result = tests.runner('process', extra_args=[process_name])
assert result['variables'] == {process_name: 1}
assert result['exit_code'] == 0
def test_check_process_success(self, monkeypatch):
"""Ensure the check_process() method works."""
def mock_get_cmdlines():
return ['process1', 'process2']
monkeypatch.setattr(process, 'get_cmdlines', mock_get_cmdlines)
result = process.check_process('process2')
assert result
def test_get_cmdlines(self):
"""Ensure the get_cmdlines() method works."""
assert isinstance(process.get_cmdlines(), list)
def test_get_cmdlines_exception(self, monkeypatch):
"""Ensure the get_cmdlines() method works."""
class _RaisePid(object):
pid = 'not-a-pid'
@staticmethod
def cmdline():
raise process.psutil.NoSuchProcess('not-a-pid')
def _mock_process_iter():
return [_RaisePid, _RaisePid, _RaisePid]
with mock.patch('psutil.process_iter') as MockClass:
MockClass.return_value = _mock_process_iter()
process_name = 'dont-go-chasing-waterfalls'
result = tests.runner('process', extra_args=[process_name])
assert result['variables'] == {process_name: 0}
assert result['exit_code'] == 1