Skip to content

Commit

Permalink
Add basic test coverage for linkstatetask
Browse files Browse the repository at this point in the history
  • Loading branch information
lunkwill42 committed Oct 4, 2023
1 parent ebebe7c commit ba1bc37
Show file tree
Hide file tree
Showing 3 changed files with 250 additions and 0 deletions.
90 changes: 90 additions & 0 deletions tests/snmp_fixtures/linksdown.snmprec
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
1.3.6.1.2.1.1.1.0|4x|50726f4375727665204a34393030422053776974636820323632362c207265766973696f6e20482e30382e39382c20524f4d20482e30382e303220282f73772f636f64652f6275696c642f666973682874735f30385f352929
1.3.6.1.2.1.1.2.0|6|1.3.6.1.4.1.11.2.3.7.11.45
1.3.6.1.2.1.1.3.0|67|3307498428
1.3.6.1.2.1.1.4.0|4x|45696e6172204c696c6c6562727967666a656c64
1.3.6.1.2.1.1.5.0|4|buick
1.3.6.1.2.1.1.6.0|4x|4c43266262656e
1.3.6.1.2.1.1.7.0|2|74
1.3.6.1.2.1.2.2.1.1.1|2|1
1.3.6.1.2.1.2.2.1.1.2|2|2
1.3.6.1.2.1.2.2.1.2.1|4|1
1.3.6.1.2.1.2.2.1.2.2|4|2
1.3.6.1.2.1.2.2.1.3.1|2|6
1.3.6.1.2.1.2.2.1.3.2|2|6
1.3.6.1.2.1.2.2.1.4.1|2|1514
1.3.6.1.2.1.2.2.1.4.2|2|1514
1.3.6.1.2.1.2.2.1.5.1|66|10000000
1.3.6.1.2.1.2.2.1.5.2|66|10000000
1.3.6.1.2.1.2.2.1.6.1|4x|0019bb8f4b7f
1.3.6.1.2.1.2.2.1.6.2|4x|0019bb8f4b7e
1.3.6.1.2.1.2.2.1.7.1|2|1
1.3.6.1.2.1.2.2.1.7.2|2|1
1.3.6.1.2.1.2.2.1.8.1|2|1
1.3.6.1.2.1.2.2.1.8.2|2|2
1.3.6.1.2.1.2.2.1.9.1|67|1737882440
1.3.6.1.2.1.2.2.1.9.2|67|1806268995
1.3.6.1.2.1.2.2.1.10.1|65|0
1.3.6.1.2.1.2.2.1.10.2|65|0
1.3.6.1.2.1.2.2.1.11.1|65|0
1.3.6.1.2.1.2.2.1.11.2|65|0
1.3.6.1.2.1.2.2.1.12.1|65|0
1.3.6.1.2.1.2.2.1.12.2|65|0
1.3.6.1.2.1.2.2.1.13.1|65|0
1.3.6.1.2.1.2.2.1.13.2|65|0
1.3.6.1.2.1.2.2.1.14.1|65|0
1.3.6.1.2.1.2.2.1.14.2|65|0
1.3.6.1.2.1.2.2.1.15.1|65|0
1.3.6.1.2.1.2.2.1.15.2|65|0
1.3.6.1.2.1.2.2.1.16.1|65|0
1.3.6.1.2.1.2.2.1.16.2|65|0
1.3.6.1.2.1.2.2.1.17.1|65|0
1.3.6.1.2.1.2.2.1.17.2|65|0
1.3.6.1.2.1.2.2.1.18.1|65|0
1.3.6.1.2.1.2.2.1.18.2|65|0
1.3.6.1.2.1.2.2.1.19.1|65|0
1.3.6.1.2.1.2.2.1.19.2|65|0
1.3.6.1.2.1.2.2.1.20.1|65|0
1.3.6.1.2.1.2.2.1.20.2|65|0
1.3.6.1.2.1.2.2.1.21.1|66|0
1.3.6.1.2.1.2.2.1.21.2|66|0
1.3.6.1.2.1.2.2.1.22.1|6|1.3.6.1.2.1.10.7
1.3.6.1.2.1.2.2.1.22.2|6|1.3.6.1.2.1.10.7
1.3.6.1.2.1.11.30.0|2|2
1.3.6.1.2.1.31.1.1.1.1.1|4|1
1.3.6.1.2.1.31.1.1.1.1.2|4|2
1.3.6.1.2.1.31.1.1.1.2.1|65|0
1.3.6.1.2.1.31.1.1.1.2.2|65|0
1.3.6.1.2.1.31.1.1.1.3.1|65|0
1.3.6.1.2.1.31.1.1.1.3.2|65|0
1.3.6.1.2.1.31.1.1.1.4.1|65|0
1.3.6.1.2.1.31.1.1.1.4.2|65|0
1.3.6.1.2.1.31.1.1.1.5.1|65|0
1.3.6.1.2.1.31.1.1.1.5.2|65|0
1.3.6.1.2.1.31.1.1.1.6.1|70|0
1.3.6.1.2.1.31.1.1.1.6.2|70|0
1.3.6.1.2.1.31.1.1.1.7.1|70|0
1.3.6.1.2.1.31.1.1.1.7.2|70|0
1.3.6.1.2.1.31.1.1.1.8.1|70|0
1.3.6.1.2.1.31.1.1.1.8.2|70|0
1.3.6.1.2.1.31.1.1.1.9.1|70|0
1.3.6.1.2.1.31.1.1.1.9.2|70|0
1.3.6.1.2.1.31.1.1.1.10.1|70|0
1.3.6.1.2.1.31.1.1.1.10.2|70|0
1.3.6.1.2.1.31.1.1.1.11.1|70|0
1.3.6.1.2.1.31.1.1.1.11.2|70|0
1.3.6.1.2.1.31.1.1.1.12.1|70|0
1.3.6.1.2.1.31.1.1.1.12.2|70|0
1.3.6.1.2.1.31.1.1.1.13.1|70|0
1.3.6.1.2.1.31.1.1.1.13.2|70|0
1.3.6.1.2.1.31.1.1.1.14.1|2|1
1.3.6.1.2.1.31.1.1.1.14.2|2|1
1.3.6.1.2.1.31.1.1.1.15.1|66|10
1.3.6.1.2.1.31.1.1.1.15.2|66|10
1.3.6.1.2.1.31.1.1.1.16.1|2|1
1.3.6.1.2.1.31.1.1.1.16.2|2|1
1.3.6.1.2.1.31.1.1.1.17.1|2|1
1.3.6.1.2.1.31.1.1.1.17.2|2|1
1.3.6.1.2.1.31.1.1.1.18.1|4x|4120706f656d
1.3.6.1.2.1.31.1.1.1.18.2|4x|66726f6d20612066616d6f7573
1.3.6.1.2.1.31.1.1.1.19.1|67|1737882440
1.3.6.1.2.1.31.1.1.1.19.2|67|1806268995
90 changes: 90 additions & 0 deletions tests/snmp_fixtures/linksup.snmprec
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
1.3.6.1.2.1.1.1.0|4x|50726f4375727665204a34393030422053776974636820323632362c207265766973696f6e20482e30382e39382c20524f4d20482e30382e303220282f73772f636f64652f6275696c642f666973682874735f30385f352929
1.3.6.1.2.1.1.2.0|6|1.3.6.1.4.1.11.2.3.7.11.45
1.3.6.1.2.1.1.3.0|67|3307498428
1.3.6.1.2.1.1.4.0|4x|45696e6172204c696c6c6562727967666a656c64
1.3.6.1.2.1.1.5.0|4|buick
1.3.6.1.2.1.1.6.0|4x|4c43266262656e
1.3.6.1.2.1.1.7.0|2|74
1.3.6.1.2.1.2.2.1.1.1|2|1
1.3.6.1.2.1.2.2.1.1.2|2|2
1.3.6.1.2.1.2.2.1.2.1|4|1
1.3.6.1.2.1.2.2.1.2.2|4|2
1.3.6.1.2.1.2.2.1.3.1|2|6
1.3.6.1.2.1.2.2.1.3.2|2|6
1.3.6.1.2.1.2.2.1.4.1|2|1514
1.3.6.1.2.1.2.2.1.4.2|2|1514
1.3.6.1.2.1.2.2.1.5.1|66|10000000
1.3.6.1.2.1.2.2.1.5.2|66|10000000
1.3.6.1.2.1.2.2.1.6.1|4x|0019bb8f4b7f
1.3.6.1.2.1.2.2.1.6.2|4x|0019bb8f4b7e
1.3.6.1.2.1.2.2.1.7.1|2|1
1.3.6.1.2.1.2.2.1.7.2|2|1
1.3.6.1.2.1.2.2.1.8.1|2|1
1.3.6.1.2.1.2.2.1.8.2|2|1
1.3.6.1.2.1.2.2.1.9.1|67|1737882440
1.3.6.1.2.1.2.2.1.9.2|67|1806268995
1.3.6.1.2.1.2.2.1.10.1|65|0
1.3.6.1.2.1.2.2.1.10.2|65|0
1.3.6.1.2.1.2.2.1.11.1|65|0
1.3.6.1.2.1.2.2.1.11.2|65|0
1.3.6.1.2.1.2.2.1.12.1|65|0
1.3.6.1.2.1.2.2.1.12.2|65|0
1.3.6.1.2.1.2.2.1.13.1|65|0
1.3.6.1.2.1.2.2.1.13.2|65|0
1.3.6.1.2.1.2.2.1.14.1|65|0
1.3.6.1.2.1.2.2.1.14.2|65|0
1.3.6.1.2.1.2.2.1.15.1|65|0
1.3.6.1.2.1.2.2.1.15.2|65|0
1.3.6.1.2.1.2.2.1.16.1|65|0
1.3.6.1.2.1.2.2.1.16.2|65|0
1.3.6.1.2.1.2.2.1.17.1|65|0
1.3.6.1.2.1.2.2.1.17.2|65|0
1.3.6.1.2.1.2.2.1.18.1|65|0
1.3.6.1.2.1.2.2.1.18.2|65|0
1.3.6.1.2.1.2.2.1.19.1|65|0
1.3.6.1.2.1.2.2.1.19.2|65|0
1.3.6.1.2.1.2.2.1.20.1|65|0
1.3.6.1.2.1.2.2.1.20.2|65|0
1.3.6.1.2.1.2.2.1.21.1|66|0
1.3.6.1.2.1.2.2.1.21.2|66|0
1.3.6.1.2.1.2.2.1.22.1|6|1.3.6.1.2.1.10.7
1.3.6.1.2.1.2.2.1.22.2|6|1.3.6.1.2.1.10.7
1.3.6.1.2.1.11.30.0|2|2
1.3.6.1.2.1.31.1.1.1.1.1|4|1
1.3.6.1.2.1.31.1.1.1.1.2|4|2
1.3.6.1.2.1.31.1.1.1.2.1|65|0
1.3.6.1.2.1.31.1.1.1.2.2|65|0
1.3.6.1.2.1.31.1.1.1.3.1|65|0
1.3.6.1.2.1.31.1.1.1.3.2|65|0
1.3.6.1.2.1.31.1.1.1.4.1|65|0
1.3.6.1.2.1.31.1.1.1.4.2|65|0
1.3.6.1.2.1.31.1.1.1.5.1|65|0
1.3.6.1.2.1.31.1.1.1.5.2|65|0
1.3.6.1.2.1.31.1.1.1.6.1|70|0
1.3.6.1.2.1.31.1.1.1.6.2|70|0
1.3.6.1.2.1.31.1.1.1.7.1|70|0
1.3.6.1.2.1.31.1.1.1.7.2|70|0
1.3.6.1.2.1.31.1.1.1.8.1|70|0
1.3.6.1.2.1.31.1.1.1.8.2|70|0
1.3.6.1.2.1.31.1.1.1.9.1|70|0
1.3.6.1.2.1.31.1.1.1.9.2|70|0
1.3.6.1.2.1.31.1.1.1.10.1|70|0
1.3.6.1.2.1.31.1.1.1.10.2|70|0
1.3.6.1.2.1.31.1.1.1.11.1|70|0
1.3.6.1.2.1.31.1.1.1.11.2|70|0
1.3.6.1.2.1.31.1.1.1.12.1|70|0
1.3.6.1.2.1.31.1.1.1.12.2|70|0
1.3.6.1.2.1.31.1.1.1.13.1|70|0
1.3.6.1.2.1.31.1.1.1.13.2|70|0
1.3.6.1.2.1.31.1.1.1.14.1|2|1
1.3.6.1.2.1.31.1.1.1.14.2|2|1
1.3.6.1.2.1.31.1.1.1.15.1|66|10
1.3.6.1.2.1.31.1.1.1.15.2|66|10
1.3.6.1.2.1.31.1.1.1.16.1|2|1
1.3.6.1.2.1.31.1.1.1.16.2|2|1
1.3.6.1.2.1.31.1.1.1.17.1|2|1
1.3.6.1.2.1.31.1.1.1.17.2|2|1
1.3.6.1.2.1.31.1.1.1.18.1|4x|4120706f656d
1.3.6.1.2.1.31.1.1.1.18.2|4x|66726f6d20612066616d6f7573
1.3.6.1.2.1.31.1.1.1.19.1|67|1737882440
1.3.6.1.2.1.31.1.1.1.19.2|67|1806268995
70 changes: 70 additions & 0 deletions tests/tasks/test_linkstatetask.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
import pytest

from zino.config.models import PollDevice
from zino.state import ZinoState
from zino.tasks.linkstatetask import BaseInterfaceRow, LinkStateTask


class TestLinkStateTask:
@pytest.mark.asyncio
async def test_run_should_not_create_event_if_links_are_up(self, linkstatetask_with_links_up):
task = linkstatetask_with_links_up
assert (await task.run()) is None
assert len(task.state.events) == 0

@pytest.mark.asyncio
async def test_run_should_create_event_if_at_least_one_link_is_down(self, linkstatetask_with_one_link_down):
task = linkstatetask_with_one_link_down
assert (await task.run()) is None
assert len(task.state.events) == 1

def test_when_patterns_are_empty_interface_should_not_be_ignored(self, task_with_dummy_device):
data = BaseInterfaceRow(
index=2, descr="GigabitEthernet1/2", alias="uplink", admin_status="up", oper_status="up", last_change=0
)
assert task_with_dummy_device._is_interface_watched(data)

def test_when_interface_matches_watchpat_it_should_not_be_ignored(self, task_with_dummy_device):
data = BaseInterfaceRow(
index=2, descr="GigabitEthernet1/2", alias="uplink", admin_status="up", oper_status="up", last_change=0
)
task_with_dummy_device.device.watchpat = "Gigabit"
assert task_with_dummy_device._is_interface_watched(data)

def test_when_interface_doesnt_match_watchpat_it_should_be_ignored(self, task_with_dummy_device):
data = BaseInterfaceRow(
index=2, descr="GigabitEthernet1/2", alias="uplink", admin_status="up", oper_status="up", last_change=0
)
task_with_dummy_device.device.watchpat = "TenGiga"
assert not task_with_dummy_device._is_interface_watched(data)

def test_when_interface_matches_ignorepat_it_should_be_ignored(self, task_with_dummy_device):
data = BaseInterfaceRow(
index=2, descr="GigabitEthernet1/2", alias="uplink", admin_status="up", oper_status="up", last_change=0
)
task_with_dummy_device.device.ignorepat = ".*Ethernet"
assert not task_with_dummy_device._is_interface_watched(data)


@pytest.fixture
def linkstatetask_with_links_up(snmpsim, snmp_test_port):
device = PollDevice(name="buick.lab.example.org", address="127.0.0.1", port=snmp_test_port, community="linksup")
state = ZinoState()
task = LinkStateTask(device, state)
yield task


@pytest.fixture
def linkstatetask_with_one_link_down(snmpsim, snmp_test_port):
device = PollDevice(name="buick.lab.example.org", address="127.0.0.1", port=snmp_test_port, community="linksdown")
state = ZinoState()
task = LinkStateTask(device, state)
yield task


@pytest.fixture
def task_with_dummy_device():
device = PollDevice(name="test", address="127.0.0.1")
state = ZinoState()
task = LinkStateTask(device, state)
yield task

0 comments on commit ba1bc37

Please sign in to comment.