mirror of
https://github.com/GNS3/gns3-server.git
synced 2025-06-21 08:29:43 +00:00
Refactor tests
* Use pytest-aiohttp * Use the async def / await syntax. * Fix tests to run with Python 3.8
This commit is contained in:
@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env python
|
||||
#
|
||||
# Copyright (C) 2016 GNS3 Technologies Inc.
|
||||
# Copyright (C) 2020 GNS3 Technologies Inc.
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
@ -26,17 +26,20 @@ from tests.utils import asyncio_patch
|
||||
|
||||
@pytest.fixture
|
||||
def nio():
|
||||
|
||||
return NIOUDP(4242, "127.0.0.1", 4343)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def manager():
|
||||
|
||||
m = MagicMock()
|
||||
m.module_name = "builtins"
|
||||
return m
|
||||
|
||||
|
||||
def test_json_with_ports(on_gns3vm, project, manager):
|
||||
async def test_json_with_ports(on_gns3vm, compute_project, manager):
|
||||
|
||||
ports = [
|
||||
{
|
||||
"interface": "virbr0",
|
||||
@ -45,11 +48,11 @@ def test_json_with_ports(on_gns3vm, project, manager):
|
||||
"type": "ethernet",
|
||||
}
|
||||
]
|
||||
cloud = Cloud("cloud1", str(uuid.uuid4()), project, manager, ports=ports)
|
||||
cloud = Cloud("cloud1", str(uuid.uuid4()), compute_project, manager, ports=ports)
|
||||
assert cloud.__json__() == {
|
||||
"name": "cloud1",
|
||||
"node_id": cloud.id,
|
||||
"project_id": project.id,
|
||||
"project_id": compute_project.id,
|
||||
"remote_console_host": "",
|
||||
"remote_console_http_path": "/",
|
||||
"remote_console_port": 23,
|
||||
@ -72,15 +75,16 @@ def test_json_with_ports(on_gns3vm, project, manager):
|
||||
}
|
||||
|
||||
|
||||
def test_json_without_ports(on_gns3vm, project, manager):
|
||||
def test_json_without_ports(on_gns3vm, compute_project, manager):
|
||||
"""
|
||||
If no interface is provide the cloud is prefill with non special interfaces
|
||||
If no interface is provide the cloud is pre-fill with non special interfaces
|
||||
"""
|
||||
cloud = Cloud("cloud1", str(uuid.uuid4()), project, manager, ports=None)
|
||||
|
||||
cloud = Cloud("cloud1", str(uuid.uuid4()), compute_project, manager, ports=None)
|
||||
assert cloud.__json__() == {
|
||||
"name": "cloud1",
|
||||
"node_id": cloud.id,
|
||||
"project_id": project.id,
|
||||
"project_id": compute_project.id,
|
||||
"remote_console_host": "",
|
||||
"remote_console_http_path": "/",
|
||||
"remote_console_port": 23,
|
||||
@ -109,10 +113,11 @@ def test_json_without_ports(on_gns3vm, project, manager):
|
||||
}
|
||||
|
||||
|
||||
def test_update_port_mappings(on_gns3vm, project):
|
||||
async def test_update_port_mappings(on_gns3vm, compute_project):
|
||||
"""
|
||||
We don't allow an empty interface in the middle of port list
|
||||
"""
|
||||
|
||||
ports1 = [
|
||||
{
|
||||
"interface": "eth0",
|
||||
@ -127,7 +132,7 @@ def test_update_port_mappings(on_gns3vm, project):
|
||||
"type": "ethernet"
|
||||
}
|
||||
]
|
||||
cloud = Cloud("cloud1", str(uuid.uuid4()), project, MagicMock(), ports=ports1)
|
||||
cloud = Cloud("cloud1", str(uuid.uuid4()), compute_project, MagicMock(), ports=ports1)
|
||||
assert cloud.ports_mapping == ports1
|
||||
|
||||
ports2 = [
|
||||
@ -144,11 +149,11 @@ def test_update_port_mappings(on_gns3vm, project):
|
||||
"type": "ethernet"
|
||||
}
|
||||
]
|
||||
cloud = Cloud("cloud2", str(uuid.uuid4()), project, MagicMock(), ports=ports2)
|
||||
cloud = Cloud("cloud2", str(uuid.uuid4()), compute_project, MagicMock(), ports=ports2)
|
||||
assert cloud.ports_mapping == ports1
|
||||
|
||||
|
||||
def test_linux_ethernet_raw_add_nio(linux_platform, project, async_run, nio):
|
||||
async def test_linux_ethernet_raw_add_nio(linux_platform, compute_project, nio):
|
||||
ports = [
|
||||
{
|
||||
"interface": "eth0",
|
||||
@ -157,14 +162,14 @@ def test_linux_ethernet_raw_add_nio(linux_platform, project, async_run, nio):
|
||||
"type": "ethernet"
|
||||
}
|
||||
]
|
||||
cloud = Cloud("cloud1", str(uuid.uuid4()), project, MagicMock(), ports=ports)
|
||||
cloud = Cloud("cloud1", str(uuid.uuid4()), compute_project, MagicMock(), ports=ports)
|
||||
cloud.status = "started"
|
||||
|
||||
with patch("shutil.which", return_value="/bin/ubridge"):
|
||||
with patch("gns3server.compute.base_manager.BaseManager.has_privileged_access", return_value=True):
|
||||
with asyncio_patch("gns3server.compute.builtin.nodes.cloud.Cloud._ubridge_send") as ubridge_mock:
|
||||
with patch("gns3server.compute.builtin.nodes.cloud.Cloud._interfaces", return_value=[{"name": "eth0"}]):
|
||||
async_run(cloud.add_nio(nio, 0))
|
||||
await cloud.add_nio(nio, 0)
|
||||
|
||||
ubridge_mock.assert_has_calls([
|
||||
call("bridge create {}-0".format(cloud._id)),
|
||||
@ -175,7 +180,7 @@ def test_linux_ethernet_raw_add_nio(linux_platform, project, async_run, nio):
|
||||
])
|
||||
|
||||
|
||||
def test_linux_ethernet_raw_add_nio_bridge(linux_platform, project, async_run, nio):
|
||||
async def test_linux_ethernet_raw_add_nio_bridge(linux_platform, compute_project, nio):
|
||||
"""
|
||||
Bridge can't be connected directly to a cloud we use a tap in the middle
|
||||
"""
|
||||
@ -187,7 +192,7 @@ def test_linux_ethernet_raw_add_nio_bridge(linux_platform, project, async_run, n
|
||||
"type": "ethernet"
|
||||
}
|
||||
]
|
||||
cloud = Cloud("cloud1", str(uuid.uuid4()), project, MagicMock(), ports=ports)
|
||||
cloud = Cloud("cloud1", str(uuid.uuid4()), compute_project, MagicMock(), ports=ports)
|
||||
cloud.status = "started"
|
||||
|
||||
with patch("shutil.which", return_value="/bin/ubridge"):
|
||||
@ -195,7 +200,7 @@ def test_linux_ethernet_raw_add_nio_bridge(linux_platform, project, async_run, n
|
||||
with asyncio_patch("gns3server.compute.builtin.nodes.cloud.Cloud._ubridge_send") as ubridge_mock:
|
||||
with patch("gns3server.compute.builtin.nodes.cloud.Cloud._interfaces", return_value=[{"name": "bridge0"}]):
|
||||
with patch("gns3server.utils.interfaces.is_interface_bridge", return_value=True):
|
||||
async_run(cloud.add_nio(nio, 0))
|
||||
await cloud.add_nio(nio, 0)
|
||||
|
||||
tap = "gns3tap0-0"
|
||||
ubridge_mock.assert_has_calls([
|
||||
|
Reference in New Issue
Block a user