Motr  M0
rmut.h
Go to the documentation of this file.
1 /* -*- C -*- */
2 /*
3  * Copyright (c) 2013-2020 Seagate Technology LLC and/or its Affiliates
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  * For any questions about this software or licensing,
18  * please email opensource@seagate.com or cortx-questions@seagate.com.
19  *
20  */
21 
22 #pragma once
23 #ifndef __MOTR_RM_UT_RMUT_H__
24 #define __MOTR_RM_UT_RMUT_H__
25 
26 #include "lib/types.h" /* uint64_t */
27 #include "lib/chan.h"
28 #include "lib/misc.h"
29 #include "lib/memory.h"
30 #include "lib/time.h"
31 #include "ut/ut.h"
32 #include "fop/fom_generic.h"
33 #include "ut/ut_rpc_machine.h"
34 
35 enum obj_type {
40 };
41 
42 /*
43  * If you add another server, you will have to make changes in other places.
44  */
45 enum rm_server {
46  SERVER_1 = 0,
52 };
53 
54 enum rr_tests {
55  TEST1 = 0,
60 };
61 
63  /* Test the locking on a lock client */
65  /* Test the locking on a lock server */
67  /* Test the distributed locking */
70 };
71 
73  /* A group of debtors borrowing the same credit */
76  /*
77  * A stand-alone debtor borrowing a credit other than the group credit.
78  */
80  /* Revoking a credit from a group of debtors */
83 };
84 
90 };
91 
92 /* Forward declaration */
93 struct rm_ut_data;
94 
96  void (*rtype_set)(struct rm_ut_data *self);
97  void (*rtype_unset)(struct rm_ut_data *self);
98  void (*resource_set)(struct rm_ut_data *self);
99  void (*resource_unset)(struct rm_ut_data *self);
100  void (*owner_set)(struct rm_ut_data *self);
101  void (*owner_unset)(struct rm_ut_data *self);
102  void (*credit_datum_set)(struct rm_ut_data *self);
103 };
104 
105 /*
106  * Resource manager class-collection.
107  */
108 struct rm_ut_data {
115  const struct rm_ut_data_ops *rd_ops;
116  struct m0_fid rd_fid;
117 };
118 
119 
120 /*
121  * RM server context. It lives inside a thread in this test.
122  */
123 struct rm_ctx {
126  struct m0_chan rc_chan;
134  uint32_t rc_debtors_nr;
138 };
139 
140 /*
141  * Test variable(s)
142  */
143 extern struct rm_ut_data rm_test_data;
144 M0_EXTERN struct rm_ctx rm_ctxs[];
145 M0_EXTERN const char *serv_addr[];
146 M0_EXTERN const int cob_ids[];
147 M0_EXTERN struct m0_chan rm_ut_tests_chan;
149 
150 void rm_utdata_init(struct rm_ut_data *data, enum obj_type type);
151 void rm_utdata_fini(struct rm_ut_data *data, enum obj_type type);
153 void rm_test_owner_capital_raise(struct m0_rm_owner *owner,
154  struct m0_rm_credit *credit);
155 
156 /* Test server functions */
157 void rm_ctx_init(struct rm_ctx *rmctx, enum rm_server id);
158 void rm_ctx_fini(struct rm_ctx *rmctx);
159 void rm_ctx_connect(struct rm_ctx *src, const struct rm_ctx *dest);
160 void rm_ctx_disconnect(struct rm_ctx *src, const struct rm_ctx *dest);
161 void rm_ctx_server_start(enum rm_server srv_id);
162 void rm_ctx_server_windup(enum rm_server srv_id);
163 void rm_ctx_server_owner_windup(enum rm_server srv_id);
164 void rm_ctx_server_stop(enum rm_server srv_id);
165 void creditor_cookie_setup(enum rm_server dsrv_id, enum rm_server csrv_id);
166 void loan_session_set(enum rm_server csrv_id, enum rm_server dsrv_id);
167 void credits_are_equal(enum rm_server srv_id,
168  enum rm_ut_credits_list list_id,
169  uint64_t value);
170 void rm_ctxs_conf_init(struct rm_ctx *rm_ctxs, int ctxs_nr);
171 void rm_ctxs_conf_fini(struct rm_ctx *rm_ctxs, int ctxs_nr);
172 
173 
174 /* __MOTR_RM_UT_RMUT_H__ */
175 #endif
176 
177 /*
178  * Local variables:
179  * c-indentation-style: "K&R"
180  * c-basic-offset: 8
181  * tab-width: 8
182  * fill-column: 80
183  * scroll-step: 1
184  * End:
185  */
Definition: rmut.h:47
Definition: rmut.h:59
void creditor_cookie_setup(enum rm_server dsrv_id, enum rm_server csrv_id)
Definition: rmut.c:420
void rm_test_owner_capital_raise(struct m0_rm_owner *owner, struct m0_rm_credit *credit)
Definition: rmut.c:70
Definition: rmut.h:55
struct m0_reqh_service * rc_reqh_svc
Definition: rmut.h:130
rr_tests
Definition: rmut.h:54
struct rm_ut_data rc_test_data
Definition: rmut.h:133
void loan_session_set(enum rm_server csrv_id, enum rm_server dsrv_id)
Definition: rmut.c:399
Definition: rmut.h:49
struct m0_ut_rpc_mach_ctx rc_rmach_ctx
Definition: rmut.h:129
struct m0_bufvec data
Definition: di.c:40
Definition: rmut.h:39
int const char const void * value
Definition: dir.c:325
struct m0_rm_owner * rd_owner
Definition: rmut.h:112
struct m0_rm_resource_type * rd_rt
Definition: rmut.h:110
M0_EXTERN struct m0_chan rm_ut_tests_chan
Definition: rmut.h:147
struct m0_rpc_conn rc_conn[SERVER_NR]
Definition: rmut.h:131
struct m0_rm_credit rd_credit
Definition: rmut.h:114
void rm_ctx_fini(struct rm_ctx *rmctx)
Definition: rmut.c:188
rm_ut_credits_list
Definition: rmut.h:85
struct m0_clink rc_clink
Definition: rmut.h:127
Definition: rmut.h:48
void(* credit_datum_set)(struct rm_ut_data *self)
Definition: rmut.h:102
void(* resource_set)(struct rm_ut_data *self)
Definition: rmut.h:98
Definition: rmut.h:50
Definition: rmut.h:123
void rm_ctx_server_owner_windup(enum rm_server srv_id)
Definition: rmut.c:264
Definition: rmut.h:46
group_tests
Definition: rmut.h:72
void rm_ctxs_conf_init(struct rm_ctx *rm_ctxs, int ctxs_nr)
Definition: rmut.c:345
rm_server
Definition: rmut.h:45
flock_tests
Definition: rmut.h:62
obj_type
Definition: rmut.h:35
void rm_ctx_init(struct rm_ctx *rmctx, enum rm_server id)
Definition: rmut.c:164
bool rc_is_dead
Definition: rmut.h:135
void rm_utdata_owner_windup_fini(struct rm_ut_data *data)
Definition: rmut.c:81
void(* rtype_set)(struct rm_ut_data *self)
Definition: rmut.h:96
struct rm_ut_data rm_test_data
Definition: rmut.c:53
enum rm_server debtor_id[SERVER_NR - 1]
Definition: rmut.h:137
Definition: rmut.h:57
enum rm_server rc_id
Definition: rmut.h:124
void rm_ctx_server_start(enum rm_server srv_id)
Definition: rmut.c:222
struct m0_fid rd_fid
Definition: rmut.h:116
void rm_utdata_fini(struct rm_ut_data *data, enum obj_type type)
Definition: rmut.c:128
Definition: chan.h:229
void(* owner_unset)(struct rm_ut_data *self)
Definition: rmut.h:101
struct m0_rm_domain rd_dom
Definition: rmut.h:109
void rm_ctx_server_windup(enum rm_server srv_id)
Definition: rmut.c:278
uint32_t rc_debtors_nr
Definition: rmut.h:134
void(* rtype_unset)(struct rm_ut_data *self)
Definition: rmut.h:97
M0_EXTERN struct rm_ctx rm_ctxs[]
Definition: rmut.h:144
struct m0_mutex rc_mutex
Definition: rmut.h:128
Definition: rmut.h:88
const struct rm_ut_data_ops * rd_ops
Definition: rmut.h:115
struct m0_thread rc_thr
Definition: rmut.h:125
void credits_are_equal(enum rm_server srv_id, enum rm_ut_credits_list list_id, uint64_t value)
Definition: rmut.c:429
Definition: fid.h:38
struct m0_chan rc_chan
Definition: rmut.h:126
void(* resource_unset)(struct rm_ut_data *self)
Definition: rmut.h:99
void rm_ctx_connect(struct rm_ctx *src, const struct rm_ctx *dest)
Definition: rmut.c:197
Definition: rmut.h:38
enum rm_server creditor_id
Definition: rmut.h:136
struct m0_rm_incoming rd_in
Definition: rmut.h:113
void rm_utdata_init(struct rm_ut_data *data, enum obj_type type)
Definition: rmut.c:96
struct m0_rm_resource * rd_res
Definition: rmut.h:111
int type
Definition: dir.c:1031
void rm_ctx_disconnect(struct rm_ctx *src, const struct rm_ctx *dest)
Definition: rmut.c:211
void rm_ctxs_conf_fini(struct rm_ctx *rm_ctxs, int ctxs_nr)
Definition: rmut.c:382
M0_EXTERN struct m0_mutex rm_ut_tests_chan_mutex
Definition: rmut.h:148
struct m0_rpc_session rc_sess[SERVER_NR]
Definition: rmut.h:132
Definition: rmut.h:58
Definition: mutex.h:47
Definition: rmut.h:56
void(* owner_set)(struct rm_ut_data *self)
Definition: rmut.h:100
M0_EXTERN const char * serv_addr[]
Definition: rmut.h:145
struct m0_pdclust_src_addr src
Definition: fd.c:108
void rm_ctx_server_stop(enum rm_server srv_id)
Definition: rmut.c:291
M0_EXTERN const int cob_ids[]
Definition: rmut.h:146