]>
git.proxmox.com Git - ceph.git/blob - ceph/src/test/librados_test_stub/TestRadosClient.h
1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
4 #ifndef CEPH_TEST_RADOS_CLIENT_H
5 #define CEPH_TEST_RADOS_CLIENT_H
7 #include "include/rados/librados.hpp"
8 #include "common/config.h"
9 #include "include/atomic.h"
10 #include "include/buffer_fwd.h"
11 #include "test/librados_test_stub/TestWatchNotify.h"
12 #include <boost/function.hpp>
13 #include <boost/functional/hash.hpp>
25 class TestRadosClient
{
28 static void Deallocate(librados::TestRadosClient
* client
)
33 typedef boost::function
<int()> AioFunction
;
43 Transaction(TestRadosClient
*rados_client
, const std::string
&oid
)
44 : rados_client(rados_client
), oid(oid
) {
45 rados_client
->transaction_start(oid
);
48 rados_client
->transaction_finish(oid
);
51 TestRadosClient
*rados_client
;
55 TestRadosClient(CephContext
*cct
, TestWatchNotify
*watch_notify
);
60 virtual CephContext
*cct();
62 virtual uint32_t get_nonce() = 0;
63 virtual uint64_t get_instance_id() = 0;
65 virtual int connect();
66 virtual void shutdown();
67 virtual int wait_for_latest_osdmap();
69 virtual TestIoCtxImpl
*create_ioctx(int64_t pool_id
,
70 const std::string
&pool_name
) = 0;
72 virtual int mon_command(const std::vector
<std::string
>& cmd
,
73 const bufferlist
&inbl
,
74 bufferlist
*outbl
, std::string
*outs
);
76 virtual void object_list(int64_t pool_id
,
77 std::list
<librados::TestRadosClient::Object
> *list
) = 0;
79 virtual int pool_create(const std::string
&pool_name
) = 0;
80 virtual int pool_delete(const std::string
&pool_name
) = 0;
81 virtual int pool_get_base_tier(int64_t pool_id
, int64_t* base_tier
) = 0;
82 virtual int pool_list(std::list
<std::pair
<int64_t, std::string
> >& v
) = 0;
83 virtual int64_t pool_lookup(const std::string
&name
) = 0;
84 virtual int pool_reverse_lookup(int64_t id
, std::string
*name
) = 0;
86 virtual int aio_watch_flush(AioCompletionImpl
*c
);
87 virtual int watch_flush() = 0;
89 virtual bool is_blacklisted() const = 0;
90 virtual int blacklist_add(const std::string
& client_address
,
91 uint32_t expire_seconds
) = 0;
93 Finisher
*get_aio_finisher() {
94 return m_aio_finisher
;
96 TestWatchNotify
*get_watch_notify() {
97 return m_watch_notify
;
100 void add_aio_operation(const std::string
& oid
, bool queue_callback
,
101 const AioFunction
&aio_function
, AioCompletionImpl
*c
);
102 void flush_aio_operations();
103 void flush_aio_operations(AioCompletionImpl
*c
);
105 void finish_aio_completion(AioCompletionImpl
*c
, int r
);
108 virtual ~TestRadosClient();
110 virtual void transaction_start(const std::string
&oid
) = 0;
111 virtual void transaction_finish(const std::string
&oid
) = 0;
118 TestWatchNotify
*m_watch_notify
;
120 Finisher
*get_finisher(const std::string
& oid
);
122 Finisher
*m_aio_finisher
;
123 std::vector
<Finisher
*> m_finishers
;
124 boost::hash
<std::string
> m_hash
;
128 } // namespace librados
130 #endif // CEPH_TEST_RADOS_CLIENT_H