fixed emane version checks, fixed emane config message handling, added initial emane test cases

This commit is contained in:
Blake J. Harnden 2017-07-10 09:25:33 -07:00
parent 613e550e8a
commit dced47b588
8 changed files with 275 additions and 57 deletions

View file

@ -19,8 +19,8 @@ class Core(object):
self.nodes = {}
self.node_ips = {}
def create_node(self, name):
node = self.session.add_object(cls=nodes.CoreNode, name=name)
def create_node(self, name, cls=nodes.CoreNode, objid=None):
node = self.session.add_object(cls=cls, name=name, objid=objid)
self.nodes[name] = node
def add_interface(self, network, name):

233
daemon/tests/test_emane.py Normal file
View file

@ -0,0 +1,233 @@
"""
Unit tests for testing with a CORE switch.
"""
from core.emane.bypass import EmaneBypassModel
from core.emane.commeffect import EmaneCommEffectModel
from core.emane.ieee80211abg import EmaneIeee80211abgModel
from core.emane.nodes import EmaneNode
from core.emane.rfpipe import EmaneRfPipeModel
from core.services import quagga
from core.services import utility
class TestGui:
def test_80211(self, core):
"""
Test emane 80211 model.
:param conftest.Core core: core fixture to test with
"""
# load services
quagga.load_services()
utility.load_services()
# set and load emane models
core.session.master = True
core.session.location.setrefgeo(47.57917, -122.13232, 2.00000)
core.session.location.refscale = 150.0
core.session.emane.loadmodels()
# create emane node for networking the core nodes
emane_node = core.session.add_object(name="emane", cls=EmaneNode)
emane_node.setposition(x=80, y=50)
# set the emane model
emane_model = EmaneIeee80211abgModel
values = emane_model.getdefaultvalues()
core.session.emane.setconfig(emane_node.objid, emane_model.name, values)
# create nodes
core.create_node("n1", objid=1)
core.create_node("n2", objid=2)
node_one = core.get_node("n1")
node_two = core.get_node("n2")
# set node positions
node_one.setposition(x=150, y=150)
node_two.setposition(x=300, y=150)
# add services
services = "zebra|OSPFv3MDR|IPForward"
core.session.services.addservicestonode(node_one, "", services)
core.session.services.addservicestonode(node_two, "", services)
# add interfaces to nodes
core.add_interface(emane_node, "n1")
core.add_interface(emane_node, "n2")
# instantiate session
core.session.instantiate()
# assert node directories created
core.assert_nodes()
# ping n2 from n1 and assert success
status = core.ping("n1", "n2")
assert not status
def test_rfpipe(self, core):
"""
Test emane 80211 model.
:param conftest.Core core: core fixture to test with
"""
# load services
quagga.load_services()
utility.load_services()
# set and load emane models
core.session.master = True
core.session.location.setrefgeo(47.57917, -122.13232, 2.00000)
core.session.location.refscale = 150.0
core.session.emane.loadmodels()
# create emane node for networking the core nodes
emane_node = core.session.add_object(name="emane", cls=EmaneNode)
emane_node.setposition(x=80, y=50)
# set the emane model
emane_model = EmaneRfPipeModel
values = emane_model.getdefaultvalues()
core.session.emane.setconfig(emane_node.objid, emane_model.name, values)
# create nodes
core.create_node("n1", objid=1)
core.create_node("n2", objid=2)
node_one = core.get_node("n1")
node_two = core.get_node("n2")
# set node positions
node_one.setposition(x=150, y=150)
node_two.setposition(x=300, y=150)
# add services
services = "zebra|OSPFv3MDR|IPForward"
core.session.services.addservicestonode(node_one, "", services)
core.session.services.addservicestonode(node_two, "", services)
# add interfaces to nodes
core.add_interface(emane_node, "n1")
core.add_interface(emane_node, "n2")
# instantiate session
core.session.instantiate()
# assert node directories created
core.assert_nodes()
# ping n2 from n1 and assert success
status = core.ping("n1", "n2")
assert not status
def test_commeffect(self, core):
"""
Test emane 80211 model.
:param conftest.Core core: core fixture to test with
"""
# load services
quagga.load_services()
utility.load_services()
# set and load emane models
core.session.master = True
core.session.location.setrefgeo(47.57917, -122.13232, 2.00000)
core.session.location.refscale = 150.0
core.session.emane.loadmodels()
# create emane node for networking the core nodes
emane_node = core.session.add_object(name="emane", cls=EmaneNode)
emane_node.setposition(x=80, y=50)
# set the emane model
emane_model = EmaneCommEffectModel
values = emane_model.getdefaultvalues()
core.session.emane.setconfig(emane_node.objid, emane_model.name, values)
# create nodes
core.create_node("n1", objid=1)
core.create_node("n2", objid=2)
node_one = core.get_node("n1")
node_two = core.get_node("n2")
# set node positions
node_one.setposition(x=150, y=150)
node_two.setposition(x=300, y=150)
# add services
services = "zebra|OSPFv3MDR|IPForward"
core.session.services.addservicestonode(node_one, "", services)
core.session.services.addservicestonode(node_two, "", services)
# add interfaces to nodes
core.add_interface(emane_node, "n1")
core.add_interface(emane_node, "n2")
# instantiate session
core.session.instantiate()
# assert node directories created
core.assert_nodes()
# ping n2 from n1 and assert success
status = core.ping("n1", "n2")
assert not status
def test_bypass(self, core):
"""
Test emane 80211 model.
:param conftest.Core core: core fixture to test with
"""
# load services
quagga.load_services()
utility.load_services()
# set and load emane models
core.session.master = True
core.session.location.setrefgeo(47.57917, -122.13232, 2.00000)
core.session.location.refscale = 150.0
core.session.emane.loadmodels()
# create emane node for networking the core nodes
emane_node = core.session.add_object(name="emane", cls=EmaneNode)
emane_node.setposition(x=80, y=50)
# set the emane model
emane_model = EmaneBypassModel
values = emane_model.getdefaultvalues()
core.session.emane.setconfig(emane_node.objid, emane_model.name, values)
# create nodes
core.create_node("n1", objid=1)
core.create_node("n2", objid=2)
node_one = core.get_node("n1")
node_two = core.get_node("n2")
# set node positions
node_one.setposition(x=150, y=150)
node_two.setposition(x=300, y=150)
# add services
services = "zebra|OSPFv3MDR|IPForward"
core.session.services.addservicestonode(node_one, "", services)
core.session.services.addservicestonode(node_two, "", services)
# add interfaces to nodes
core.add_interface(emane_node, "n1")
core.add_interface(emane_node, "n2")
# instantiate session
core.session.instantiate()
# assert node directories created
core.assert_nodes()
# ping n2 from n1 and assert success
status = core.ping("n1", "n2")
assert not status

View file

@ -3,10 +3,16 @@ Unit tests for testing with a CORE switch.
"""
from core.api import coreapi, dataconversion
from core.api.coreapi import CoreExecuteTlv
from core.enumerations import CORE_API_PORT, EventTypes, EventTlvs, MessageFlags, LinkTlvs, LinkTypes, ExecuteTlvs, \
MessageTypes
from core.enumerations import CORE_API_PORT
from core.enumerations import EventTlvs
from core.enumerations import EventTypes
from core.enumerations import ExecuteTlvs
from core.enumerations import LinkTlvs
from core.enumerations import LinkTypes
from core.enumerations import MessageFlags
from core.enumerations import MessageTypes
from core.misc import ipaddress
from core.netns.nodes import SwitchNode, CoreNode
from core.netns.nodes import SwitchNode
def cmd(node, exec_cmd):