Merge pull request #693 from izn/tests/network-traffic-module
Add Network Traffic module tests
This commit is contained in:
commit
58bbcf2ac5
2 changed files with 87 additions and 5 deletions
|
@ -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:
|
||||||
|
|
|
@ -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):
|
||||||
|
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")
|
__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'
|
||||||
|
|
Loading…
Reference in a new issue