Motr  M0
Motr UT library

Common unit test library. More...

Data Structures

struct  m0_ut_moddep
 
struct  m0_ut_module
 
struct  m0_ut_threads_descr
 
struct  ut_entry
 
struct  m0_ut
 
struct  m0_ut_suite
 
struct  m0_ut_redirect
 

Macros

#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_UT
 
#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_UT
 
#define M0_UT_PATH(name)   M0_SRC_PATH("ut/" name)
 
#define M0_UT_CONF_PROFILE   "<0x7000000000000001:0>"
 
#define M0_UT_CONF_PROFILE_BAD   "<0x7000000000000000:999>" /* non-existent */
 
#define M0_UT_CONF_PROCESS   "<0x7200000000000001:5>"
 
#define M0_UT_THREADS_DEFINE(name, thread_func)
 
#define M0_UT_THREADS_START(name, thread_nr, param_array)
 
#define M0_UT_THREADS_STOP(name)   m0_ut_threads_stop(&ut_threads_descr_##name)
 
#define LOG_PREFIX
 
#define M0_UT_ASSERT(a)   m0_ut_assertimpl((a), #a, __FILE__, __LINE__, __func__)
 
#define M0_UT_ENTER(...)
 
#define M0_UT_LOG(...)
 
#define M0_UT_RETURN(...)
 

Enumerations

enum  { M0_UT_SUITES_MAX = 1024 }
 
enum  { M0_LEVEL_UT_PREPARE, M0_LEVEL_UT_KLUDGE, M0_LEVEL_UT_READY }
 
enum  { M0_LEVEL_UT_SUITE_READY }
 
enum  { M0_UT_SUITE_TESTS_MAX = 128 }
 

Functions

M0_INTERNAL void m0_ut_backend_init (struct m0_be_ut_backend *be, struct m0_be_ut_seg *seg)
 
M0_INTERNAL void m0_ut_backend_fini (struct m0_be_ut_backend *be, struct m0_be_ut_seg *seg)
 
M0_INTERNAL void m0_ut_be_tx_begin (struct m0_be_tx *tx, struct m0_be_ut_backend *ut_be, struct m0_be_tx_credit *cred)
 
M0_INTERNAL void m0_ut_be_tx_begin2 (struct m0_be_tx *tx, struct m0_be_ut_backend *ut_be, struct m0_be_tx_credit *cred, m0_bcount_t payload_cred)
 
M0_INTERNAL void m0_ut_be_tx_end (struct m0_be_tx *tx)
 
M0_INTERNAL void m0_ut_random_shuffle (uint64_t *arr, uint64_t nr, uint64_t *seed)
 
M0_INTERNAL void m0_ut_random_arr_with_sum (uint64_t *arr, uint64_t nr, uint64_t sum, uint64_t *seed)
 
static struct m0_moduleut_module_create (struct m0 *instance)
 
static int level_ut_enter (struct m0_module *module)
 
static void level_ut_leave (struct m0_module *module)
 
M0_INTERNAL void m0_ut_suite_module_setup (struct m0_ut_suite *ts, struct m0 *instance)
 
M0_INTERNAL void m0_ut_threads_start (struct m0_ut_threads_descr *descr, int thread_nr, void *param_array, size_t param_size)
 
M0_INTERNAL void m0_ut_threads_stop (struct m0_ut_threads_descr *descr)
 
static int test_suites_enable (const struct m0_ut_module *m)
 
static struct m0_ut_moduleut_module (void)
 
M0_INTERNAL int m0_ut_init (struct m0 *instance)
 
M0_INTERNAL void m0_ut_fini (void)
 
M0_INTERNAL void m0_ut_add (struct m0_ut_module *m, struct m0_ut_suite *ts, bool enable)
 
static struct m0_ut_suitesuite_find (const struct m0_ut_module *m, const char *name)
 
static struct m0_utget_test_by_name (const struct m0_ut_module *m, const char *s_name, const char *t_name)
 
static void set_enabled_flag_for (const struct m0_ut_module *m, const char *s_name, const char *t_name, bool value)
 
static bool exists (const struct m0_ut_module *m, const char *s_name, const char *t_name)
 
static int test_add (struct m0_list *list, const char *suite, const char *test, const struct m0_ut_module *m)
 
static int test_list_populate (struct m0_list *list, const char *str, const struct m0_ut_module *m)
 
static void test_list_destroy (struct m0_list *list)
 
static int test_list_create (struct m0_list *list, const struct m0_ut_module *m)
 
static const char * skipspaces (const char *str)
 
static void check_all_fi_disabled (void)
 
static void run_test (const struct m0_ut *test, size_t max_name_len)
 
static int run_suite (const struct m0_ut_suite *suite, int max_name_len)
 
static int max_test_name_len (const struct m0_ut_suite **suites, unsigned nr)
 
static int tests_run_all (const struct m0_ut_module *m)
 
M0_INTERNAL int m0_ut_run (void)
 
M0_INTERNAL void m0_ut_list (bool with_tests, bool yaml_output)
 
static void ut_owners_print (const struct m0_ut_suite *suite)
 
M0_INTERNAL void m0_ut_list_owners (void)
 
M0_INTERNAL bool m0_ut_assertimpl (bool c, const char *str_c, const char *file, int lno, const char *func)
 
M0_INTERNAL bool m0_ut_small_credits (void)
 
static int cmp (const struct m0_ut_suite **s0, const struct m0_ut_suite **s1)
 
M0_INTERNAL void m0_ut_shuffle (unsigned seed)
 
M0_INTERNAL void m0_ut_start_from (const char *suite)
 
M0_INTERNAL int m0_ut_enable_fault_point (const char *str)
 
M0_INTERNAL int m0_ut_enable_fault_points_from_file (const char *file_name)
 
M0_INTERNAL void m0_stream_redirect (FILE *stream, const char *path, struct m0_ut_redirect *redir)
 
M0_INTERNAL void m0_stream_restore (const struct m0_ut_redirect *redir)
 
M0_INTERNAL bool m0_error_mesg_match (FILE *fp, const char *mesg)
 
int m0_ut_sandbox_init (const char *dir)
 
void m0_ut_sandbox_fini (const char *dir, bool keep)
 

Variables

const struct m0_module_type m0_ut_module_type
 
static const struct m0_modlev levels_ut []
 
static const struct m0_modlev levels_ut_suite []
 
const struct m0_module_type m0_ut_module_type
 
struct m0_fid g_process_fid = M0_FID_TINIT('r', 1, 1)
 
M0_EXTERN struct m0_fid g_process_fid
 

Detailed Description

Common unit test library.

Multithreaded UT helpers.

The intent of this library is to include all code, which could be potentially useful for several UTs and thus can be shared, avoiding duplication of similar code.

BE helper functions that unit tests of other (non-BE) Motr subsystems are allowed to use.

The API declared in be/ut/helper.h is supposed to be used by BE unit tests only. The UTs of other subsystems should not #include that file (though they do, hee hee hee).

Macro Definition Documentation

◆ LOG_PREFIX

#define LOG_PREFIX

Definition at line 48 of file ut.c.

◆ M0_TRACE_SUBSYSTEM [1/2]

#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_UT

Definition at line 29 of file misc.c.

◆ M0_TRACE_SUBSYSTEM [2/2]

#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_UT

Definition at line 31 of file be.c.

◆ M0_UT_ASSERT

#define M0_UT_ASSERT (   a)    m0_ut_assertimpl((a), #a, __FILE__, __LINE__, __func__)

Definition at line 46 of file ut.h.

◆ M0_UT_CONF_PROCESS

#define M0_UT_CONF_PROCESS   "<0x7200000000000001:5>"

Definition at line 45 of file misc.h.

◆ M0_UT_CONF_PROFILE

#define M0_UT_CONF_PROFILE   "<0x7000000000000001:0>"

Definition at line 43 of file misc.h.

◆ M0_UT_CONF_PROFILE_BAD

#define M0_UT_CONF_PROFILE_BAD   "<0x7000000000000000:999>" /* non-existent */

Definition at line 44 of file misc.h.

◆ M0_UT_ENTER

#define M0_UT_ENTER (   ...)

Definition at line 56 of file ut.h.

◆ M0_UT_LOG

#define M0_UT_LOG (   ...)

Definition at line 57 of file ut.h.

◆ M0_UT_PATH

#define M0_UT_PATH (   name)    M0_SRC_PATH("ut/" name)

Returns absolute path to given file in ut/ directory. M0_UT_DIR is defined in ut/Makefile.sub.

Definition at line 41 of file misc.h.

◆ M0_UT_RETURN

#define M0_UT_RETURN (   ...)

Definition at line 58 of file ut.h.

◆ M0_UT_THREADS_DEFINE

#define M0_UT_THREADS_DEFINE (   name,
  thread_func 
)
Value:
static struct m0_ut_threads_descr ut_threads_descr_##name = { \
.utd_thread_func = (void (*)(void *))thread_func, \
};
const char * name
Definition: trace.c:110

Definition at line 46 of file threads.h.

◆ M0_UT_THREADS_START

#define M0_UT_THREADS_START (   name,
  thread_nr,
  param_array 
)
Value:
m0_ut_threads_start(&ut_threads_descr_##name, thread_nr, \
param_array, sizeof(param_array[0]))
const char * name
Definition: trace.c:110
M0_INTERNAL void m0_ut_threads_start(struct m0_ut_threads_descr *descr, int thread_nr, void *param_array, size_t param_size)
Definition: threads.c:28

Definition at line 51 of file threads.h.

◆ M0_UT_THREADS_STOP

#define M0_UT_THREADS_STOP (   name)    m0_ut_threads_stop(&ut_threads_descr_##name)

Definition at line 55 of file threads.h.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
M0_UT_SUITES_MAX 

Definition at line 40 of file module.h.

◆ anonymous enum

anonymous enum

Levels of m0_ut_module.

Enumerator
M0_LEVEL_UT_PREPARE 

Creates sandbox directory.

M0_LEVEL_UT_KLUDGE 

XXX DELETEME Registers dummy service types that are used by some UTs.

M0_LEVEL_UT_READY 

Depends on M0_LEVEL_UT_SUITE_READY of the used test suites.

Definition at line 67 of file module.h.

◆ anonymous enum

anonymous enum

Levels of m0_ut_suite module.

Enumerator
M0_LEVEL_UT_SUITE_READY 

Definition at line 80 of file module.h.

◆ anonymous enum

anonymous enum
Enumerator
M0_UT_SUITE_TESTS_MAX 

Definition at line 75 of file ut.h.

Function Documentation

◆ check_all_fi_disabled()

static void check_all_fi_disabled ( void  )
static

Definition at line 339 of file ut.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ cmp()

static int cmp ( const struct m0_ut_suite **  s0,
const struct m0_ut_suite **  s1 
)
static

Definition at line 654 of file ut.c.

Here is the caller graph for this function:

◆ exists()

static bool exists ( const struct m0_ut_module m,
const char *  s_name,
const char *  t_name 
)
static

Definition at line 169 of file ut.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_test_by_name()

static struct m0_ut* get_test_by_name ( const struct m0_ut_module m,
const char *  s_name,
const char *  t_name 
)
static

Definition at line 123 of file ut.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ level_ut_enter()

static int level_ut_enter ( struct m0_module module)
static

Definition at line 42 of file module.c.

Here is the call graph for this function:

◆ level_ut_leave()

static void level_ut_leave ( struct m0_module module)
static

Definition at line 57 of file module.c.

Here is the call graph for this function:

◆ m0_error_mesg_match()

M0_INTERNAL bool m0_error_mesg_match ( FILE *  fp,
const char *  mesg 
)

Checks if a text file contains the specified string.

Parameters
fp- a file, which is searched for a string
mesg- a string to search for

Definition at line 123 of file ut.c.

Here is the caller graph for this function:

◆ m0_stream_redirect()

M0_INTERNAL void m0_stream_redirect ( FILE *  stream,
const char *  path,
struct m0_ut_redirect redir 
)

Associates one of the standard streams (stdin, stdout, stderr) with a file pointed by 'path' argument.

Definition at line 87 of file ut.c.

Here is the caller graph for this function:

◆ m0_stream_restore()

M0_INTERNAL void m0_stream_restore ( const struct m0_ut_redirect redir)

Restores standard stream from file descriptor and stream position, which were saved earlier by m0_stream_redirect().

Definition at line 107 of file ut.c.

Here is the caller graph for this function:

◆ m0_ut_add()

M0_INTERNAL void m0_ut_add ( struct m0_ut_module m,
struct m0_ut_suite ts,
bool  enable 
)

add test suite into global pool. if adding test suite failed application is aborted.

Parameters
tspointer to test suite

Definition at line 101 of file ut.c.

Here is the caller graph for this function:

◆ m0_ut_assertimpl()

M0_INTERNAL bool m0_ut_assertimpl ( bool  c,
const char *  str_c,
const char *  file,
int  lno,
const char *  func 
)

Implements UT assert logic in the kernel.

Parameters
cthe result of the boolean condition, evaluated by caller
lnoline number of the assertion, eg LINE
str_cstring representation of the condition, c
filepath of the file, eg FILE
funcname of the function which triggered assertion, eg func
panicflag, which controls whether this function should call m0_panic() or just print error message and continue

Definition at line 627 of file ut.c.

Here is the call graph for this function:

◆ m0_ut_backend_fini()

M0_INTERNAL void m0_ut_backend_fini ( struct m0_be_ut_backend be,
struct m0_be_ut_seg seg 
)

Definition at line 50 of file be.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_ut_backend_init()

M0_INTERNAL void m0_ut_backend_init ( struct m0_be_ut_backend be,
struct m0_be_ut_seg seg 
)

Definition at line 43 of file be.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_ut_be_tx_begin()

M0_INTERNAL void m0_ut_be_tx_begin ( struct m0_be_tx tx,
struct m0_be_ut_backend ut_be,
struct m0_be_tx_credit cred 
)

Initialises, prepares, and opens the transaction.

Definition at line 56 of file be.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_ut_be_tx_begin2()

M0_INTERNAL void m0_ut_be_tx_begin2 ( struct m0_be_tx tx,
struct m0_be_ut_backend ut_be,
struct m0_be_tx_credit cred,
m0_bcount_t  payload_cred 
)

Definition at line 68 of file be.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_ut_be_tx_end()

M0_INTERNAL void m0_ut_be_tx_end ( struct m0_be_tx tx)

Closes the transaction and waits for its completion.

Definition at line 82 of file be.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_ut_enable_fault_point()

M0_INTERNAL int m0_ut_enable_fault_point ( const char *  str)

Parses fault point definitions from command line argument and enables them.

The input string should be in format:

func:tag:type[:integer[:integer]][,func:tag:type[:integer[:integer]]]

◆ m0_ut_enable_fault_points_from_file()

M0_INTERNAL int m0_ut_enable_fault_points_from_file ( const char *  file_name)

Parses fault point definitions from a yaml file and enables them.

Each FP is described by a yaml mapping with the following keys:

func - a name of the target function, which contains fault point tag - a fault point tag type - a fault point type, possible values are: always, oneshot, random, off_n_on_m p - data for 'random' fault point n - data for 'off_n_on_m' fault point m - data for 'off_n_on_m' fault point

An example of yaml file:

* ---
*
* - func: test_func1
*   tag:  test_tag1
*   type: random
*   p:    50
*
* - func: test_func2
*   tag:  test_tag2
*   type: oneshot
*
* # yaml mappings could be specified in a short form as well
* - { func: test_func3, tag:  test_tag3, type: off_n_on_m, n: 3, m: 1 }
*
* 

◆ m0_ut_fini()

void m0_ut_fini ( void  )

Definition at line 95 of file ut.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_ut_init()

int m0_ut_init ( struct m0 instance)

Definition at line 64 of file ut.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_ut_list()

M0_INTERNAL void m0_ut_list ( bool  with_tests,
bool  yaml_output 
)

print all available test suites in YAML format to STDOUT

Parameters
with_tests- if true, then all tests of each suite are printed in addition

Definition at line 565 of file ut.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_ut_list_owners()

M0_INTERNAL void m0_ut_list_owners ( void  )

Print owners of all UTs on STDOUT

Definition at line 603 of file ut.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_ut_random_arr_with_sum()

M0_INTERNAL void m0_ut_random_arr_with_sum ( uint64_t *  arr,
uint64_t  nr,
uint64_t  sum,
uint64_t *  seed 
)

Gives an array with random values with the given sum.

Precondition
nr > 0
Postcondition
m0_reduce(i, nr, 0, + arr[i]) == sum
Note
It uses an UT-grade RNG.

Definition at line 47 of file misc.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_ut_random_shuffle()

M0_INTERNAL void m0_ut_random_shuffle ( uint64_t *  arr,
uint64_t  nr,
uint64_t *  seed 
)

Random shuffles an array. Uses seed parameter as the seed for RNG.

Note
It uses an UT-grade RNG.

Definition at line 37 of file misc.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_ut_run()

M0_INTERNAL int m0_ut_run ( void  )

run tests

Definition at line 520 of file ut.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_ut_sandbox_fini()

void m0_ut_sandbox_fini ( const char *  dir,
bool  keep 
)

Definition at line 30 of file ut.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_ut_sandbox_init()

int m0_ut_sandbox_init ( const char *  dir)

Definition at line 25 of file ut.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_ut_shuffle()

M0_INTERNAL void m0_ut_shuffle ( unsigned  seed)

Shuffles added suites.

Definition at line 659 of file ut.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_ut_small_credits()

M0_INTERNAL bool m0_ut_small_credits ( void  )

Return "small transaction credits" flag command line parameter

Definition at line 645 of file ut.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_ut_start_from()

M0_INTERNAL void m0_ut_start_from ( const char *  suite)

Re-orders the suites to start from a given one.

Definition at line 673 of file ut.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_ut_suite_module_setup()

M0_INTERNAL void m0_ut_suite_module_setup ( struct m0_ut_suite ts,
struct m0 instance 
)

Definition at line 90 of file module.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_ut_threads_start()

M0_INTERNAL void m0_ut_threads_start ( struct m0_ut_threads_descr descr,
int  thread_nr,
void *  param_array,
size_t  param_size 
)

Definition at line 28 of file threads.c.

Here is the caller graph for this function:

◆ m0_ut_threads_stop()

M0_INTERNAL void m0_ut_threads_stop ( struct m0_ut_threads_descr descr)

Definition at line 52 of file threads.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ max_test_name_len()

static int max_test_name_len ( const struct m0_ut_suite **  suites,
unsigned  nr 
)
static

Definition at line 494 of file ut.c.

Here is the caller graph for this function:

◆ run_suite()

static int run_suite ( const struct m0_ut_suite suite,
int  max_name_len 
)
static

Definition at line 408 of file ut.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ run_test()

static void run_test ( const struct m0_ut test,
size_t  max_name_len 
)
static

Definition at line 361 of file ut.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ set_enabled_flag_for()

static void set_enabled_flag_for ( const struct m0_ut_module m,
const char *  s_name,
const char *  t_name,
bool  value 
)
static

Definition at line 140 of file ut.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ skipspaces()

static const char* skipspaces ( const char *  str)
inlinestatic

Definition at line 331 of file ut.c.

Here is the caller graph for this function:

◆ suite_find()

static struct m0_ut_suite* suite_find ( const struct m0_ut_module m,
const char *  name 
)
static

Definition at line 110 of file ut.c.

Here is the caller graph for this function:

◆ test_add()

static int test_add ( struct m0_list list,
const char *  suite,
const char *  test,
const struct m0_ut_module m 
)
static

Definition at line 193 of file ut.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ test_list_create()

static int test_list_create ( struct m0_list list,
const struct m0_ut_module m 
)
static

Definition at line 273 of file ut.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ test_list_destroy()

static void test_list_destroy ( struct m0_list list)
static

Definition at line 262 of file ut.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ test_list_populate()

static int test_list_populate ( struct m0_list list,
const char *  str,
const struct m0_ut_module m 
)
static

Populates a list of ut_entry elements by parsing input string, which should conform with the format 'suite[:test][,suite[:test]]'.

Parameters
strinput string.
listinitialised and empty m0_list.

Definition at line 233 of file ut.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ test_suites_enable()

static int test_suites_enable ( const struct m0_ut_module m)
static

Definition at line 299 of file ut.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ tests_run_all()

static int tests_run_all ( const struct m0_ut_module m)
static

Definition at line 507 of file ut.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ut_module()

static struct m0_ut_module* ut_module ( void  )
static

Definition at line 59 of file ut.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ut_module_create()

static struct m0_module * ut_module_create ( struct m0 instance)
static

Definition at line 106 of file module.c.

Here is the call graph for this function:

◆ ut_owners_print()

static void ut_owners_print ( const struct m0_ut_suite suite)
static

Definition at line 593 of file ut.c.

Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ g_process_fid [1/2]

M0_EXTERN struct m0_fid g_process_fid

Definition at line 258 of file ut.h.

◆ g_process_fid [2/2]

struct m0_fid g_process_fid = M0_FID_TINIT('r', 1, 1)

Definition at line 689 of file ut.c.

◆ levels_ut

const struct m0_modlev levels_ut[]
static
Initial value:
= {
.ml_name = "M0_LEVEL_UT_PREPARE",
.ml_enter = level_ut_enter,
.ml_leave = level_ut_leave
},
.ml_name = "M0_LEVEL_UT_KLUDGE",
.ml_enter = level_ut_enter,
.ml_leave = (void *)m0_cs_default_stypes_fini
},
.ml_name = "M0_LEVEL_UT_READY"
}
}
static void level_ut_leave(struct m0_module *module)
Definition: module.c:57
static int level_ut_enter(struct m0_module *module)
Definition: module.c:42
void m0_cs_default_stypes_fini(void)
Definition: cs_service.c:174

Definition at line 66 of file module.c.

◆ levels_ut_suite

const struct m0_modlev levels_ut_suite[]
static
Initial value:
= {
.ml_name = "M0_LEVEL_UT_SUITE_READY"
}
}

Definition at line 82 of file module.c.

◆ m0_ut_module_type [1/2]

const struct m0_module_type m0_ut_module_type
Initial value:
= {
.mt_name = "m0_ut_module",
.mt_create = ut_module_create
}
static struct m0_module * ut_module_create(struct m0 *instance)
Definition: module.c:106

Definition at line 37 of file module.c.

◆ m0_ut_module_type [2/2]

const struct m0_module_type m0_ut_module_type

Definition at line 37 of file module.c.