Test the stop method

pull/100/head
Julien Duponchelle 10 years ago
parent 6bb2b88f1a
commit 3abcac43ab

@ -208,7 +208,7 @@ class VPCSDevice(BaseVM):
else: else:
self._process.terminate() self._process.terminate()
self._process.wait() yield from self._process.wait()
self._process = None self._process = None
self._started = False self._started = False

@ -153,7 +153,7 @@ class Server:
self._loop.run_until_complete(self._run_application(app)) self._loop.run_until_complete(self._run_application(app))
self._signal_handling() self._signal_handling()
#FIXME: remove it in production #FIXME: remove it in production or in tests
self._loop.call_later(1, self._reload_hook) self._loop.call_later(1, self._reload_hook)
try: try:
self._loop.run_forever() self._loop.run_forever()

@ -22,7 +22,7 @@ from tests.utils import asyncio_patch
#Move loop to util #Move loop to util
from tests.api.base import loop from tests.api.base import loop
from asyncio.subprocess import Process 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_device import VPCSDevice
from gns3server.modules.vpcs.vpcs_error import VPCSError from gns3server.modules.vpcs.vpcs_error import VPCSError
@ -46,8 +46,18 @@ def test_vm_invalid_vpcs_path(tmpdir):
assert vm.id == 42 assert vm.id == 42
def test_start(tmpdir, loop): def test_start(tmpdir, loop):
with asyncio_patch("asyncio.create_subprocess_exec", return_value=Mock()): with asyncio_patch("asyncio.create_subprocess_exec", return_value=MagicMock()):
vm = VPCSDevice("test", 42, working_dir=str(tmpdir), path="/bin/test_fake") 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())) loop.run_until_complete(asyncio.async(vm.start()))
assert vm.is_running() == True assert vm.is_running() == True
loop.run_until_complete(asyncio.async(vm.stop()))
assert vm.is_running() == False
process.terminate.assert_called_with()

Loading…
Cancel
Save