13
#include "share/table/ob_table_config_util.h"
14
#include "lib/time/ob_time_utility.h"
15
#include "share/parameter/ob_parameter_macro.h"
16
#include <gtest/gtest.h>
23
ObConfigContainer l_container;
24
static ObConfigContainer *local_container()
28
class TestObKvConfig : public ::testing::Test
31
#undef OB_CLUSTER_PARAMETER
32
#define OB_CLUSTER_PARAMETER(args...) args
33
DEF_MODE_WITH_PARSER(_obkv_feature_mode, OB_CLUSTER_PARAMETER, "", common::ObKvFeatureModeParser,
34
"_obkv_feature_mode is a option list to control specified OBKV features on/off.",
35
ObParameterAttr(Section::OBSERVER, Source::DEFAULT, EditLevel::DYNAMIC_EFFECTIVE));
36
#undef OB_CLUSTER_PARAMETER
39
TEST_F(TestObKvConfig, test_process_item)
43
char str1[100] = {"ttl=off"};
44
ASSERT_EQ(OB_SUCCESS, ObModeConfigParserUitl::parse_item_to_kv(str1, key, value));
45
ASSERT_EQ(key, ObString("ttl"));
46
ASSERT_EQ(value, ObString("off"));
48
char str2[100] = {" ttl = off "};
49
ASSERT_EQ(OB_SUCCESS, ObModeConfigParserUitl::parse_item_to_kv(str2, key, value));
50
ASSERT_EQ(key, ObString("ttl"));
51
ASSERT_EQ(value, ObString("off"));
53
char str3[100] = {" rerouting =off "};
54
ASSERT_EQ(OB_SUCCESS, ObModeConfigParserUitl::parse_item_to_kv(str3, key, value));
55
ASSERT_EQ(key, ObString("rerouting"));
56
ASSERT_EQ(value, ObString("off"));
58
char str4[100] = {"ttl=on, rerouting=off"};
59
common::ObSEArray<std::pair<ObString, ObString>, 8> kv_list;
60
ASSERT_EQ(OB_SUCCESS, ObModeConfigParserUitl::get_kv_list(str4, kv_list));
61
ASSERT_EQ(2, kv_list.count());
62
ASSERT_EQ(kv_list.at(0).first, ObString("ttl"));
63
ASSERT_EQ(kv_list.at(0).second, ObString("on"));
64
ASSERT_EQ(kv_list.at(1).first, ObString("rerouting"));
65
ASSERT_EQ(kv_list.at(1).second, ObString("off"));
69
TEST_F(TestObKvConfig, test_parse)
71
ObKvFeatureModeParser parser;
73
ASSERT_EQ(true, parser.parse("ttl=on, rerouting=off", arr, 32));
74
ASSERT_EQ(arr[0], 0b00001001);
77
ASSERT_EQ(true, parser.parse("ttl=on, ttl=off, rerouting=on", arr, 32));
78
ASSERT_EQ(arr[0], 0b0000110);
81
ASSERT_EQ(true, parser.parse("ttl=on, ttl=off", arr, 32));
82
ASSERT_EQ(arr[0], 0b00000010);
85
ASSERT_EQ(true, parser.parse("ttl=on, hotkey=on, rerouting=on", arr, 32));
86
ASSERT_EQ(arr[0], 0b00010101);
89
ASSERT_EQ(false, parser.parse("ttl=on, ttt=off", arr, 32));
92
ASSERT_EQ(false, parser.parse("ttl=on, rerouting=default", arr, 32));
95
ASSERT_EQ(true, parser.parse("", arr, 32));
99
ASSERT_EQ(false, parser.parse("ttl=on, ttt=off, ", arr, 32));
102
ASSERT_EQ(false, parser.parse("ttl=on, ttt=off,", arr, 32));
105
TEST_F(TestObKvConfig, test_obkv_feature_mode)
107
const uint8_t *value = _obkv_feature_mode;
108
ASSERT_NE((void*)NULL, (void*)value);
109
ASSERT_EQ(value[0], 0);
110
ASSERT_EQ(true, _obkv_feature_mode.set_value("ttl=off, rerouting=on, hotkey=on"));
111
const uint8_t *value1 = _obkv_feature_mode.get();
112
ASSERT_NE((void*)NULL, (void*)value1);
113
ASSERT_EQ(value1[0], 0b00010110);
115
ASSERT_EQ(false, _obkv_feature_mode.set_value("hotkey=off="));
116
ASSERT_EQ(false, _obkv_feature_mode.set_value("=off"));
117
ASSERT_EQ(false, _obkv_feature_mode.set_value(","));
118
ASSERT_EQ(false, _obkv_feature_mode.set_value(" , "));
119
ASSERT_EQ(false, _obkv_feature_mode.set_value(" ,hotkey=off"));
120
ASSERT_EQ(false, _obkv_feature_mode.set_value(",hotkey=off"));
121
ASSERT_EQ(false, _obkv_feature_mode.set_value("ttl=off,, hotkey=off"));
122
ASSERT_EQ(false, _obkv_feature_mode.set_value("ttl=off, , hotkey=off"));
123
ASSERT_EQ(false, _obkv_feature_mode.set_value("ttl=off, rerouting=on, "));
124
ASSERT_EQ(false, _obkv_feature_mode.set_value("ttl=off, rerouting=on,"));
127
TEST_F(TestObKvConfig, testObKVFeatureMode)
130
uint8_t values[1] = {0b001001};
131
ObKVFeatureMode kv_mode(values);
132
ASSERT_EQ(true, kv_mode.is_ttl_enable());
133
ASSERT_EQ(false, kv_mode.is_rerouting_enable());
135
ObKVFeatureMode kv_mode_1;
136
ASSERT_EQ(false, kv_mode_1.is_valid());
137
kv_mode_1.set_ttl_mode(0b10);
138
kv_mode_1.set_rerouting_mode(0b01);
139
kv_mode_1.set_hotkey_mode(0b01);
140
ASSERT_EQ(true, kv_mode_1.is_valid());
141
ASSERT_EQ(false, kv_mode_1.is_ttl_enable());
142
ASSERT_EQ(true, kv_mode_1.is_rerouting_enable());
143
ASSERT_EQ(true, kv_mode_1.is_hotkey_enable());
144
kv_mode_1.set_value(0b11101001);
145
ASSERT_EQ(true, kv_mode_1.is_valid());
146
ASSERT_EQ(true, kv_mode_1.is_ttl_enable());
147
ASSERT_EQ(false, kv_mode_1.is_rerouting_enable());
148
ASSERT_EQ(false, kv_mode_1.is_hotkey_enable());
150
kv_mode_1.set_ttl_mode(0b11);
151
ASSERT_EQ(false, kv_mode_1.is_valid());
152
kv_mode_1.set_hotkey_mode(0b11);
153
ASSERT_EQ(false, kv_mode_1.is_valid());
154
kv_mode_1.set_rerouting_mode(0b11);
155
ASSERT_EQ(false, kv_mode_1.is_valid());
156
kv_mode_1.set_value(0b00111111);
157
ASSERT_EQ(false, kv_mode_1.is_valid());
163
int main(int argc, char **argv)
165
oceanbase::common::ObLogger::get_logger().set_log_level("INFO");
166
testing::InitGoogleTest(&argc, argv);
167
return RUN_ALL_TESTS();