From c2a08a391cd1fe12051748874e3e584ab90ec93c Mon Sep 17 00:00:00 2001 From: Julien Duponchelle Date: Wed, 21 Oct 2015 14:28:39 +0200 Subject: [PATCH] Fix crash in IOU config export Fix #335 --- gns3server/modules/iou/iou_vm.py | 1 + tests/modules/iou/test_iou_vm.py | 22 +++++++++++++++++++++- tests/resources/nvram_iou | Bin 0 -> 131072 bytes 3 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 tests/resources/nvram_iou diff --git a/gns3server/modules/iou/iou_vm.py b/gns3server/modules/iou/iou_vm.py index 5aa9be93..a158b20d 100644 --- a/gns3server/modules/iou/iou_vm.py +++ b/gns3server/modules/iou/iou_vm.py @@ -43,6 +43,7 @@ from ..nios.nio_tap import NIOTAP from ..nios.nio_generic_ethernet import NIOGenericEthernet from ..base_vm import BaseVM from .utils.iou_import import nvram_import +from .utils.iou_export import nvram_export from .ioucon import start_ioucon import gns3server.utils.asyncio import gns3server.utils.images diff --git a/tests/modules/iou/test_iou_vm.py b/tests/modules/iou/test_iou_vm.py index dc22d0c3..4b1f7f2c 100644 --- a/tests/modules/iou/test_iou_vm.py +++ b/tests/modules/iou/test_iou_vm.py @@ -22,6 +22,8 @@ import os import stat import socket import sys +import uuid +import shutil from tests.utils import asyncio_patch @@ -50,7 +52,7 @@ def vm(project, manager, tmpdir, fake_iou_bin, iourc_file): with open(fake_file, "w+") as f: f.write("1") - vm = IOUVM("test", "00010203-0405-0607-0809-0a0b0c0d0e0f", project, manager) + vm = IOUVM("test", str(uuid.uuid4()), project, manager) config = manager.config.get_section_config("IOU") config["iouyap_path"] = fake_file config["iourc_path"] = iourc_file @@ -406,3 +408,21 @@ def test_iourc_content(vm): with open(os.path.join(vm.temporary_directory, "iourc")) as f: assert f.read() == "test" + + +def test_extract_configs(vm): + assert vm.extract_configs() == (None, None) + + with open(os.path.join(vm.working_dir, "nvram_00001"), "w+") as f: + f.write("CORRUPTED") + assert vm.extract_configs() == (None, None) + + with open(os.path.join(vm.working_dir, "nvram_00001"), "w+") as f: + f.write("CORRUPTED") + assert vm.extract_configs() == (None, None) + + shutil.copy("tests/resources/nvram_iou", os.path.join(vm.working_dir, "nvram_00001")) + + startup_config, private_config = vm.extract_configs() + assert len(startup_config) == 1392 + assert len(private_config) == 0 diff --git a/tests/resources/nvram_iou b/tests/resources/nvram_iou new file mode 100644 index 0000000000000000000000000000000000000000..2b11a72e8d8746c16b53780437bf9a431365fcb0 GIT binary patch literal 131072 zcmeIyO>Wab6ae5fB&o5sbO(w67CWoIUlf!26;5bgY*j^V|41KYT zU7s$SF68lIbrtfokK@Cz>|*xVu(EzQsH(#zU6Xd*P2J|xSY_>9(-(D>94Cvq>#KCg z`R48W*>FFeLr~F#B3m}09j2U?#j@zbs%m4JEz*lJj-$fnSceSbvv~O{GOw3uQBBLb z{;+B`uluYC-CcE)7X5Tx#QFNoIA2lqvAs-(l3(|W*jBMWJvmLn{W8)#Z)4Xbp_p3=Tc&-s2>Gfhh|xl94E2LlO*}^eR44L;xFU%pcT6%K!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ u009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009F3Mc^maTGluK literal 0 HcmV?d00001