Skip to content

Commit b016fc0

Browse files
authored
fix boolean config parse in json (zilliztech#1186)
Signed-off-by: xianliang.li <xianliang.li@zilliz.com>
1 parent 4746db1 commit b016fc0

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed

src/common/config.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -154,10 +154,10 @@ Config::FormatAndCheck(const Config& cfg, Json& json, std::string* const err_msg
154154
}
155155
}
156156
if (std::get_if<Entry<CFG_BOOL>>(&var)) {
157-
if (json[it.first] == "true") {
157+
if (json[it.first] == "true" || json[it.first] == "True" || json[it.first] == "TRUE") {
158158
json[it.first] = true;
159159
}
160-
if (json[it.first] == "false") {
160+
if (json[it.first] == "false" || json[it.first] == "False" || json[it.first] == "FALSE") {
161161
json[it.first] = false;
162162
}
163163
}

tests/ut/test_config.cc

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1007,11 +1007,19 @@ TEST_CASE("Test config", "[FormatAndCheck]") {
10071007
CFG_FLOAT float_val;
10081008
CFG_BOOL true_val;
10091009
CFG_BOOL false_val;
1010+
CFG_BOOL True_val;
1011+
CFG_BOOL False_val;
1012+
CFG_BOOL TRUE_val;
1013+
CFG_BOOL FALSE_val;
10101014
KNOHWERE_DECLARE_CONFIG(TestConfig) {
10111015
KNOWHERE_CONFIG_DECLARE_FIELD(int_val).for_train_and_search();
10121016
KNOWHERE_CONFIG_DECLARE_FIELD(float_val).for_train_and_search();
10131017
KNOWHERE_CONFIG_DECLARE_FIELD(true_val).for_train_and_search();
10141018
KNOWHERE_CONFIG_DECLARE_FIELD(false_val).for_train_and_search();
1019+
KNOWHERE_CONFIG_DECLARE_FIELD(True_val).for_train_and_search();
1020+
KNOWHERE_CONFIG_DECLARE_FIELD(False_val).for_train_and_search();
1021+
KNOWHERE_CONFIG_DECLARE_FIELD(TRUE_val).for_train_and_search();
1022+
KNOWHERE_CONFIG_DECLARE_FIELD(FALSE_val).for_train_and_search();
10151023
}
10161024
};
10171025

@@ -1022,7 +1030,11 @@ TEST_CASE("Test config", "[FormatAndCheck]") {
10221030
"int_val": "123",
10231031
"float_val": "1.23",
10241032
"true_val": "true",
1025-
"false_val": "false"
1033+
"false_val": "false",
1034+
"True_val": "True",
1035+
"False_val": "False",
1036+
"TRUE_val": "TRUE",
1037+
"FALSE_val": "FALSE"
10261038
})");
10271039
s = knowhere::Config::FormatAndCheck(test_cfg, json, &err_msg);
10281040
CHECK(s == knowhere::Status::success);
@@ -1032,6 +1044,10 @@ TEST_CASE("Test config", "[FormatAndCheck]") {
10321044
CHECK_LT(std::abs(test_cfg.float_val.value() - 1.23), 0.00001);
10331045
CHECK(test_cfg.true_val.value() == true);
10341046
CHECK(test_cfg.false_val.value() == false);
1047+
CHECK(test_cfg.True_val.value() == true);
1048+
CHECK(test_cfg.False_val.value() == false);
1049+
CHECK(test_cfg.TRUE_val.value() == true);
1050+
CHECK(test_cfg.FALSE_val.value() == false);
10351051
}
10361052

10371053
SECTION("check config with invalid string type int value") {

0 commit comments

Comments
 (0)