]>
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
13 #include <boost/function.hpp>
14 #include <boost/functional/hash.hpp>
16 #include "include/rados/librados.hpp"
17 #include "common/config.h"
18 #include "include/buffer_fwd.h"
19 #include "test/librados_test_stub/TestWatchNotify.h"
27 class TestRadosClient
{
30 static void Deallocate(librados::TestRadosClient
* client
)
35 typedef boost::function
<int()> AioFunction
;
45 Transaction(TestRadosClient
*rados_client
, const std::string
&oid
)
46 : rados_client(rados_client
), oid(oid
) {
47 rados_client
->transaction_start(oid
);
50 rados_client
->transaction_finish(oid
);
53 TestRadosClient
*rados_client
;
57 TestRadosClient(CephContext
*cct
, TestWatchNotify
*watch_notify
);
62 virtual CephContext
*cct();
64 virtual uint32_t get_nonce() = 0;
65 virtual uint64_t get_instance_id() = 0;
67 virtual int connect();
68 virtual void shutdown();
69 virtual int wait_for_latest_osdmap();
71 virtual TestIoCtxImpl
*create_ioctx(int64_t pool_id
,
72 const std::string
&pool_name
) = 0;
74 virtual int mon_command(const std::vector
<std::string
>& cmd
,
75 const bufferlist
&inbl
,
76 bufferlist
*outbl
, std::string
*outs
);
78 virtual void object_list(int64_t pool_id
,
79 std::list
<librados::TestRadosClient::Object
> *list
) = 0;
81 virtual int service_daemon_register(const std::string
& service
,
82 const std::string
& name
,
83 const std::map
<std::string
,std::string
>& metadata
) = 0;
84 virtual int service_daemon_update_status(const std::map
<std::string
,std::string
>& status
) = 0;
86 virtual int pool_create(const std::string
&pool_name
) = 0;
87 virtual int pool_delete(const std::string
&pool_name
) = 0;
88 virtual int pool_get_base_tier(int64_t pool_id
, int64_t* base_tier
) = 0;
89 virtual int pool_list(std::list
<std::pair
<int64_t, std::string
> >& v
) = 0;
90 virtual int64_t pool_lookup(const std::string
&name
) = 0;
91 virtual int pool_reverse_lookup(int64_t id
, std::string
*name
) = 0;
93 virtual int aio_watch_flush(AioCompletionImpl
*c
);
94 virtual int watch_flush() = 0;
96 virtual bool is_blacklisted() const = 0;
97 virtual int blacklist_add(const std::string
& client_address
,
98 uint32_t expire_seconds
) = 0;
100 Finisher
*get_aio_finisher() {
101 return m_aio_finisher
;
103 TestWatchNotify
*get_watch_notify() {
104 return m_watch_notify
;
107 void add_aio_operation(const std::string
& oid
, bool queue_callback
,
108 const AioFunction
&aio_function
, AioCompletionImpl
*c
);
109 void flush_aio_operations();
110 void flush_aio_operations(AioCompletionImpl
*c
);
112 void finish_aio_completion(AioCompletionImpl
*c
, int r
);
115 virtual ~TestRadosClient();
117 virtual void transaction_start(const std::string
&oid
) = 0;
118 virtual void transaction_finish(const std::string
&oid
) = 0;
123 std::atomic
<uint64_t> m_refcount
= { 0 };
125 TestWatchNotify
*m_watch_notify
;
127 Finisher
*get_finisher(const std::string
& oid
);
129 Finisher
*m_aio_finisher
;
130 std::vector
<Finisher
*> m_finishers
;
131 boost::hash
<std::string
> m_hash
;
135 } // namespace librados
137 #endif // CEPH_TEST_RADOS_CLIENT_H