From 0b6436d2cb898f16fae55a7cfa343d2dd9400ee0 Mon Sep 17 00:00:00 2001 From: Raizo62 Date: Sat, 3 Jun 2023 11:48:55 +0200 Subject: [PATCH 1/2] qemu : with network adapter_type equal to "virtio-net-pci", fix the speed to 10000 and duplex to full. The values are actually fake. (https://github.com/GNS3/gns3-gui/issues/3476) --- gns3server/compute/qemu/qemu_vm.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gns3server/compute/qemu/qemu_vm.py b/gns3server/compute/qemu/qemu_vm.py index 6a8ef00b..2a111021 100644 --- a/gns3server/compute/qemu/qemu_vm.py +++ b/gns3server/compute/qemu/qemu_vm.py @@ -2150,6 +2150,8 @@ class QemuVM(BaseNode): else: # newer QEMU networking syntax device_string = "{},mac={}".format(adapter_type, mac) + if adapter_type == "virtio-net-pci": + device_string = "{},speed=10000,duplex=full".format(device_string) bridge_id = math.floor(pci_device_id / 32) if bridge_id > 0: if pci_bridges_created < bridge_id: From 71d1aefb652c06bc52058552c9a34682b8c5e2ce Mon Sep 17 00:00:00 2001 From: grossmj Date: Sat, 3 Jun 2023 20:57:23 +0930 Subject: [PATCH 2/2] Test Qemu command with virtio-net-pci adapter --- tests/compute/qemu/test_qemu_vm.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tests/compute/qemu/test_qemu_vm.py b/tests/compute/qemu/test_qemu_vm.py index 38a71ccf..8e67e8b7 100644 --- a/tests/compute/qemu/test_qemu_vm.py +++ b/tests/compute/qemu/test_qemu_vm.py @@ -737,6 +737,20 @@ async def test_build_command_large_number_of_adapters(vm): await vm._build_command() +async def test_build_command_with_virtio_net_pci_adapter(vm): + """ + Test virtio-net-pci adapter which has parameters speed=1000 & duplex=full hard-coded + """ + + vm.manager.get_qemu_version = AsyncioMagicMock(return_value="2.4.0") + vm.adapters = 1 + vm.mac_address = "00:00:ab:0e:0f:09" + vm._adapter_type = "virtio-net-pci" + with asyncio_patch("asyncio.create_subprocess_exec", return_value=MagicMock()): + cmd = await vm._build_command() + assert "virtio-net-pci,mac=00:00:ab:0e:0f:09,speed=10000,duplex=full,netdev=gns3-0" in cmd + + @pytest.mark.skipif(sys.platform.startswith("win"), reason="Not supported on Windows") async def test_build_command_with_invalid_options(vm):