X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fceph%2Fsrc%2Ftest%2Fsystem%2Fst_rados_delete_objs.cc;fp=src%2Fceph%2Fsrc%2Ftest%2Fsystem%2Fst_rados_delete_objs.cc;h=b43ffdda6aeb531bb84a37cf52403361f7d35ef9;hb=812ff6ca9fcd3e629e49d4328905f33eee8ca3f5;hp=0000000000000000000000000000000000000000;hpb=15280273faafb77777eab341909a3f495cf248d9;p=stor4nfv.git diff --git a/src/ceph/src/test/system/st_rados_delete_objs.cc b/src/ceph/src/test/system/st_rados_delete_objs.cc new file mode 100644 index 0000000..b43ffdd --- /dev/null +++ b/src/ceph/src/test/system/st_rados_delete_objs.cc @@ -0,0 +1,71 @@ +// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- +// vim: ts=8 sw=2 smarttab +/* +* Ceph - scalable distributed file system +* +* Copyright (C) 2011 New Dream Network +* +* This is free software; you can redistribute it and/or +* modify it under the terms of the GNU Lesser General Public +* License version 2.1, as published by the Free Software +* Foundation. See file COPYING. +* +*/ + +#include "cross_process_sem.h" +#include "include/rados/librados.h" +#include "st_rados_delete_objs.h" +#include "systest_runnable.h" +#include "systest_settings.h" + +#include + +StRadosDeleteObjs::StRadosDeleteObjs(int argc, const char **argv, + CrossProcessSem *setup_sem, + CrossProcessSem *deleted_sem, + int num_objs, + const std::string &pool_name, + const std::string &suffix) + : SysTestRunnable(argc, argv), + m_setup_sem(setup_sem), + m_deleted_sem(deleted_sem), + m_num_objs(num_objs), + m_pool_name(pool_name), + m_suffix(suffix) +{ +} + +StRadosDeleteObjs::~StRadosDeleteObjs() +{ +} + +int StRadosDeleteObjs::run() +{ + rados_t cl; + RETURN1_IF_NONZERO(rados_create(&cl, NULL)); + rados_conf_parse_argv(cl, m_argc, m_argv); + RETURN1_IF_NONZERO(rados_conf_read_file(cl, NULL)); + rados_conf_parse_env(cl, NULL); + RETURN1_IF_NONZERO(rados_connect(cl)); + m_setup_sem->wait(); + m_setup_sem->post(); + + rados_ioctx_t io_ctx; + rados_pool_create(cl, m_pool_name.c_str()); + RETURN1_IF_NONZERO(rados_ioctx_create(cl, m_pool_name.c_str(), &io_ctx)); + + for (int i = 0; i < m_num_objs; ++i) { + char oid[128]; + snprintf(oid, sizeof(oid), "%d%s", i, m_suffix.c_str()); + RETURN1_IF_NONZERO(rados_remove(io_ctx, oid)); + if (((i % 25) == 0) || (i == m_num_objs - 1)) { + printf("%s: deleted object %d...\n", get_id_str(), i); + } + } + + rados_ioctx_destroy(io_ctx); + if (m_deleted_sem) + m_deleted_sem->post(); + rados_shutdown(cl); + return 0; +}