changes to support better type checking for retrieving an arbitrary node from a session, get_node now requires an expected class that the node would be an instance of, if the returned node is not an instance a CoreError is thrown, this also helps editors pick up expected types to account for variable/function usage better as well
This commit is contained in:
parent
19ee367dc5
commit
d5254e6a91
21 changed files with 149 additions and 126 deletions
|
@ -9,11 +9,13 @@ import pytest
|
|||
from core.emane.bypass import EmaneBypassModel
|
||||
from core.emane.commeffect import EmaneCommEffectModel
|
||||
from core.emane.ieee80211abg import EmaneIeee80211abgModel
|
||||
from core.emane.nodes import EmaneNet
|
||||
from core.emane.rfpipe import EmaneRfPipeModel
|
||||
from core.emane.tdma import EmaneTdmaModel
|
||||
from core.emulator.emudata import NodeOptions
|
||||
from core.emulator.enumerations import NodeTypes
|
||||
from core.errors import CoreCommandError, CoreError
|
||||
from core.nodes.base import CoreNode
|
||||
|
||||
_EMANE_MODELS = [
|
||||
EmaneIeee80211abgModel,
|
||||
|
@ -133,9 +135,9 @@ class TestEmane:
|
|||
|
||||
# verify nodes have been removed from session
|
||||
with pytest.raises(CoreError):
|
||||
assert not session.get_node(n1_id)
|
||||
assert not session.get_node(n1_id, CoreNode)
|
||||
with pytest.raises(CoreError):
|
||||
assert not session.get_node(n2_id)
|
||||
assert not session.get_node(n2_id, CoreNode)
|
||||
|
||||
# load saved xml
|
||||
session.open_xml(file_path, start=True)
|
||||
|
@ -146,7 +148,7 @@ class TestEmane:
|
|||
)
|
||||
|
||||
# verify nodes and configuration were restored
|
||||
assert session.get_node(n1_id)
|
||||
assert session.get_node(n2_id)
|
||||
assert session.get_node(emane_id)
|
||||
assert session.get_node(n1_id, CoreNode)
|
||||
assert session.get_node(n2_id, CoreNode)
|
||||
assert session.get_node(emane_id, EmaneNet)
|
||||
assert value == config_value
|
||||
|
|
|
@ -19,6 +19,7 @@ from core.emulator.emudata import NodeOptions
|
|||
from core.emulator.enumerations import EventTypes, ExceptionLevels, NodeTypes
|
||||
from core.errors import CoreError
|
||||
from core.location.mobility import BasicRangeModel, Ns2ScriptedMobility
|
||||
from core.nodes.base import CoreNode
|
||||
from core.xml.corexml import CoreXmlWriter
|
||||
|
||||
|
||||
|
@ -355,7 +356,7 @@ class TestGrpc:
|
|||
|
||||
# then
|
||||
assert response.node_id is not None
|
||||
assert session.get_node(response.node_id) is not None
|
||||
assert session.get_node(response.node_id, CoreNode) is not None
|
||||
|
||||
def test_get_node(self, grpc_server):
|
||||
# given
|
||||
|
@ -402,7 +403,7 @@ class TestGrpc:
|
|||
assert response.result is expected
|
||||
if expected is True:
|
||||
with pytest.raises(CoreError):
|
||||
assert session.get_node(node.id)
|
||||
assert session.get_node(node.id, CoreNode)
|
||||
|
||||
def test_node_command(self, request, grpc_server):
|
||||
if request.config.getoption("mock"):
|
||||
|
|
|
@ -24,6 +24,8 @@ from core.emane.ieee80211abg import EmaneIeee80211abgModel
|
|||
from core.emulator.enumerations import EventTypes, MessageFlags, NodeTypes, RegisterTlvs
|
||||
from core.errors import CoreError
|
||||
from core.location.mobility import BasicRangeModel
|
||||
from core.nodes.base import CoreNode, NodeBase
|
||||
from core.nodes.network import SwitchNode
|
||||
|
||||
|
||||
def dict_to_str(values):
|
||||
|
@ -57,8 +59,7 @@ class TestGui:
|
|||
)
|
||||
|
||||
coretlv.handle_message(message)
|
||||
|
||||
assert coretlv.session.get_node(node_id) is not None
|
||||
assert coretlv.session.get_node(node_id, NodeBase) is not None
|
||||
|
||||
def test_node_update(self, coretlv):
|
||||
node_id = 1
|
||||
|
@ -76,7 +77,7 @@ class TestGui:
|
|||
|
||||
coretlv.handle_message(message)
|
||||
|
||||
node = coretlv.session.get_node(node_id)
|
||||
node = coretlv.session.get_node(node_id, NodeBase)
|
||||
assert node is not None
|
||||
assert node.position.x == x
|
||||
assert node.position.y == y
|
||||
|
@ -91,7 +92,7 @@ class TestGui:
|
|||
coretlv.handle_message(message)
|
||||
|
||||
with pytest.raises(CoreError):
|
||||
coretlv.session.get_node(node_id)
|
||||
coretlv.session.get_node(node_id, NodeBase)
|
||||
|
||||
def test_link_add_node_to_net(self, coretlv):
|
||||
node_one = 1
|
||||
|
@ -113,7 +114,7 @@ class TestGui:
|
|||
|
||||
coretlv.handle_message(message)
|
||||
|
||||
switch_node = coretlv.session.get_node(switch)
|
||||
switch_node = coretlv.session.get_node(switch, SwitchNode)
|
||||
all_links = switch_node.all_link_data()
|
||||
assert len(all_links) == 1
|
||||
|
||||
|
@ -137,7 +138,7 @@ class TestGui:
|
|||
|
||||
coretlv.handle_message(message)
|
||||
|
||||
switch_node = coretlv.session.get_node(switch)
|
||||
switch_node = coretlv.session.get_node(switch, SwitchNode)
|
||||
all_links = switch_node.all_link_data()
|
||||
assert len(all_links) == 1
|
||||
|
||||
|
@ -189,7 +190,7 @@ class TestGui:
|
|||
],
|
||||
)
|
||||
coretlv.handle_message(message)
|
||||
switch_node = coretlv.session.get_node(switch)
|
||||
switch_node = coretlv.session.get_node(switch, SwitchNode)
|
||||
all_links = switch_node.all_link_data()
|
||||
assert len(all_links) == 1
|
||||
link = all_links[0]
|
||||
|
@ -207,7 +208,7 @@ class TestGui:
|
|||
)
|
||||
coretlv.handle_message(message)
|
||||
|
||||
switch_node = coretlv.session.get_node(switch)
|
||||
switch_node = coretlv.session.get_node(switch, SwitchNode)
|
||||
all_links = switch_node.all_link_data()
|
||||
assert len(all_links) == 1
|
||||
link = all_links[0]
|
||||
|
@ -275,7 +276,7 @@ class TestGui:
|
|||
],
|
||||
)
|
||||
coretlv.handle_message(message)
|
||||
switch_node = coretlv.session.get_node(switch)
|
||||
switch_node = coretlv.session.get_node(switch, SwitchNode)
|
||||
all_links = switch_node.all_link_data()
|
||||
assert len(all_links) == 1
|
||||
|
||||
|
@ -289,7 +290,7 @@ class TestGui:
|
|||
)
|
||||
coretlv.handle_message(message)
|
||||
|
||||
switch_node = coretlv.session.get_node(switch)
|
||||
switch_node = coretlv.session.get_node(switch, SwitchNode)
|
||||
all_links = switch_node.all_link_data()
|
||||
assert len(all_links) == 0
|
||||
|
||||
|
@ -311,7 +312,7 @@ class TestGui:
|
|||
],
|
||||
)
|
||||
coretlv.handle_message(message)
|
||||
switch_node = coretlv.session.get_node(switch)
|
||||
switch_node = coretlv.session.get_node(switch, SwitchNode)
|
||||
all_links = switch_node.all_link_data()
|
||||
assert len(all_links) == 1
|
||||
|
||||
|
@ -325,7 +326,7 @@ class TestGui:
|
|||
)
|
||||
coretlv.handle_message(message)
|
||||
|
||||
switch_node = coretlv.session.get_node(switch)
|
||||
switch_node = coretlv.session.get_node(switch, SwitchNode)
|
||||
all_links = switch_node.all_link_data()
|
||||
assert len(all_links) == 0
|
||||
|
||||
|
@ -556,8 +557,7 @@ class TestGui:
|
|||
)
|
||||
|
||||
coretlv.handle_message(message)
|
||||
|
||||
assert coretlv.session.get_node(node.id)
|
||||
assert coretlv.session.get_node(node.id, NodeBase)
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"state",
|
||||
|
@ -619,7 +619,7 @@ class TestGui:
|
|||
|
||||
coretlv.handle_message(message)
|
||||
|
||||
assert coretlv.coreemu.sessions[1].get_node(node.id)
|
||||
assert coretlv.coreemu.sessions[1].get_node(node.id, CoreNode)
|
||||
|
||||
def test_register_python(self, coretlv, tmpdir):
|
||||
xml_file = tmpdir.join("test.py")
|
||||
|
|
|
@ -3,6 +3,7 @@ import pytest
|
|||
from core.emulator.emudata import NodeOptions
|
||||
from core.emulator.enumerations import NodeTypes
|
||||
from core.errors import CoreError
|
||||
from core.nodes.base import CoreNode
|
||||
|
||||
MODELS = ["router", "host", "PC", "mdr"]
|
||||
NET_TYPES = [NodeTypes.SWITCH, NodeTypes.HUB, NodeTypes.WIRELESS_LAN]
|
||||
|
@ -45,7 +46,7 @@ class TestNodes:
|
|||
|
||||
# then
|
||||
with pytest.raises(CoreError):
|
||||
session.get_node(node.id)
|
||||
session.get_node(node.id, CoreNode)
|
||||
|
||||
def test_node_sethwaddr(self, session):
|
||||
# given
|
||||
|
|
|
@ -6,6 +6,8 @@ from core.emulator.emudata import LinkOptions, NodeOptions
|
|||
from core.emulator.enumerations import EventTypes, NodeTypes
|
||||
from core.errors import CoreError
|
||||
from core.location.mobility import BasicRangeModel
|
||||
from core.nodes.base import CoreNode
|
||||
from core.nodes.network import SwitchNode, WlanNode
|
||||
from core.services.utility import SshService
|
||||
|
||||
|
||||
|
@ -91,16 +93,16 @@ class TestXml:
|
|||
|
||||
# verify nodes have been removed from session
|
||||
with pytest.raises(CoreError):
|
||||
assert not session.get_node(n1_id)
|
||||
assert not session.get_node(n1_id, CoreNode)
|
||||
with pytest.raises(CoreError):
|
||||
assert not session.get_node(n2_id)
|
||||
assert not session.get_node(n2_id, CoreNode)
|
||||
|
||||
# load saved xml
|
||||
session.open_xml(file_path, start=True)
|
||||
|
||||
# verify nodes have been recreated
|
||||
assert session.get_node(n1_id)
|
||||
assert session.get_node(n2_id)
|
||||
assert session.get_node(n1_id, CoreNode)
|
||||
assert session.get_node(n2_id, CoreNode)
|
||||
|
||||
def test_xml_ptp_services(self, session, tmpdir, ip_prefixes):
|
||||
"""
|
||||
|
@ -152,9 +154,9 @@ class TestXml:
|
|||
|
||||
# verify nodes have been removed from session
|
||||
with pytest.raises(CoreError):
|
||||
assert not session.get_node(n1_id)
|
||||
assert not session.get_node(n1_id, CoreNode)
|
||||
with pytest.raises(CoreError):
|
||||
assert not session.get_node(n2_id)
|
||||
assert not session.get_node(n2_id, CoreNode)
|
||||
|
||||
# load saved xml
|
||||
session.open_xml(file_path, start=True)
|
||||
|
@ -163,8 +165,8 @@ class TestXml:
|
|||
service = session.services.get_service(node_one.id, SshService.name)
|
||||
|
||||
# verify nodes have been recreated
|
||||
assert session.get_node(n1_id)
|
||||
assert session.get_node(n2_id)
|
||||
assert session.get_node(n1_id, CoreNode)
|
||||
assert session.get_node(n2_id, CoreNode)
|
||||
assert service.config_data.get(service_file) == file_data
|
||||
|
||||
def test_xml_mobility(self, session, tmpdir, ip_prefixes):
|
||||
|
@ -212,9 +214,9 @@ class TestXml:
|
|||
|
||||
# verify nodes have been removed from session
|
||||
with pytest.raises(CoreError):
|
||||
assert not session.get_node(n1_id)
|
||||
assert not session.get_node(n1_id, CoreNode)
|
||||
with pytest.raises(CoreError):
|
||||
assert not session.get_node(n2_id)
|
||||
assert not session.get_node(n2_id, CoreNode)
|
||||
|
||||
# load saved xml
|
||||
session.open_xml(file_path, start=True)
|
||||
|
@ -223,9 +225,9 @@ class TestXml:
|
|||
value = str(session.mobility.get_config("test", wlan_id, BasicRangeModel.name))
|
||||
|
||||
# verify nodes and configuration were restored
|
||||
assert session.get_node(n1_id)
|
||||
assert session.get_node(n2_id)
|
||||
assert session.get_node(wlan_id)
|
||||
assert session.get_node(n1_id, CoreNode)
|
||||
assert session.get_node(n2_id, CoreNode)
|
||||
assert session.get_node(wlan_id, WlanNode)
|
||||
assert value == "1"
|
||||
|
||||
def test_network_to_network(self, session, tmpdir):
|
||||
|
@ -263,16 +265,16 @@ class TestXml:
|
|||
|
||||
# verify nodes have been removed from session
|
||||
with pytest.raises(CoreError):
|
||||
assert not session.get_node(n1_id)
|
||||
assert not session.get_node(n1_id, SwitchNode)
|
||||
with pytest.raises(CoreError):
|
||||
assert not session.get_node(n2_id)
|
||||
assert not session.get_node(n2_id, SwitchNode)
|
||||
|
||||
# load saved xml
|
||||
session.open_xml(file_path, start=True)
|
||||
|
||||
# verify nodes have been recreated
|
||||
switch_one = session.get_node(n1_id)
|
||||
switch_two = session.get_node(n2_id)
|
||||
switch_one = session.get_node(n1_id, SwitchNode)
|
||||
switch_two = session.get_node(n2_id, SwitchNode)
|
||||
assert switch_one
|
||||
assert switch_two
|
||||
assert len(switch_one.all_link_data() + switch_two.all_link_data()) == 1
|
||||
|
@ -322,16 +324,16 @@ class TestXml:
|
|||
|
||||
# verify nodes have been removed from session
|
||||
with pytest.raises(CoreError):
|
||||
assert not session.get_node(n1_id)
|
||||
assert not session.get_node(n1_id, CoreNode)
|
||||
with pytest.raises(CoreError):
|
||||
assert not session.get_node(n2_id)
|
||||
assert not session.get_node(n2_id, SwitchNode)
|
||||
|
||||
# load saved xml
|
||||
session.open_xml(file_path, start=True)
|
||||
|
||||
# verify nodes have been recreated
|
||||
assert session.get_node(n1_id)
|
||||
assert session.get_node(n2_id)
|
||||
assert session.get_node(n1_id, CoreNode)
|
||||
assert session.get_node(n2_id, SwitchNode)
|
||||
links = []
|
||||
for node_id in session.nodes:
|
||||
node = session.nodes[node_id]
|
||||
|
@ -389,16 +391,16 @@ class TestXml:
|
|||
|
||||
# verify nodes have been removed from session
|
||||
with pytest.raises(CoreError):
|
||||
assert not session.get_node(n1_id)
|
||||
assert not session.get_node(n1_id, CoreNode)
|
||||
with pytest.raises(CoreError):
|
||||
assert not session.get_node(n2_id)
|
||||
assert not session.get_node(n2_id, CoreNode)
|
||||
|
||||
# load saved xml
|
||||
session.open_xml(file_path, start=True)
|
||||
|
||||
# verify nodes have been recreated
|
||||
assert session.get_node(n1_id)
|
||||
assert session.get_node(n2_id)
|
||||
assert session.get_node(n1_id, CoreNode)
|
||||
assert session.get_node(n2_id, CoreNode)
|
||||
links = []
|
||||
for node_id in session.nodes:
|
||||
node = session.nodes[node_id]
|
||||
|
@ -471,16 +473,16 @@ class TestXml:
|
|||
|
||||
# verify nodes have been removed from session
|
||||
with pytest.raises(CoreError):
|
||||
assert not session.get_node(n1_id)
|
||||
assert not session.get_node(n1_id, CoreNode)
|
||||
with pytest.raises(CoreError):
|
||||
assert not session.get_node(n2_id)
|
||||
assert not session.get_node(n2_id, CoreNode)
|
||||
|
||||
# load saved xml
|
||||
session.open_xml(file_path, start=True)
|
||||
|
||||
# verify nodes have been recreated
|
||||
assert session.get_node(n1_id)
|
||||
assert session.get_node(n2_id)
|
||||
assert session.get_node(n1_id, CoreNode)
|
||||
assert session.get_node(n2_id, CoreNode)
|
||||
links = []
|
||||
for node_id in session.nodes:
|
||||
node = session.nodes[node_id]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue