Merge pull request #693 from izn/tests/network-traffic-module

Add Network Traffic module tests
This commit is contained in:
tobi-wan-kenobi 2020-08-30 04:55:59 +02:00 committed by GitHub
commit 58bbcf2ac5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 87 additions and 5 deletions

View file

@ -38,8 +38,8 @@ class Module(core.module.Module):
try: try:
self._bandwidth = BandwidthInfo() self._bandwidth = BandwidthInfo()
self._rate_recv = "?" self._rate_recv = 0
self._rate_sent = "?" self._rate_sent = 0
self._bytes_recv = self._bandwidth.bytes_recv() self._bytes_recv = self._bandwidth.bytes_recv()
self._bytes_sent = self._bandwidth.bytes_sent() self._bytes_sent = self._bandwidth.bytes_sent()
except Exception: except Exception:

View file

@ -1,9 +1,91 @@
import pytest import pytest
from unittest import TestCase, mock
import core.config
import core.widget
import modules.contrib.network_traffic
from types import SimpleNamespace
pytest.importorskip("psutil") pytest.importorskip("psutil")
pytest.importorskip("netifaces") pytest.importorskip("netifaces")
def test_load_module(): def io_counters_mock(recv, sent):
__import__("modules.contrib.network_traffic") return {
'lo': SimpleNamespace(
bytes_sent = sent,
bytes_recv = recv
)
}
def gateways_response():
return {
'default': {
1: ('10.0.0.10', 'lo')
}
}
def build_module():
config = core.config.Config([])
return modules.contrib.network_traffic.Module(config=config, theme=None)
def download_widget(module):
return module.widgets()[0]
def upload_widget(module):
return module.widgets()[1]
def mb_to_bytes(value):
return value*1024**2
class TestNetworkTrafficUnit(TestCase):
def test_load_module(self):
__import__("modules.contrib.network_traffic")
def test_initial_download_rate(self):
module = build_module()
assert download_widget(module).full_text() == '0.00B/s'
def test_initial_upload_rate(self):
module = build_module()
assert upload_widget(module).full_text() == '0.00B/s'
@mock.patch('netifaces.gateways')
def test_invalid_gateways(self, gateways_mock):
gateways_mock.return_value = { 'invalid': 'gateways' }
module = build_module()
assert download_widget(module).full_text() == '0.00B/s'
assert upload_widget(module).full_text() == '0.00B/s'
@mock.patch('psutil.net_io_counters')
def test_invalid_io_counters(self, net_io_counters_mock):
net_io_counters_mock.return_value = { 'invalid': 'io_counters' }
module = build_module()
assert download_widget(module).full_text() == '0.00B/s'
assert upload_widget(module).full_text() == '0.00B/s'
@mock.patch('psutil.net_io_counters')
@mock.patch('netifaces.gateways')
@mock.patch('netifaces.AF_INET', 1)
def test_update_rates(self, gateways_mock, net_io_counters_mock):
net_io_counters_mock.return_value = io_counters_mock(0, 0)
gateways_mock.return_value = gateways_response()
module = build_module()
assert download_widget(module).full_text() == '0.00B/s'
assert upload_widget(module).full_text() == '0.00B/s'
net_io_counters_mock.return_value = io_counters_mock(
mb_to_bytes(30),
mb_to_bytes(0.5)
)
module.update()
assert download_widget(module).full_text() == '30.00MiB/s'
assert upload_widget(module).full_text() == '512.00KiB/s'