recgen: Add explicit random seed option
This commit is contained in:
parent
ac37e10e70
commit
99458a6b28
19
recgen.cpp
19
recgen.cpp
|
@ -21,7 +21,7 @@
|
|||
|
||||
|
||||
#define MAX_RECORD_SIZE 65536
|
||||
#define REPORT_INTERVAL 100000
|
||||
#define REPORT_INTERVAL 1000000
|
||||
|
||||
|
||||
namespace { // anonymous namespace
|
||||
|
@ -215,7 +215,7 @@ void usage()
|
|||
"\n"
|
||||
"Generate fixed-length random binary records.\n"
|
||||
"\n"
|
||||
"Usage: recgen [-a] [-d D] -n N -s S outputfile\n"
|
||||
"Usage: recgen [-a] [-d D] [-S R] -n N -s S outputfile\n"
|
||||
"\n"
|
||||
"Options:\n"
|
||||
"\n"
|
||||
|
@ -223,6 +223,7 @@ void usage()
|
|||
" -d D specify fraction of duplicate records (0.0 to 1.0)\n"
|
||||
" -n N specify number of records (required)\n"
|
||||
" -s S specify record size in bytes (required)\n"
|
||||
" -S R specify seed for random generator (default 1)\n"
|
||||
"\n");
|
||||
}
|
||||
|
||||
|
@ -236,10 +237,10 @@ int main(int argc, char **argv)
|
|||
unsigned long long num_records = 0;
|
||||
unsigned long record_size = 0;
|
||||
bool flag_ascii = false;
|
||||
uint64_t seed = 1;
|
||||
unsigned long long seed = 1;
|
||||
int opt;
|
||||
|
||||
while ((opt = getopt(argc, argv, "ad:n:s:")) != -1) {
|
||||
while ((opt = getopt(argc, argv, "ad:n:s:S:")) != -1) {
|
||||
char *endptr;
|
||||
switch (opt) {
|
||||
case 'a':
|
||||
|
@ -278,6 +279,16 @@ int main(int argc, char **argv)
|
|||
return EXIT_FAILURE;
|
||||
}
|
||||
break;
|
||||
case 'S':
|
||||
seed = strtoull(optarg, &endptr, 10);
|
||||
if (endptr == optarg
|
||||
|| *endptr != '\0'
|
||||
|| seed > UINT64_MAX) {
|
||||
fprintf(stderr,
|
||||
"ERROR: Invalid random seed\n");
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
break;
|
||||
case 'h':
|
||||
usage();
|
||||
return EXIT_SUCCESS;
|
||||
|
|
Loading…
Reference in New Issue