added some type hinting with tests to help in refactoring in the future

This commit is contained in:
Blake Harnden 2020-05-24 23:37:38 -07:00
parent 964f78f06a
commit ba8b16ec34
11 changed files with 199 additions and 156 deletions

View file

@ -3,6 +3,7 @@ Tests for testing tlv message handling.
"""
import os
import time
from typing import Optional
import mock
import netaddr
@ -10,6 +11,7 @@ import pytest
from mock import MagicMock
from core.api.tlv import coreapi
from core.api.tlv.corehandlers import CoreHandler
from core.api.tlv.enumerations import (
ConfigFlags,
ConfigTlvs,
@ -28,7 +30,7 @@ from core.nodes.base import CoreNode, NodeBase
from core.nodes.network import SwitchNode, WlanNode
def dict_to_str(values):
def dict_to_str(values) -> str:
return "|".join(f"{x}={values[x]}" for x in values)
@ -44,7 +46,9 @@ class TestGui:
(NodeTypes.TUNNEL, None),
],
)
def test_node_add(self, coretlv, node_type, model):
def test_node_add(
self, coretlv: CoreHandler, node_type: NodeTypes, model: Optional[str]
):
node_id = 1
message = coreapi.CoreNodeMessage.create(
MessageFlags.ADD.value,
@ -61,7 +65,7 @@ class TestGui:
coretlv.handle_message(message)
assert coretlv.session.get_node(node_id, NodeBase) is not None
def test_node_update(self, coretlv):
def test_node_update(self, coretlv: CoreHandler):
node_id = 1
coretlv.session.add_node(CoreNode, _id=node_id)
x = 50
@ -82,7 +86,7 @@ class TestGui:
assert node.position.x == x
assert node.position.y == y
def test_node_delete(self, coretlv):
def test_node_delete(self, coretlv: CoreHandler):
node_id = 1
coretlv.session.add_node(CoreNode, _id=node_id)
message = coreapi.CoreNodeMessage.create(
@ -94,7 +98,7 @@ class TestGui:
with pytest.raises(CoreError):
coretlv.session.get_node(node_id, NodeBase)
def test_link_add_node_to_net(self, coretlv):
def test_link_add_node_to_net(self, coretlv: CoreHandler):
node_one = 1
coretlv.session.add_node(CoreNode, _id=node_one)
switch = 2
@ -118,7 +122,7 @@ class TestGui:
all_links = switch_node.all_link_data()
assert len(all_links) == 1
def test_link_add_net_to_node(self, coretlv):
def test_link_add_net_to_node(self, coretlv: CoreHandler):
node_one = 1
coretlv.session.add_node(CoreNode, _id=node_one)
switch = 2
@ -142,7 +146,7 @@ class TestGui:
all_links = switch_node.all_link_data()
assert len(all_links) == 1
def test_link_add_node_to_node(self, coretlv):
def test_link_add_node_to_node(self, coretlv: CoreHandler):
node_one = 1
coretlv.session.add_node(CoreNode, _id=node_one)
node_two = 2
@ -172,7 +176,7 @@ class TestGui:
all_links += node.all_link_data()
assert len(all_links) == 1
def test_link_update(self, coretlv):
def test_link_update(self, coretlv: CoreHandler):
node_one = 1
coretlv.session.add_node(CoreNode, _id=node_one)
switch = 2
@ -214,7 +218,7 @@ class TestGui:
link = all_links[0]
assert link.bandwidth == bandwidth
def test_link_delete_node_to_node(self, coretlv):
def test_link_delete_node_to_node(self, coretlv: CoreHandler):
node_one = 1
coretlv.session.add_node(CoreNode, _id=node_one)
node_two = 2
@ -258,7 +262,7 @@ class TestGui:
all_links += node.all_link_data()
assert len(all_links) == 0
def test_link_delete_node_to_net(self, coretlv):
def test_link_delete_node_to_net(self, coretlv: CoreHandler):
node_one = 1
coretlv.session.add_node(CoreNode, _id=node_one)
switch = 2
@ -294,7 +298,7 @@ class TestGui:
all_links = switch_node.all_link_data()
assert len(all_links) == 0
def test_link_delete_net_to_node(self, coretlv):
def test_link_delete_net_to_node(self, coretlv: CoreHandler):
node_one = 1
coretlv.session.add_node(CoreNode, _id=node_one)
switch = 2
@ -330,7 +334,7 @@ class TestGui:
all_links = switch_node.all_link_data()
assert len(all_links) == 0
def test_session_update(self, coretlv):
def test_session_update(self, coretlv: CoreHandler):
session_id = coretlv.session.id
name = "test"
message = coreapi.CoreSessionMessage.create(
@ -341,7 +345,7 @@ class TestGui:
assert coretlv.session.name == name
def test_session_query(self, coretlv):
def test_session_query(self, coretlv: CoreHandler):
coretlv.dispatch_replies = mock.MagicMock()
message = coreapi.CoreSessionMessage.create(MessageFlags.STRING.value, [])
@ -351,7 +355,7 @@ class TestGui:
replies = args[0]
assert len(replies) == 1
def test_session_join(self, coretlv):
def test_session_join(self, coretlv: CoreHandler):
coretlv.dispatch_replies = mock.MagicMock()
session_id = coretlv.session.id
message = coreapi.CoreSessionMessage.create(
@ -362,7 +366,7 @@ class TestGui:
assert coretlv.session.id == session_id
def test_session_delete(self, coretlv):
def test_session_delete(self, coretlv: CoreHandler):
assert len(coretlv.coreemu.sessions) == 1
session_id = coretlv.session.id
message = coreapi.CoreSessionMessage.create(
@ -373,7 +377,7 @@ class TestGui:
assert len(coretlv.coreemu.sessions) == 0
def test_file_hook_add(self, coretlv):
def test_file_hook_add(self, coretlv: CoreHandler):
state = EventTypes.DATACOLLECT_STATE
assert coretlv.session._hooks.get(state) is None
file_name = "test.sh"
@ -395,7 +399,7 @@ class TestGui:
assert file_name == name
assert file_data == data
def test_file_service_file_set(self, coretlv):
def test_file_service_file_set(self, coretlv: CoreHandler):
node = coretlv.session.add_node(CoreNode)
service = "DefaultRoute"
file_name = "defaultroute.sh"
@ -417,7 +421,7 @@ class TestGui:
)
assert file_data == service_file.data
def test_file_node_file_copy(self, request, coretlv):
def test_file_node_file_copy(self, request, coretlv: CoreHandler):
file_name = "/var/log/test/node.log"
node = coretlv.session.add_node(CoreNode)
node.makenodedir()
@ -439,7 +443,7 @@ class TestGui:
create_path = os.path.join(node.nodedir, created_directory, basename)
assert os.path.exists(create_path)
def test_exec_node_tty(self, coretlv):
def test_exec_node_tty(self, coretlv: CoreHandler):
coretlv.dispatch_replies = mock.MagicMock()
node = coretlv.session.add_node(CoreNode)
message = coreapi.CoreExecMessage.create(
@ -457,7 +461,7 @@ class TestGui:
replies = args[0]
assert len(replies) == 1
def test_exec_local_command(self, request, coretlv):
def test_exec_local_command(self, request, coretlv: CoreHandler):
if request.config.getoption("mock"):
pytest.skip("mocking calls")
@ -479,7 +483,7 @@ class TestGui:
replies = args[0]
assert len(replies) == 1
def test_exec_node_command(self, coretlv):
def test_exec_node_command(self, coretlv: CoreHandler):
coretlv.dispatch_replies = mock.MagicMock()
node = coretlv.session.add_node(CoreNode)
cmd = "echo hello"
@ -514,7 +518,7 @@ class TestGui:
assert coretlv.session.state == state
def test_event_schedule(self, coretlv):
def test_event_schedule(self, coretlv: CoreHandler):
coretlv.session.add_event = mock.MagicMock()
node = coretlv.session.add_node(CoreNode)
message = coreapi.CoreEventMessage.create(
@ -602,7 +606,7 @@ class TestGui:
coretlv.handle_message(message)
def test_register_gui(self, coretlv):
def test_register_gui(self, coretlv: CoreHandler):
message = coreapi.CoreRegMessage.create(0, [(RegisterTlvs.GUI, "gui")])
coretlv.handle_message(message)
@ -638,7 +642,7 @@ class TestGui:
assert len(coretlv.session.nodes) == 1
def test_config_all(self, coretlv):
def test_config_all(self, coretlv: CoreHandler):
message = coreapi.CoreConfMessage.create(
MessageFlags.ADD.value,
[(ConfigTlvs.OBJECT, "all"), (ConfigTlvs.TYPE, ConfigFlags.RESET.value)],
@ -649,7 +653,7 @@ class TestGui:
assert coretlv.session.location.refxyz == (0, 0, 0)
def test_config_options_request(self, coretlv):
def test_config_options_request(self, coretlv: CoreHandler):
message = coreapi.CoreConfMessage.create(
0,
[
@ -663,7 +667,7 @@ class TestGui:
coretlv.handle_broadcast_config.assert_called_once()
def test_config_options_update(self, coretlv):
def test_config_options_update(self, coretlv: CoreHandler):
test_key = "test"
test_value = "test"
values = {test_key: test_value}
@ -680,7 +684,7 @@ class TestGui:
assert coretlv.session.options.get_config(test_key) == test_value
def test_config_location_reset(self, coretlv):
def test_config_location_reset(self, coretlv: CoreHandler):
message = coreapi.CoreConfMessage.create(
0,
[
@ -694,7 +698,7 @@ class TestGui:
assert coretlv.session.location.refxyz == (0, 0, 0)
def test_config_location_update(self, coretlv):
def test_config_location_update(self, coretlv: CoreHandler):
message = coreapi.CoreConfMessage.create(
0,
[
@ -710,7 +714,7 @@ class TestGui:
assert coretlv.session.location.refgeo == (70, 50, 0)
assert coretlv.session.location.refscale == 0.5
def test_config_metadata_request(self, coretlv):
def test_config_metadata_request(self, coretlv: CoreHandler):
message = coreapi.CoreConfMessage.create(
0,
[
@ -724,7 +728,7 @@ class TestGui:
coretlv.handle_broadcast_config.assert_called_once()
def test_config_metadata_update(self, coretlv):
def test_config_metadata_update(self, coretlv: CoreHandler):
test_key = "test"
test_value = "test"
values = {test_key: test_value}
@ -741,7 +745,7 @@ class TestGui:
assert coretlv.session.metadata[test_key] == test_value
def test_config_broker_request(self, coretlv):
def test_config_broker_request(self, coretlv: CoreHandler):
server = "test"
host = "10.0.0.1"
port = 50000
@ -759,7 +763,7 @@ class TestGui:
coretlv.session.distributed.add_server.assert_called_once_with(server, host)
def test_config_services_request_all(self, coretlv):
def test_config_services_request_all(self, coretlv: CoreHandler):
message = coreapi.CoreConfMessage.create(
0,
[
@ -773,7 +777,7 @@ class TestGui:
coretlv.handle_broadcast_config.assert_called_once()
def test_config_services_request_specific(self, coretlv):
def test_config_services_request_specific(self, coretlv: CoreHandler):
node = coretlv.session.add_node(CoreNode)
message = coreapi.CoreConfMessage.create(
0,
@ -790,7 +794,7 @@ class TestGui:
coretlv.handle_broadcast_config.assert_called_once()
def test_config_services_request_specific_file(self, coretlv):
def test_config_services_request_specific_file(self, coretlv: CoreHandler):
node = coretlv.session.add_node(CoreNode)
message = coreapi.CoreConfMessage.create(
0,
@ -807,7 +811,7 @@ class TestGui:
coretlv.session.broadcast_file.assert_called_once()
def test_config_services_reset(self, coretlv):
def test_config_services_reset(self, coretlv: CoreHandler):
node = coretlv.session.add_node(CoreNode)
service = "DefaultRoute"
coretlv.session.services.set_service(node.id, service)
@ -824,7 +828,7 @@ class TestGui:
assert coretlv.session.services.get_service(node.id, service) is None
def test_config_services_set(self, coretlv):
def test_config_services_set(self, coretlv: CoreHandler):
node = coretlv.session.add_node(CoreNode)
service = "DefaultRoute"
values = {"meta": "metadata"}
@ -844,7 +848,7 @@ class TestGui:
assert coretlv.session.services.get_service(node.id, service) is not None
def test_config_mobility_reset(self, coretlv):
def test_config_mobility_reset(self, coretlv: CoreHandler):
wlan = coretlv.session.add_node(WlanNode)
message = coreapi.CoreConfMessage.create(
0,
@ -860,7 +864,7 @@ class TestGui:
assert len(coretlv.session.mobility.node_configurations) == 0
def test_config_mobility_model_request(self, coretlv):
def test_config_mobility_model_request(self, coretlv: CoreHandler):
wlan = coretlv.session.add_node(WlanNode)
message = coreapi.CoreConfMessage.create(
0,
@ -876,7 +880,7 @@ class TestGui:
coretlv.handle_broadcast_config.assert_called_once()
def test_config_mobility_model_update(self, coretlv):
def test_config_mobility_model_update(self, coretlv: CoreHandler):
wlan = coretlv.session.add_node(WlanNode)
config_key = "range"
config_value = "1000"
@ -898,7 +902,7 @@ class TestGui:
)
assert config[config_key] == config_value
def test_config_emane_model_request(self, coretlv):
def test_config_emane_model_request(self, coretlv: CoreHandler):
wlan = coretlv.session.add_node(WlanNode)
message = coreapi.CoreConfMessage.create(
0,
@ -914,7 +918,7 @@ class TestGui:
coretlv.handle_broadcast_config.assert_called_once()
def test_config_emane_model_update(self, coretlv):
def test_config_emane_model_update(self, coretlv: CoreHandler):
wlan = coretlv.session.add_node(WlanNode)
config_key = "distance"
config_value = "50051"
@ -936,7 +940,7 @@ class TestGui:
)
assert config[config_key] == config_value
def test_config_emane_request(self, coretlv):
def test_config_emane_request(self, coretlv: CoreHandler):
message = coreapi.CoreConfMessage.create(
0,
[
@ -950,7 +954,7 @@ class TestGui:
coretlv.handle_broadcast_config.assert_called_once()
def test_config_emane_update(self, coretlv):
def test_config_emane_update(self, coretlv: CoreHandler):
config_key = "eventservicedevice"
config_value = "eth4"
values = {config_key: config_value}