public:
explicit WholeSpaceMemIterator(KeyValueDBMemory *db) : db(db), ready(false) { }
- ~WholeSpaceMemIterator() { }
+ ~WholeSpaceMemIterator() override { }
int seek_to_first() override {
if (db->db.empty()) {
explicit WholeSpaceSnapshotMemIterator(KeyValueDBMemory *db) :
WholeSpaceMemIterator(db) { }
- ~WholeSpaceSnapshotMemIterator() {
+ ~WholeSpaceSnapshotMemIterator() override {
delete db;
}
};
KeyValueDBMemory() { }
explicit KeyValueDBMemory(KeyValueDBMemory *db) : db(db->db) { }
- virtual ~KeyValueDBMemory() { }
+ ~KeyValueDBMemory() override { }
- virtual int init(string _opt) {
+ int init(string _opt) override {
return 0;
}
- virtual int open(ostream &out) {
+ int open(ostream &out) override {
return 0;
}
- virtual int create_and_open(ostream &out) {
+ int create_and_open(ostream &out) override {
return 0;
}
const string &prefix,
const std::set<string> &key,
std::map<string, bufferlist> *out
- );
+ ) override;
using KeyValueDB::get;
int get_keys(
const std::pair<string,string> &key,
const bufferlist &value)
: db(db), key(key), value(value) {}
- void finish(int r) {
+ void finish(int r) override {
db->set(key.first, key.second, value);
}
};
- void set(const string &prefix, const string &k, const bufferlist& bl) {
+ void set(const string &prefix, const string &k, const bufferlist& bl) override {
on_commit.push_back(new SetOp(db, std::make_pair(prefix, k), bl));
}
RmKeysOp(KeyValueDBMemory *db,
const std::pair<string,string> &key)
: db(db), key(key) {}
- void finish(int r) {
+ void finish(int r) override {
db->rmkey(key.first, key.second);
}
};
- void rmkey(const string &prefix, const string &key) {
+ void rmkey(const string &prefix, const string &key) override {
on_commit.push_back(new RmKeysOp(db, std::make_pair(prefix, key)));
}
RmKeysByPrefixOp(KeyValueDBMemory *db,
const string &prefix)
: db(db), prefix(prefix) {}
- void finish(int r) {
+ void finish(int r) override {
db->rmkeys_by_prefix(prefix);
}
};
- void rmkeys_by_prefix(const string &prefix) {
+ void rmkeys_by_prefix(const string &prefix) override {
on_commit.push_back(new RmKeysByPrefixOp(db, prefix));
}
return 0;
}
- ~TransactionImpl_() {
+ ~TransactionImpl_() override {
for (list<Context *>::iterator i = on_commit.begin();
i != on_commit.end();
on_commit.erase(i++)) {
}
};
- Transaction get_transaction() {
+ Transaction get_transaction() override {
return Transaction(new TransactionImpl_(this));
}
- int submit_transaction(Transaction trans) {
+ int submit_transaction(Transaction trans) override {
return static_cast<TransactionImpl_*>(trans.get())->complete();
}
- uint64_t get_estimated_size(map<string,uint64_t> &extras) {
+ uint64_t get_estimated_size(map<string,uint64_t> &extras) override {
uint64_t total_size = 0;
for (map<pair<string,string>,bufferlist>::iterator p = db.begin();
friend class WholeSpaceMemIterator;
protected:
- WholeSpaceIterator _get_iterator();
+ WholeSpaceIterator _get_iterator() override;
};
array_lock.Unlock();
}
- ~TestContext()
+ ~TestContext() override
{
}
array_lock.Unlock();
}
- ~StrictOrderTestContext()
+ ~StrictOrderTestContext() override
{
}
};
);
void run_bench();
- void *entry() {
+ void *entry() override {
run_bench();
return 0;
}
op_dist(op_dist) {}
boost::tuple<string, uint64_t, uint64_t, Bencher::OpType>
- operator()() {
+ operator()() override {
boost::tuple<string, uint64_t, uint64_t, Bencher::OpType> ret =
boost::make_tuple(*object_pos, cur_pos, length, (*op_dist)());
cur_pos += length;
AdditionalPrinting *details = 0
);
- uint64_t next_seq();
- void start_write(uint64_t seq, uint64_t size);
- void start_read(uint64_t seq, uint64_t size);
- void write_applied(uint64_t seq);
- void write_committed(uint64_t seq);
- void read_complete(uint64_t seq);
+ uint64_t next_seq() override;
+ void start_write(uint64_t seq, uint64_t size) override;
+ void start_read(uint64_t seq, uint64_t size) override;
+ void write_applied(uint64_t seq) override;
+ void write_committed(uint64_t seq) override;
+ void read_complete(uint64_t seq) override;
};
Distribution<V> *v,
Distribution<W> *w)
: t(t), u(u), v(v), w(w) {}
- boost::tuple<T, U, V, W> operator()() {
+ boost::tuple<T, U, V, W> operator()() override {
return boost::make_tuple((*t)(), (*u)(), (*v)(), (*w)());
}
};
contents.insert(std::make_pair(count, *i));
}
}
- virtual T operator()() {
+ T operator()() override {
assert(contents.size());
boost::uniform_int<> value(0, contents.size() - 1);
return contents.find(value(rng))->second;
contents.insert(std::make_pair(total, i->second));
}
}
- virtual T operator()() {
+ T operator()() override {
return contents.lower_bound(
boost::uniform_real<>(0, total)(rng))->second;
}
public:
UniformRandom(const rngen_t &rng, uint64_t min, uint64_t max) :
rng(rng), min(min), max(max) {}
- virtual uint64_t operator()() {
+ uint64_t operator()() override {
return boost::uniform_int<uint64_t>(min, max)(rng);
}
};
public:
Align(Distribution<uint64_t> *dist, uint64_t align) :
dist(dist), align(align) {}
- virtual uint64_t operator()() {
+ uint64_t operator()() override {
uint64_t ret = (*dist)();
return ret - (ret % align);
}
uint64_t val;
public:
explicit Uniform(uint64_t val) : val(val) {}
- virtual uint64_t operator()() {
+ uint64_t operator()() override {
return val;
}
};
DumbBackend *backend;
public:
explicit SyncThread(DumbBackend *backend) : backend(backend) {}
- void *entry() {
+ void *entry() override {
backend->sync_loop();
return 0;
}
ThreadPool *tp) :
ThreadPool::WorkQueue<write_item>("DumbBackend::queue", ti, ti*10, tp),
backend(_backend) {}
- bool _enqueue(write_item *item) {
+ bool _enqueue(write_item *item) override {
item_queue.push_back(item);
return true;
}
- void _dequeue(write_item*) { ceph_abort(); }
- write_item *_dequeue() {
+ void _dequeue(write_item*) override { ceph_abort(); }
+ write_item *_dequeue() override {
if (item_queue.empty())
return 0;
write_item *retval = item_queue.front();
item_queue.pop_front();
return retval;
}
- bool _empty() {
+ bool _empty() override {
return item_queue.empty();
}
void _process(write_item *item, ThreadPool::TPHandle &) override {
item->on_applied,
item->on_commit);
}
- void _clear() {
+ void _clear() override {
return item_queue.clear();
}
} queue;
sem.Put();
}
}
- ~DumbBackend() {
+ ~DumbBackend() override {
{
Mutex::Locker l(sync_loop_mutex);
if (sync_loop_stop == 0)
uint64_t offset,
const bufferlist &bl,
Context *on_applied,
- Context *on_commit) {
+ Context *on_commit) override {
sem.Get();
queue.queue(
new write_item(
uint64_t offset,
uint64_t length,
bufferlist *bl,
- Context *on_complete);
+ Context *on_complete) override;
};
#endif
uint64_t offset,
const bufferlist &bl,
Context *on_applied,
- Context *on_commit);
+ Context *on_commit) override;
void read(
const string &oid,
uint64_t offset,
uint64_t length,
bufferlist *bl,
- Context *on_complete);
+ Context *on_complete) override;
};
#endif
uint64_t offset,
const bufferlist &bl,
Context *on_applied,
- Context *on_commit);
+ Context *on_commit) override;
void read(
const string &oid,
uint64_t offset,
uint64_t length,
bufferlist *bl,
- Context *on_complete);
+ Context *on_complete) override;
};
#endif
public:
TestFileStoreBackend(ObjectStore *os, bool write_infos);
- ~TestFileStoreBackend() {
+ ~TestFileStoreBackend() override {
finisher.stop();
}
void write(
uint64_t offset,
const bufferlist &bl,
Context *on_applied,
- Context *on_commit);
+ Context *on_commit) override;
void read(
const string &oid,
uint64_t offset,
uint64_t length,
bufferlist *bl,
- Context *on_complete);
+ Context *on_complete) override;
};
#endif
class CompressorExample : public Compressor {
public:
CompressorExample() : Compressor(COMP_ALG_NONE, "example") {}
- virtual ~CompressorExample() {}
+ ~CompressorExample() override {}
- virtual int compress(const bufferlist &in, bufferlist &out)
+ int compress(const bufferlist &in, bufferlist &out) override
{
out = in;
return 0;
}
- virtual int decompress(const bufferlist &in, bufferlist &out)
+ int decompress(const bufferlist &in, bufferlist &out) override
{
out = in;
return 0;
}
- virtual int decompress(bufferlist::iterator &p, size_t compressed_len, bufferlist &out)
+ int decompress(bufferlist::iterator &p, size_t compressed_len, bufferlist &out) override
{
p.copy(MIN(p.get_remaining(), compressed_len), out);
return 0;
}
cout << "[plugin " << plugin << " (" << GetParam() << ")]" << std::endl;
}
- ~CompressorTest() {
+ ~CompressorTest() override {
g_conf->set_val("compressor_zlib_isal", old_zlib_isal ? "true" : "false");
g_ceph_context->_conf->apply_changes(NULL);
}
: m_object(new T),
stray_okay(stray_okay),
nondeterministic(nondeterministic) {}
- ~DencoderBase() {
+ ~DencoderBase() override {
delete m_object;
}
MessageDencoderImpl() {
m_object = new T;
}
- ~MessageDencoderImpl() {
+ ~MessageDencoderImpl() override {
m_object->put();
}
class ErasureCodeExample : public ErasureCode {
public:
- virtual ~ErasureCodeExample() {}
+ ~ErasureCodeExample() override {}
- virtual int create_ruleset(const string &name,
+ int create_ruleset(const string &name,
CrushWrapper &crush,
- ostream *ss) const {
+ ostream *ss) const override {
return crush.add_simple_ruleset(name, "default", "host",
"indep", pg_pool_t::TYPE_ERASURE, ss);
}
- virtual int minimum_to_decode(const set<int> &want_to_read,
+ int minimum_to_decode(const set<int> &want_to_read,
const set<int> &available_chunks,
- set<int> *minimum) {
+ set<int> *minimum) override {
if (includes(available_chunks.begin(), available_chunks.end(),
want_to_read.begin(), want_to_read.end())) {
*minimum = want_to_read;
}
}
- virtual int minimum_to_decode_with_cost(const set<int> &want_to_read,
+ int minimum_to_decode_with_cost(const set<int> &want_to_read,
const map<int, int> &available,
- set<int> *minimum) {
+ set<int> *minimum) override {
//
// If one chunk is more expensive to fetch than the others,
// recover it instead. For instance, if the cost reflects the
return minimum_to_decode(want_to_read, available_chunks, minimum);
}
- virtual unsigned int get_chunk_count() const {
+ unsigned int get_chunk_count() const override {
return DATA_CHUNKS + CODING_CHUNKS;
}
- virtual unsigned int get_data_chunk_count() const {
+ unsigned int get_data_chunk_count() const override {
return DATA_CHUNKS;
}
- virtual unsigned int get_chunk_size(unsigned int object_size) const {
+ unsigned int get_chunk_size(unsigned int object_size) const override {
return ( object_size / DATA_CHUNKS ) + 1;
}
- virtual int encode(const set<int> &want_to_encode,
+ int encode(const set<int> &want_to_encode,
const bufferlist &in,
- map<int, bufferlist> *encoded) {
+ map<int, bufferlist> *encoded) override {
//
// make sure all data chunks have the same length, allocating
// padding if necessary.
return 0;
}
- virtual int encode_chunks(const set<int> &want_to_encode,
- map<int, bufferlist> *encoded) {
+ int encode_chunks(const set<int> &want_to_encode,
+ map<int, bufferlist> *encoded) override {
ceph_abort();
return 0;
}
- virtual int decode(const set<int> &want_to_read,
+ int decode(const set<int> &want_to_read,
const map<int, bufferlist> &chunks,
- map<int, bufferlist> *decoded) {
+ map<int, bufferlist> *decoded) override {
//
// All chunks have the same size
//
return 0;
}
- virtual int decode_chunks(const set<int> &want_to_read,
+ int decode_chunks(const set<int> &want_to_read,
const map<int, bufferlist> &chunks,
- map<int, bufferlist> *decoded) {
+ map<int, bufferlist> *decoded) override {
ceph_abort();
return 0;
}
- virtual const vector<int> &get_chunk_mapping() const {
+ const vector<int> &get_chunk_mapping() const override {
static vector<int> mapping;
return mapping;
}
ErasureCodeTest(unsigned int _k, unsigned int _m, unsigned int _chunk_size) :
k(_k), m(_m), chunk_size(_chunk_size) {}
- ~ErasureCodeTest() {}
+ ~ErasureCodeTest() override {}
int init(ErasureCodeProfile &profile, ostream *ss) override {
return 0;
static std::string get_temp_oid();
RadosTestFixture();
- virtual void SetUp();
- virtual void TearDown();
+ void SetUp() override;
+ void TearDown() override;
int create(const std::string &oid, uint8_t order = 14,
uint8_t splay_width = 2);
Listener(RadosTestFixture *_test_fixture)
: test_fixture(_test_fixture), mutex("mutex") {}
- virtual void handle_update(journal::JournalMetadata *metadata) {
+ void handle_update(journal::JournalMetadata *metadata) override {
Mutex::Locker locker(mutex);
++updates[metadata];
cond.Signal();
class RadosTestNS : public ::testing::Test {
public:
RadosTestNS() {}
- virtual ~RadosTestNS() {}
+ ~RadosTestNS() override {}
protected:
static void SetUpTestCase();
static void TearDownTestCase();
static rados_t s_cluster;
static std::string pool_name;
- virtual void SetUp();
- virtual void TearDown();
+ void SetUp() override;
+ void TearDown() override;
rados_t cluster;
rados_ioctx_t ioctx;
};
class RadosTestPPNS : public ::testing::Test {
public:
RadosTestPPNS() : cluster(s_cluster) {}
- virtual ~RadosTestPPNS() {}
+ ~RadosTestPPNS() override {}
protected:
static void SetUpTestCase();
static void TearDownTestCase();
static librados::Rados s_cluster;
static std::string pool_name;
- virtual void SetUp();
- virtual void TearDown();
+ void SetUp() override;
+ void TearDown() override;
librados::Rados &cluster;
librados::IoCtx ioctx;
};
class RadosTestParamPPNS : public ::testing::TestWithParam<const char*> {
public:
RadosTestParamPPNS() : cluster(s_cluster) {}
- virtual ~RadosTestParamPPNS() {}
+ ~RadosTestParamPPNS() override {}
static void SetUpTestCase();
static void TearDownTestCase();
protected:
static std::string pool_name;
static std::string cache_pool_name;
- virtual void SetUp();
- virtual void TearDown();
+ void SetUp() override;
+ void TearDown() override;
librados::Rados &cluster;
librados::IoCtx ioctx;
};
class RadosTestECNS : public RadosTestNS {
public:
RadosTestECNS() {}
- virtual ~RadosTestECNS() {}
+ ~RadosTestECNS() override {}
protected:
static void SetUpTestCase();
static void TearDownTestCase();
static rados_t s_cluster;
static std::string pool_name;
- virtual void SetUp();
- virtual void TearDown();
+ void SetUp() override;
+ void TearDown() override;
rados_t cluster;
rados_ioctx_t ioctx;
uint64_t alignment;
class RadosTestECPPNS : public RadosTestPPNS {
public:
RadosTestECPPNS() : cluster(s_cluster) {}
- virtual ~RadosTestECPPNS() {}
+ ~RadosTestECPPNS() override {}
protected:
static void SetUpTestCase();
static void TearDownTestCase();
static librados::Rados s_cluster;
static std::string pool_name;
- virtual void SetUp();
- virtual void TearDown();
+ void SetUp() override;
+ void TearDown() override;
librados::Rados &cluster;
librados::IoCtx ioctx;
uint64_t alignment;
class RadosTest : public ::testing::Test {
public:
RadosTest() {}
- virtual ~RadosTest() {}
+ ~RadosTest() override {}
protected:
static void SetUpTestCase();
static void TearDownTestCase();
static rados_t s_cluster;
static std::string pool_name;
- virtual void SetUp();
- virtual void TearDown();
+ void SetUp() override;
+ void TearDown() override;
rados_t cluster;
rados_ioctx_t ioctx;
std::string nspace;
class RadosTestPP : public ::testing::Test {
public:
RadosTestPP() : cluster(s_cluster) {}
- virtual ~RadosTestPP() {}
+ ~RadosTestPP() override {}
protected:
static void SetUpTestCase();
static void TearDownTestCase();
static librados::Rados s_cluster;
static std::string pool_name;
- virtual void SetUp();
- virtual void TearDown();
+ void SetUp() override;
+ void TearDown() override;
librados::Rados &cluster;
librados::IoCtx ioctx;
std::string nspace;
class RadosTestParamPP : public ::testing::TestWithParam<const char*> {
public:
RadosTestParamPP() : cluster(s_cluster) {}
- virtual ~RadosTestParamPP() {}
+ ~RadosTestParamPP() override {}
static void SetUpTestCase();
static void TearDownTestCase();
protected:
static std::string pool_name;
static std::string cache_pool_name;
- virtual void SetUp();
- virtual void TearDown();
+ void SetUp() override;
+ void TearDown() override;
librados::Rados &cluster;
librados::IoCtx ioctx;
std::string nspace;
class RadosTestEC : public RadosTest {
public:
RadosTestEC() {}
- virtual ~RadosTestEC() {}
+ ~RadosTestEC() override {}
protected:
static void SetUpTestCase();
static void TearDownTestCase();
static rados_t s_cluster;
static std::string pool_name;
- virtual void SetUp();
- virtual void TearDown();
+ void SetUp() override;
+ void TearDown() override;
rados_t cluster;
rados_ioctx_t ioctx;
std::string nspace;
class RadosTestECPP : public RadosTestPP {
public:
RadosTestECPP() : cluster(s_cluster) {}
- virtual ~RadosTestECPP() {}
+ ~RadosTestECPP() override {}
protected:
static void SetUpTestCase();
static void TearDownTestCase();
static librados::Rados s_cluster;
static std::string pool_name;
- virtual void SetUp();
- virtual void TearDown();
+ void SetUp() override;
+ void TearDown() override;
librados::Rados &cluster;
librados::IoCtx ioctx;
std::string nspace;
class RadosTestNP: public ::testing::Test {
public:
RadosTestNP() {}
- virtual ~RadosTestNP() {}
+ ~RadosTestNP() override {}
};
#endif
{
public:
LibRadosTwoPoolsECPP() {};
- ~LibRadosTwoPoolsECPP() {};
+ ~LibRadosTwoPoolsECPP() override {};
protected:
static void SetUpTestCase() {
pool_name = get_temp_pool_name();
{
public:
LibRadosTwoPoolsPP() {};
- ~LibRadosTwoPoolsPP() {};
+ ~LibRadosTwoPoolsPP() override {};
protected:
static void SetUpTestCase() {
pool_name = get_temp_pool_name();
{
public:
LibRadosTwoPoolsECPP() {};
- ~LibRadosTwoPoolsECPP() {};
+ ~LibRadosTwoPoolsECPP() override {};
protected:
static void SetUpTestCase() {
pool_name = get_temp_pool_name();
return m_mock_client;
}
- virtual TestIoCtxImpl *clone() {
+ TestIoCtxImpl *clone() override {
TestIoCtxImpl *io_ctx_impl = new ::testing::NiceMock<MockTestMemIoCtxImpl>(
m_mock_client, m_client, get_pool_id(), get_pool_name(), get_pool());
io_ctx_impl->set_snap_read(get_snap_read());
C_AioNotify(TestIoCtxImpl *_io_ctx, AioCompletionImpl *_aio_comp)
: io_ctx(_io_ctx), aio_comp(_aio_comp) {
}
- virtual void finish(int r) {
+ void finish(int r) override {
io_ctx->handle_aio_notify_complete(aio_comp, r);
}
};
TestMemIoCtxImpl(TestMemRadosClient *client, int64_t m_pool_id,
const std::string& pool_name,
TestMemRadosClient::Pool *pool);
- virtual ~TestMemIoCtxImpl();
-
- virtual TestIoCtxImpl *clone();
-
- virtual int aio_remove(const std::string& oid, AioCompletionImpl *c);
-
- virtual int append(const std::string& oid, const bufferlist &bl,
- const SnapContext &snapc);
- virtual int assert_exists(const std::string &oid);
-
- virtual int create(const std::string& oid, bool exclusive);
- virtual int list_snaps(const std::string& o, snap_set_t *out_snaps);
- virtual int omap_get_vals(const std::string& oid,
- const std::string& start_after,
- const std::string &filter_prefix,
- uint64_t max_return,
- std::map<std::string, bufferlist> *out_vals);
- virtual int omap_rm_keys(const std::string& oid,
- const std::set<std::string>& keys);
- virtual int omap_set(const std::string& oid, const std::map<std::string,
- bufferlist> &map);
- virtual int read(const std::string& oid, size_t len, uint64_t off,
- bufferlist *bl);
- virtual int remove(const std::string& oid, const SnapContext &snapc);
- virtual int selfmanaged_snap_create(uint64_t *snapid);
- virtual int selfmanaged_snap_remove(uint64_t snapid);
- virtual int selfmanaged_snap_rollback(const std::string& oid,
- uint64_t snapid);
- virtual int sparse_read(const std::string& oid, uint64_t off, uint64_t len,
- std::map<uint64_t,uint64_t> *m, bufferlist *data_bl);
- virtual int stat(const std::string& oid, uint64_t *psize, time_t *pmtime);
- virtual int truncate(const std::string& oid, uint64_t size,
- const SnapContext &snapc);
- virtual int write(const std::string& oid, bufferlist& bl, size_t len,
- uint64_t off, const SnapContext &snapc);
- virtual int write_full(const std::string& oid, bufferlist& bl,
- const SnapContext &snapc);
- virtual int writesame(const std::string& oid, bufferlist& bl, size_t len,
- uint64_t off, const SnapContext &snapc);
- virtual int xattr_get(const std::string& oid,
- std::map<std::string, bufferlist>* attrset);
- virtual int xattr_set(const std::string& oid, const std::string &name,
- bufferlist& bl);
- virtual int zero(const std::string& oid, uint64_t off, uint64_t len);
+ ~TestMemIoCtxImpl() override;
+
+ TestIoCtxImpl *clone() override;
+
+ int aio_remove(const std::string& oid, AioCompletionImpl *c) override;
+
+ int append(const std::string& oid, const bufferlist &bl,
+ const SnapContext &snapc) override;
+
+ int assert_exists(const std::string &oid) override;
+
+ int create(const std::string& oid, bool exclusive) override;
+ int list_snaps(const std::string& o, snap_set_t *out_snaps) override;
+ int omap_get_vals(const std::string& oid,
+ const std::string& start_after,
+ const std::string &filter_prefix,
+ uint64_t max_return,
+ std::map<std::string, bufferlist> *out_vals) override;
+ int omap_rm_keys(const std::string& oid,
+ const std::set<std::string>& keys) override;
+ int omap_set(const std::string& oid, const std::map<std::string,
+ bufferlist> &map) override;
+ int read(const std::string& oid, size_t len, uint64_t off,
+ bufferlist *bl) override;
+ int remove(const std::string& oid, const SnapContext &snapc) override;
+ int selfmanaged_snap_create(uint64_t *snapid) override;
+ int selfmanaged_snap_remove(uint64_t snapid) override;
+ int selfmanaged_snap_rollback(const std::string& oid,
+ uint64_t snapid) override;
+ int sparse_read(const std::string& oid, uint64_t off, uint64_t len,
+ std::map<uint64_t,uint64_t> *m, bufferlist *data_bl) override;
+ int stat(const std::string& oid, uint64_t *psize, time_t *pmtime) override;
+ int truncate(const std::string& oid, uint64_t size,
+ const SnapContext &snapc) override;
+ int write(const std::string& oid, bufferlist& bl, size_t len,
+ uint64_t off, const SnapContext &snapc) override;
+ int write_full(const std::string& oid, bufferlist& bl,
+ const SnapContext &snapc) override;
+ int writesame(const std::string& oid, bufferlist& bl, size_t len,
+ uint64_t off, const SnapContext &snapc) override;
+ int xattr_get(const std::string& oid,
+ std::map<std::string, bufferlist>* attrset) override;
+ int xattr_set(const std::string& oid, const std::string &name,
+ bufferlist& bl) override;
+ int zero(const std::string& oid, uint64_t off, uint64_t len) override;
protected:
TestMemRadosClient::Pool *get_pool() {
TestMemRadosClient(CephContext *cct);
- virtual TestIoCtxImpl *create_ioctx(int64_t pool_id,
- const std::string &pool_name);
+ TestIoCtxImpl *create_ioctx(int64_t pool_id,
+ const std::string &pool_name) override;
- virtual void object_list(int64_t pool_id,
- std::list<librados::TestRadosClient::Object> *list);
+ void object_list(int64_t pool_id,
+ std::list<librados::TestRadosClient::Object> *list) override;
- virtual int pool_create(const std::string &pool_name);
- virtual int pool_delete(const std::string &pool_name);
- virtual int pool_get_base_tier(int64_t pool_id, int64_t* base_tier);
- virtual int pool_list(std::list<std::pair<int64_t, std::string> >& v);
- virtual int64_t pool_lookup(const std::string &name);
- virtual int pool_reverse_lookup(int64_t id, std::string *name);
+ int pool_create(const std::string &pool_name) override;
+ int pool_delete(const std::string &pool_name) override;
+ int pool_get_base_tier(int64_t pool_id, int64_t* base_tier) override;
+ int pool_list(std::list<std::pair<int64_t, std::string> >& v) override;
+ int64_t pool_lookup(const std::string &name) override;
+ int pool_reverse_lookup(int64_t id, std::string *name) override;
- virtual int watch_flush();
+ int watch_flush() override;
- virtual int blacklist_add(const std::string& client_address,
- uint32_t expire_seconds);
+ int blacklist_add(const std::string& client_address,
+ uint32_t expire_seconds) override;
protected:
- ~TestMemRadosClient();
+ ~TestMemRadosClient() override;
Pool *get_pool(const std::string &pool_name);
class StriperTest : public ::testing::Test {
public:
StriperTest() {}
- virtual ~StriperTest() {}
+ ~StriperTest() override {}
protected:
static void SetUpTestCase();
static void TearDownTestCase();
static rados_t s_cluster;
static std::string pool_name;
- virtual void SetUp();
- virtual void TearDown();
+ void SetUp() override;
+ void TearDown() override;
rados_t cluster;
rados_ioctx_t ioctx;
rados_striper_t striper;
class StriperTestPP : public ::testing::Test {
public:
StriperTestPP() : cluster(s_cluster) {}
- virtual ~StriperTestPP() {}
+ ~StriperTestPP() override {}
static void SetUpTestCase();
static void TearDownTestCase();
protected:
static librados::Rados s_cluster;
static std::string pool_name;
- virtual void SetUp();
+ void SetUp() override;
librados::Rados &cluster;
librados::IoCtx ioctx;
libradosstriper::RadosStriper striper;
class StriperTestParam : public ::testing::TestWithParam<TestData> {
public:
StriperTestParam() : cluster(s_cluster) {}
- virtual ~StriperTestParam() {}
+ ~StriperTestParam() override {}
static void SetUpTestCase();
static void TearDownTestCase();
protected:
static librados::Rados s_cluster;
static std::string pool_name;
- virtual void SetUp();
+ void SetUp() override;
librados::Rados &cluster;
librados::IoCtx ioctx;
libradosstriper::RadosStriper striper;
uint64_t dcount;
public:
explicit SimpleDispatcher(Messenger *msgr);
- virtual ~SimpleDispatcher();
+ ~SimpleDispatcher() override;
uint64_t get_dcount() { return dcount; }
};
// how i receive messages
- virtual bool ms_dispatch(Message *m);
+ bool ms_dispatch(Message *m) override;
/**
* This function will be called whenever a new Connection is made to the
* @param con The new Connection which has been established. You are not
* granted a reference to it -- take one if you need one!
*/
- virtual void ms_handle_connect(Connection *con) { };
+ void ms_handle_connect(Connection *con) override { };
/**
* Callback indicating we have accepted an incoming connection.
*
* @param con The (new or existing) Connection associated with the session
*/
- virtual void ms_handle_accept(Connection *con) { };
+ void ms_handle_accept(Connection *con) override { };
/*
* this indicates that the ordered+reliable delivery semantics have
* @param con The Connection which broke. You are not granted
* a reference to it.
*/
- virtual bool ms_handle_reset(Connection *con);
+ bool ms_handle_reset(Connection *con) override;
/**
* This indicates that the ordered+reliable delivery semantics
* @param con The Connection which broke. You are not granted
* a reference to it.
*/
- virtual void ms_handle_remote_reset(Connection *con);
+ void ms_handle_remote_reset(Connection *con) override;
- virtual bool ms_handle_refused(Connection *con) { return false; }
+ bool ms_handle_refused(Connection *con) override { return false; }
/**
* @defgroup Authentication
*
* @return True if this function call properly filled in *a, false otherwise.
*/
- virtual bool ms_get_authorizer(int dest_type, AuthAuthorizer **a,
- bool force_new) { return false; };
+ bool ms_get_authorizer(int dest_type, AuthAuthorizer **a,
+ bool force_new) override { return false; };
/**
* Verify the authorizer for a new incoming Connection.
* @return True if we were able to prove or disprove correctness of
* authorizer, false otherwise.
*/
- virtual bool ms_verify_authorizer(Connection *con, int peer_type,
+ bool ms_verify_authorizer(Connection *con, int peer_type,
int protocol, bufferlist& authorizer,
bufferlist& authorizer_reply,
- bool& isvalid, CryptoKey& session_key) {
+ bool& isvalid, CryptoKey& session_key) override {
/* always succeed */
isvalid = true;
return true;
op_wq(30, 30, &op_tp) {
op_tp.start();
}
- ~ServerDispatcher() {
+ ~ServerDispatcher() override {
op_tp.stop();
}
bool ms_can_fast_dispatch_any() const override { return true; }
const string &oid)
: coll(coll), oid(oid) {}
void operator()(FileStoreTracker *harness,
- OutTransaction *out) {
+ OutTransaction *out) override {
harness->write(make_pair(coll, oid), out);
}
};
const string &to)
: coll(coll), from(from), to(to) {}
void operator()(FileStoreTracker *harness,
- OutTransaction *out) {
+ OutTransaction *out) override {
harness->clone_range(make_pair(coll, from), make_pair(coll, to),
out);
}
const string &to)
: coll(coll), from(from), to(to) {}
void operator()(FileStoreTracker *harness,
- OutTransaction *out) {
+ OutTransaction *out) override {
harness->clone(make_pair(coll, from), make_pair(coll, to),
out);
}
const string &obj)
: coll(coll), obj(obj) {}
void operator()(FileStoreTracker *harness,
- OutTransaction *out) {
+ OutTransaction *out) override {
harness->remove(make_pair(coll, obj),
out);
}
public:
explicit C_OnFinished(TestObjectStoreState *state) : m_state(state) { }
- void finish(int r) {
+ void finish(int r) override {
Mutex::Locker locker(m_state->m_finished_lock);
m_state->dec_in_flight();
m_state->m_finished_cond.Signal();
explicit C_OnReadable(WorkloadGenerator *state)
:TestObjectStoreState::C_OnFinished(state), wrkldgen_state(state) { }
- void finish(int r)
+ void finish(int r) override
{
TestObjectStoreState::C_OnFinished::finish(r);
wrkldgen_state->m_nr_runs.inc();
C_OnDestroyed(WorkloadGenerator *state, coll_entry_t *entry) :
C_OnReadable(state), m_entry(entry) {}
- void finish(int r) {
+ void finish(int r) override {
C_OnReadable::finish(r);
delete m_entry;
}
C_StatWrapper(C_StatState *state, Context *context)
: stat_state(state), ctx(context) { }
- void finish(int r) {
+ void finish(int r) override {
ctx->complete(r);
stat_state->wrkldgen->m_stats_lock.Lock();
public:
AioWriter(OmapBench *omap_bench);
- ~AioWriter();
+ ~AioWriter() override;
virtual librados::AioCompletion * get_aioc();
virtual void set_aioc(librados::callback_t complete,
librados::callback_t safe);
current = rand();
}
- ContDesc get_cont() const { return cont; }
- uint64_t get_pos() const { return pos; }
+ ContDesc get_cont() const override { return cont; }
+ uint64_t get_pos() const override { return pos; }
- iterator_impl &operator++() {
+ iterator_impl &operator++() override {
pos++;
current = rand();
return *this;
}
- char operator*() {
+ char operator*() override {
return current;
}
- void seek(uint64_t _pos) {
+ void seek(uint64_t _pos) override {
if (_pos < pos) {
iterator_impl begin = iterator_impl(cont, cont_gen);
begin.seek(_pos);
}
}
- bool end() {
+ bool end() override {
return pos >= cont_gen->get_length(cont);
}
};
- ContentsGenerator::iterator_impl *get_iterator_impl(const ContDesc &in) {
+ ContentsGenerator::iterator_impl *get_iterator_impl(const ContDesc &in) override {
RandGenerator::iterator_impl *i = new iterator_impl(in, this);
return i;
}
- void put_iterator_impl(ContentsGenerator::iterator_impl *in) {
+ void put_iterator_impl(ContentsGenerator::iterator_impl *in) override {
delete in;
}
ContentsGenerator::iterator_impl *dup_iterator_impl(
- const ContentsGenerator::iterator_impl *in) {
+ const ContentsGenerator::iterator_impl *in) override {
ContentsGenerator::iterator_impl *retval = get_iterator_impl(in->get_cont());
retval->seek(in->get_pos());
return retval;
min_stride_size(min_stride_size),
max_stride_size(max_stride_size) {}
void get_ranges_map(
- const ContDesc &cont, std::map<uint64_t, uint64_t> &out);
- uint64_t get_length(const ContDesc &in) {
+ const ContDesc &cont, std::map<uint64_t, uint64_t> &out) override;
+ uint64_t get_length(const ContDesc &in) override {
RandWrap rand(in.seqnum);
if (max_length == 0)
return 0;
AttrGenerator(uint64_t max_len, uint64_t big_max_len)
: max_len(max_len), big_max_len(big_max_len) {}
void get_ranges_map(
- const ContDesc &cont, std::map<uint64_t, uint64_t> &out) {
+ const ContDesc &cont, std::map<uint64_t, uint64_t> &out) override {
out.insert(std::pair<uint64_t, uint64_t>(0, get_length(cont)));
}
- uint64_t get_length(const ContDesc &in) {
+ uint64_t get_length(const ContDesc &in) override {
RandWrap rand(in.seqnum);
// make some attrs big
if (in.seqnum & 3)
RandWrap rand(in.seqnum);
return round_up(rand() % max_append_total, alignment);
}
- uint64_t get_length(const ContDesc &in) {
+ uint64_t get_length(const ContDesc &in) override {
return off + get_append_size(in);
}
void get_ranges_map(
- const ContDesc &cont, std::map<uint64_t, uint64_t> &out);
+ const ContDesc &cont, std::map<uint64_t, uint64_t> &out) override;
};
class ObjectDesc {
lock("watch lock") {}
void handle_notify(uint64_t notify_id, uint64_t cookie,
uint64_t notifier_id,
- bufferlist &bl) {
+ bufferlist &bl) override {
Mutex::Locker l(lock);
waiting = false;
cond.SignalAll();
}
- void handle_error(uint64_t cookie, int err) {
+ void handle_error(uint64_t cookie, int err) override {
Mutex::Locker l(lock);
cout << "watch handle_error " << err << std::endl;
}
: TestOp(n, context, stat), oid(oid), comp(NULL)
{}
- void _begin()
+ void _begin() override
{
ContDesc cont;
set<string> to_remove;
context->io_ctx.aio_operate(context->prefix+oid, comp, &op);
}
- void _finish(CallbackInfo *info)
+ void _finish(CallbackInfo *info) override
{
Mutex::Locker l(context->state_lock);
done = true;
context->kick();
}
- bool finished()
+ bool finished() override
{
return done;
}
- string getType()
+ string getType() override
{
return "RemoveAttrsOp";
}
oid(oid), comp(NULL)
{}
- void _begin()
+ void _begin() override
{
ContDesc cont;
{
context->io_ctx.aio_operate(context->prefix+oid, comp, &op);
}
- void _finish(CallbackInfo *info)
+ void _finish(CallbackInfo *info) override
{
Mutex::Locker l(context->state_lock);
int r;
context->kick();
}
- bool finished()
+ bool finished() override
{
return done;
}
- string getType()
+ string getType() override
{
return "SetAttrsOp";
}
do_excl(do_excl)
{}
- void _begin()
+ void _begin() override
{
context->state_lock.Lock();
done = 0;
context->state_lock.Unlock();
}
- void _finish(CallbackInfo *info)
+ void _finish(CallbackInfo *info) override
{
assert(info);
context->state_lock.Lock();
context->state_lock.Unlock();
}
- bool finished()
+ bool finished() override
{
return done;
}
- string getType()
+ string getType() override
{
return "WriteOp";
}
last_acked_tid(0)
{}
- void _begin()
+ void _begin() override
{
context->state_lock.Lock();
done = 0;
context->state_lock.Unlock();
}
- void _finish(CallbackInfo *info)
+ void _finish(CallbackInfo *info) override
{
assert(info);
context->state_lock.Lock();
context->state_lock.Unlock();
}
- bool finished()
+ bool finished() override
{
return done;
}
- string getType()
+ string getType() override
{
return "WriteSameOp";
}
: TestOp(n, context, stat), oid(oid)
{}
- void _begin()
+ void _begin() override
{
context->state_lock.Lock();
if (context->get_watch_context(oid)) {
context->state_lock.Unlock();
}
- string getType()
+ string getType() override
{
return "DeleteOp";
}
}
}
- void _begin()
+ void _begin() override
{
context->state_lock.Lock();
if (!(rand() % 4) && !context->snaps.empty()) {
context->state_lock.Unlock();
}
- void _finish(CallbackInfo *info)
+ void _finish(CallbackInfo *info) override
{
Mutex::Locker l(context->state_lock);
assert(!done);
done = true;
}
- bool finished()
+ bool finished() override
{
return done;
}
- string getType()
+ string getType() override
{
return "ReadOp";
}
: TestOp(n, context, stat)
{}
- void _begin()
+ void _begin() override
{
uint64_t snap;
string snapname;
}
}
- string getType()
+ string getType() override
{
return "SnapCreateOp";
}
- bool must_quiesce_other_ops() { return context->pool_snaps; }
+ bool must_quiesce_other_ops() override { return context->pool_snaps; }
};
class SnapRemoveOp : public TestOp {
to_remove(snap)
{}
- void _begin()
+ void _begin() override
{
context->state_lock.Lock();
uint64_t snap = context->snaps[to_remove];
context->state_lock.Unlock();
}
- string getType()
+ string getType() override
{
return "SnapRemoveOp";
}
oid(_oid)
{}
- void _begin()
+ void _begin() override
{
context->state_lock.Lock();
ObjectDesc contents;
}
}
- string getType()
+ string getType() override
{
return "WatchOp";
}
last_finished(-1), outstanding(3)
{}
- void _begin()
+ void _begin() override
{
context->state_lock.Lock();
if (context->get_watch_context(oid)) {
}
}
- void _finish(CallbackInfo *info)
+ void _finish(CallbackInfo *info) override
{
Mutex::Locker l(context->state_lock);
uint64_t tid = info->id;
}
}
- bool finished()
+ bool finished() override
{
return done;
}
- string getType()
+ string getType() override
{
return "RollBackOp";
}
version(0), r(0)
{}
- void _begin()
+ void _begin() override
{
ContDesc cont;
{
}
- void _finish(CallbackInfo *info)
+ void _finish(CallbackInfo *info) override
{
Mutex::Locker l(context->state_lock);
}
}
- bool finished()
+ bool finished() override
{
return done == 2;
}
- string getType()
+ string getType() override
{
return "CopyFromOp";
}
hash(hash)
{}
- void _begin()
+ void _begin() override
{
pair<TestOp*, TestOp::CallbackInfo*> *cb_arg =
new pair<TestOp*, TestOp::CallbackInfo*>(this,
assert(r == 0);
}
- void _finish(CallbackInfo *info) {
+ void _finish(CallbackInfo *info) override {
Mutex::Locker l(context->state_lock);
if (!comp2) {
if (ls.empty()) {
context->kick();
}
- bool finished() {
+ bool finished() override {
return done;
}
- string getType() {
+ string getType() override {
return "HitSetListOp";
}
};
oid(oid)
{}
- void _begin()
+ void _begin() override
{
context->state_lock.Lock();
pair<TestOp*, TestOp::CallbackInfo*> *cb_arg =
assert(!r);
}
- void _finish(CallbackInfo *info)
+ void _finish(CallbackInfo *info) override
{
context->state_lock.Lock();
assert(!done);
context->state_lock.Unlock();
}
- bool finished()
+ bool finished() override
{
return done;
}
- string getType()
+ string getType() override
{
return "UndirtyOp";
}
dirty(false)
{}
- void _begin()
+ void _begin() override
{
context->state_lock.Lock();
}
}
- void _finish(CallbackInfo *info)
+ void _finish(CallbackInfo *info) override
{
context->state_lock.Lock();
assert(!done);
context->state_lock.Unlock();
}
- bool finished()
+ bool finished() override
{
return done;
}
- string getType()
+ string getType() override
{
return "IsDirtyOp";
}
can_fail(false)
{}
- void _begin()
+ void _begin() override
{
context->state_lock.Lock();
}
}
- void _finish(CallbackInfo *info)
+ void _finish(CallbackInfo *info) override
{
context->state_lock.Lock();
assert(!done);
context->state_lock.Unlock();
}
- bool finished()
+ bool finished() override
{
return done;
}
- string getType()
+ string getType() override
{
return "CacheFlushOp";
}
oid(oid)
{}
- void _begin()
+ void _begin() override
{
context->state_lock.Lock();
}
}
- void _finish(CallbackInfo *info)
+ void _finish(CallbackInfo *info) override
{
context->state_lock.Lock();
assert(!done);
context->state_lock.Unlock();
}
- bool finished()
+ bool finished() override
{
return done;
}
- string getType()
+ string getType() override
{
return "CacheEvictOp";
}
class FakeWriteback : public WritebackHandler {
public:
FakeWriteback(CephContext *cct, Mutex *lock, uint64_t delay_ns);
- virtual ~FakeWriteback();
+ ~FakeWriteback() override;
- virtual void read(const object_t& oid, uint64_t object_no,
+ void read(const object_t& oid, uint64_t object_no,
const object_locator_t& oloc, uint64_t off, uint64_t len,
snapid_t snapid, bufferlist *pbl, uint64_t trunc_size,
- __u32 trunc_seq, int op_flags, Context *onfinish);
+ __u32 trunc_seq, int op_flags, Context *onfinish) override;
- virtual ceph_tid_t write(const object_t& oid, const object_locator_t& oloc,
+ ceph_tid_t write(const object_t& oid, const object_locator_t& oloc,
uint64_t off, uint64_t len,
const SnapContext& snapc, const bufferlist &bl,
ceph::real_time mtime, uint64_t trunc_size,
__u32 trunc_seq, ceph_tid_t journal_tid,
- Context *oncommit);
+ Context *oncommit) override;
using WritebackHandler::write;
- virtual bool may_copy_on_write(const object_t&, uint64_t, uint64_t,
- snapid_t);
+ bool may_copy_on_write(const object_t&, uint64_t, uint64_t,
+ snapid_t) override;
private:
CephContext *m_cct;
Mutex *m_lock;
class MemWriteback : public WritebackHandler {
public:
MemWriteback(CephContext *cct, Mutex *lock, uint64_t delay_ns);
- virtual ~MemWriteback();
+ ~MemWriteback() override;
- virtual void read(const object_t& oid, uint64_t object_no,
+ void read(const object_t& oid, uint64_t object_no,
const object_locator_t& oloc, uint64_t off, uint64_t len,
snapid_t snapid, bufferlist *pbl, uint64_t trunc_size,
- __u32 trunc_seq, int op_flags, Context *onfinish);
+ __u32 trunc_seq, int op_flags, Context *onfinish) override;
- virtual ceph_tid_t write(const object_t& oid, const object_locator_t& oloc,
+ ceph_tid_t write(const object_t& oid, const object_locator_t& oloc,
uint64_t off, uint64_t len,
const SnapContext& snapc, const bufferlist &bl,
ceph::real_time mtime, uint64_t trunc_size,
__u32 trunc_seq, ceph_tid_t journal_tid,
- Context *oncommit);
+ Context *oncommit) override;
using WritebackHandler::write;
- virtual bool may_copy_on_write(const object_t&, uint64_t, uint64_t,
- snapid_t);
+ bool may_copy_on_write(const object_t&, uint64_t, uint64_t,
+ snapid_t) override;
void write_object_data(const object_t& oid, uint64_t off, uint64_t len,
const bufferlist& data_bl);
int read_object_data(const object_t& oid, uint64_t off, uint64_t len,
{
}
- ~RadosDeleteObjectsR()
+ ~RadosDeleteObjectsR() override
{
}
{
}
- ~RadosAddObjectsR()
+ ~RadosAddObjectsR() override
{
}
{
}
- ~StRadosOpenPool()
+ ~StRadosOpenPool() override
{
}
const std::string &pool_name,
int num_objects,
const std::string &suffix);
- ~StRadosCreatePool();
- virtual int run();
+ ~StRadosCreatePool() override;
+ int run() override;
private:
CrossProcessSem *m_setup_sem;
CrossProcessSem *m_pool_setup_sem;
int num_objs,
const std::string &pool_name,
const std::string &suffix);
- ~StRadosDeleteObjs();
- virtual int run();
+ ~StRadosDeleteObjs() override;
+ int run() override;
private:
CrossProcessSem *m_setup_sem;
CrossProcessSem *m_deleted_sem;
CrossProcessSem *pool_setup_sem,
CrossProcessSem *delete_pool_sem,
const std::string &pool_name);
- ~StRadosDeletePool();
- virtual int run();
+ ~StRadosDeletePool() override;
+ int run() override;
private:
CrossProcessSem *m_pool_setup_sem;
CrossProcessSem *m_delete_pool_sem;
CrossProcessSem *pool_setup_sem,
CrossProcessSem *midway_sem_wait,
CrossProcessSem *midway_sem_post);
- ~StRadosListObjects();
- virtual int run();
+ ~StRadosListObjects() override;
+ int run() override;
private:
std::string m_pool_name;
bool m_accept_list_errors;
int notify_retcode,
const std::string &pool_name,
const std::string &obj_name);
- ~StRadosNotify();
- virtual int run();
+ ~StRadosNotify() override;
+ int run() override;
private:
CrossProcessSem *m_setup_sem;
CrossProcessSem *m_notify_sem;
int watch_retcode,
const std::string &pool_name,
const std::string &obj_name);
- ~StRadosWatch();
- virtual int run();
+ ~StRadosWatch() override;
+ int run() override;
private:
CrossProcessSem *m_setup_sem;
CrossProcessSem *m_watch_sem;
PausyAsyncMap() : lock("PausyAsyncMap"), doer(this) {
doer.create("doer");
}
- ~PausyAsyncMap() {
+ ~PausyAsyncMap() override {
doer.join();
}
int get_keys(