2018-04-26 00:33:58 +01:00
|
|
|
import os
|
|
|
|
import time
|
|
|
|
|
|
|
|
import pytest
|
2019-09-11 05:33:35 +01:00
|
|
|
|
2019-09-28 07:29:15 +01:00
|
|
|
from core import utils
|
2018-05-01 18:40:25 +01:00
|
|
|
from core.emulator.emudata import NodeOptions
|
2019-04-30 07:31:47 +01:00
|
|
|
from core.emulator.enumerations import NodeTypes
|
2019-09-28 07:29:15 +01:00
|
|
|
from core.errors import CoreError
|
2018-04-26 00:33:58 +01:00
|
|
|
|
2019-09-10 23:10:24 +01:00
|
|
|
MODELS = ["router", "host", "PC", "mdr"]
|
|
|
|
|
|
|
|
NET_TYPES = [NodeTypes.SWITCH, NodeTypes.HUB, NodeTypes.WIRELESS_LAN]
|
2018-04-26 00:33:58 +01:00
|
|
|
|
|
|
|
|
|
|
|
class TestNodes:
|
|
|
|
@pytest.mark.parametrize("model", MODELS)
|
|
|
|
def test_node_add(self, session, model):
|
|
|
|
# given
|
|
|
|
node_options = NodeOptions(model=model)
|
|
|
|
|
|
|
|
# when
|
|
|
|
node = session.add_node(node_options=node_options)
|
|
|
|
|
|
|
|
# give time for node services to boot
|
|
|
|
time.sleep(1)
|
|
|
|
|
|
|
|
# then
|
|
|
|
assert node
|
|
|
|
assert os.path.exists(node.nodedir)
|
|
|
|
assert node.alive()
|
|
|
|
assert node.up
|
2019-10-12 00:36:57 +01:00
|
|
|
assert node.node_net_cmd("ip address show lo")
|
2018-04-26 00:33:58 +01:00
|
|
|
|
|
|
|
def test_node_update(self, session):
|
|
|
|
# given
|
|
|
|
node = session.add_node()
|
|
|
|
position_value = 100
|
|
|
|
update_options = NodeOptions()
|
|
|
|
update_options.set_position(x=position_value, y=position_value)
|
|
|
|
|
|
|
|
# when
|
2019-04-27 06:07:51 +01:00
|
|
|
session.update_node(node.id, update_options)
|
2018-04-26 00:33:58 +01:00
|
|
|
|
|
|
|
# then
|
|
|
|
assert node.position.x == position_value
|
|
|
|
assert node.position.y == position_value
|
|
|
|
|
|
|
|
def test_node_delete(self, session):
|
|
|
|
# given
|
|
|
|
node = session.add_node()
|
|
|
|
|
|
|
|
# when
|
2019-04-27 06:07:51 +01:00
|
|
|
session.delete_node(node.id)
|
2018-04-26 00:33:58 +01:00
|
|
|
|
|
|
|
# then
|
2019-09-11 21:12:42 +01:00
|
|
|
with pytest.raises(CoreError):
|
2019-04-30 07:31:47 +01:00
|
|
|
session.get_node(node.id)
|
2018-04-26 00:33:58 +01:00
|
|
|
|
|
|
|
@pytest.mark.parametrize("net_type", NET_TYPES)
|
|
|
|
def test_net(self, session, net_type):
|
|
|
|
# given
|
|
|
|
|
|
|
|
# when
|
|
|
|
node = session.add_node(_type=net_type)
|
|
|
|
|
|
|
|
# then
|
|
|
|
assert node
|
|
|
|
assert node.up
|
2019-10-18 03:25:52 +01:00
|
|
|
assert utils.check_cmd(f"brctl show {node.brname}")
|