23 #define M0_TRACE_SUBSYSTEM M0_TRACE_SUBSYS_CLIENT 51 #define EXPECT_EQ(a, b) M0_UT_ASSERT(a == b) 52 #define EXPECT_NE(a, b) M0_UT_ASSERT(a != b) 54 #define UFID_RESERVED_TEST (60818UL) 55 #define UFID_RESERVED_TEST_HI \ 56 (UFID_RESERVED_TEST << (64 - M0_UFID_RESERVED_BITS)) 124 #define UFID_VALIDATE(id) EXPECT_EQ(ufid_validate(id), 0) 148 u_link, u_magic, 0x43, 0x67, u_id128,
164 #ifdef M0_ASSERT_EX_ON 169 nr_tests = 10 * 1024;
174 for (
i = 0;
i < nr_tests;
i++) {
207 for (
i = 0;
i < nr_tests;
i++) {
211 prev_salt = curr_salt;
240 "retries_exhausted");
342 {
"ufid_generation_id_refresh",
344 {
"ufid_proc_id_refresh",
346 {
"ufid_salt_refresh",
348 {
"ufid_seq_id_refresh",
354 #undef M0_TRACE_SUBSYSTEM
M0_INTERNAL int ut_ufid_init(void)
#define m0_htable_for(name, var, htable)
M0_INTERNAL void * m0_htable_lookup(const struct m0_htable *htable, const void *key)
static void ufid_salt_refresh(struct m0_ufid_generator *gr)
static struct m0_ufid_generator dummy_ufid_gr
M0_INTERNAL bool m0_uint128_eq(const struct m0_uint128 *u0, const struct m0_uint128 *u1)
int m0_ufid_init(struct m0_client *m0c, struct m0_ufid_generator *gr)
#define M0_UFID_RESERVED_MASK
M0_INTERNAL int ut_ufid_fini(void)
static void ut_ufid_seq_id_refresh(void)
void m0_ufid_fini(struct m0_ufid_generator *gr)
#define UFID_VALIDATE(id)
#define M0_UFID_GENID_HI_MASK
static struct m0_client dummy_m0c
static int ufid_validate(struct m0_uint128 *id128)
struct m0_ufid ufg_ufid_cur
#define M0_UFID_GENID_LO_MASK
static void ut_ufid_salt_refresh(void)
static void id128_to_ufid(struct m0_uint128 *id128, struct m0_ufid *ufid)
M0_HT_DESCR_DEFINE(ufid, "Hash of UFIDs", static, struct ut_ufid, u_link, u_magic, 0x43, 0x67, u_id128, ufid_hash, ufid_hash_eq)
static void ut_ufid_generation_id_refresh(void)
static void ut_ufid_proc_id_refresh(void)
int m0_ufid_next(struct m0_ufid_generator *gr, uint32_t nr_ids, struct m0_uint128 *id128)
static struct m0_htable ufid_tracker
#define UFID_RESERVED_TEST_HI
#define UFID_RESERVED_TEST
#define M0_UFID_SEQID_MASK
M0_INTERNAL void m0_tlink_init(const struct m0_tl_descr *d, void *obj)
#define M0_UFID_SALT_MASK
static void ut_m0_ufid_new(void)
struct m0_fid m0c_process_fid
static int ufid_hash_eq(const struct m0_uint128 *id1, const struct m0_uint128 *id2)
static void ufid_to_id128(struct m0_ufid *ufid, struct m0_uint128 *id128)
#define M0_ALLOC_PTR(ptr)
M0_HT_DEFINE(ufid, static, struct ut_ufid, struct m0_uint128)
#define M0_UFID_SEQID_MAX
M0_INTERNAL void m0_htable_del(struct m0_htable *htable, void *amb)
static void m0_fi_enable_once(const char *func, const char *tag)
#define M0_UFID_PROCID_MASK
#define M0_UINT128(hi, lo)
static void ut_m0_ufid_next(void)
int m0_ufid_new(struct m0_ufid_generator *gr, uint32_t nr_ids, uint32_t nr_skip_ids, struct m0_uint128 *id128)
static int ufid_generation_id_refresh(struct m0_ufid_generator *gr)
static uint64_t ufid_hash(const struct m0_htable *htable, const struct m0_uint128 *id128)
static int ufid_proc_id_refresh(struct m0_ufid_generator *gr)
struct m0_uint128 u_id128
struct m0_ut_suite ut_suite_ufid
static int ufid_seq_id_refresh(struct m0_ufid_generator *gr, uint32_t nr_seqs)