daemon: adjustments to revamp how core nodes are created in session.add_node, nodes now provide a create_options function for node specific options that are type hinted
This commit is contained in:
parent
03e646031c
commit
2e3e085522
35 changed files with 646 additions and 478 deletions
|
@ -16,10 +16,10 @@ from core.emane.models.ieee80211abg import EmaneIeee80211abgModel
|
|||
from core.emane.models.rfpipe import EmaneRfPipeModel
|
||||
from core.emane.models.tdma import EmaneTdmaModel
|
||||
from core.emane.nodes import EmaneNet
|
||||
from core.emulator.data import IpPrefixes, NodeOptions
|
||||
from core.emulator.data import IpPrefixes
|
||||
from core.emulator.session import Session
|
||||
from core.errors import CoreCommandError, CoreError
|
||||
from core.nodes.base import CoreNode
|
||||
from core.nodes.base import CoreNode, Position
|
||||
|
||||
_EMANE_MODELS = [
|
||||
EmaneIeee80211abgModel,
|
||||
|
@ -53,19 +53,22 @@ class TestEmane:
|
|||
"""
|
||||
# create emane node for networking the core nodes
|
||||
session.set_location(47.57917, -122.13232, 2.00000, 1.0)
|
||||
options = NodeOptions()
|
||||
options.set_position(80, 50)
|
||||
options.emane = EmaneIeee80211abgModel.name
|
||||
emane_net1 = session.add_node(EmaneNet, options=options)
|
||||
options.emane = EmaneRfPipeModel.name
|
||||
emane_net2 = session.add_node(EmaneNet, options=options)
|
||||
options = EmaneNet.create_options()
|
||||
options.emane_model = EmaneIeee80211abgModel.name
|
||||
position = Position(x=80, y=50)
|
||||
emane_net1 = session.add_node(EmaneNet, position=position, options=options)
|
||||
options = EmaneNet.create_options()
|
||||
options.emane_model = EmaneRfPipeModel.name
|
||||
position = Position(x=80, y=50)
|
||||
emane_net2 = session.add_node(EmaneNet, position=position, options=options)
|
||||
|
||||
# create nodes
|
||||
options = NodeOptions(model="mdr")
|
||||
options.set_position(150, 150)
|
||||
node1 = session.add_node(CoreNode, options=options)
|
||||
options.set_position(300, 150)
|
||||
node2 = session.add_node(CoreNode, options=options)
|
||||
options = CoreNode.create_options()
|
||||
options.model = "mdr"
|
||||
position = Position(x=150, y=150)
|
||||
node1 = session.add_node(CoreNode, position=position, options=options)
|
||||
position = Position(x=300, y=150)
|
||||
node2 = session.add_node(CoreNode, position=position, options=options)
|
||||
|
||||
# create interfaces
|
||||
ip_prefix1 = IpPrefixes("10.0.0.0/24")
|
||||
|
@ -100,9 +103,10 @@ class TestEmane:
|
|||
|
||||
# create emane node for networking the core nodes
|
||||
session.set_location(47.57917, -122.13232, 2.00000, 1.0)
|
||||
options = NodeOptions(emane=model.name)
|
||||
options.set_position(80, 50)
|
||||
emane_network = session.add_node(EmaneNet, options=options)
|
||||
options = EmaneNet.create_options()
|
||||
options.emane_model = model.name
|
||||
position = Position(x=80, y=50)
|
||||
emane_network = session.add_node(EmaneNet, position=position, options=options)
|
||||
|
||||
# configure tdma
|
||||
if model == EmaneTdmaModel:
|
||||
|
@ -111,11 +115,12 @@ class TestEmane:
|
|||
)
|
||||
|
||||
# create nodes
|
||||
options = NodeOptions(model="mdr")
|
||||
options.set_position(150, 150)
|
||||
node1 = session.add_node(CoreNode, options=options)
|
||||
options.set_position(300, 150)
|
||||
node2 = session.add_node(CoreNode, options=options)
|
||||
options = CoreNode.create_options()
|
||||
options.model = "mdr"
|
||||
position = Position(x=150, y=150)
|
||||
node1 = session.add_node(CoreNode, position=position, options=options)
|
||||
position = Position(x=300, y=150)
|
||||
node2 = session.add_node(CoreNode, position=position, options=options)
|
||||
|
||||
for i, node in enumerate([node1, node2]):
|
||||
node.setposition(x=150 * (i + 1), y=150)
|
||||
|
@ -141,9 +146,10 @@ class TestEmane:
|
|||
"""
|
||||
# create emane node for networking the core nodes
|
||||
session.set_location(47.57917, -122.13232, 2.00000, 1.0)
|
||||
options = NodeOptions(emane=EmaneIeee80211abgModel.name)
|
||||
options.set_position(80, 50)
|
||||
emane_network = session.add_node(EmaneNet, options=options)
|
||||
options = EmaneNet.create_options()
|
||||
options.emane_model = EmaneIeee80211abgModel.name
|
||||
position = Position(x=80, y=50)
|
||||
emane_network = session.add_node(EmaneNet, position=position, options=options)
|
||||
config_key = "txpower"
|
||||
config_value = "10"
|
||||
session.emane.set_config(
|
||||
|
@ -151,11 +157,12 @@ class TestEmane:
|
|||
)
|
||||
|
||||
# create nodes
|
||||
options = NodeOptions(model="mdr")
|
||||
options.set_position(150, 150)
|
||||
node1 = session.add_node(CoreNode, options=options)
|
||||
options.set_position(300, 150)
|
||||
node2 = session.add_node(CoreNode, options=options)
|
||||
options = CoreNode.create_options()
|
||||
options.model = "mdr"
|
||||
position = Position(x=150, y=150)
|
||||
node1 = session.add_node(CoreNode, position=position, options=options)
|
||||
position = Position(x=300, y=150)
|
||||
node2 = session.add_node(CoreNode, position=position, options=options)
|
||||
|
||||
for i, node in enumerate([node1, node2]):
|
||||
node.setposition(x=150 * (i + 1), y=150)
|
||||
|
@ -205,14 +212,17 @@ class TestEmane:
|
|||
self, session: Session, tmpdir: TemporaryFile, ip_prefixes: IpPrefixes
|
||||
):
|
||||
# create nodes
|
||||
options = NodeOptions(model="mdr", x=50, y=50)
|
||||
node1 = session.add_node(CoreNode, options=options)
|
||||
options = CoreNode.create_options()
|
||||
options.model = "mdr"
|
||||
position = Position(x=50, y=50)
|
||||
node1 = session.add_node(CoreNode, position=position, options=options)
|
||||
iface1_data = ip_prefixes.create_iface(node1)
|
||||
node2 = session.add_node(CoreNode, options=options)
|
||||
node2 = session.add_node(CoreNode, position=position, options=options)
|
||||
iface2_data = ip_prefixes.create_iface(node2)
|
||||
|
||||
# create emane node
|
||||
options = NodeOptions(model=None, emane=EmaneRfPipeModel.name)
|
||||
options = EmaneNet.create_options()
|
||||
options.emane_model = EmaneRfPipeModel.name
|
||||
emane_node = session.add_node(EmaneNet, options=options)
|
||||
|
||||
# create links
|
||||
|
@ -255,11 +265,7 @@ class TestEmane:
|
|||
assert session.get_node(node1.id, CoreNode)
|
||||
assert session.get_node(node2.id, CoreNode)
|
||||
assert session.get_node(emane_node.id, EmaneNet)
|
||||
links = []
|
||||
for node_id in session.nodes:
|
||||
node = session.nodes[node_id]
|
||||
links += node.links()
|
||||
assert len(links) == 2
|
||||
assert len(session.link_manager.links()) == 2
|
||||
config = session.emane.get_config(node1.id, EmaneRfPipeModel.name)
|
||||
assert config["datarate"] == datarate
|
||||
|
||||
|
@ -267,14 +273,17 @@ class TestEmane:
|
|||
self, session: Session, tmpdir: TemporaryFile, ip_prefixes: IpPrefixes
|
||||
):
|
||||
# create nodes
|
||||
options = NodeOptions(model="mdr", x=50, y=50)
|
||||
node1 = session.add_node(CoreNode, options=options)
|
||||
options = CoreNode.create_options()
|
||||
options.model = "mdr"
|
||||
position = Position(x=50, y=50)
|
||||
node1 = session.add_node(CoreNode, position=position, options=options)
|
||||
iface1_data = ip_prefixes.create_iface(node1)
|
||||
node2 = session.add_node(CoreNode, options=options)
|
||||
node2 = session.add_node(CoreNode, position=position, options=options)
|
||||
iface2_data = ip_prefixes.create_iface(node2)
|
||||
|
||||
# create emane node
|
||||
options = NodeOptions(model=None, emane=EmaneRfPipeModel.name)
|
||||
options = EmaneNet.create_options()
|
||||
options.emane_model = EmaneRfPipeModel.name
|
||||
emane_node = session.add_node(EmaneNet, options=options)
|
||||
|
||||
# create links
|
||||
|
@ -318,10 +327,6 @@ class TestEmane:
|
|||
assert session.get_node(node1.id, CoreNode)
|
||||
assert session.get_node(node2.id, CoreNode)
|
||||
assert session.get_node(emane_node.id, EmaneNet)
|
||||
links = []
|
||||
for node_id in session.nodes:
|
||||
node = session.nodes[node_id]
|
||||
links += node.links()
|
||||
assert len(links) == 2
|
||||
assert len(session.link_manager.links()) == 2
|
||||
config = session.emane.get_config(config_id, EmaneRfPipeModel.name)
|
||||
assert config["datarate"] == datarate
|
||||
|
|
|
@ -8,7 +8,7 @@ from typing import List, Type
|
|||
|
||||
import pytest
|
||||
|
||||
from core.emulator.data import IpPrefixes, NodeOptions
|
||||
from core.emulator.data import IpPrefixes
|
||||
from core.emulator.session import Session
|
||||
from core.errors import CoreCommandError
|
||||
from core.location.mobility import BasicRangeModel, Ns2ScriptedMobility
|
||||
|
@ -75,8 +75,8 @@ class TestCore:
|
|||
session.mobility.set_model(wlan_node, BasicRangeModel)
|
||||
|
||||
# create nodes
|
||||
options = NodeOptions(model="mdr")
|
||||
options.set_position(0, 0)
|
||||
options = CoreNode.create_options()
|
||||
options.model = "mdr"
|
||||
node1 = session.add_node(CoreNode, options=options)
|
||||
node2 = session.add_node(CoreNode, options=options)
|
||||
|
||||
|
@ -105,8 +105,8 @@ class TestCore:
|
|||
session.mobility.set_model(wlan_node, BasicRangeModel)
|
||||
|
||||
# create nodes
|
||||
options = NodeOptions(model="mdr")
|
||||
options.set_position(0, 0)
|
||||
options = CoreNode.create_options()
|
||||
options.model = "mdr"
|
||||
node1 = session.add_node(CoreNode, options=options)
|
||||
node2 = session.add_node(CoreNode, options=options)
|
||||
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
from core.emulator.data import NodeOptions
|
||||
from core.emulator.session import Session
|
||||
from core.nodes.base import CoreNode
|
||||
from core.nodes.network import HubNode
|
||||
|
@ -12,8 +11,7 @@ class TestDistributed:
|
|||
|
||||
# when
|
||||
session.distributed.add_server(server_name, host)
|
||||
options = NodeOptions(server=server_name)
|
||||
node = session.add_node(CoreNode, options=options)
|
||||
node = session.add_node(CoreNode, server=server_name)
|
||||
session.instantiate()
|
||||
|
||||
# then
|
||||
|
@ -30,8 +28,7 @@ class TestDistributed:
|
|||
# when
|
||||
session.distributed.add_server(server_name, host)
|
||||
node1 = session.add_node(HubNode)
|
||||
options = NodeOptions(server=server_name)
|
||||
node2 = session.add_node(HubNode, options=options)
|
||||
node2 = session.add_node(HubNode, server=server_name)
|
||||
session.add_link(node1.id, node2.id)
|
||||
session.instantiate()
|
||||
|
||||
|
|
|
@ -34,7 +34,7 @@ from core.api.grpc.wrappers import (
|
|||
)
|
||||
from core.emane.models.ieee80211abg import EmaneIeee80211abgModel
|
||||
from core.emane.nodes import EmaneNet
|
||||
from core.emulator.data import EventData, IpPrefixes, NodeData, NodeOptions
|
||||
from core.emulator.data import EventData, IpPrefixes, NodeData
|
||||
from core.emulator.enumerations import EventTypes, ExceptionLevels, MessageFlags
|
||||
from core.errors import CoreError
|
||||
from core.location.mobility import BasicRangeModel, Ns2ScriptedMobility
|
||||
|
@ -350,8 +350,7 @@ class TestGrpc:
|
|||
client = CoreGrpcClient()
|
||||
session = grpc_server.coreemu.create_session()
|
||||
session.set_state(EventTypes.CONFIGURATION_STATE)
|
||||
options = NodeOptions(model="Host")
|
||||
node = session.add_node(CoreNode, options=options)
|
||||
node = session.add_node(CoreNode)
|
||||
session.instantiate()
|
||||
expected_output = "hello world"
|
||||
expected_status = 0
|
||||
|
@ -369,8 +368,7 @@ class TestGrpc:
|
|||
client = CoreGrpcClient()
|
||||
session = grpc_server.coreemu.create_session()
|
||||
session.set_state(EventTypes.CONFIGURATION_STATE)
|
||||
options = NodeOptions(model="Host")
|
||||
node = session.add_node(CoreNode, options=options)
|
||||
node = session.add_node(CoreNode)
|
||||
session.instantiate()
|
||||
|
||||
# then
|
||||
|
@ -444,10 +442,12 @@ class TestGrpc:
|
|||
# given
|
||||
client = CoreGrpcClient()
|
||||
session = grpc_server.coreemu.create_session()
|
||||
session.set_state(EventTypes.CONFIGURATION_STATE)
|
||||
switch = session.add_node(SwitchNode)
|
||||
node = session.add_node(CoreNode)
|
||||
iface_data = ip_prefixes.create_iface(node)
|
||||
iface, _ = session.add_link(node.id, switch.id, iface_data)
|
||||
session.instantiate()
|
||||
options = LinkOptions(bandwidth=30000)
|
||||
assert iface.options.bandwidth != options.bandwidth
|
||||
link = Link(node.id, switch.id, iface1=Interface(id=iface.id), options=options)
|
||||
|
@ -535,7 +535,8 @@ class TestGrpc:
|
|||
client = CoreGrpcClient()
|
||||
session = grpc_server.coreemu.create_session()
|
||||
session.set_location(47.57917, -122.13232, 2.00000, 1.0)
|
||||
options = NodeOptions(emane=EmaneIeee80211abgModel.name)
|
||||
options = EmaneNet.create_options()
|
||||
options.emane_model = EmaneIeee80211abgModel.name
|
||||
emane_network = session.add_node(EmaneNet, options=options)
|
||||
session.emane.node_models[emane_network.id] = EmaneIeee80211abgModel.name
|
||||
config_key = "bandwidth"
|
||||
|
@ -565,7 +566,8 @@ class TestGrpc:
|
|||
client = CoreGrpcClient()
|
||||
session = grpc_server.coreemu.create_session()
|
||||
session.set_location(47.57917, -122.13232, 2.00000, 1.0)
|
||||
options = NodeOptions(emane=EmaneIeee80211abgModel.name)
|
||||
options = EmaneNet.create_options()
|
||||
options.emane_model = EmaneIeee80211abgModel.name
|
||||
emane_network = session.add_node(EmaneNet, options=options)
|
||||
session.emane.node_models[emane_network.id] = EmaneIeee80211abgModel.name
|
||||
|
||||
|
@ -685,7 +687,8 @@ class TestGrpc:
|
|||
# given
|
||||
client = CoreGrpcClient()
|
||||
session = grpc_server.coreemu.create_session()
|
||||
options = NodeOptions(legacy=True)
|
||||
options = CoreNode.create_options()
|
||||
options.legacy = True
|
||||
node = session.add_node(CoreNode, options=options)
|
||||
service_name = "DefaultRoute"
|
||||
|
||||
|
@ -932,6 +935,7 @@ class TestGrpc:
|
|||
# given
|
||||
client = CoreGrpcClient()
|
||||
session = grpc_server.coreemu.create_session()
|
||||
session.set_state(EventTypes.CONFIGURATION_STATE)
|
||||
wlan = session.add_node(WlanNode)
|
||||
node1 = session.add_node(CoreNode)
|
||||
node2 = session.add_node(CoreNode)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import pytest
|
||||
|
||||
from core.emulator.data import InterfaceData, NodeOptions
|
||||
from core.emulator.data import InterfaceData
|
||||
from core.emulator.session import Session
|
||||
from core.errors import CoreError
|
||||
from core.nodes.base import CoreNode
|
||||
|
@ -14,7 +14,8 @@ class TestNodes:
|
|||
@pytest.mark.parametrize("model", MODELS)
|
||||
def test_node_add(self, session: Session, model: str):
|
||||
# given
|
||||
options = NodeOptions(model=model)
|
||||
options = CoreNode.create_options()
|
||||
options.model = model
|
||||
|
||||
# when
|
||||
node = session.add_node(CoreNode, options=options)
|
||||
|
|
|
@ -4,7 +4,7 @@ from xml.etree import ElementTree
|
|||
|
||||
import pytest
|
||||
|
||||
from core.emulator.data import IpPrefixes, LinkOptions, NodeOptions
|
||||
from core.emulator.data import IpPrefixes, LinkOptions
|
||||
from core.emulator.enumerations import EventTypes
|
||||
from core.emulator.session import Session
|
||||
from core.errors import CoreError
|
||||
|
@ -116,8 +116,7 @@ class TestXml:
|
|||
:param ip_prefixes: generates ip addresses for nodes
|
||||
"""
|
||||
# create nodes
|
||||
options = NodeOptions(model="host")
|
||||
node1 = session.add_node(CoreNode, options=options)
|
||||
node1 = session.add_node(CoreNode)
|
||||
node2 = session.add_node(CoreNode)
|
||||
|
||||
# link nodes to ptp net
|
||||
|
@ -180,8 +179,8 @@ class TestXml:
|
|||
session.mobility.set_model(wlan, BasicRangeModel, {"test": "1"})
|
||||
|
||||
# create nodes
|
||||
options = NodeOptions(model="mdr")
|
||||
options.set_position(0, 0)
|
||||
options = CoreNode.create_options()
|
||||
options.model = "mdr"
|
||||
node1 = session.add_node(CoreNode, options=options)
|
||||
node2 = session.add_node(CoreNode, options=options)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue