Skip to content

Commit 69001f2

Browse files
committed
Introduce new parameters for memory and class reg.
Introduce new parameters for explicity class and memory registration. Both parameters shall be provided before `-C` parameter. Syntax is as follow: * -M[p] for memory registration. The `p` value inidcates the usage of persisten memory * -R[d] for class registration. The `d` value indicates the usage of `BTR_FEAT_DIRECT_KEY` flag - root is dynamically sized up to tree order. Parameters `-t` and `-d` are no longer valid. Signed-off-by: Tomasz Gromadzki <[email protected]>
1 parent 090ad31 commit 69001f2

File tree

2 files changed

+48
-25
lines changed

2 files changed

+48
-25
lines changed

src/common/tests/btree.c

Lines changed: 41 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -888,8 +888,8 @@ ik_btr_drain(void **state)
888888

889889
static struct option btr_ops[] = {
890890
{"start-test", required_argument, NULL, 'S'},
891-
{"dyn_tree", no_argument, NULL, 't'},
892-
{"pmem", no_argument, NULL, 'm'},
891+
{"reg_class", optional_argument, NULL, 'R'},
892+
{"reg_memory", optional_argument, NULL, 'M'},
893893
{"create", required_argument, NULL, 'C'},
894894
{"destroy", no_argument, NULL, 'D'},
895895
{"drain", no_argument, NULL, 'e'},
@@ -906,13 +906,16 @@ static struct option btr_ops[] = {
906906
{NULL, 0, NULL, 0},
907907
};
908908

909-
#define BTR_SHORTOPTS "+S:tmC:Deocqu:f:d:r:qi:b:p:"
909+
#define BTR_SHORTOPTS "+S:R::M::C:Deocqu:f:d:r:qi:b:p:"
910910

911911
static void
912-
ik_btr_init_mem(bool pmem, int dynamic_flag)
912+
ik_btr_memory_register(char *pmem_flag)
913913
{
914914
int rc = 0;
915-
if (pmem) {
915+
if (pmem_flag && *pmem_flag != 'p') {
916+
fail_msg("Invalid value of -M parameter: %c\n", *pmem_flag);
917+
}
918+
if (pmem_flag) {
916919
D_PRINT("Using pmem\n");
917920
rc = utest_pmem_create(POOL_NAME, POOL_SIZE, sizeof(*ik_root), NULL, &ik_utx);
918921
if (rc) {
@@ -925,16 +928,29 @@ ik_btr_init_mem(bool pmem, int dynamic_flag)
925928
fail_msg("Cannot setup vmem: %d\n", rc);
926929
}
927930
}
928-
rc = dbtree_class_register(
929-
IK_TREE_CLASS, dynamic_flag | BTR_FEAT_EMBED_FIRST | BTR_FEAT_UINT_KEY, &ik_ops);
930-
if (rc) {
931-
fail_msg("Cannot register memory class: %d\n", rc);
932-
}
933931

934932
ik_root = utest_utx2root(ik_utx);
935933
ik_uma = utest_utx2uma(ik_utx);
936934
}
937935

936+
static void
937+
ik_btr_class_register(char *dynamic_flag)
938+
{
939+
if (dynamic_flag && *dynamic_flag != 'd') {
940+
fail_msg("Invalid value of -R parameter: %c\n", *dynamic_flag);
941+
}
942+
if (dynamic_flag) {
943+
D_PRINT("Using dynamic tree order\n");
944+
}
945+
int rc = dbtree_class_register(IK_TREE_CLASS,
946+
(dynamic_flag ? BTR_FEAT_DYNAMIC_ROOT : 0) |
947+
BTR_FEAT_EMBED_FIRST | BTR_FEAT_UINT_KEY,
948+
&ik_ops);
949+
if (rc) {
950+
fail_msg("Cannot register memory class: %d\n", rc);
951+
}
952+
}
953+
938954
/**
939955
* Execute test based on the given sequence of steps.
940956
* -S/--start-test parameter is ignored
@@ -947,28 +963,30 @@ static void
947963
ts_group(void **state) {
948964
struct btr_test_state *test_state = (struct btr_test_state *)*state;
949965
int opt = 0;
950-
void **st = NULL;
951-
int dynamic_flag = 0;
966+
void **st = NULL;
952967

953968
while ((opt = getopt_long(test_state->argc, test_state->argv, BTR_SHORTOPTS, btr_ops,
954969
NULL)) != -1) {
955970
tst_fn_val.optval = optarg;
956971
tst_fn_val.input = true;
957972

973+
// trim trailing space
974+
while (tst_fn_val.optval && *tst_fn_val.optval != '\0' &&
975+
isspace((unsigned char)*tst_fn_val.optval)) {
976+
tst_fn_val.optval++;
977+
}
978+
958979
switch (opt) {
959980
case 'S':
960981
/* not part of the test sequence */
961982
break;
962-
case 't':
963-
D_PRINT("Using dynamic tree order\n");
964-
dynamic_flag = BTR_FEAT_DYNAMIC_ROOT;
983+
case 'R':
984+
ik_btr_class_register(tst_fn_val.optval);
965985
break;
966-
case 'm':
967-
ik_btr_init_mem(true, dynamic_flag);
986+
case 'M':
987+
ik_btr_memory_register(tst_fn_val.optval);
968988
break;
969989
case 'C':
970-
if (ik_utx == NULL)
971-
ik_btr_init_mem(false, dynamic_flag);
972990
ik_btr_open_create(st);
973991
break;
974992
case 'D':
@@ -1055,6 +1073,10 @@ main(int argc, char **argv)
10551073
if (opt == 'S') {
10561074
test_name = optarg;
10571075
}
1076+
if (opt == '?') {
1077+
/* unknown parameter */
1078+
break;
1079+
}
10581080
}
10591081
if (argc != optind) {
10601082
print_message("Unknown parameter: %s\n", argv[optind]);

src/common/tests/btree.sh

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ EOF
4040

4141
PERF=""
4242
UINT=""
43+
DYN=""
4344
test_conf_pre=""
4445
while [ $# -gt 0 ]; do
4546
case "$1" in
@@ -54,7 +55,7 @@ while [ $# -gt 0 ]; do
5455
test_conf_pre="${test_conf_pre} keys=${BAT_NUM}"
5556
;;
5657
dyn)
57-
DYN="-t"
58+
DYN="d"
5859
shift
5960
test_conf_pre="${test_conf_pre} dyn"
6061
;;
@@ -110,7 +111,7 @@ run_test()
110111
DAOS_DEBUG="$DDEBUG" \
111112
eval "${VCMD}" "$BTR" \
112113
--start-test "'btree functional ${test_conf_pre} ${test_conf} iterate=${IDIR}'" \
113-
"${DYN}" "${PMEM}" -C "${UINT}${IPL}o:$ORDER" \
114+
-R "${DYN}" -M "${PMEM}" -C "${UINT}${IPL}o:$ORDER" \
114115
-c \
115116
-o \
116117
-u "$RECORDS" \
@@ -130,7 +131,7 @@ run_test()
130131
echo "B+tree batch operations test..."
131132
eval "${VCMD}" "$BTR" \
132133
--start-test "'btree batch operations ${test_conf_pre} ${test_conf}'" \
133-
"${DYN}" "${PMEM}" -C "${UINT}${IPL}o:$ORDER" \
134+
-R "${DYN}" -M "${PMEM}" -C "${UINT}${IPL}o:$ORDER" \
134135
-c \
135136
-o \
136137
-b "$BAT_NUM" \
@@ -139,22 +140,22 @@ run_test()
139140
echo "B+tree drain test..."
140141
eval "${VCMD}" "$BTR" \
141142
--start-test "'btree drain ${test_conf_pre} ${test_conf}'" \
142-
"${DYN}" "${PMEM}" -C "${UINT}${IPL}o:$ORDER" \
143+
-R "${DYN}" -M "${PMEM}" -C "${UINT}${IPL}o:$ORDER" \
143144
-e -D
144145

145146
else
146147
echo "B+tree performance test..."
147148
eval "${VCMD}" "$BTR" \
148149
--start-test "'btree performance ${test_conf_pre} ${test_conf}'" \
149-
"${DYN}" "${PMEM}" -C "${UINT}${IPL}o:$ORDER" \
150+
-R "${DYN}" -M "${PMEM}" -C "${UINT}${IPL}o:$ORDER" \
150151
-p "$BAT_NUM" \
151152
-D
152153
fi
153154
}
154155

155156
for IPL in "i," ""; do
156157
for IDIR in "f" "b"; do
157-
for PMEM in "-m" ""; do
158+
for PMEM in "p" ""; do
158159
run_test
159160
done
160161
done

0 commit comments

Comments
 (0)