File: test_cpu.py

package info (click to toggle)
bumblebee-status 2.2.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,844 kB
  • sloc: python: 13,430; sh: 68; makefile: 29
file content (98 lines) | stat: -rw-r--r-- 3,072 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
import pytest
from unittest import TestCase, mock

import core.config
import core.widget
import modules.core.cpu

pytest.importorskip("psutil")

def build_module(percpu=False):
    config = core.config.Config(["-p", "percpu={}".format(percpu)])
    config.set("cpu.percpu", percpu)
    return modules.core.cpu.Module(config=config, theme=None)

def cpu_widget(module):
    return module.widgets()[0]

class TestCPU(TestCase):
    def test_load_module(self):
        __import__("modules.core.cpu")

    @mock.patch('psutil.cpu_percent')
    def test_cpu_percent(self, cpu_percent_mock):
        cpu_percent_mock.return_value = 5
        module = build_module()

        assert cpu_widget(module).full_text() == '5.0%'

    @mock.patch('psutil.cpu_percent')
    def test_cpu_percent_update(self, cpu_percent_mock):
        cpu_percent_mock.return_value = 10
        module = build_module()

        assert cpu_widget(module).full_text() == '10.0%'

        cpu_percent_mock.return_value = 20
        module.update()

        assert cpu_widget(module).full_text() == '20.0%'

    @mock.patch('psutil.cpu_percent')
    def test_healthy_state(self, cpu_percent_mock):
        cpu_percent_mock.return_value = 50
        module = build_module()

        assert module.state(module.widget()) == None

    @mock.patch('psutil.cpu_percent')
    def test_warning_state(self, cpu_percent_mock):
        cpu_percent_mock.return_value = 75
        module = build_module()

        assert module.state(module.widget()) == 'warning'

    @mock.patch('psutil.cpu_percent')
    def test_critical_state(self, cpu_percent_mock):
        cpu_percent_mock.return_value = 82
        module = build_module()

        assert module.state(module.widget()) == 'critical'

    @mock.patch('psutil.cpu_percent')
    def test_healthy_state_percpu(self, cpu_percent_mock):
        cpu_percent_mock.return_value = [50,42,47]
        module = build_module(percpu=True)

        for widget in module.widgets():
            assert module.state(widget) == None

    @mock.patch('psutil.cpu_percent')
    def test_warning_state_percpu(self, cpu_percent_mock):
        cpu_percent_mock.return_value = [50,72,47]
        module = build_module(percpu=True)

        assert module.state(module.widgets()[0]) == None
        assert module.state(module.widgets()[1]) == "warning"
        assert module.state(module.widgets()[2]) == None

    @mock.patch('psutil.cpu_percent')
    def test_warning_state_percpu(self, cpu_percent_mock):
        cpu_percent_mock.return_value = [50,72,99]
        module = build_module(percpu=True)

        assert module.state(module.widgets()[0]) == None
        assert module.state(module.widgets()[1]) == "warning"
        assert module.state(module.widgets()[2]) == "critical" 

    @mock.patch('core.input.register')
    def test_register_left_mouse_action(self, input_register_mock):
        module = build_module()

        input_register_mock.assert_called_with(
            module,
            button=core.input.LEFT_MOUSE,
            cmd='gnome-system-monitor'
        )