From 7cbce0f81b7d4e7e8e493f38cd95728f1b9e2d61 Mon Sep 17 00:00:00 2001 From: Daniel Lintott Date: Fri, 8 Aug 2014 14:32:32 +0100 Subject: [PATCH] Fix test suite + Install VPCS and dynamips from GNS3 PPA + Drop netifaces-py3 from requirements.txt + Fix/update tests to use installed VPCS and dynamips --- .travis.yml | 5 +++++ requirements.txt | 1 - tests/dynamips/conftest.py | 5 ++--- tests/dynamips/test_c7200.py | 6 +++--- tests/dynamips/test_hypervisor.py | 5 ++--- tests/dynamips/test_hypervisor_manager.py | 5 ++--- tests/dynamips/test_router.py | 12 ++++++------ tests/iou/test_iou_device.py | 6 +++++- tests/vpcs/test_vpcs_device.py | 10 +++++++--- 9 files changed, 32 insertions(+), 23 deletions(-) diff --git a/.travis.yml b/.travis.yml index 2440f1dc..b52cdc35 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,9 +4,14 @@ python: - "3.3" - "3.4" +before_install: + - "sudo add-apt-repository ppa:gns3/ppa -y" + - "sudo apt-get update -q" + install: - "pip install -r requirements.txt --use-mirrors" - "pip install tox" + - "sudo apt-get install vpcs dynamips" script: "python setup.py test" diff --git a/requirements.txt b/requirements.txt index ae4f8b0a..e7e14a4b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,4 @@ netifaces tornado pyzmq -netifaces-py3 jsonschema diff --git a/tests/dynamips/conftest.py b/tests/dynamips/conftest.py index fce9f54b..ff70cd58 100644 --- a/tests/dynamips/conftest.py +++ b/tests/dynamips/conftest.py @@ -6,10 +6,9 @@ import os @pytest.fixture(scope="module") def hypervisor(request): - cwd = os.path.dirname(os.path.abspath(__file__)) - dynamips_path = os.path.join(cwd, "dynamips.stable") + dynamips_path = '/usr/bin/dynamips' print("\nStarting Dynamips Hypervisor: {}".format(dynamips_path)) - manager = HypervisorManager(dynamips_path, "/tmp", "127.0.0.1", 9000) + manager = HypervisorManager(dynamips_path, "/tmp", "127.0.0.1") hypervisor = manager.start_new_hypervisor() def stop(): diff --git a/tests/dynamips/test_c7200.py b/tests/dynamips/test_c7200.py index 7b74cc7f..ed5df69e 100644 --- a/tests/dynamips/test_c7200.py +++ b/tests/dynamips/test_c7200.py @@ -29,9 +29,9 @@ def test_router_exists(router_c7200): def test_npe(router_c7200): - assert router_c7200.npe == "npe-400" # default value - router_c7200.npe = "npe-200" - assert router_c7200.npe == "npe-200" + assert router_c7200.npe == "npe-200" # default value + router_c7200.npe = "npe-400" + assert router_c7200.npe == "npe-400" def test_midplane(router_c7200): diff --git a/tests/dynamips/test_hypervisor.py b/tests/dynamips/test_hypervisor.py index ed0ee2ab..ce7b2575 100644 --- a/tests/dynamips/test_hypervisor.py +++ b/tests/dynamips/test_hypervisor.py @@ -10,7 +10,7 @@ def test_is_started(hypervisor): def test_port(hypervisor): - assert hypervisor.port == 9000 + assert hypervisor.port == 7200 def test_host(hypervisor): @@ -25,8 +25,7 @@ def test_working_dir(hypervisor): def test_path(hypervisor): - cwd = os.path.dirname(os.path.abspath(__file__)) - dynamips_path = os.path.join(cwd, "dynamips.stable") + dynamips_path = '/usr/bin/dynamips' assert hypervisor.path == dynamips_path diff --git a/tests/dynamips/test_hypervisor_manager.py b/tests/dynamips/test_hypervisor_manager.py index f670641c..adaa79a2 100644 --- a/tests/dynamips/test_hypervisor_manager.py +++ b/tests/dynamips/test_hypervisor_manager.py @@ -7,10 +7,9 @@ import os @pytest.fixture(scope="module") def hypervisor_manager(request): - cwd = os.path.dirname(os.path.abspath(__file__)) - dynamips_path = os.path.join(cwd, "dynamips.stable") + dynamips_path = '/usr/bin/dynamips' print("\nStarting Dynamips Hypervisor: {}".format(dynamips_path)) - manager = HypervisorManager(dynamips_path, "/tmp", "127.0.0.1", 9000) + manager = HypervisorManager(dynamips_path, "/tmp", "127.0.0.1") #manager.start_new_hypervisor() diff --git a/tests/dynamips/test_router.py b/tests/dynamips/test_router.py index 1affa539..ebf9835c 100644 --- a/tests/dynamips/test_router.py +++ b/tests/dynamips/test_router.py @@ -9,7 +9,7 @@ import base64 @pytest.fixture def router(request, hypervisor): - router = Router(hypervisor, "router", "c3725") + router = Router(hypervisor, "router", platform="c3725") request.addfinalizer(router.delete) return router @@ -127,9 +127,9 @@ def test_idlepc(router): def test_idlemax(router): - assert router.idlemax == 1500 # default value - router.idlemax = 500 - assert router.idlemax == 500 + assert router.idlemax == 500 # default value + router.idlemax = 1500 + assert router.idlemax == 1500 def test_idlesleep(router): @@ -172,7 +172,7 @@ def test_confreg(router): def test_console(router): - assert router.console == router.hypervisor.baseconsole + router.id + assert router.console == 2001 new_console_port = router.console + 100 router.console = new_console_port assert router.console == new_console_port @@ -180,7 +180,7 @@ def test_console(router): def test_aux(router): - assert router.aux == router.hypervisor.baseaux + router.id + assert router.aux == 2501 new_aux_port = router.aux + 100 router.aux = new_aux_port assert router.aux == new_aux_port diff --git a/tests/iou/test_iou_device.py b/tests/iou/test_iou_device.py index 0749c97f..ecf6d0ac 100644 --- a/tests/iou/test_iou_device.py +++ b/tests/iou/test_iou_device.py @@ -8,12 +8,14 @@ def iou(request): cwd = os.path.dirname(os.path.abspath(__file__)) iou_path = os.path.join(cwd, "i86bi_linux-ipbase-ms-12.4.bin") - iou_device = IOUDevice(iou_path, "/tmp") + iou_device = IOUDevice("IOU1", iou_path, "/tmp") iou_device.start() request.addfinalizer(iou_device.delete) return iou_device +@pytest.mark.skipif(os.environ["TRAVIS"] == "TRUE", + reason="IOU Image not available on Travis") def test_iou_is_started(iou): print(iou.command()) @@ -21,6 +23,8 @@ def test_iou_is_started(iou): assert iou.is_running() +@pytest.mark.skipif(os.environ["TRAVIS"] == "TRUE", + reason="IOU Image not available on Travis") def test_iou_restart(iou): iou.stop() diff --git a/tests/vpcs/test_vpcs_device.py b/tests/vpcs/test_vpcs_device.py index 13609506..781166b4 100644 --- a/tests/vpcs/test_vpcs_device.py +++ b/tests/vpcs/test_vpcs_device.py @@ -6,9 +6,13 @@ import pytest @pytest.fixture(scope="session") def vpcs(request): - cwd = os.path.dirname(os.path.abspath(__file__)) - vpcs_path = os.path.join(cwd, "vpcs") - vpcs_device = VPCSDevice(vpcs_path, "/tmp") + if os.path.isfile("/usr/bin/vpcs"): + vpcs_path = "/usr/bin/vpcs" + else: + cwd = os.path.dirname(os.path.abspath(__file__)) + vpcs_path = os.path.join(cwd, "vpcs") + vpcs_device = VPCSDevice("VPCS1", vpcs_path, "/tmp") + vpcs_device.port_add_nio_binding(0, 'nio_tap:tap0') vpcs_device.start() request.addfinalizer(vpcs_device.delete) return vpcs_device