Nir Soffer has uploaded a new change for review. Change subject: ceph: Add libvirt secret testing infrastructure ......................................................................
ceph: Add libvirt secret testing infrastructure New vmfakelib.Error function create a libvirt.libvirtError with specific error code, for testing code that must handle certain libvirt errors. vmfakelib.Connection supports now secret related methods: - secretDefineXML - secretLookupByUUIDString New vmfakelibTests module added to verify that the fakes are behaving like the real libvirt objects. Change-Id: Iac2d4ebaf8cadeff2818b2eac593b8d28b5d6706 Signed-off-by: Nir Soffer <[email protected]> --- M tests/Makefile.am M tests/vmfakelib.py A tests/vmfakelibTests.py 3 files changed, 113 insertions(+), 2 deletions(-) git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/89/40789/1 diff --git a/tests/Makefile.am b/tests/Makefile.am index 02f2672..64010c4 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -103,6 +103,7 @@ vdsmDumpChainsTests.py \ verify.py \ vmApiTests.py \ + vmfakelibTests.py \ vmMigrationTests.py \ vmStorageTests.py \ vmTests.py \ diff --git a/tests/vmfakelib.py b/tests/vmfakelib.py index 995508c..ac78970 100644 --- a/tests/vmfakelib.py +++ b/tests/vmfakelib.py @@ -38,9 +38,28 @@ from monkeypatch import MonkeyPatchScope -class Connection: +def Error(code, msg="fake error"): + e = libvirt.libvirtError(msg) + e.err = [code, None, msg] + return e + + +class Connection(object): + def __init__(self, *args): - pass + self.secrets = {} + + def secretDefineXML(self, xml): + root = etree.fromstring(xml) + sec_uuid = root.find("./uuid").text + sec = Secret(self, sec_uuid, xml) + self.secrets[sec_uuid] = sec + return sec + + def secretLookupByUUIDString(self, sec_uuid): + if sec_uuid not in self.secrets: + raise Error(libvirt.VIR_ERR_NO_SECRET) + return self.secrets[sec_uuid] def domainEventRegisterAny(self, *arg): pass @@ -49,6 +68,21 @@ return [] +class Secret(object): + + def __init__(self, con, uuid, xml): + self.con = con + self.uuid = uuid + self.xml = xml + self.value = None + + def undefine(self): + del self.con.secrets[self.uuid] + + def setValue(self, value): + self.value = value + + class ClientIF(clientIF.clientIF): def __init__(self): # the bare minimum initialization for our test needs. diff --git a/tests/vmfakelibTests.py b/tests/vmfakelibTests.py new file mode 100644 index 0000000..68186f3 --- /dev/null +++ b/tests/vmfakelibTests.py @@ -0,0 +1,76 @@ +# +# Copyright 2015 Red Hat, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# +# Refer to the README and COPYING files for full details of the license +# + +import libvirt +from testlib import VdsmTestCase +import vmfakelib + + +class SecretsTests(VdsmTestCase): + + def test_define_new(self): + con = vmfakelib.Connection() + xml = """ + <secret> + <uuid>uuid</uuid> + </secret> + """ + con.secretDefineXML(xml) + sec = con.secrets['uuid'] + self.assertEqual(sec.xml, xml) + + def test_define_replace(self): + con = vmfakelib.Connection() + xml1 = """ + <secret> + <description>old secert</description> + <uuid>uuid</uuid> + </secret> + """ + xml2 = """ + <secret> + <description>new secrect</description> + <uuid>uuid</uuid> + </secret> + """ + con.secretDefineXML(xml1) + con.secretDefineXML(xml2) + sec = con.secrets['uuid'] + self.assertEqual(sec.xml, xml2) + + def test_lookup(self): + con = vmfakelib.Connection() + xml = """ + <secret> + <uuid>uuid</uuid> + </secret> + """ + con.secretDefineXML(xml) + sec = con.secretLookupByUUIDString('uuid') + self.assertEqual(sec.xml, xml) + + def test_lookup_error(self): + con = vmfakelib.Connection() + try: + con.secretLookupByUUIDString('no-such-uuid') + except libvirt.libvirtError as e: + self.assertEqual(e.get_error_code(), libvirt.VIR_ERR_NO_SECRET) + else: + self.fail("libvirtError was not raised") -- To view, visit https://gerrit.ovirt.org/40789 To unsubscribe, visit https://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Iac2d4ebaf8cadeff2818b2eac593b8d28b5d6706 Gerrit-PatchSet: 1 Gerrit-Project: vdsm Gerrit-Branch: master Gerrit-Owner: Nir Soffer <[email protected]> _______________________________________________ vdsm-patches mailing list [email protected] https://lists.fedorahosted.org/mailman/listinfo/vdsm-patches
