test: misc refactor

- If the utility library is not built, link to the existing library
  when building helper programs for filesystem tests.
- Refactor PRNG seeding in tests.
This commit is contained in:
CismonX 2025-06-11 20:45:16 +08:00
parent 14b5a79147
commit 303c934894
No known key found for this signature in database
GPG key ID: 3094873E29A482FB
14 changed files with 38 additions and 63 deletions

View file

@ -31,13 +31,13 @@ if BOOKMARKFS_MOUNT
check_fs_CPPFLAGS = -I$(top_srcdir)/src
check_fs_LDADD =
check_fs_SOURCES = check_fs.c
check_fs_SOURCES = check_fs.c check_fs_dents.c check_fs_regrw.c \
check_fs_times.c check_util.c
if BOOKMARKFS_UTIL
check_fs_CPPFLAGS += -DHAVE_BOOKMARKFS_UTIL
check_fs_LDADD += $(top_builddir)/src/libbookmarkfs_util.la
check_fs_SOURCES += check_fs_regrw.c check_fs_dents.c check_util.c \
check_fs_times.c
check_fs_LDADD += $(top_builddir)/src/libbookmarkfs_util.la
else
check_fs_LDADD += $(BOOKMARKFS_UTIL_LIBS)
endif # BOOKMARKFS_UTIL
endif # BOOKMARKFS_MOUNT

View file

@ -54,12 +54,10 @@ dispatch_subcmds (
status = subcmd_ismount(argc, argv);
} else if (0 == strcmp("sleep", cmd)) {
status = subcmd_sleep(argc, argv);
#ifdef HAVE_BOOKMARKFS_UTIL
} else if (0 == strcmp("regrw", cmd)) {
status = check_fs_regrw(argc, argv);
} else if (0 == strcmp("dents", cmd)) {
status = check_fs_dents(argc, argv);
#endif
} else if (0 == strcmp("times", cmd)) {
status = check_fs_times(argc, argv);
} else {

View file

@ -241,7 +241,7 @@ check_fs_dents (
int argc,
char *argv[]
) {
uint64_t seed_buf[4], *seed = NULL;
char const *seed = NULL;
int n = -1;
OPT_START(argc, argv, "n:s:")
@ -250,10 +250,7 @@ check_fs_dents (
break;
}
OPT_OPT('s') {
if (0 != prng_seed_from_hex(seed_buf, optarg)) {
return -1;
}
seed = seed_buf;
seed = optarg;
break;
}
OPT_END
@ -268,7 +265,7 @@ check_fs_dents (
}
char const *path = argv[0];
if (0 != prng_seed(seed)) {
if (0 != prng_seed_from_hex(seed)) {
return -1;
}
int dirfd = open(path, O_RDONLY | O_DIRECTORY);

View file

@ -167,7 +167,7 @@ check_fs_regrw (
int argc,
char *argv[]
) {
uint64_t seed_buf[4], *seed = NULL;
char const *seed = NULL;
int file_max = -1;
OPT_START(argc, argv, "n:s:")
@ -176,10 +176,7 @@ check_fs_regrw (
break;
}
OPT_OPT('s') {
if (0 != prng_seed_from_hex(seed_buf, optarg)) {
return -1;
}
seed = seed_buf;
seed = optarg;
break;
}
OPT_END
@ -194,7 +191,7 @@ check_fs_regrw (
}
char const *path = argv[0];
if (0 != prng_seed(seed)) {
if (0 != prng_seed_from_hex(seed)) {
return -1;
}
return do_check_fs_regrw(path, file_max);

View file

@ -153,7 +153,7 @@ check_fs_times (
int argc,
char *argv[]
) {
uint64_t seed_buf[4], *seed = NULL;
char const *seed = NULL;
int rounds = -1;
OPT_START(argc, argv, "r:s:")
@ -162,10 +162,7 @@ check_fs_times (
break;
}
OPT_OPT('s') {
if (0 != prng_seed_from_hex(seed_buf, optarg)) {
return -1;
}
seed = seed_buf;
seed = optarg;
break;
}
OPT_END
@ -180,7 +177,7 @@ check_fs_times (
}
char const *path = argv[0];
if (0 != prng_seed(seed)) {
if (0 != prng_seed_from_hex(seed)) {
return -1;
}
int dirfd = open(path, O_RDONLY | O_DIRECTORY);

View file

@ -168,16 +168,13 @@ check_hashmap (
int argc,
char *argv[]
) {
uint64_t seed_buf[4], *seed = NULL;
char const *seed = NULL;
int size_exp = -1;
int rounds = -1;
OPT_START(argc, argv, "s:n:r:")
OPT_OPT('s') {
if (0 != prng_seed_from_hex(seed_buf, optarg)) {
return -1;
}
seed = seed_buf;
seed = optarg;
break;
}
OPT_OPT('n') {
@ -199,7 +196,7 @@ check_hashmap (
return -1;
}
if (0 != prng_seed(seed)) {
if (0 != prng_seed_from_hex(seed)) {
return -1;
}
return do_check_hashmap(1u << size_exp, rounds);

View file

@ -104,15 +104,12 @@ subcmd_prng (
int argc,
char *argv[]
) {
uint64_t seed_buf[4], *seed = NULL;
char const *seed = NULL;
int n = 0;
OPT_START(argc, argv, "s:n:")
OPT_OPT('s') {
if (0 != prng_seed_from_hex(seed_buf, optarg)) {
return -1;
}
seed = seed_buf;
seed = optarg;
break;
}
OPT_OPT('n') {
@ -121,7 +118,7 @@ subcmd_prng (
}
OPT_END
if (0 != prng_seed(seed)) {
if (0 != prng_seed_from_hex(seed)) {
return -1;
}
for (; n > 0; --n) {

View file

@ -27,17 +27,24 @@
#include <inttypes.h>
#include <stdio.h>
#include "prng.h"
int
prng_seed_from_hex (
uint64_t *buf,
char const *str
) {
int cnt = sscanf(str,
"%16" SCNx64 "%16" SCNx64 "%16" SCNx64 "%16" SCNx64,
&buf[0], &buf[1], &buf[2], &buf[3]);
if (cnt != 4) {
log_printf("bad seed '%s'", str);
return -1;
uint64_t buf[4], *seed = NULL;
if (str != NULL) {
int cnt = sscanf(str,
"%16" SCNx64 "%16" SCNx64 "%16" SCNx64 "%16" SCNx64,
&buf[0], &buf[1], &buf[2], &buf[3]);
if (cnt != 4) {
log_puts("bad prng seed");
return -1;
}
seed = buf;
log_printf("prng seed: '%s'", str);
}
return 0;
return prng_seed(seed);
}

View file

@ -73,7 +73,6 @@ check_watcher (
int
prng_seed_from_hex (
uint64_t *buf,
char const *str
);

View file

@ -10,14 +10,10 @@ dnl
AT_SETUP([fs: directory entries])
AT_KEYWORDS([fs dents])
ATX_CHECK_FS_NEW_ANY(, [
# requires PRNG
ATX_FEAT_PREREQ([bookmarkfs-util])
], [
ATX_CHECK_FS_NEW_ANY(, , [
ATX_RUN_REPEAT([8], [
name=$(ath_fn_rand_u64_hex)
seed=$(ath_fn_prng_seed)
echo "prng seed: $seed"
mkdir $name
ATX_RUN([

View file

@ -10,13 +10,9 @@ dnl
AT_SETUP([fs: regular file read/write])
AT_KEYWORDS([fs regrw])
ATX_CHECK_FS_NEW_ANY([file_max=524288], [
# requires PRNG
ATX_FEAT_PREREQ([bookmarkfs-util])
], [
ATX_CHECK_FS_NEW_ANY([file_max=524288], , [
name=$(ath_fn_rand_u64_hex)
seed=$(ath_fn_prng_seed)
echo "prng seed: $seed"
ATX_RUN([
check-fs regrw -n 524288 -s "$seed" $name

View file

@ -10,13 +10,9 @@ dnl
AT_SETUP([fs: last access/modification times])
AT_KEYWORDS([fs times])
ATX_CHECK_FS_NEW_ANY(, [
# requires PRNG
ATX_FEAT_PREREQ([bookmarkfs-util])
], [
ATX_CHECK_FS_NEW_ANY(, , [
name=$(ath_fn_rand_u64_hex)
seed=$(ath_fn_prng_seed)
echo "prng seed: $seed"
mkdir $name
ATX_RUN([

View file

@ -15,7 +15,6 @@ ATX_CHECK_LIB([
if test -z "$seed"; then
seed=$(ath_fn_prng_seed)
fi
echo "prng seed: $seed"
size="${CHECK_HASHMAP_DATA_SIZE}"
if test -z "$size"; then

View file

@ -21,7 +21,6 @@ ATX_CHECK_LIB([
ATX_RUN_REPEAT([16], [
seed=$(ath_fn_prng_seed)
count=32
echo "prng seed: $seed"
num_1=$(gen_num $seed $count)
num_2=$(gen_num $seed $count)