Motr  M0
m0ut.c
Go to the documentation of this file.
1 /* -*- C -*- */
2 /*
3  * Copyright (c) 2013-2021 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 
23 #include <stdlib.h> /* exit, srand, rand */
24 #include <unistd.h> /* getpid */
25 #include <time.h> /* time */
26 #include <err.h> /* warn */
27 
28 #if !defined(_GNU_SOURCE)
29 #define _GNU_SOURCE /* required for basename, see man basename(3) */
30 #endif
31 #include <string.h> /* basename */
32 
33 #include "ut/ut.h"
34 #include "ut/module.h" /* m0_ut_module */
35 #include "module/instance.h" /* m0 */
36 #include "lib/trace.h"
37 #include "lib/user_space/trace.h" /* m0_trace_set_print_context */
38 #include "lib/thread.h" /* LAMBDA */
39 #include "lib/getopts.h"
40 #include "lib/finject.h" /* m0_fi_print_info */
41 #include "lib/atomic.h"
42 #include "lib/errno.h" /* ENOMEM */
43 #include "lib/memory.h" /* m0_free0 */
44 #include "lib/uuid.h" /* m0_node_uuid_string_set */
45 #include "lib/misc.h" /* m0_performance_counters */
46 
47 #define UT_SANDBOX "./ut-sandbox"
48 
49 /* Sort test suites in alphabetic order, please. */
50 extern struct m0_ut_suite libm0_ut; /* test lib first */
51 extern struct m0_ut_suite addb2_base_ut;
52 extern struct m0_ut_suite addb2_consumer_ut;
53 extern struct m0_ut_suite addb2_hist_ut;
54 extern struct m0_ut_suite addb2_net_ut;
55 extern struct m0_ut_suite addb2_storage_ut;
56 extern struct m0_ut_suite addb2_sys_ut;
57 extern struct m0_ut_suite balloc_ut;
58 extern struct m0_ut_suite be_ut;
59 extern struct m0_ut_suite buffer_pool_ut;
60 extern struct m0_ut_suite bulkio_client_ut;
61 extern struct m0_ut_suite bulkio_server_ut;
62 extern struct m0_ut_suite bytecount_ut;
63 extern struct m0_ut_suite capa_ut;
64 extern struct m0_ut_suite cas_client_ut;
65 extern struct m0_ut_suite cas_service_ut;
66 extern struct m0_ut_suite ut_suite;
67 extern struct m0_ut_suite ut_suite_obj;
68 extern struct m0_ut_suite ut_suite_io;
69 extern struct m0_ut_suite ut_suite_io_nw_xfer;
70 extern struct m0_ut_suite ut_suite_io_pargrp;
71 extern struct m0_ut_suite ut_suite_io_req;
72 extern struct m0_ut_suite ut_suite_io_req_fop;
73 extern struct m0_ut_suite ut_suite_sync;
74 extern struct m0_ut_suite ut_suite_idx;
75 extern struct m0_ut_suite ut_suite_idx_dix;
76 extern struct m0_ut_suite ut_suite_mt_idx_dix;
77 extern struct m0_ut_suite ut_suite_layout;
78 extern struct m0_ut_suite ut_suite_ufid;
79 extern struct m0_ut_suite cm_cp_ut;
80 extern struct m0_ut_suite cm_generic_ut;
81 extern struct m0_ut_suite cob_ut;
82 extern struct m0_ut_suite cobfoms_ut;
83 extern struct m0_ut_suite conf_diter_ut;
84 extern struct m0_ut_suite conf_glob_ut;
85 extern struct m0_ut_suite conf_load_ut;
86 extern struct m0_ut_suite conf_pvers_ut;
87 extern struct m0_ut_suite conf_ut;
88 extern struct m0_ut_suite conf_validation_ut;
89 extern struct m0_ut_suite conf_walk_ut;
90 extern struct m0_ut_suite confc_ut;
91 extern struct m0_ut_suite confstr_ut;
92 extern struct m0_ut_suite rconfc_ut;
93 extern struct m0_ut_suite conn_ut;
94 extern struct m0_ut_suite console_ut;
95 extern struct m0_ut_suite di_ut;
96 extern struct m0_ut_suite dix_client_ut;
97 extern struct m0_ut_suite dix_cm_iter_ut;
98 extern struct m0_ut_suite db_cursor_ut;
99 extern struct m0_ut_suite db_ut;
100 extern struct m0_ut_suite dtm_dtx_ut;
101 extern struct m0_ut_suite dtm_nucleus_ut;
102 extern struct m0_ut_suite dtm_transmit_ut;
103 extern struct m0_ut_suite dtm0_ut;
104 extern struct m0_ut_suite dtm0_clk_src_ut;
105 extern struct m0_ut_suite dtm0_log_ut;
106 extern struct m0_ut_suite emap_ut;
108 extern struct m0_ut_suite failure_domains_ut;
109 extern struct m0_ut_suite fis_ut;
110 extern struct m0_ut_suite fdmi_pd_ut;
111 extern struct m0_ut_suite fdmi_sd_ut;
112 extern struct m0_ut_suite fdmi_fol_ut;
113 extern struct m0_ut_suite fdmi_fol_fini_ut;
114 extern struct m0_ut_suite fdmi_filterc_ut;
115 extern struct m0_ut_suite fdmi_filter_eval_ut;
116 extern struct m0_ut_suite fit_ut;
117 extern struct m0_ut_suite fol_ut;
118 extern struct m0_ut_suite fom_timedwait_ut;
119 extern struct m0_ut_suite frm_ut;
120 extern struct m0_ut_suite ha_ut;
121 extern struct m0_ut_suite ha_state_ut;
122 extern struct m0_ut_suite ios_bufferpool_ut;
123 extern struct m0_ut_suite isc_api_ut;
124 extern struct m0_ut_suite isc_service_ut;
125 extern struct m0_ut_suite item_ut;
126 extern struct m0_ut_suite item_source_ut;
127 extern struct m0_ut_suite layout_ut;
128 extern struct m0_ut_suite layout_access_plan_ut;
129 extern struct m0_ut_suite link_lib_ut;
130 extern struct m0_ut_suite m0_fop_lock_ut;
131 extern struct m0_ut_suite m0_fom_stats_ut;
132 extern struct m0_ut_suite m0_net_bulk_if_ut;
133 extern struct m0_ut_suite m0_net_bulk_mem_ut;
134 extern struct m0_ut_suite m0_net_lnet_ut;
135 extern struct m0_ut_suite m0_net_misc_ut;
136 extern struct m0_ut_suite m0_net_module_ut;
137 extern struct m0_ut_suite m0_net_test_ut;
138 extern struct m0_ut_suite m0_net_tm_prov_ut;
139 extern struct m0_ut_suite m0d_ut;
140 extern struct m0_ut_suite mdservice_ut;
141 extern struct m0_ut_suite module_ut;
142 extern struct m0_ut_suite ms_fom_ut;
143 extern struct m0_ut_suite packet_encdec_ut;
144 extern struct m0_ut_suite parity_math_ut;
145 extern struct m0_ut_suite parity_math_ssse3_ut;
146 extern struct m0_ut_suite poolmach_ut;
147 extern struct m0_ut_suite reqh_ut;
148 extern struct m0_ut_suite reqh_fop_allow_ut;
149 extern struct m0_ut_suite reqh_service_ut;
150 extern struct m0_ut_suite reqh_service_ctx_ut;
151 extern struct m0_ut_suite rm_ut;
152 extern struct m0_ut_suite rm_rcredits_ut;
153 extern struct m0_ut_suite rm_rwlock_ut;
154 extern struct m0_ut_suite rpc_at_ut;
155 extern struct m0_ut_suite rpc_mc_ut;
156 extern struct m0_ut_suite rpc_rcv_session_ut;
157 extern struct m0_ut_suite rpclib_ut;
158 extern struct m0_ut_suite rpc_conn_pool_ut;
159 extern struct m0_ut_suite session_ut;
160 extern struct m0_ut_suite sm_ut;
161 extern struct m0_ut_suite sns_cm_repair_ut;
162 extern struct m0_ut_suite snscm_net_ut;
163 extern struct m0_ut_suite snscm_storage_ut;
164 extern struct m0_ut_suite snscm_xform_ut;
165 extern struct m0_ut_suite spiel_ut;
166 extern struct m0_ut_suite spiel_ci_ut;
167 extern struct m0_ut_suite sss_ut;
168 extern struct m0_ut_suite spiel_conf_ut;
169 extern struct m0_ut_suite stats_ut;
170 extern struct m0_ut_suite stob_ut;
171 extern struct m0_ut_suite storage_dev_ut;
172 extern struct m0_ut_suite udb_ut;
173 extern struct m0_ut_suite xcode_bufvec_fop_ut;
174 extern struct m0_ut_suite xcode_ff2c_ut;
175 extern struct m0_ut_suite xcode_ut;
176 extern struct m0_ut_suite sns_flock_ut;
177 extern struct m0_ut_suite ut_suite_pi;
178 
179 static void tests_add(struct m0_ut_module *m)
180 {
181  /*
182  * set last argument to 'false' to disable test,
183  * it will automatically print a warning to console
184  */
185 
186  /* sort test suites in alphabetic order */
187  m0_ut_add(m, &libm0_ut, true); /* test lib first */
188  m0_ut_add(m, &addb2_base_ut, true);
189  m0_ut_add(m, &addb2_consumer_ut, true);
190  m0_ut_add(m, &addb2_hist_ut, true);
191  m0_ut_add(m, &addb2_net_ut, true);
192  m0_ut_add(m, &addb2_storage_ut, true);
193  m0_ut_add(m, &addb2_sys_ut, true);
194  m0_ut_add(m, &di_ut, true);
195  m0_ut_add(m, &balloc_ut, true);
196  m0_ut_add(m, &be_ut, true);
197  m0_ut_add(m, &buffer_pool_ut, true);
198  m0_ut_add(m, &bulkio_client_ut, true);
199  m0_ut_add(m, &bulkio_server_ut, true);
200  m0_ut_add(m, &bytecount_ut, true);
201 
202  /*
203  * ALARM/WARN/XXX: `dtm0_ut' added before mt_idx_dix, due to
204  * finalisation order of internal structures inside dtm0_ut!
205  * NEEDS to be addressed! (by Anatoliy)
206  */
207  m0_ut_add(m, &dtm0_ut, true);
208 
209  m0_ut_add(m, &capa_ut, true);
210  m0_ut_add(m, &cas_client_ut, true);
211  m0_ut_add(m, &cas_service_ut, true);
212  m0_ut_add(m, &ut_suite, true);
213  m0_ut_add(m, &ut_suite_obj, true);
214  m0_ut_add(m, &ut_suite_io, true);
216  m0_ut_add(m, &ut_suite_io_pargrp, true);
217  m0_ut_add(m, &ut_suite_io_req, true);
219  m0_ut_add(m, &ut_suite_sync, true);
220  m0_ut_add(m, &ut_suite_idx, true);
221  m0_ut_add(m, &ut_suite_idx_dix, true);
223  m0_ut_add(m, &ut_suite_layout, true);
224  m0_ut_add(m, &ut_suite_ufid, true);
225  m0_ut_add(m, &cm_cp_ut, true);
226  m0_ut_add(m, &cm_generic_ut, true);
227  m0_ut_add(m, &cob_ut, true);
228  m0_ut_add(m, &cobfoms_ut, true);
229  m0_ut_add(m, &conf_ut, true);
230  m0_ut_add(m, &conf_load_ut, true);
231  m0_ut_add(m, &conf_pvers_ut, true);
232  m0_ut_add(m, &confc_ut, true);
233  m0_ut_add(m, &conf_glob_ut, true);
234  m0_ut_add(m, &conf_diter_ut, true);
235  m0_ut_add(m, &confstr_ut, true);
236  m0_ut_add(m, &conf_validation_ut, true);
237  m0_ut_add(m, &conf_walk_ut, true);
238  m0_ut_add(m, &rconfc_ut, true);
239  m0_ut_add(m, &conn_ut, true);
240  m0_ut_add(m, &dix_client_ut, true);
241  m0_ut_add(m, &dix_cm_iter_ut, true);
242  m0_ut_add(m, &dtm_nucleus_ut, true);
243  m0_ut_add(m, &dtm_transmit_ut, true);
244  m0_ut_add(m, &dtm_dtx_ut, true);
245  m0_ut_add(m, &dtm0_clk_src_ut, true);
246  m0_ut_add(m, &dtm0_log_ut, true);
248  m0_ut_add(m, &failure_domains_ut, true);
249  m0_ut_add(m, &fis_ut, true);
250  m0_ut_add(m, &fdmi_filterc_ut, true);
251  m0_ut_add(m, &fdmi_pd_ut, true);
252  m0_ut_add(m, &fdmi_sd_ut, true);
253  m0_ut_add(m, &fdmi_fol_ut, true);
254  m0_ut_add(m, &fdmi_fol_fini_ut, true);
256  m0_ut_add(m, &fit_ut, true);
257  m0_ut_add(m, &fol_ut, true);
258  m0_ut_add(m, &fom_timedwait_ut, true);
259  m0_ut_add(m, &frm_ut, true);
260  m0_ut_add(m, &ha_ut, true);
261  m0_ut_add(m, &ha_state_ut, true);
262  m0_ut_add(m, &ios_bufferpool_ut, true);
263  m0_ut_add(m, &isc_api_ut, true);
264  m0_ut_add(m, &isc_service_ut, true);
265  m0_ut_add(m, &item_ut, true);
266  m0_ut_add(m, &item_source_ut, true);
267  m0_ut_add(m, &layout_ut, true);
269  m0_ut_add(m, &link_lib_ut, true);
270  m0_ut_add(m, &m0_fop_lock_ut, true);
271  m0_ut_add(m, &m0_fom_stats_ut, true);
272  m0_ut_add(m, &m0_net_bulk_if_ut, true);
273  m0_ut_add(m, &m0_net_bulk_mem_ut, true);
274  if (USE_LIBFAB)
275  m0_ut_add(m, &m0_net_lnet_ut, false);
276  else
277  m0_ut_add(m, &m0_net_lnet_ut, true);
278  m0_ut_add(m, &m0_net_misc_ut, true);
279  m0_ut_add(m, &m0_net_module_ut, true);
280  m0_ut_add(m, &m0_net_test_ut, true);
281  m0_ut_add(m, &m0_net_tm_prov_ut, true);
282  m0_ut_add(m, &m0d_ut, true);
283  m0_ut_add(m, &mdservice_ut, true);
284  m0_ut_add(m, &module_ut, true);
285  m0_ut_add(m, &ms_fom_ut, true);
286  m0_ut_add(m, &packet_encdec_ut, true);
287  m0_ut_add(m, &parity_math_ut, true);
289  m0_ut_add(m, &poolmach_ut, true);
290  m0_ut_add(m, &reqh_ut, true);
291  m0_ut_add(m, &reqh_fop_allow_ut, true);
292  m0_ut_add(m, &reqh_service_ut, true);
294  m0_ut_add(m, &rm_ut, true);
295  m0_ut_add(m, &rm_rcredits_ut, true);
296  m0_ut_add(m, &rm_rwlock_ut, true);
297  m0_ut_add(m, &rpc_at_ut, true);
298  m0_ut_add(m, &rpc_mc_ut, true);
299  m0_ut_add(m, &rpc_rcv_session_ut, true);
300  m0_ut_add(m, &rpclib_ut, true);
301  m0_ut_add(m, &rpc_conn_pool_ut, true);
302  m0_ut_add(m, &session_ut, true);
303  m0_ut_add(m, &sm_ut, true);
304  m0_ut_add(m, &snscm_xform_ut, true);
305  m0_ut_add(m, &snscm_storage_ut, true);
306  m0_ut_add(m, &sns_cm_repair_ut, true);
307  m0_ut_add(m, &snscm_net_ut, true);
308  m0_ut_add(m, &sns_flock_ut, true);
309  m0_ut_add(m, &spiel_ut, true);
310  m0_ut_add(m, &spiel_ci_ut, true);
311  m0_ut_add(m, &sss_ut, true);
312  m0_ut_add(m, &stats_ut, false);
313  m0_ut_add(m, &spiel_conf_ut, true);
314  m0_ut_add(m, &stob_ut, true);
315  m0_ut_add(m, &storage_dev_ut, true);
316  m0_ut_add(m, &udb_ut, true);
318  m0_ut_add(m, &xcode_ff2c_ut, true);
319  m0_ut_add(m, &xcode_ut, true);
320  m0_ut_add(m, &ut_suite_pi, true);
321 
322  /* These tests have redirection of messages. */
323  m0_ut_add(m, &console_ut, true);
324 }
325 
326 int main(int argc, char *argv[])
327 {
328  static struct m0 instance;
329  struct m0_ut_module *ut;
330  int rc;
331  bool list_ut = false;
332  bool with_tests = false;
333  bool list_owners = false;
334  bool yaml_output = false;
335  bool finject_stats_before = false;
336  bool finject_stats_after = false;
337  bool parse_trace = false;
338  int seed = -1;
339  int count = 1;
340  int i;
341  const char *fault_point = NULL;
342  const char *fp_file_name = NULL;
343  const char *trace_mask = NULL;
344  const char *trace_level = NULL;
345  const char *trace_print_context = NULL;
346  const char *tests_select = NULL;
347  const char *tests_exclude = NULL;
348  const char *start_suite = NULL;
349  static char performance_counters[0x1000];
350 
354  ut->ut_sandbox = UT_SANDBOX;
355  /* Initialise the basic stuff. */
357  if (rc != 0)
358  goto end;
359 
360  /* add options in alphabetic order, M0_HELPARG should be first */
361  rc = M0_GETOPTS(basename(argv[0]), argc, argv,
362  M0_HELPARG('h'),
363  M0_STRINGARG('e', "trace level: level[+][,level[+]]"
364  " where level is one of call|debug|info|"
365  "notice|warn|error|fatal",
366  LAMBDA(void, (const char *str) {
367  trace_level = str;
368  })),
369  M0_STRINGARG('f', "fault point to enable func:tag:type"
370  "[:integer[:integer]]",
371  LAMBDA(void, (const char *str) {
372  fault_point = str;
373  })
374  ),
375  M0_STRINGARG('F', "yaml file, which contains a list"
376  " of fault points to enable",
377  LAMBDA(void, (const char *str) {
378  fp_file_name = str;
379  })
380  ),
381  M0_FORMATARG('H', "shuffle test suites before execution. "
382  "The argument is a seed value. "
383  "0 to shuffle randomly", "%i", &seed),
384  M0_FLAGARG('k', "keep the sandbox directory",
385  &ut->ut_keep_sandbox),
386  M0_FLAGARG('c',
387  "Set small transaction credits.",
388  &ut->ut_small_credits),
389  M0_FLAGARG('l', "list available test suites",
390  &list_ut),
391  M0_VOIDARG('L', "list available test suites with"
392  " their tests",
393  LAMBDA(void, (void) {
394  list_ut = true;
395  with_tests = true;
396  })),
397  M0_STRINGARG('m', "trace mask, either numeric (HEX/DEC) or"
398  " comma-separated list of subsystem names"
399  " (use ! at the beginning to invert)",
400  LAMBDA(void, (const char *str) {
401  trace_mask = str;
402  })),
403  M0_VOIDARG('M', "print available trace subsystems",
404  LAMBDA(void, (void) {
406  exit(EXIT_SUCCESS);
407  })),
408  M0_FORMATARG('n', "repetition count", "%i", &count),
409  M0_STRINGARG('O', "start execution from a given suite",
410  LAMBDA(void, (const char *str) {
411  start_suite = str;
412  })),
413  M0_FLAGARG('o', "list test owners",
414  &list_owners),
415  M0_STRINGARG('p', "trace print context, values:"
416  " none, func, short, full",
417  LAMBDA(void, (const char *str) {
418  trace_print_context = str;
419  })),
420  M0_FLAGARG('s', "report fault injection stats before UT",
421  &finject_stats_before),
422  M0_FLAGARG('S', "report fault injection stats after UT",
423  &finject_stats_after),
424  M0_STRINGARG('t', "test list 'suite[:test][,suite"
425  "[:test]]'",
426  LAMBDA(void, (const char *str) {
427  tests_select = str;
428  })
429  ),
430  M0_FLAGARG('T', "parse trace log produced earlier"
431  " (trace data is read from STDIN)",
432  &parse_trace),
433  M0_STRINGARG('x', "exclude list 'suite[:test][,suite"
434  "[:test]]'",
435  LAMBDA(void, (const char *str) {
436  tests_exclude = str;
437  })
438  ),
439  M0_FLAGARG('Y', "produce lists in YAML format", &yaml_output),
440  );
441  if (rc != 0)
442  goto end;
443 
444  ut->ut_exclude = (tests_exclude != NULL);
445  ut->ut_tests = ut->ut_exclude ? tests_exclude : tests_select;
446 
447  /* check conflicting options */
448  if ((tests_select != NULL && tests_exclude != NULL) ||
449  (list_ut && (tests_select != NULL || tests_exclude != NULL ||
450  list_owners))) {
451  fprintf(stderr, "Error: conflicting options: only one of the"
452  " -l -L -o -t -x option can be used at the same"
453  " time.\n");
454  return EXIT_FAILURE;
455  }
456  if (start_suite != NULL && seed != -1) {
457  fprintf(stderr, "Error: -O and -H options are conflicting.\n");
458  return EXIT_FAILURE;
459  }
460  tests_add(ut);
461 
462  /*
463  * don't require m0tr.ko module to be loaded if we just want to parse
464  * trace logs
465  */
466  if (parse_trace)
468 
469  rc = m0_ut_init(&instance);
470  if (rc != 0)
471  goto end;
472 #if 1 /* XXX
473  * TODO Perform these initialisations via module/module.h API.
474  */
475  rc = m0_trace_set_immediate_mask(trace_mask) ?:
477  if (rc != 0)
478  goto ut_fini;
479 
481  if (rc != 0) {
482  warn("Error: invalid value for -p option");
483  goto ut_fini;
484  }
485 
486  if (parse_trace) {
487  rc = m0_trace_parse(stdin, stdout, NULL,
489  goto ut_fini;
490  }
491 
492  /* enable fault points as early as possible */
493  if (fault_point != NULL) {
494  rc = m0_fi_enable_fault_point(fault_point);
495  if (rc != 0)
496  goto ut_fini;
497  }
498 
499  if (fp_file_name != NULL) {
500  rc = m0_fi_enable_fault_points_from_file(fp_file_name);
501  if (rc != 0)
502  goto ut_fini;
503  }
504 
505  if (finject_stats_before) {
507  printf("\n");
508  }
509 #endif /* XXX */
510 
511  rc = 0;
512  for (i = 1; rc == 0 && i <= count; i++) {
513  if (seed != -1) {
514  if (seed == 0) {
515  seed = time(NULL) ^ (getpid() << 17);
516  printf("Seed: %i.\n", seed);
517  }
519  }
520  if (start_suite != NULL)
521  m0_ut_start_from(start_suite);
522  if (list_ut)
523  m0_ut_list(with_tests, yaml_output);
524  else if (list_owners)
526  else {
527  m0_console_printf("START Iteration: %d out of %d\n",
528  i, count);
530  rc = m0_ut_run();
531  m0_console_printf("END Iteration: %d out of %d\n\n",
532  i, count);
534  }
535  }
536  if (finject_stats_after) {
537  printf("\n");
539  }
540 ut_fini:
541  m0_ut_fini();
542 end:
543  if (rc == 0 && !parse_trace && !list_ut && !list_owners) {
544  m0_performance_counters(performance_counters,
545  ARRAY_SIZE(performance_counters));
546  printf("%s", performance_counters);
547  }
548  return rc < 0 ? -rc : rc;
549 }
550 
551 /*
552  * Local variables:
553  * c-indentation-style: "K&R"
554  * c-basic-offset: 8
555  * tab-width: 8
556  * fill-column: 80
557  * scroll-step: 1
558  * End:
559  */
struct m0_ut_suite fdmi_fol_fini_ut
Definition: fol_ut.c:474
struct m0_ut_suite failure_domains_ut
Definition: fd.c:541
const char * ut_tests
Definition: module.h:50
#define M0_GETOPTS(progname, argc, argv,...)
Definition: getopts.h:169
struct m0_ut_suite item_ut
Definition: item.c:1292
struct m0_ut_suite ut_suite_layout
Definition: layout.c:37
struct m0_ut_suite ut_suite_idx_dix
Definition: idx_dix.c:800
struct m0_ut_suite m0_net_tm_prov_ut
struct m0_ut_suite conf_walk_ut
Definition: walk.c:53
struct m0_ut_suite reqh_service_ctx_ut
Definition: service_ctx.c:233
struct m0_ut_suite dtm_nucleus_ut
Definition: nucleus.c:376
struct m0_ut_suite dtm0_log_ut
Definition: dtm0_log_ut.c:608
#define USE_LIBFAB
Definition: net.h:99
struct m0_ut_suite dtm_transmit_ut
Definition: transmit.c:731
struct m0_ut_suite addb2_hist_ut
Definition: histogram.c:105
#define M0_FLAGARG(ch, desc, ptr)
Definition: getopts.h:232
struct m0_ut_suite bulkio_client_ut
M0_INTERNAL void m0_fi_print_info(void)
Definition: finject_init.c:78
#define NULL
Definition: misc.h:38
struct m0_ut_suite udb_ut
Definition: udb_ut.c:109
struct m0_ut_suite fdmi_pd_ut
Definition: pd_ut.c:704
struct m0_ut_suite bulkio_server_ut
Definition: bulkio_ut.c:1816
const char * ut_sandbox
Definition: module.h:57
static struct m0_addb2_mach * m
Definition: consumer.c:38
struct m0_ut_suite db_cursor_ut
struct m0_ut_suite be_ut
Definition: main.c:156
struct m0_ut_suite dix_client_ut
Definition: client_ut.c:3164
struct m0_ut_suite dtm0_ut
Definition: main.c:108
M0_INTERNAL void m0_trace_print_subsystems(void)
Definition: trace.c:678
struct m0_ut_suite conf_glob_ut
Definition: glob.c:233
struct m0_ut_suite xcode_bufvec_fop_ut
void m0_console_printf(const char *fmt,...)
Definition: trace.c:801
struct m0_ut_suite rpclib_ut
Definition: rpclib_ut.c:170
#define UT_SANDBOX
Definition: m0ut.c:47
struct m0_ut_suite conf_pvers_ut
Definition: pvers.c:182
struct m0_ut_suite parity_math_ut
struct m0_ut_suite ut_suite_ufid
Definition: ufid.c:39
struct m0_ut_suite ut_suite_idx
Definition: idx.c:36
static int ut_fini(void)
Definition: bytecount.c:50
struct m0_ut_suite conf_load_ut
Definition: load.c:324
struct m0_ut_suite sns_cm_repair_ut
Definition: cm.c:536
struct m0_ut_suite conf_ut
Definition: cache.c:186
M0_INTERNAL void m0_instance_setup(struct m0 *instance)
Definition: instance.c:110
struct m0_ut_suite item_source_ut
Definition: item_source.c:267
struct m0_ut_suite fdmi_filter_eval_ut
Definition: filter_eval.c:397
struct m0_ut_suite link_lib_ut
Definition: link_ut.c:405
struct m0_ut_suite dix_cm_iter_ut
Definition: iter_ut.c:3385
struct m0_ut_suite module_ut
Definition: module.c:467
bool ut_small_credits
Definition: module.h:60
struct m0_ut_suite conn_ut
Definition: conn.c:318
Definition: ut.h:77
struct m0_ut_suite ut_suite_sync
Definition: sync.c:47
struct m0_ut_suite db_ut
struct m0_module *(* mt_create)(struct m0 *instance)
Definition: module.h:199
struct m0_ut_suite capa_ut
Definition: capa_ut.c:102
int trace_level
Definition: util.c:41
struct m0_ut_suite fdmi_fol_ut
Definition: fol_ut.c:461
#define M0_VOIDARG(ch, desc, func)
Definition: getopts.h:177
static m0_bcount_t count
Definition: xcode.c:167
struct m0_ut_suite fom_timedwait_ut
struct m0_ut_suite frm_ut
Definition: formation2.c:659
struct m0_ut_suite reqh_fop_allow_ut
Definition: fop_allow_ut.c:212
struct m0_ut_suite cm_generic_ut
Definition: cm.c:336
struct m0_ut_suite rm_rwlock_ut
Definition: rm_rwlock.c:572
M0_INTERNAL void m0_performance_counters(char *buf, size_t buf_len)
Definition: umisc.c:82
struct m0_ut_suite ut_suite_io_nw_xfer
Definition: io_nw_xfer.c:46
struct m0_ut_suite xcode_ff2c_ut
Definition: ff2c.c:206
M0_INTERNAL void m0_ut_fini(void)
Definition: ut.c:95
#define M0_STRINGARG(ch, desc, func)
Definition: getopts.h:207
int i
Definition: dir.c:1033
struct m0_ut_suite fdmi_sd_ut
Definition: sd_ut.c:37
static void tests_add(struct m0_ut_module *m)
Definition: m0ut.c:179
struct m0_ut_suite ms_fom_ut
Definition: ms_fom_ut.c:402
struct m0_ut_suite ut_suite_io_req_fop
Definition: io_req_fop.c:44
struct m0_ut_suite ut_suite_io_req
Definition: io_req.c:53
#define LAMBDA(T,...)
Definition: thread.h:153
struct m0_ut_suite layout_ut
Definition: layout.c:3763
struct m0_ut_suite libm0_ut
Definition: main.c:64
struct m0_ut_suite balloc_ut
Definition: balloc.c:302
struct m0_ut_suite buffer_pool_ut
struct m0_ut_suite m0_net_bulk_mem_ut
Definition: bulk_mem_ut.c:819
#define M0_FORMATARG(ch, desc, fmt, ptr)
Definition: getopts.h:218
struct m0_ut_suite addb2_base_ut
Definition: base.c:431
struct m0_ut_suite rpc_rcv_session_ut
Definition: rcv_session.c:306
M0_INTERNAL int m0_ut_init(struct m0 *instance)
Definition: ut.c:64
M0_INTERNAL void m0_ut_start_from(const char *suite)
Definition: ut.c:673
struct m0_ut_suite session_ut
Definition: session.c:322
M0_INTERNAL int m0_trace_set_print_context(const char *ctx_name)
Definition: trace.c:562
struct m0_ut_suite isc_service_ut
Definition: service_ut.c:940
struct m0_ut_suite snscm_xform_ut
Definition: xform.c:743
struct m0_ut_suite confstr_ut
Definition: db.c:230
struct m0_ut_suite conf_diter_ut
Definition: diter.c:392
struct m0_ut_suite storage_dev_ut
void m0_node_uuid_string_set(const char *uuid)
Definition: uuuid.c:64
bool ut_exclude
Definition: module.h:55
struct m0_ut_suite addb2_net_ut
Definition: net.c:52
struct m0_ut_suite ha_state_ut
Definition: note.c:637
bool ut_keep_sandbox
Definition: module.h:59
Definition: instance.h:80
struct m0_ut_suite addb2_consumer_ut
Definition: consumer.c:391
struct m0_ut_suite conf_validation_ut
Definition: validation.c:151
struct m0_ut_suite rpc_conn_pool_ut
Definition: conn_pool.c:181
struct m0_ut_suite cob_ut
Definition: cob.c:340
struct m0_ut_suite dtm_dtx_ut
Definition: dtx.c:450
struct m0_ut_suite spiel_ut
Definition: spiel_ut.c:82
struct m0_ut_suite fol_ut
Definition: fol.c:137
struct m0_ut_suite confc_ut
Definition: confc.c:477
struct m0_ut_suite xcode_ut
Definition: xcode.c:1273
struct m0_ut_suite m0_net_module_ut
Definition: module.c:56
struct m0_ut_suite spiel_conf_ut
struct m0_ut_suite ut_suite_obj
Definition: obj.c:1512
struct m0_ut_suite ut_suite_io
Definition: io.c:51
struct m0_ut_suite parity_math_ssse3_ut
struct m0_ut_suite bytecount_ut
Definition: bytecount.c:269
struct m0_ut_suite sm_ut
Definition: sm.c:643
struct m0_ut_suite m0_fom_stats_ut
Definition: stats_ut.c:133
const struct m0_module_type m0_ut_module_type
Definition: module.c:37
struct m0_ut_suite sss_ut
Definition: sss_ut.c:473
struct m0_ut_suite m0_net_misc_ut
Definition: misc.c:50
struct m0_ut_suite failure_domains_tree_ut
Definition: fd_tree.c:182
struct m0_ut_suite console_ut
Definition: console.c:628
int main(int argc, char *argv[])
Definition: m0ut.c:326
struct m0_ut_suite ut_suite_io_pargrp
Definition: io_pargrp.c:47
struct m0_ut_suite rm_rcredits_ut
Definition: rcredits.c:1123
struct m0_ut_suite fit_ut
struct m0_ut_suite layout_access_plan_ut
Definition: plan.c:326
struct m0_ut_suite stob_ut
Definition: main.c:47
struct m0_ut_suite spiel_ci_ut
Definition: spiel_ci_ut.c:836
M0_INTERNAL void m0_ut_list_owners(void)
Definition: ut.c:603
struct m0_ut_suite stats_ut
Definition: stats_ut.c:37
M0_INTERNAL int m0_fi_enable_fault_point(const char *str)
Definition: finject_init.c:103
struct m0_ut_suite snscm_storage_ut
Definition: storage.c:380
struct m0_ut_suite m0_fop_lock_ut
Definition: long_lock_ut.c:159
struct m0_ut_suite ha_ut
Definition: main.c:49
struct m0_ut_suite reqh_ut
Definition: reqh_fom_ut.c:472
struct m0_ut_suite rpc_at_ut
Definition: at_ut.c:752
void m0_console_flush(void)
Definition: ktrace.c:165
struct m0_ut_suite m0d_ut
Definition: cs_ut_main.c:713
void * i_moddata[M0_MODULE_NR]
Definition: instance.h:94
struct m0_ut_suite reqh_service_ut
Definition: service.c:117
struct m0_ut_suite addb2_sys_ut
Definition: sys.c:271
M0_INTERNAL int m0_trace_set_immediate_mask(const char *mask_str)
Definition: ktrace.c:77
M0_INTERNAL void m0_ut_add(struct m0_ut_module *m, struct m0_ut_suite *ts, bool enable)
Definition: ut.c:101
#define M0_HELPARG(ch)
Definition: getopts.h:242
struct m0_ut_suite rm_ut
Definition: rmut.c:458
struct m0_ut_suite cas_service_ut
Definition: service_ut.c:1959
struct m0_ut_suite fis_ut
Definition: fis_ut.c:190
struct m0_ut_suite m0_net_bulk_if_ut
Definition: bulk_if.c:1229
static char * trace_print_context
Definition: ktrace.c:58
static struct m0 instance
Definition: main.c:78
struct m0_ut_suite di_ut
Definition: di.c:134
struct m0_ut_suite ut_suite_pi
struct m0_ut_suite ut_suite
Definition: client.c:1201
struct m0_ut_suite emap_ut
struct m0_ut_suite sns_flock_ut
Definition: flock.c:343
struct m0_ut_suite poolmach_ut
Definition: test_pm.c:539
struct m0_ut_suite cas_client_ut
Definition: client_ut.c:3893
struct m0_ut_suite ios_bufferpool_ut
M0_INTERNAL int m0_trace_parse(FILE *trace_file, FILE *output_file, const char *m0tr_ko_path, enum m0_trace_parse_flags flags, const void *magic_symbols[], unsigned int magic_symbols_nr)
Definition: utrace.c:527
M0_INTERNAL int m0_ut_run(void)
Definition: ut.c:520
struct m0_ut_suite rconfc_ut
Definition: rconfc.c:1426
struct m0_ut_suite rpc_mc_ut
Definition: rpc_machine.c:222
M0_INTERNAL void m0_ut_list(bool with_tests, bool yaml_output)
Definition: ut.c:565
struct m0_ut_suite cm_cp_ut
Definition: cp.c:298
struct m0_ut_suite packet_encdec_ut
Definition: packet.c:259
struct m0_module i_self
Definition: instance.h:88
struct m0_ut_suite m0_net_test_ut
Definition: main.c:60
M0_INTERNAL void m0_ut_shuffle(unsigned seed)
Definition: ut.c:659
struct m0_ut_suite mdservice_ut
Definition: mdstore.c:296
M0_INTERNAL int m0_fi_enable_fault_points_from_file(const char *file_name)
Definition: finject_init.c:258
int32_t rc
Definition: trigger_fop.h:47
struct m0_ut_suite fdmi_filterc_ut
Definition: filterc_ut.c:299
struct m0_ut_suite ut_suite_mt_idx_dix
Definition: idx_dix.c:1223
#define ARRAY_SIZE(a)
Definition: misc.h:45
struct m0_ut_suite snscm_net_ut
Definition: net.c:1095
struct m0_ut_suite isc_api_ut
Definition: isc.c:122
struct m0_ut_suite m0_net_lnet_ut
Definition: lnet_ut.c:2231
struct m0_ut_suite dtm0_clk_src_ut
Definition: clk_src_ut.c:122
M0_INTERNAL int m0_module_init(struct m0_module *module, int level)
Definition: module.c:131
M0_INTERNAL int m0_trace_set_level(const char *level_str)
Definition: trace.c:581
struct m0_ut_suite addb2_storage_ut
Definition: storage.c:526