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_repreb_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 #if defined(ENABLE_LUSTRE)
180 #define LNET_ENABLED (true)
181 #else
182 #define LNET_ENABLED (false)
183 #endif
184 
185 static void tests_add(struct m0_ut_module *m)
186 {
187  /*
188  * set last argument to 'false' to disable test,
189  * it will automatically print a warning to console
190  */
191 
192  /* sort test suites in alphabetic order */
193  m0_ut_add(m, &libm0_ut, true); /* test lib first */
194  m0_ut_add(m, &addb2_base_ut, true);
195  m0_ut_add(m, &addb2_consumer_ut, true);
196  m0_ut_add(m, &addb2_hist_ut, true);
197  m0_ut_add(m, &addb2_net_ut, true);
198  m0_ut_add(m, &addb2_storage_ut, true);
199  m0_ut_add(m, &addb2_sys_ut, true);
200  m0_ut_add(m, &di_ut, true);
201  m0_ut_add(m, &balloc_ut, true);
202  m0_ut_add(m, &be_ut, true);
203  m0_ut_add(m, &buffer_pool_ut, true);
204  m0_ut_add(m, &bulkio_client_ut, true);
205  m0_ut_add(m, &bulkio_server_ut, true);
206  m0_ut_add(m, &bytecount_ut, true);
207 
208  /*
209  * ALARM/WARN/XXX: `dtm0_ut' added before mt_idx_dix, due to
210  * finalisation order of internal structures inside dtm0_ut!
211  * NEEDS to be addressed! (by Anatoliy)
212  */
213  m0_ut_add(m, &dtm0_ut, true);
214 
215  m0_ut_add(m, &capa_ut, true);
216  m0_ut_add(m, &cas_client_ut, true);
217  m0_ut_add(m, &cas_service_ut, true);
218  m0_ut_add(m, &ut_suite, true);
219  m0_ut_add(m, &ut_suite_obj, true);
220  m0_ut_add(m, &ut_suite_io, true);
222  m0_ut_add(m, &ut_suite_io_pargrp, true);
223  m0_ut_add(m, &ut_suite_io_req, true);
225  m0_ut_add(m, &ut_suite_sync, true);
226  m0_ut_add(m, &ut_suite_idx, true);
227  m0_ut_add(m, &ut_suite_idx_dix, true);
229  m0_ut_add(m, &ut_suite_layout, true);
230  m0_ut_add(m, &ut_suite_ufid, true);
231  m0_ut_add(m, &cm_cp_ut, true);
232  m0_ut_add(m, &cm_generic_ut, true);
233  m0_ut_add(m, &cob_ut, true);
234  m0_ut_add(m, &cobfoms_ut, true);
235  m0_ut_add(m, &conf_ut, true);
236  m0_ut_add(m, &conf_load_ut, true);
237  m0_ut_add(m, &conf_pvers_ut, true);
238  m0_ut_add(m, &confc_ut, true);
239  m0_ut_add(m, &conf_glob_ut, true);
240  m0_ut_add(m, &conf_diter_ut, true);
241  m0_ut_add(m, &confstr_ut, true);
242  m0_ut_add(m, &conf_validation_ut, true);
243  m0_ut_add(m, &conf_walk_ut, true);
244  m0_ut_add(m, &rconfc_ut, true);
245  m0_ut_add(m, &conn_ut, true);
246  m0_ut_add(m, &dix_client_ut, true);
247  m0_ut_add(m, &dix_cm_iter_ut, true);
248  m0_ut_add(m, &dtm_nucleus_ut, true);
249  m0_ut_add(m, &dtm_transmit_ut, true);
250  m0_ut_add(m, &dtm_dtx_ut, true);
251  m0_ut_add(m, &dtm0_clk_src_ut, true);
252  m0_ut_add(m, &dtm0_log_ut, true);
254  m0_ut_add(m, &failure_domains_ut, true);
255  m0_ut_add(m, &fis_ut, true);
256  m0_ut_add(m, &fdmi_filterc_ut, true);
257  m0_ut_add(m, &fdmi_pd_ut, true);
258  m0_ut_add(m, &fdmi_sd_ut, true);
259  m0_ut_add(m, &fdmi_fol_ut, true);
260  m0_ut_add(m, &fdmi_fol_fini_ut, true);
262  m0_ut_add(m, &fit_ut, true);
263  m0_ut_add(m, &fol_ut, true);
264  m0_ut_add(m, &fom_timedwait_ut, true);
265  m0_ut_add(m, &frm_ut, true);
266  m0_ut_add(m, &ha_ut, true);
267  m0_ut_add(m, &ha_state_ut, true);
268  m0_ut_add(m, &ios_bufferpool_ut, true);
269  m0_ut_add(m, &isc_api_ut, true);
270  m0_ut_add(m, &isc_service_ut, true);
271  m0_ut_add(m, &item_ut, true);
272  m0_ut_add(m, &item_source_ut, true);
273  m0_ut_add(m, &layout_ut, true);
275  m0_ut_add(m, &link_lib_ut, true);
276  m0_ut_add(m, &m0_fop_lock_ut, true);
277  m0_ut_add(m, &m0_fom_stats_ut, true);
278  m0_ut_add(m, &m0_net_bulk_if_ut, true);
279  m0_ut_add(m, &m0_net_bulk_mem_ut, true);
281  m0_ut_add(m, &m0_net_misc_ut, true);
282  m0_ut_add(m, &m0_net_module_ut, true);
283  m0_ut_add(m, &m0_net_test_ut, true);
284  m0_ut_add(m, &m0_net_tm_prov_ut, true);
285  m0_ut_add(m, &m0d_ut, true);
286  m0_ut_add(m, &mdservice_ut, true);
287  m0_ut_add(m, &module_ut, true);
288  m0_ut_add(m, &ms_fom_ut, true);
289  m0_ut_add(m, &packet_encdec_ut, true);
290  m0_ut_add(m, &parity_math_ut, true);
292  m0_ut_add(m, &poolmach_ut, true);
293  m0_ut_add(m, &reqh_ut, true);
294  m0_ut_add(m, &reqh_fop_allow_ut, true);
295  m0_ut_add(m, &reqh_service_ut, true);
297  m0_ut_add(m, &rm_ut, true);
298  m0_ut_add(m, &rm_rcredits_ut, true);
299  m0_ut_add(m, &rm_rwlock_ut, true);
300  m0_ut_add(m, &rpc_at_ut, true);
301  m0_ut_add(m, &rpc_mc_ut, true);
302  m0_ut_add(m, &rpc_rcv_session_ut, true);
303  m0_ut_add(m, &rpclib_ut, true);
304  m0_ut_add(m, &rpc_conn_pool_ut, true);
305  m0_ut_add(m, &session_ut, true);
306  m0_ut_add(m, &sm_ut, true);
307  m0_ut_add(m, &snscm_xform_ut, true);
308  m0_ut_add(m, &snscm_storage_ut, true);
309  m0_ut_add(m, &sns_cm_repreb_ut, true);
310  m0_ut_add(m, &snscm_net_ut, true);
311  m0_ut_add(m, &sns_flock_ut, true);
312  m0_ut_add(m, &spiel_ut, true);
313  m0_ut_add(m, &spiel_ci_ut, true);
314  m0_ut_add(m, &sss_ut, true);
315  m0_ut_add(m, &stats_ut, false);
316  m0_ut_add(m, &spiel_conf_ut, true);
317  m0_ut_add(m, &stob_ut, true);
318  m0_ut_add(m, &storage_dev_ut, true);
319  m0_ut_add(m, &udb_ut, true);
321  m0_ut_add(m, &xcode_ff2c_ut, true);
322  m0_ut_add(m, &xcode_ut, true);
323  m0_ut_add(m, &ut_suite_pi, true);
324 
325  /* These tests have redirection of messages. */
326  m0_ut_add(m, &console_ut, true);
327 }
328 
329 int main(int argc, char *argv[])
330 {
331  static struct m0 instance;
332  struct m0_ut_module *ut;
333  int rc;
334  bool list_ut = false;
335  bool with_tests = false;
336  bool list_owners = false;
337  bool yaml_output = false;
338  bool finject_stats_before = false;
339  bool finject_stats_after = false;
340  bool parse_trace = false;
341  int seed = -1;
342  int count = 1;
343  int i;
344  const char *fault_point = NULL;
345  const char *fp_file_name = NULL;
346  const char *trace_mask = NULL;
347  const char *trace_level = NULL;
348  const char *trace_print_context = NULL;
349  const char *tests_select = NULL;
350  const char *tests_exclude = NULL;
351  const char *start_suite = NULL;
352  static char performance_counters[0x1000];
353 
357  ut->ut_sandbox = UT_SANDBOX;
358  /* Initialise the basic stuff. */
360  if (rc != 0)
361  goto end;
362 
363  /* add options in alphabetic order, M0_HELPARG should be first */
364  rc = M0_GETOPTS(basename(argv[0]), argc, argv,
365  M0_HELPARG('h'),
366  M0_STRINGARG('e', "trace level: level[+][,level[+]]"
367  " where level is one of call|debug|info|"
368  "notice|warn|error|fatal",
369  LAMBDA(void, (const char *str) {
370  trace_level = str;
371  })),
372  M0_STRINGARG('f', "fault point to enable func:tag:type"
373  "[:integer[:integer]]",
374  LAMBDA(void, (const char *str) {
375  fault_point = str;
376  })
377  ),
378  M0_STRINGARG('F', "yaml file, which contains a list"
379  " of fault points to enable",
380  LAMBDA(void, (const char *str) {
381  fp_file_name = str;
382  })
383  ),
384  M0_FORMATARG('H', "shuffle test suites before execution. "
385  "The argument is a seed value. "
386  "0 to shuffle randomly", "%i", &seed),
387  M0_FLAGARG('k', "keep the sandbox directory",
388  &ut->ut_keep_sandbox),
389  M0_FLAGARG('c',
390  "Set small transaction credits.",
391  &ut->ut_small_credits),
392  M0_FLAGARG('l', "list available test suites",
393  &list_ut),
394  M0_VOIDARG('L', "list available test suites with"
395  " their tests",
396  LAMBDA(void, (void) {
397  list_ut = true;
398  with_tests = true;
399  })),
400  M0_STRINGARG('m', "trace mask, either numeric (HEX/DEC) or"
401  " comma-separated list of subsystem names"
402  " (use ! at the beginning to invert)",
403  LAMBDA(void, (const char *str) {
404  trace_mask = str;
405  })),
406  M0_VOIDARG('M', "print available trace subsystems",
407  LAMBDA(void, (void) {
409  exit(EXIT_SUCCESS);
410  })),
411  M0_FORMATARG('n', "repetition count", "%i", &count),
412  M0_STRINGARG('O', "start execution from a given suite",
413  LAMBDA(void, (const char *str) {
414  start_suite = str;
415  })),
416  M0_FLAGARG('o', "list test owners",
417  &list_owners),
418  M0_STRINGARG('p', "trace print context, values:"
419  " none, func, short, full",
420  LAMBDA(void, (const char *str) {
421  trace_print_context = str;
422  })),
423  M0_FLAGARG('s', "report fault injection stats before UT",
424  &finject_stats_before),
425  M0_FLAGARG('S', "report fault injection stats after UT",
426  &finject_stats_after),
427  M0_STRINGARG('t', "test list 'suite[:test][,suite"
428  "[:test]]'",
429  LAMBDA(void, (const char *str) {
430  tests_select = str;
431  })
432  ),
433  M0_FLAGARG('T', "parse trace log produced earlier"
434  " (trace data is read from STDIN)",
435  &parse_trace),
436  M0_STRINGARG('x', "exclude list 'suite[:test][,suite"
437  "[:test]]'",
438  LAMBDA(void, (const char *str) {
439  tests_exclude = str;
440  })
441  ),
442  M0_FLAGARG('Y', "produce lists in YAML format", &yaml_output),
443  );
444  if (rc != 0)
445  goto end;
446 
447  ut->ut_exclude = (tests_exclude != NULL);
448  ut->ut_tests = ut->ut_exclude ? tests_exclude : tests_select;
449 
450  /* check conflicting options */
451  if ((tests_select != NULL && tests_exclude != NULL) ||
452  (list_ut && (tests_select != NULL || tests_exclude != NULL ||
453  list_owners))) {
454  fprintf(stderr, "Error: conflicting options: only one of the"
455  " -l -L -o -t -x option can be used at the same"
456  " time.\n");
457  return EXIT_FAILURE;
458  }
459  if (start_suite != NULL && seed != -1) {
460  fprintf(stderr, "Error: -O and -H options are conflicting.\n");
461  return EXIT_FAILURE;
462  }
463  tests_add(ut);
464 
465  /*
466  * don't require m0tr.ko module to be loaded if we just want to parse
467  * trace logs
468  */
469  if (parse_trace)
471 
472  rc = m0_ut_init(&instance);
473  if (rc != 0)
474  goto end;
475 #if 1 /* XXX
476  * TODO Perform these initialisations via module/module.h API.
477  */
478  rc = m0_trace_set_immediate_mask(trace_mask) ?:
480  if (rc != 0)
481  goto ut_fini;
482 
484  if (rc != 0) {
485  warn("Error: invalid value for -p option");
486  goto ut_fini;
487  }
488 
489  if (parse_trace) {
490  rc = m0_trace_parse(stdin, stdout, NULL,
492  goto ut_fini;
493  }
494 
495  /* enable fault points as early as possible */
496  if (fault_point != NULL) {
497  rc = m0_fi_enable_fault_point(fault_point);
498  if (rc != 0)
499  goto ut_fini;
500  }
501 
502  if (fp_file_name != NULL) {
503  rc = m0_fi_enable_fault_points_from_file(fp_file_name);
504  if (rc != 0)
505  goto ut_fini;
506  }
507 
508  if (finject_stats_before) {
510  printf("\n");
511  }
512 #endif /* XXX */
513 
514  rc = 0;
515  for (i = 1; rc == 0 && i <= count; i++) {
516  if (seed != -1) {
517  if (seed == 0) {
518  seed = time(NULL) ^ (getpid() << 17);
519  printf("Seed: %i.\n", seed);
520  }
522  }
523  if (start_suite != NULL)
524  m0_ut_start_from(start_suite);
525  if (list_ut)
526  m0_ut_list(with_tests, yaml_output);
527  else if (list_owners)
529  else {
530  m0_console_printf("START Iteration: %d out of %d\n",
531  i, count);
533  rc = m0_ut_run();
534  m0_console_printf("END Iteration: %d out of %d\n\n",
535  i, count);
537  }
538  }
539  if (finject_stats_after) {
540  printf("\n");
542  }
543 ut_fini:
544  m0_ut_fini();
545 end:
546  if (rc == 0 && !parse_trace && !list_ut && !list_owners) {
547  m0_performance_counters(performance_counters,
548  ARRAY_SIZE(performance_counters));
549  printf("%s", performance_counters);
550  }
551  return rc < 0 ? -rc : rc;
552 }
553 
554 /*
555  * Local variables:
556  * c-indentation-style: "K&R"
557  * c-basic-offset: 8
558  * tab-width: 8
559  * fill-column: 80
560  * scroll-step: 1
561  * End:
562  */
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:812
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:679
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:708
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 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:340
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:185
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:746
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:392
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 sns_cm_repreb_ut
Definition: cm.c:595
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:329
struct m0_ut_suite ut_suite_io_pargrp
Definition: io_pargrp.c:47
struct m0_ut_suite rm_rcredits_ut
Definition: rcredits.c:1123
#define LNET_ENABLED
Definition: m0ut.c:182
struct m0_ut_suite fit_ut
struct m0_ut_suite layout_access_plan_ut
Definition: plan.c:331
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:471
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:1960
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:538
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:298
struct m0_ut_suite ut_suite_mt_idx_dix
Definition: idx_dix.c:1241
#define ARRAY_SIZE(a)
Definition: misc.h:45
struct m0_ut_suite snscm_net_ut
Definition: net.c:1098
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