From: David Zafman Date: Thu, 25 Sep 2014 04:34:36 +0000 (-0700) Subject: pybind, test: Use new rados_nobjects_list_open() variants X-Git-Tag: v0.89~36^2~6 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=f5ebc92bc3ae580b19a2aace15a421a69e0dc3b1;p=ceph.git pybind, test: Use new rados_nobjects_list_open() variants Add listing objects with namespaces to pybind rados testing Signed-off-by: David Zafman --- diff --git a/src/pybind/rados.py b/src/pybind/rados.py index 1208b13ffdb7..c574f3908566 100644 --- a/src/pybind/rados.py +++ b/src/pybind/rados.py @@ -15,6 +15,7 @@ from datetime import datetime ANONYMOUS_AUID = 0xffffffffffffffff ADMIN_AUID = 0 +LIBRADOS_ALL_NSPACES = '\001' class Error(Exception): """ `Error` class, derived from `Exception` """ @@ -765,7 +766,7 @@ class ObjectIterator(object): def __init__(self, ioctx): self.ioctx = ioctx self.ctx = c_void_p() - ret = run_in_thread(self.ioctx.librados.rados_objects_list_open, + ret = run_in_thread(self.ioctx.librados.rados_nobjects_list_open, (self.ioctx.io, byref(self.ctx))) if ret < 0: raise make_ex(ret, "error iterating over the objects in ioctx '%s'" \ @@ -783,15 +784,15 @@ class ObjectIterator(object): """ key = c_char_p() locator = c_char_p() - nspace = c_char_p("") - ret = run_in_thread(self.ioctx.librados.rados_objects_list_next, - (self.ctx, byref(key), byref(locator))) + nspace = c_char_p() + ret = run_in_thread(self.ioctx.librados.rados_nobjects_list_next, + (self.ctx, byref(key), byref(locator), byref(nspace))) if ret < 0: raise StopIteration() return Object(self.ioctx, key.value, locator.value, nspace.value) def __del__(self): - run_in_thread(self.ioctx.librados.rados_objects_list_close, (self.ctx,)) + run_in_thread(self.ioctx.librados.rados_nobjects_list_close, (self.ctx,)) class XattrIterator(object): """Extended attribute iterator""" diff --git a/src/test/pybind/test_rados.py b/src/test/pybind/test_rados.py index 00813dc2270d..bf86e0bf99dd 100644 --- a/src/test/pybind/test_rados.py +++ b/src/test/pybind/test_rados.py @@ -1,6 +1,6 @@ from nose.tools import eq_ as eq, assert_raises from rados import (Rados, Error, Object, ObjectExists, ObjectNotFound, - ANONYMOUS_AUID, ADMIN_AUID) + ANONYMOUS_AUID, ADMIN_AUID, LIBRADOS_ALL_NSPACES) import threading import json import errno @@ -178,6 +178,23 @@ class TestIoctx(object): object_names = [obj.key for obj in self.ioctx.list_objects()] eq(sorted(object_names), ['a', 'b', 'c', 'd']) + def test_list_ns_objects(self): + self.ioctx.write('a', '') + self.ioctx.write('b', 'foo') + self.ioctx.write_full('c', 'bar') + self.ioctx.append('d', 'jazz') + self.ioctx.set_namespace("ns1") + self.ioctx.write('ns1-a', '') + self.ioctx.write('ns1-b', 'foo') + self.ioctx.write_full('ns1-c', 'bar') + self.ioctx.append('ns1-d', 'jazz') + self.ioctx.append('d', 'jazz') + self.ioctx.set_namespace(LIBRADOS_ALL_NSPACES) + object_names = [(obj.nspace, obj.key) for obj in self.ioctx.list_objects()] + eq(sorted(object_names), [('', 'a'), ('','b'), ('','c'), ('','d'),\ + ('ns1', 'd'), ('ns1', 'ns1-a'), ('ns1', 'ns1-b'),\ + ('ns1', 'ns1-c'), ('ns1', 'ns1-d')]) + def test_xattrs(self): xattrs = dict(a='1', b='2', c='3', d='a\0b', e='\0') self.ioctx.write('abc', '')