From 3abcac43ab7130068712b7b703ddce29b0222b1c Mon Sep 17 00:00:00 2001 From: Julien Duponchelle Date: Thu, 15 Jan 2015 14:27:33 +0100 Subject: [PATCH] Test the stop method --- gns3server/modules/vpcs/vpcs_device.py | 2 +- gns3server/server.py | 2 +- tests/modules/vpcs/test_vpcs_device.py | 16 +++++++++++++--- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/gns3server/modules/vpcs/vpcs_device.py b/gns3server/modules/vpcs/vpcs_device.py index 67eb9874..008acac8 100644 --- a/gns3server/modules/vpcs/vpcs_device.py +++ b/gns3server/modules/vpcs/vpcs_device.py @@ -208,7 +208,7 @@ class VPCSDevice(BaseVM): else: self._process.terminate() - self._process.wait() + yield from self._process.wait() self._process = None self._started = False diff --git a/gns3server/server.py b/gns3server/server.py index 12da8bfd..1a22bbeb 100644 --- a/gns3server/server.py +++ b/gns3server/server.py @@ -153,7 +153,7 @@ class Server: self._loop.run_until_complete(self._run_application(app)) self._signal_handling() - #FIXME: remove it in production + #FIXME: remove it in production or in tests self._loop.call_later(1, self._reload_hook) try: self._loop.run_forever() diff --git a/tests/modules/vpcs/test_vpcs_device.py b/tests/modules/vpcs/test_vpcs_device.py index 232a3214..35a5a47e 100644 --- a/tests/modules/vpcs/test_vpcs_device.py +++ b/tests/modules/vpcs/test_vpcs_device.py @@ -22,7 +22,7 @@ from tests.utils import asyncio_patch #Move loop to util from tests.api.base import loop from asyncio.subprocess import Process -from unittest.mock import patch, Mock +from unittest.mock import patch, MagicMock from gns3server.modules.vpcs.vpcs_device import VPCSDevice from gns3server.modules.vpcs.vpcs_error import VPCSError @@ -46,8 +46,18 @@ def test_vm_invalid_vpcs_path(tmpdir): assert vm.id == 42 def test_start(tmpdir, loop): - with asyncio_patch("asyncio.create_subprocess_exec", return_value=Mock()): - vm = VPCSDevice("test", 42, working_dir=str(tmpdir), path="/bin/test_fake") + with asyncio_patch("asyncio.create_subprocess_exec", return_value=MagicMock()): + vm = VPCSDevice("test", 42, working_dir=str(tmpdir), path="/bin/test") + loop.run_until_complete(asyncio.async(vm.start())) + assert vm.is_running() == True + +def test_stop(tmpdir, loop): + process = MagicMock() + with asyncio_patch("asyncio.create_subprocess_exec", return_value=process): + vm = VPCSDevice("test", 42, working_dir=str(tmpdir), path="/bin/test") loop.run_until_complete(asyncio.async(vm.start())) assert vm.is_running() == True + loop.run_until_complete(asyncio.async(vm.stop())) + assert vm.is_running() == False + process.terminate.assert_called_with()