diff --git a/.travis.yml b/.travis.yml index 2440f1dc..883004a4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,14 +1,19 @@ language: python -python: - - "3.3" - - "3.4" +env: + - TOX_ENV=py33 + - TOX_ENV=py34 + +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" + - pip install tox + - sudo apt-get install vpcs dynamips -script: "python setup.py test" +script: + - tox -e $TOX_ENV branches: only: diff --git a/gns3server/handlers/jsonrpc_websocket.py b/gns3server/handlers/jsonrpc_websocket.py index 5b18496c..26c96e6a 100644 --- a/gns3server/handlers/jsonrpc_websocket.py +++ b/gns3server/handlers/jsonrpc_websocket.py @@ -52,6 +52,9 @@ class JSONRPCWebSocket(tornado.websocket.WebSocketHandler): self._session_id = str(uuid.uuid4()) self.zmq_router = zmq_router + def check_origin(self, origin): + return True + @property def session_id(self): """ diff --git a/gns3server/version.py b/gns3server/version.py index c206840a..118c2a4c 100644 --- a/gns3server/version.py +++ b/gns3server/version.py @@ -23,5 +23,5 @@ # or negative for a release candidate or beta (after the base version # number has been incremented) -__version__ = "1.0beta1" +__version__ = "1.0beta2-dev1" __version_info__ = (1, 0, 0, -99) 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/setup.py b/setup.py index e64cfa3d..78bfa355 100644 --- a/setup.py +++ b/setup.py @@ -20,7 +20,7 @@ from setuptools import setup, find_packages from setuptools.command.test import test as TestCommand -class Tox(TestCommand): +class PyTest(TestCommand): def finalize_options(self): TestCommand.finalize_options(self) @@ -29,8 +29,8 @@ class Tox(TestCommand): def run_tests(self): #import here, cause outside the eggs aren't loaded - import tox - errcode = tox.cmdline(self.test_args) + import pytest + errcode = pytest.main(self.test_args) sys.exit(errcode) setup( @@ -38,8 +38,8 @@ setup( version=__import__("gns3server").__version__, url="http://github.com/GNS3/gns3-server", license="GNU General Public License v3 (GPLv3)", - tests_require=["tox"], - cmdclass={"test": Tox}, + tests_require=["pytest"], + cmdclass={"test": PyTest}, author="Jeremy Grossmann", author_email="package-maintainer@gns3.net", description="GNS3 server to asynchronously manage emulators", 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..e6c096b8 100644 --- a/tests/dynamips/test_hypervisor.py +++ b/tests/dynamips/test_hypervisor.py @@ -1,6 +1,5 @@ from gns3server.modules.dynamips import Hypervisor import time -import os def test_is_started(hypervisor): @@ -10,7 +9,7 @@ def test_is_started(hypervisor): def test_port(hypervisor): - assert hypervisor.port == 9000 + assert hypervisor.port == 7200 def test_host(hypervisor): @@ -25,8 +24,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 @@ -34,11 +32,10 @@ def test_stdout(): # try to launch Dynamips on the same port # this will fail so that we can read its stdout/stderr - cwd = os.path.dirname(os.path.abspath(__file__)) - dynamips_path = os.path.join(cwd, "dynamips.stable") - hypervisor = Hypervisor(dynamips_path, "/tmp", "172.0.0.1", 7200) + dynamips_path = '/usr/bin/dynamips' + hypervisor = Hypervisor(dynamips_path, "/tmp", "127.0.0.1", 7200) hypervisor.start() # give some time for Dynamips to start - time.sleep(0.01) + time.sleep(0.1) output = hypervisor.read_stdout() assert output 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..58581de9 100644 --- a/tests/iou/test_iou_device.py +++ b/tests/iou/test_iou_device.py @@ -3,17 +3,28 @@ import os import pytest +def no_iou(): + cwd = os.path.dirname(os.path.abspath(__file__)) + iou_path = os.path.join(cwd, "i86bi_linux-ipbase-ms-12.4.bin") + + if os.path.isfile(iou_path): + return False + else: + return True + + @pytest.fixture(scope="session") 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(no_iou(), reason="IOU Image not available") def test_iou_is_started(iou): print(iou.command()) @@ -21,6 +32,7 @@ def test_iou_is_started(iou): assert iou.is_running() +@pytest.mark.skipif(no_iou(), reason="IOU Image not available") 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 diff --git a/tox.ini b/tox.ini index b10796da..200e7ce4 100644 --- a/tox.ini +++ b/tox.ini @@ -2,6 +2,6 @@ envlist = py33, py34 [testenv] -commands = py.test [] -s tests +commands = python setup.py test deps = -rdev-requirements.txt