daemon: refactoring to load emane models one time during startup, updates to account for this change

This commit is contained in:
Blake Harnden 2021-05-07 10:40:18 -07:00
parent 1ddb7b7b24
commit 50e3aadc6b
32 changed files with 271 additions and 332 deletions

View file

@ -9,13 +9,13 @@ from xml.etree import ElementTree
import pytest
from core import utils
from core.emane.bypass import EmaneBypassModel
from core.emane.commeffect import EmaneCommEffectModel
from core.emane.emanemodel import EmaneModel
from core.emane.ieee80211abg import EmaneIeee80211abgModel
from core.emane.models.bypass import EmaneBypassModel
from core.emane.models.commeffect import EmaneCommEffectModel
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.emane.rfpipe import EmaneRfPipeModel
from core.emane.tdma import EmaneTdmaModel
from core.emulator.data import IpPrefixes, NodeOptions
from core.emulator.session import Session
from core.errors import CoreCommandError, CoreError
@ -100,14 +100,13 @@ class TestEmane:
# create emane node for networking the core nodes
session.set_location(47.57917, -122.13232, 2.00000, 1.0)
options = NodeOptions()
options = NodeOptions(emane=model.name)
options.set_position(80, 50)
emane_network = session.add_node(EmaneNet, options=options)
session.emane.set_model(emane_network, model)
# configure tdma
if model == EmaneTdmaModel:
session.emane.set_model_config(
session.emane.set_config(
emane_network.id, EmaneTdmaModel.name, {"schedule": str(_SCHEDULE)}
)
@ -142,13 +141,13 @@ class TestEmane:
"""
# create emane node for networking the core nodes
session.set_location(47.57917, -122.13232, 2.00000, 1.0)
options = NodeOptions()
options = NodeOptions(emane=EmaneIeee80211abgModel.name)
options.set_position(80, 50)
emane_network = session.add_node(EmaneNet, options=options)
config_key = "txpower"
config_value = "10"
session.emane.set_model(
emane_network, EmaneIeee80211abgModel, {config_key: config_value}
session.emane.set_config(
emane_network.id, EmaneIeee80211abgModel.name, {config_key: config_value}
)
# create nodes
@ -174,7 +173,7 @@ class TestEmane:
# save xml
xml_file = tmpdir.join("session.xml")
file_path = xml_file.strpath
session.save_xml(file_path)
session.save_xml(Path(file_path))
# verify xml file was created and can be parsed
assert xml_file.isfile()
@ -190,12 +189,11 @@ class TestEmane:
assert not session.get_node(node2_id, CoreNode)
# load saved xml
session.open_xml(file_path, start=True)
session.open_xml(Path(file_path), start=True)
# retrieve configuration we set originally
value = str(
session.emane.get_config(config_key, emane_id, EmaneIeee80211abgModel.name)
)
config = session.emane.get_config(emane_id, EmaneIeee80211abgModel.name)
value = config[config_key]
# verify nodes and configuration were restored
assert session.get_node(node1_id, CoreNode)
@ -221,9 +219,9 @@ class TestEmane:
session.add_link(node1.id, emane_node.id, iface1_data)
session.add_link(node2.id, emane_node.id, iface2_data)
# set node specific conifg
# set node specific config
datarate = "101"
session.emane.set_model_config(
session.emane.set_config(
node1.id, EmaneRfPipeModel.name, {"datarate": datarate}
)
@ -233,7 +231,7 @@ class TestEmane:
# save xml
xml_file = tmpdir.join("session.xml")
file_path = xml_file.strpath
session.save_xml(file_path)
session.save_xml(Path(file_path))
# verify xml file was created and can be parsed
assert xml_file.isfile()
@ -251,7 +249,7 @@ class TestEmane:
assert not session.get_node(emane_node.id, EmaneNet)
# load saved xml
session.open_xml(file_path, start=True)
session.open_xml(Path(file_path), start=True)
# verify nodes have been recreated
assert session.get_node(node1.id, CoreNode)
@ -262,7 +260,7 @@ class TestEmane:
node = session.nodes[node_id]
links += node.links()
assert len(links) == 2
config = session.emane.get_model_config(node1.id, EmaneRfPipeModel.name)
config = session.emane.get_config(node1.id, EmaneRfPipeModel.name)
assert config["datarate"] == datarate
def test_xml_emane_interface_config(
@ -286,7 +284,7 @@ class TestEmane:
# set node specific conifg
datarate = "101"
config_id = utils.iface_config_id(node1.id, iface1_data.id)
session.emane.set_model_config(
session.emane.set_config(
config_id, EmaneRfPipeModel.name, {"datarate": datarate}
)
@ -296,7 +294,7 @@ class TestEmane:
# save xml
xml_file = tmpdir.join("session.xml")
file_path = xml_file.strpath
session.save_xml(file_path)
session.save_xml(Path(file_path))
# verify xml file was created and can be parsed
assert xml_file.isfile()
@ -314,7 +312,7 @@ class TestEmane:
assert not session.get_node(emane_node.id, EmaneNet)
# load saved xml
session.open_xml(file_path, start=True)
session.open_xml(Path(file_path), start=True)
# verify nodes have been recreated
assert session.get_node(node1.id, CoreNode)
@ -325,5 +323,5 @@ class TestEmane:
node = session.nodes[node_id]
links += node.links()
assert len(links) == 2
config = session.emane.get_model_config(config_id, EmaneRfPipeModel.name)
config = session.emane.get_config(config_id, EmaneRfPipeModel.name)
assert config["datarate"] == datarate

View file

@ -6,7 +6,7 @@ from core.config import (
Configuration,
ModelManager,
)
from core.emane.ieee80211abg import EmaneIeee80211abgModel
from core.emane.models.ieee80211abg import EmaneIeee80211abgModel
from core.emulator.enumerations import ConfigDataTypes
from core.emulator.session import Session
from core.location.mobility import BasicRangeModel

View file

@ -33,7 +33,7 @@ from core.api.grpc.wrappers import (
)
from core.api.tlv.dataconversion import ConfigShim
from core.api.tlv.enumerations import ConfigFlags
from core.emane.ieee80211abg import EmaneIeee80211abgModel
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.enumerations import EventTypes, ExceptionLevels
@ -151,7 +151,7 @@ class TestGrpc:
location_alt,
)
assert real_session.location.refscale == location_scale
assert real_session.emane.get_config(emane_config_key) == emane_config_value
assert real_session.emane.config[emane_config_key] == emane_config_value
set_wlan_config = real_session.mobility.get_model_config(
wlan_node.id, BasicRangeModel.name
)
@ -543,7 +543,7 @@ class TestGrpc:
# then
assert result is True
config = session.emane.get_configs()
config = session.emane.config
assert len(config) > 1
assert config[config_key] == config_value
@ -554,7 +554,7 @@ class TestGrpc:
session.set_location(47.57917, -122.13232, 2.00000, 1.0)
options = NodeOptions(emane=EmaneIeee80211abgModel.name)
emane_network = session.add_node(EmaneNet, options=options)
session.emane.set_model(emane_network, EmaneIeee80211abgModel)
session.emane.node_models[emane_network.id] = EmaneIeee80211abgModel.name
config_key = "bandwidth"
config_value = "900000"
option = ConfigOption(
@ -574,9 +574,7 @@ class TestGrpc:
# then
assert result is True
config = session.emane.get_model_config(
emane_network.id, EmaneIeee80211abgModel.name
)
config = session.emane.get_config(emane_network.id, EmaneIeee80211abgModel.name)
assert config[config_key] == config_value
def test_get_emane_model_config(self, grpc_server: CoreGrpcServer):
@ -586,7 +584,7 @@ class TestGrpc:
session.set_location(47.57917, -122.13232, 2.00000, 1.0)
options = NodeOptions(emane=EmaneIeee80211abgModel.name)
emane_network = session.add_node(EmaneNet, options=options)
session.emane.set_model(emane_network, EmaneIeee80211abgModel)
session.emane.node_models[emane_network.id] = EmaneIeee80211abgModel.name
# then
with client.context_connect():
@ -597,18 +595,6 @@ class TestGrpc:
# then
assert len(config) > 0
def test_get_emane_models(self, grpc_server: CoreGrpcServer):
# given
client = CoreGrpcClient()
session = grpc_server.coreemu.create_session()
# then
with client.context_connect():
models = client.get_emane_models(session.id)
# then
assert len(models) > 0
def test_get_mobility_config(self, grpc_server: CoreGrpcServer):
# given
client = CoreGrpcClient()

View file

@ -22,7 +22,7 @@ from core.api.tlv.enumerations import (
NodeTlvs,
SessionTlvs,
)
from core.emane.ieee80211abg import EmaneIeee80211abgModel
from core.emane.models.ieee80211abg import EmaneIeee80211abgModel
from core.emulator.enumerations import EventTypes, MessageFlags, NodeTypes, RegisterTlvs
from core.errors import CoreError
from core.location.mobility import BasicRangeModel
@ -939,9 +939,7 @@ class TestGui:
coretlv.handle_message(message)
config = coretlv.session.emane.get_model_config(
wlan.id, EmaneIeee80211abgModel.name
)
config = coretlv.session.emane.get_config(wlan.id, EmaneIeee80211abgModel.name)
assert config[config_key] == config_value
def test_config_emane_request(self, coretlv: CoreHandler):
@ -973,5 +971,5 @@ class TestGui:
coretlv.handle_message(message)
config = coretlv.session.emane.get_configs()
config = coretlv.session.emane.config
assert config[config_key] == config_value