added mock for python testing, removed a couple unused methods, added some more quick tests for a variety of interface related methods
This commit is contained in:
parent
62e8ff8731
commit
ebe3b9e3e3
7 changed files with 80 additions and 54 deletions
|
@ -437,6 +437,7 @@ class CoreBroker(ConfigurableManager):
|
|||
"""
|
||||
try:
|
||||
net = self.session.get_object(node_id)
|
||||
logger.info("adding net tunnel for: id(%s) %s", node_id, net)
|
||||
except KeyError:
|
||||
raise KeyError("network node %s not found" % node_id)
|
||||
|
||||
|
@ -583,7 +584,9 @@ class CoreBroker(ConfigurableManager):
|
|||
:param int nodenum: node id to add
|
||||
:return: nothing
|
||||
"""
|
||||
logger.info("adding net to broker: %s", nodenum)
|
||||
self.network_nodes.add(nodenum)
|
||||
logger.info("broker network nodes: %s", self.network_nodes)
|
||||
|
||||
def addphys(self, nodenum):
|
||||
"""
|
||||
|
@ -1010,10 +1013,10 @@ class CoreBroker(ConfigurableManager):
|
|||
for server in servers:
|
||||
if server.name == "localhost":
|
||||
continue
|
||||
try:
|
||||
|
||||
lhost, lport = None, None
|
||||
if server.sock:
|
||||
lhost, lport = server.sock.getsockname()
|
||||
except IOError:
|
||||
lhost, lport = None, None
|
||||
f.write("%s %s %s %s %s\n" % (server.name, server.host, server.port, lhost, lport))
|
||||
except IOError:
|
||||
logger.exception("error writing server list to the file: %s" % filename)
|
||||
|
|
|
@ -273,16 +273,6 @@ class PyCoreNode(PyCoreObj):
|
|||
self.nodedir = None
|
||||
self.tmpnodedir = False
|
||||
|
||||
# TODO: getter method that should not be needed
|
||||
def nodeid(self):
|
||||
"""
|
||||
Retrieve node id.
|
||||
|
||||
:return: node id
|
||||
:rtype: int
|
||||
"""
|
||||
return self.objid
|
||||
|
||||
def addservice(self, service):
|
||||
"""
|
||||
Add a services to the service list.
|
||||
|
@ -465,35 +455,6 @@ class PyCoreNet(PyCoreObj):
|
|||
with self._linked_lock:
|
||||
del self._linked[netif]
|
||||
|
||||
# TODO: needs to be abstracted out, seems like it may be ok to remove
|
||||
def netifparamstolink(self, netif):
|
||||
"""
|
||||
Helper for tolinkmsgs() to build TLVs having link parameters from interface parameters.
|
||||
|
||||
:param PyCoreNetIf netif: network interface to retrieve params from
|
||||
:return: tlv data
|
||||
"""
|
||||
|
||||
delay = netif.getparam("delay")
|
||||
bw = netif.getparam("bw")
|
||||
loss = netif.getparam("loss")
|
||||
duplicate = netif.getparam("duplicate")
|
||||
jitter = netif.getparam("jitter")
|
||||
|
||||
tlvdata = ""
|
||||
if delay is not None:
|
||||
tlvdata += coreapi.CoreLinkTlv.pack(LinkTlvs.DELAY.value, delay)
|
||||
if bw is not None:
|
||||
tlvdata += coreapi.CoreLinkTlv.pack(LinkTlvs.BANDWIDTH.value, bw)
|
||||
if loss is not None:
|
||||
tlvdata += coreapi.CoreLinkTlv.pack(LinkTlvs.PER.value, str(loss))
|
||||
if duplicate is not None:
|
||||
tlvdata += coreapi.CoreLinkTlv.pack(LinkTlvs.DUP.value, str(duplicate))
|
||||
if jitter is not None:
|
||||
tlvdata += coreapi.CoreLinkTlv.pack(LinkTlvs.JITTER.value, jitter)
|
||||
|
||||
return tlvdata
|
||||
|
||||
def all_link_data(self, flags):
|
||||
"""
|
||||
Build link data objects for this network. Each link object describes a link
|
||||
|
|
|
@ -168,7 +168,7 @@ class CoreDocumentWriter0(Document):
|
|||
n = self.createElement("Node")
|
||||
self.np.appendChild(n)
|
||||
n.setAttribute("name", node.name)
|
||||
n.setAttribute("id", "%s" % node.nodeid())
|
||||
n.setAttribute("id", "%s" % node.objid)
|
||||
if node.type:
|
||||
n.setAttribute("type", node.type)
|
||||
self.addinterfaces(n, node)
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
enum34==1.1.6
|
||||
grpcio==1.0.0
|
||||
grpcio-tools==1.0.0
|
||||
mock==1.3.0
|
||||
pycco==0.5.1
|
||||
pytest==3.0.7
|
||||
pytest-cov==2.5.1
|
||||
pytest-runner==2.11.1
|
||||
sphinx==1.4.8
|
||||
sphinx_rtd_theme==0.1.9
|
||||
pytest==3.0.7
|
||||
pytest-runner==2.11.1
|
||||
pytest-cov==2.5.1
|
||||
|
|
|
@ -32,7 +32,8 @@ setup(name="core-python",
|
|||
],
|
||||
tests_require=[
|
||||
"pytest",
|
||||
"pytest-cov"
|
||||
"pytest-cov",
|
||||
"mock"
|
||||
],
|
||||
description="Python components of CORE",
|
||||
url="http://www.nrl.navy.mil/itd/ncs/products/core",
|
||||
|
|
9
daemon/test.py
Normal file
9
daemon/test.py
Normal file
|
@ -0,0 +1,9 @@
|
|||
import pytest
|
||||
|
||||
pytest.main([
|
||||
"-v",
|
||||
"--cov-report",
|
||||
"xml",
|
||||
"--cov=.",
|
||||
"tests/test_core.py"
|
||||
])
|
|
@ -4,14 +4,66 @@ Unit tests for testing with a CORE switch.
|
|||
|
||||
import time
|
||||
|
||||
from mock import MagicMock
|
||||
|
||||
from conftest import EMANE_SERVICES
|
||||
from core.enumerations import MessageFlags
|
||||
from core.mobility import BasicRangeModel
|
||||
from core.netns import nodes
|
||||
from core.phys.pnodes import PhysicalNode
|
||||
|
||||
|
||||
class TestCore:
|
||||
def skip_test_physical(self, core):
|
||||
|
||||
def test_netif(self, core):
|
||||
"""
|
||||
Test netif methods.
|
||||
|
||||
:param conftest.Core core: core fixture to test with
|
||||
"""
|
||||
|
||||
# create ptp
|
||||
ptp_node = core.session.add_object(cls=nodes.PtpNet)
|
||||
|
||||
# create nodes
|
||||
core.create_node("n1")
|
||||
core.create_node("n2")
|
||||
|
||||
# add interfaces
|
||||
n1_interface = core.add_interface(ptp_node, "n1")
|
||||
n2_interface = core.add_interface(ptp_node, "n2")
|
||||
|
||||
# get nodes
|
||||
n1 = core.get_node("n1")
|
||||
n2 = core.get_node("n2")
|
||||
|
||||
# instantiate session
|
||||
core.session.instantiate()
|
||||
|
||||
# assert node directories created
|
||||
core.assert_nodes()
|
||||
|
||||
# check link data gets generated
|
||||
assert ptp_node.all_link_data(MessageFlags.ADD.value)
|
||||
|
||||
# check common nets exist between linked nodes
|
||||
assert n1.commonnets(n2)
|
||||
assert n2.commonnets(n1)
|
||||
|
||||
# check we can retrieve netif index
|
||||
assert n1.getifindex(n1_interface) == 0
|
||||
assert n2.getifindex(n2_interface) == 0
|
||||
|
||||
# check interface parameters
|
||||
n1_interface.setparam("test", 1)
|
||||
assert n1_interface.getparam("test") == 1
|
||||
assert n1_interface.getparams()
|
||||
|
||||
# delete netif and test that if no longer exists
|
||||
n1.delnetif(0)
|
||||
assert not n1.netif(0)
|
||||
|
||||
def test_physical(self, core):
|
||||
"""
|
||||
Test physical node network.
|
||||
|
||||
|
@ -22,8 +74,11 @@ class TestCore:
|
|||
switch_node = core.session.add_object(cls=nodes.SwitchNode)
|
||||
|
||||
# create a physical node
|
||||
physical_node = core.session.add_object(cls=PhysicalNode, name="p1")
|
||||
core.nodes[physical_node.name] = physical_node
|
||||
core.create_node(cls=PhysicalNode, name="p1")
|
||||
|
||||
# mock method that will not work
|
||||
physical_node = core.get_node("p1")
|
||||
physical_node.newnetif = MagicMock(return_value=0)
|
||||
|
||||
# create regular node
|
||||
core.create_node("n1")
|
||||
|
@ -38,10 +93,6 @@ class TestCore:
|
|||
# assert node directories created
|
||||
core.assert_nodes()
|
||||
|
||||
# ping n2 from n1 and assert success
|
||||
status = core.ping("n1", "p1")
|
||||
assert not status
|
||||
|
||||
def test_ptp(self, core):
|
||||
"""
|
||||
Test ptp node network.
|
||||
|
|
Loading…
Reference in a new issue