From 89f50776c7e49109786a7903862b459e228ce985 Mon Sep 17 00:00:00 2001 From: pccowboy Date: Sat, 19 Aug 2023 03:32:55 -0700 Subject: [PATCH 1/3] Update sb_options.h --- src/sb_options.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/sb_options.h b/src/sb_options.h index 62bc75285..ec3aaee72 100644 --- a/src/sb_options.h +++ b/src/sb_options.h @@ -153,6 +153,8 @@ int remove_option(sb_list_t *, char *); sb_list_t *read_config(FILE *, sb_list_t *); ++int read_config_file(const char *filename); ++ int write_config(FILE *, sb_list_t *); #endif /* OPTIONS_H */ From ef26f1170788389960663ca896937d40ddc95bbb Mon Sep 17 00:00:00 2001 From: pccowboy Date: Sat, 19 Aug 2023 03:34:18 -0700 Subject: [PATCH 2/3] Update sb_options.c --- src/sb_options.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/sb_options.c b/src/sb_options.c index 855c3323e..bedde4b5b 100644 --- a/src/sb_options.c +++ b/src/sb_options.c @@ -112,7 +112,7 @@ option_t *sb_find_option(const char *name) return find_option(&options, name); } -static void read_config_file(const char *filename) +int read_config_file(const char *filename) { /* read config options from file */ FILE *fp = fopen(filename, "r"); @@ -122,6 +122,7 @@ static void read_config_file(const char *filename) read_config(fp, &options); fclose(fp); } + return 1; } option_t *set_option(const char *name, const char *value, sb_arg_type_t type) @@ -175,6 +176,7 @@ option_t *set_option(const char *name, const char *value, sb_arg_type_t type) break; case SB_ARG_TYPE_FILE: + add_value(&opt->values, value); read_config_file(value); break; default: From 9f7b59760a7bf93a60609875dd967fe624b4cb1e Mon Sep 17 00:00:00 2001 From: pccowboy Date: Sat, 19 Aug 2023 03:36:10 -0700 Subject: [PATCH 3/3] Update sysbench.c --- src/sysbench.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/sysbench.c b/src/sysbench.c index fb83bef45..e2f37ac9f 100644 --- a/src/sysbench.c +++ b/src/sysbench.c @@ -1439,6 +1439,7 @@ int main(int argc, char *argv[]) { sb_test_t *test = NULL; int rc; + char * filename; sb_globals.argc = argc; sb_globals.argv = malloc(argc * sizeof(char *)); @@ -1523,6 +1524,12 @@ int main(int argc, char *argv[]) if (parse_test_arguments(test, argc, argv)) return EXIT_FAILURE; + /* If a config file was used, re-read it to pickup the test-specific options */ + if ((filename = sb_get_value_string("config-file")) != NULL) { + read_config_file(filename); + } + + if (sb_lua_loaded() && sb_lua_custom_command_defined(sb_globals.cmdname)) { rc = sb_lua_call_custom_command(sb_globals.cmdname);