1. 外部参数输入解析
目的:观察从终端输入的外部参数信息是否能够正确读取并且录入。
1.1 调用如下
static kit_server::Logger::ptr g_logger = KIT_LOG_ROOT();
void test_env(int argc, char *argv[])
{
kit_server::Env* env = kit_server::EnvMgr::GetInstance();
if(!env->init(argc, argv))
{
KIT_LOG_ERROR(g_logger) << "args parser error!";
return;
}
env->add("a", "6666");
env->add("c", "8888");
//env->del("b");
env->addHelp("a", "hello");
env->addHelp("b", "ahhahah");
env->addHelp("c", "651651");
env->printHelp();
//env->delHelp("c");
env->del("c");
if(env->has("a"))
{std::cout << "a存在" << std::endl;}
else
{std::cout << "a不存在" << std::endl;}
if(env->has("b"))
{std::cout << "b存在" << std::endl;}
else
{std::cout << "b不存在" << std::endl;}
if(env->has("c"))
{std::cout << "c存在" << std::endl;}
else
{std::cout << "c不存在" << std::endl;}
if(env->has("p"))
{std::cout << "p存在" << std::endl;}
else
{std::cout << "p不存在" << std::endl;}
env->printHelp();
}
int main(int argc, char *argv[])
{
KIT_LOG_INFO(g_logger) << "test begin";
test_env(argc, argv);
KIT_LOG_INFO(g_logger) << "test end";
return 0;
}
BUG:外部传入参数没有被正确读取解析
预期的效果能够处理以下几种情况:
-key1 val -key2
-key1 -key2 val
-key1 -key2
-key
上述测试结果可以看到 4. 的情况就没能正确处理。init()
解析部分不正确,重新修改
1.2 修正后调用如下
- 调用测试代码不变。可以看到已经能够正确读取
-b
参数
$ bin/test_env -b
- 调用测试代码不变。继续测试其他几种排列情况
$ bin/test_env -b 0000 -p
$ bin/test_env -b -p 0000
$ bin/test_env -b -p
2. 预加载配置文件.yaml
目的:能否从外部提供一个文件夹的相对路径/绝对路径下加载全部的配置文件.yaml
。没有修改过的配置文件不予以进行加载。
2.1 调用如下
tests/test_config.cpp
文件中: ```cppinclude “../kit_server/Log.h”
include “../kit_server/config.h”
include “../kit_server/env.h”
void test_loadconf() { kit_server::Config::LoadFromConfigDir(“conf”); }
int main(int argc, char argv[]) { kit_server::Env env = kit_server::EnvMgr::GetInstance(); if(!env->init(argc, argv)) { KIT_LOG_ERROR(g_logger) << “args init fail!”; return 0; }
test_loadconf();
return 0;
}
`bin/conf`路径下只放了一个`test.yaml`文件,已经成功加载;并且在`bin/conf`下再放一个文件夹`xxx`,`bin/conf/xxx`下再放一个同样的`test.yaml`文件,也成功加载。<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/25460685/1644237731938-3036933b-0b6a-4fe9-8f80-e4b3a8eb3006.png#clientId=uac22a05d-0122-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=92&id=u01f9588a&margin=%5Bobject%20Object%5D&name=image.png&originHeight=92&originWidth=1387&originalType=binary&ratio=1&rotation=0&showTitle=false&size=23971&status=done&style=none&taskId=ucebc8370-09dc-4e64-963d-dadd6f56f07&title=&width=1387)
- 测试没有修改过的配置文件是否也会加载。连续调用两次加载的接口。
```cpp
void test_loadconf()
{
kit_server::Config::LoadFromConfigDir("conf");
std::cout << "------------------------" << std::endl;
kit_server::Config::LoadFromConfigDir("conf");
}
int main(int argc, char* argv[])
{
kit_server::Env* env = kit_server::EnvMgr::GetInstance();
if(!env->init(argc, argv))
{
KIT_LOG_ERROR(g_logger) << "args init fail!";
return 0;
}
test_loadconf();
return 0;
}