On Mon, Oct 07, 2019 at 05:22:34PM +0200, Simon Kobyda wrote:
Signed-off-by: Simon Kobyda <skobyda(a)redhat.com>
---
data/org.libvirt.Domain.xml | 26 ++++
data/org.libvirt.DomainSnapshot.xml | 34 +++++
src/domain.c | 158 +++++++++++++++++++++
src/domainsnapshot.c | 204 +++++++++++++++++++++++++++-
tests/Makefile.am | 1 +
tests/libvirttest.py | 14 ++
tests/test_domain.py | 8 ++
tests/test_snapshot.py | 43 ++++++
tests/xmldata.py | 6 +
9 files changed, 493 insertions(+), 1 deletion(-)
create mode 100755 tests/test_snapshot.py
diff --git a/src/domainsnapshot.c b/src/domainsnapshot.c
index 590cbef..4bffe5d 100644
--- a/src/domainsnapshot.c
+++ b/src/domainsnapshot.c
@@ -1,14 +1,216 @@
static virtDBusGDBusMethodTable virtDBusDomainSnapshotMethodTable[] = {
- { 0 }
+ { "Delete", virtDBusDomainSnapshotDelete },
+ { "GetParent", virtDBusDomainSnapshotGetParent },
+ { "GetXMLDesc", virtDBusDomainSnapshotGetXMLDesc },
+ { "IsCurrent", virtDBusDomainSnapshotIsCurrent }, // Needs to be method
since it takes 'flags' parameter
/* ... */ is the prevailing comment style, however there are no rules
for that.
+ { "ListChildren", virtDBusDomainSnapshotListAllChildren
},
+ { "Revert", virtDBusDomainSnapshotRevert },
};
static gchar **
diff --git a/tests/Makefile.am b/tests/Makefile.am
index cd1fbd7..7757429 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -14,6 +14,7 @@ test_programs = \
test_interface.py \
test_network.py \
test_nodedev.py \
+ test_snapshot.py \
test_storage.py \
$(NULL)
diff --git a/tests/libvirttest.py b/tests/libvirttest.py
index a442196..8462fc3 100644
--- a/tests/libvirttest.py
+++ b/tests/libvirttest.py
@@ -112,6 +112,20 @@ class BaseTestClass():
"""
return self.node_device_create()
+ @pytest.fixture
+ def snapshot_create(self):
+ """ Fixture to create simple snapshot the test driver
+
+ This fixture should be used in the setup of every test manipulating
+ with snaphots.
+ """
+ _, test_domain = self.get_test_domain()
+ interface_obj = dbus.Interface(test_domain, 'org.libvirt.Domain')
+ path = interface_obj.SnapshotCreateXML(xmldata.minimal_snapshot_xml, 0)
+ obj = self.bus.get_object('org.libvirt', path)
+ interface_obj = dbus.Interface(obj, 'org.libvirt.DomainSnapshot')
+ return interface_obj
+
@pytest.fixture
def storage_volume_create(self):
""" Fixture to create dummy storage volume on the test driver
diff --git a/tests/test_domain.py b/tests/test_domain.py
index b5879b4..fdb5aa4 100755
--- a/tests/test_domain.py
+++ b/tests/test_domain.py
@@ -2,6 +2,7 @@
import dbus
import libvirttest
+import xmldata
DBUS_EXCEPTION_MISSING_FUNCTION = 'this function is not supported by the connection
driver'
@@ -160,6 +161,13 @@ class TestDomain(libvirttest.BaseTestClass):
pinInfo = domain.GetVcpuPinInfo(0)
assert pinInfo == pinInfo_expected
+ def test_snapshot(self):
+ obj, domain = self.get_test_domain()
+ domain.SnapshotCreateXML(xmldata.minimal_snapshot_xml, 0)
+ assert isinstance(domain.SnapshotCurrent(0), dbus.ObjectPath)
+ assert isinstance(domain.SnapshotLookupByName("my_snapshot", 0),
dbus.ObjectPath)
+ assert isinstance(domain.ListDomainSnapshots(0), dbus.Array)
if __name__ == '__main__':
libvirttest.run()
+
syntax-check fails with 'flake8' installed:
$ make syntax-check
/usr/bin/flake8 --show-source --ignore=E501 .
./tests/test_domain.py:171:1: E305 expected 2 blank lines after class or function
definition, found 1
if __name__ == '__main__':
^
./tests/test_domain.py:173:1: W391 blank line at end of file
^
./tests/test_snapshot.py:9:1: E302 expected 2 blank lines, found 1
@pytest.mark.usefixtures("snapshot_create")
^
./tests/test_snapshot.py:42:1: E305 expected 2 blank lines after class or function
definition, found 1
if __name__ == '__main__':
^
make: *** [Makefile:906: flake8] Error 1
Jano