From 57cae0a689c991d72fa43ab0ada8e26a002d3d32 Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Fri, 14 Jul 2017 16:57:43 -0700 Subject: [PATCH] librados_test_stub: use omap_get_vals2() and modify stubs Signed-off-by: Yehuda Sadeh Signed-off-by: Casey Bodley --- .../librados_test_stub/LibradosTestStub.cc | 31 ++++++++----------- src/test/librados_test_stub/TestIoCtxImpl.h | 6 ++++ .../librados_test_stub/TestMemIoCtxImpl.cc | 19 ++++++++++-- .../librados_test_stub/TestMemIoCtxImpl.h | 6 ++++ 4 files changed, 42 insertions(+), 20 deletions(-) diff --git a/src/test/librados_test_stub/LibradosTestStub.cc b/src/test/librados_test_stub/LibradosTestStub.cc index fd67877bf0d..069f8e943b5 100644 --- a/src/test/librados_test_stub/LibradosTestStub.cc +++ b/src/test/librados_test_stub/LibradosTestStub.cc @@ -1185,27 +1185,22 @@ int cls_cxx_getxattrs(cls_method_context_t hctx, std::map *a } int cls_cxx_map_get_keys(cls_method_context_t hctx, const string &start_obj, - uint64_t max_to_get, std::set *keys) { + uint64_t max_to_get, std::set *keys, bool *more) { librados::TestClassHandler::MethodContext *ctx = reinterpret_cast(hctx); keys->clear(); std::map vals; - std::string last_key = start_obj; - do { - vals.clear(); - int r = ctx->io_ctx_impl->omap_get_vals(ctx->oid, last_key, "", 1024, - &vals); - if (r < 0) { - return r; - } + int r = ctx->io_ctx_impl->omap_get_vals2(ctx->oid, start_obj, "", max_to_get, + &vals, more); + if (r < 0) { + return r; + } - for (std::map::iterator it = vals.begin(); - it != vals.end(); ++it) { - last_key = it->first; - keys->insert(last_key); - } - } while (!vals.empty()); + for (std::map::iterator it = vals.begin(); + it != vals.end(); ++it) { + keys->insert(it->first); + } return keys->size(); } @@ -1231,11 +1226,11 @@ int cls_cxx_map_get_val(cls_method_context_t hctx, const string &key, int cls_cxx_map_get_vals(cls_method_context_t hctx, const string &start_obj, const string &filter_prefix, uint64_t max_to_get, - std::map *vals) { + std::map *vals, bool *more) { librados::TestClassHandler::MethodContext *ctx = reinterpret_cast(hctx); - int r = ctx->io_ctx_impl->omap_get_vals(ctx->oid, start_obj, filter_prefix, - max_to_get, vals); + int r = ctx->io_ctx_impl->omap_get_vals2(ctx->oid, start_obj, filter_prefix, + max_to_get, vals, more); if (r < 0) { return r; } diff --git a/src/test/librados_test_stub/TestIoCtxImpl.h b/src/test/librados_test_stub/TestIoCtxImpl.h index 2ba13fdcd38..499a55f80f6 100644 --- a/src/test/librados_test_stub/TestIoCtxImpl.h +++ b/src/test/librados_test_stub/TestIoCtxImpl.h @@ -107,6 +107,12 @@ public: const std::string &filter_prefix, uint64_t max_return, std::map *out_vals) = 0; + virtual int omap_get_vals2(const std::string& oid, + const std::string& start_after, + const std::string &filter_prefix, + uint64_t max_return, + std::map *out_vals, + bool *pmore) = 0; virtual int omap_rm_keys(const std::string& oid, const std::set& keys) = 0; virtual int omap_set(const std::string& oid, diff --git a/src/test/librados_test_stub/TestMemIoCtxImpl.cc b/src/test/librados_test_stub/TestMemIoCtxImpl.cc index 908bad32fba..cccbe820596 100644 --- a/src/test/librados_test_stub/TestMemIoCtxImpl.cc +++ b/src/test/librados_test_stub/TestMemIoCtxImpl.cc @@ -168,11 +168,12 @@ int TestMemIoCtxImpl::list_snaps(const std::string& oid, snap_set_t *out_snaps) } -int TestMemIoCtxImpl::omap_get_vals(const std::string& oid, +int TestMemIoCtxImpl::omap_get_vals2(const std::string& oid, const std::string& start_after, const std::string &filter_prefix, uint64_t max_return, - std::map *out_vals) { + std::map *out_vals, + bool *pmore) { if (out_vals == NULL) { return -EINVAL; } else if (m_client->is_blacklisted()) { @@ -193,6 +194,9 @@ int TestMemIoCtxImpl::omap_get_vals(const std::string& oid, RWLock::RLocker l(file->lock); TestMemCluster::FileOMaps::iterator o_it = m_pool->file_omaps.find(oid); if (o_it == m_pool->file_omaps.end()) { + if (pmore) { + *pmore = false; + } return 0; } @@ -210,9 +214,20 @@ int TestMemIoCtxImpl::omap_get_vals(const std::string& oid, } ++it; } + if (pmore) { + *pmore = (it != omap.end()); + } return 0; } +int TestMemIoCtxImpl::omap_get_vals(const std::string& oid, + const std::string& start_after, + const std::string &filter_prefix, + uint64_t max_return, + std::map *out_vals) { + return omap_get_vals2(oid, start_after, filter_prefix, max_return, out_vals, nullptr); +} + int TestMemIoCtxImpl::omap_rm_keys(const std::string& oid, const std::set& keys) { if (get_snap_read() != CEPH_NOSNAP) { diff --git a/src/test/librados_test_stub/TestMemIoCtxImpl.h b/src/test/librados_test_stub/TestMemIoCtxImpl.h index 9f63b7daee1..c76fb3cf8cb 100644 --- a/src/test/librados_test_stub/TestMemIoCtxImpl.h +++ b/src/test/librados_test_stub/TestMemIoCtxImpl.h @@ -35,6 +35,12 @@ public: const std::string &filter_prefix, uint64_t max_return, std::map *out_vals) override; + int omap_get_vals2(const std::string& oid, + const std::string& start_after, + const std::string &filter_prefix, + uint64_t max_return, + std::map *out_vals, + bool *pmore) override; int omap_rm_keys(const std::string& oid, const std::set& keys) override; int omap_set(const std::string& oid, const std::map