parent
4bbc7a6b1f
commit
61cb9887af
75
qubesmgmt/tests/vm/actions.py
Normal file
75
qubesmgmt/tests/vm/actions.py
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
# -*- encoding: utf8 -*-
|
||||||
|
#
|
||||||
|
# The Qubes OS Project, http://www.qubes-os.org
|
||||||
|
#
|
||||||
|
# Copyright (C) 2017 Marek Marczykowski-Górecki
|
||||||
|
# <marmarek@invisiblethingslab.com>
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2.1 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU Lesser General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Lesser General Public License along
|
||||||
|
# with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
import qubesmgmt.tests.vm
|
||||||
|
|
||||||
|
|
||||||
|
class TC_00_Actions(qubesmgmt.tests.vm.VMTestCase):
|
||||||
|
def test_000_start(self):
|
||||||
|
self.app.expected_calls[
|
||||||
|
('test-vm', 'mgmt.vm.Start', None, None)] = \
|
||||||
|
b'0\x00'
|
||||||
|
self.vm.start()
|
||||||
|
self.assertAllCalled()
|
||||||
|
|
||||||
|
def test_001_shutdown(self):
|
||||||
|
self.app.expected_calls[
|
||||||
|
('test-vm', 'mgmt.vm.Shutdown', None, None)] = \
|
||||||
|
b'0\x00'
|
||||||
|
self.vm.shutdown()
|
||||||
|
self.assertAllCalled()
|
||||||
|
|
||||||
|
def test_002_kill(self):
|
||||||
|
self.app.expected_calls[
|
||||||
|
('test-vm', 'mgmt.vm.Kill', None, None)] = \
|
||||||
|
b'0\x00'
|
||||||
|
self.vm.kill()
|
||||||
|
self.assertAllCalled()
|
||||||
|
|
||||||
|
def test_003_pause(self):
|
||||||
|
self.app.expected_calls[
|
||||||
|
('test-vm', 'mgmt.vm.Pause', None, None)] = \
|
||||||
|
b'0\x00'
|
||||||
|
self.vm.pause()
|
||||||
|
self.assertAllCalled()
|
||||||
|
|
||||||
|
def test_004_unpause(self):
|
||||||
|
self.app.expected_calls[
|
||||||
|
('test-vm', 'mgmt.vm.Unpause', None, None)] = \
|
||||||
|
b'0\x00'
|
||||||
|
self.vm.unpause()
|
||||||
|
self.assertAllCalled()
|
||||||
|
|
||||||
|
@unittest.skip('Not part of the mgmt API yet')
|
||||||
|
def test_005_suspend(self):
|
||||||
|
self.app.expected_calls[
|
||||||
|
('test-vm', 'mgmt.vm.Suspend', None, None)] = \
|
||||||
|
b'0\x00'
|
||||||
|
self.vm.suspend()
|
||||||
|
self.assertAllCalled()
|
||||||
|
|
||||||
|
@unittest.skip('Not part of the mgmt API yet')
|
||||||
|
def test_006_resume(self):
|
||||||
|
self.app.expected_calls[
|
||||||
|
('test-vm', 'mgmt.vm.Resume', None, None)] = \
|
||||||
|
b'0\x00'
|
||||||
|
self.vm.resume()
|
||||||
|
self.assertAllCalled()
|
@ -144,6 +144,7 @@ class TC_01_SpecialCases(qubesmgmt.tests.vm.VMTestCase):
|
|||||||
('test-vm', 'mgmt.vm.property.Set', 'name', b'test-vm2')] = \
|
('test-vm', 'mgmt.vm.property.Set', 'name', b'test-vm2')] = \
|
||||||
b'0\x00'
|
b'0\x00'
|
||||||
self.vm.name = 'test-vm2'
|
self.vm.name = 'test-vm2'
|
||||||
|
# here should be no separate mgmt.vm.property.Get+name call
|
||||||
self.assertEqual(self.vm.name, 'test-vm2')
|
self.assertEqual(self.vm.name, 'test-vm2')
|
||||||
self.assertAllCalled()
|
self.assertAllCalled()
|
||||||
|
|
||||||
|
@ -28,6 +28,7 @@ class QubesVM(qubesmgmt.base.PropertyHolder):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def name(self):
|
def name(self):
|
||||||
|
'''Domain name'''
|
||||||
return self._method_dest
|
return self._method_dest
|
||||||
|
|
||||||
@name.setter
|
@name.setter
|
||||||
@ -39,3 +40,72 @@ class QubesVM(qubesmgmt.base.PropertyHolder):
|
|||||||
str(new_value).encode('utf-8'))
|
str(new_value).encode('utf-8'))
|
||||||
self._method_dest = new_value
|
self._method_dest = new_value
|
||||||
self.app.domains.clear_cache()
|
self.app.domains.clear_cache()
|
||||||
|
|
||||||
|
def start(self):
|
||||||
|
'''
|
||||||
|
Start domain.
|
||||||
|
|
||||||
|
:return:
|
||||||
|
'''
|
||||||
|
self.qubesd_call(self._method_dest, 'mgmt.vm.Start')
|
||||||
|
|
||||||
|
def shutdown(self):
|
||||||
|
'''
|
||||||
|
Shutdown domain.
|
||||||
|
|
||||||
|
:return:
|
||||||
|
'''
|
||||||
|
# TODO: force parameter
|
||||||
|
# TODO: wait parameter (using event?)
|
||||||
|
self.qubesd_call(self._method_dest, 'mgmt.vm.Shutdown')
|
||||||
|
|
||||||
|
def kill(self):
|
||||||
|
'''
|
||||||
|
Kill domain (forcefuly shutdown).
|
||||||
|
|
||||||
|
:return:
|
||||||
|
'''
|
||||||
|
self.qubesd_call(self._method_dest, 'mgmt.vm.Kill')
|
||||||
|
|
||||||
|
def pause(self):
|
||||||
|
'''
|
||||||
|
Pause domain.
|
||||||
|
|
||||||
|
Pause its execution without any prior notification.
|
||||||
|
|
||||||
|
:return:
|
||||||
|
'''
|
||||||
|
self.qubesd_call(self._method_dest, 'mgmt.vm.Pause')
|
||||||
|
|
||||||
|
def unpause(self):
|
||||||
|
'''
|
||||||
|
Unpause domain.
|
||||||
|
|
||||||
|
Opposite to :py:meth:`pause`.
|
||||||
|
|
||||||
|
:return:
|
||||||
|
'''
|
||||||
|
self.qubesd_call(self._method_dest, 'mgmt.vm.Unpause')
|
||||||
|
|
||||||
|
def suspend(self):
|
||||||
|
'''
|
||||||
|
Suspend domain.
|
||||||
|
|
||||||
|
Give domain a chance to prepare for suspend - for example suspend
|
||||||
|
used PCI devices.
|
||||||
|
|
||||||
|
:return:
|
||||||
|
'''
|
||||||
|
raise NotImplementedError
|
||||||
|
#self.qubesd_call(self._method_dest, 'mgmt.vm.Suspend')
|
||||||
|
|
||||||
|
def resume(self):
|
||||||
|
'''
|
||||||
|
Resume domain.
|
||||||
|
|
||||||
|
Opposite to :py:meth:`suspend`.
|
||||||
|
|
||||||
|
:return:
|
||||||
|
'''
|
||||||
|
raise NotImplementedError
|
||||||
|
#self.qubesd_call(self._method_dest, 'mgmt.vm.Resume')
|
||||||
|
Loading…
Reference in New Issue
Block a user