Details
Description
The framework currently does not detect invalid configurations due to syntax errors.
Reproducing the issue:
Introduce a syntax error:
diff --git a/test/cppsuite/configs/base_test_default.txt b/test/cppsuite/configs/base_test_default.txt
|
index 986dd1937..0a689b8c2 100644
|
--- a/test/cppsuite/configs/base_test_default.txt
|
+++ b/test/cppsuite/configs/base_test_default.txt
|
@@ -25,7 +25,7 @@ runtime_monitor=
|
timestamp_manager=
|
(
|
enabled=true,
|
- oldest_lag=2,
|
+ oldest_lag=2
|
op_rate=500ms,
|
stable_lag=2
|
Run the test:
./run -t base_test -l 2
|
You should see the configuration in the log and especially this bit:
timestamp_manager=(enabled=true,oldest_lag=1,op_rate=1s,stable_lag=1)
|
The oldest_lag is set to its default value of 1 second instead of the user-defined 2 seconds.
By adding more traces in the code, especially in the split_config function, I could see the following during the parsing of the configuration:
enabled=true,oldest_lag=2op_rate=500ms,stable_lag=2
|
Suggested fixes:
Exit the test by telling the user there is a syntax issue
diff --git a/test/cppsuite/test_harness/core/configuration.cxx b/test/cppsuite/test_harness/core/configuration.cxx
|
index b6c533979..ffb146091 100644
|
--- a/test/cppsuite/test_harness/core/configuration.cxx
|
+++ b/test/cppsuite/test_harness/core/configuration.cxx
|
@@ -258,6 +258,8 @@ configuration::split_config(const std::string &config)
|
in_subconfig = !parens.empty();
|
}
|
if (cut_config[i] == '=' && !in_subconfig) {
|
+ testutil_assert(expect_value == false);
|
+ testutil_assert(len > 0);
|
expect_value = true;
|
key = cut_config.substr(start, len);
|
start += len + 1;
|
Â
Definition of done:
Make sure the framework is robust against syntax errors in the configuration files. More changes in the parsing function might be required.