X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=ceph%2Fsrc%2Ftest%2Fpybind%2Ftest_rados.py;h=88b8d2a92c8c73fbbb34acc1c0cfd170add6f90f;hb=c07f9fc5a4f48397831383549fb0482b93480643;hp=a4e1efd852ee2652e042481b77f6f6b57e1ba0bf;hpb=9439ae556f035e65c9c107ae13ddd09457dbbecd;p=ceph.git diff --git a/ceph/src/test/pybind/test_rados.py b/ceph/src/test/pybind/test_rados.py index a4e1efd85..88b8d2a92 100644 --- a/ceph/src/test/pybind/test_rados.py +++ b/ceph/src/test/pybind/test_rados.py @@ -1,4 +1,5 @@ from __future__ import print_function +from nose import SkipTest from nose.tools import eq_ as eq, ok_ as ok, assert_raises from rados import (Rados, Error, RadosStateError, Object, ObjectExists, ObjectNotFound, ObjectBusy, requires, opt, @@ -859,6 +860,37 @@ class TestIoctx(object): [i.remove() for i in self.ioctx.list_objects()] + def test_applications(self): + cmd = {"prefix":"osd dump", "format":"json"} + ret, buf, errs = self.rados.mon_command(json.dumps(cmd), b'') + eq(ret, 0) + assert len(buf) > 0 + release = json.loads(buf.decode("utf-8")).get("require_osd_release", + None) + if not release or release[0] < 'l': + raise SkipTest + + eq([], self.ioctx.application_list()) + + self.ioctx.application_enable("app1") + assert_raises(Error, self.ioctx.application_enable, "app2") + self.ioctx.application_enable("app2", True) + + assert_raises(Error, self.ioctx.application_metadata_list, "dne") + eq([], self.ioctx.application_metadata_list("app1")) + + assert_raises(Error, self.ioctx.application_metadata_set, "dne", "key", + "key") + self.ioctx.application_metadata_set("app1", "key1", "val1") + self.ioctx.application_metadata_set("app1", "key2", "val2") + self.ioctx.application_metadata_set("app2", "key1", "val1") + + eq([("key1", "val1"), ("key2", "val2")], + self.ioctx.application_metadata_list("app1")) + + self.ioctx.application_metadata_remove("app1", "key1") + eq([("key2", "val2")], self.ioctx.application_metadata_list("app1")) + class TestObject(object): def setUp(self):