|
|
|
@ -92,3 +92,99 @@ void NetNetDbTest020(void)
|
|
|
|
|
{
|
|
|
|
|
TEST_ADD_CASE(__FUNCTION__, GetNetEntTest, TEST_POSIX, TEST_TCP, TEST_LEVEL0, TEST_FUNCTION);
|
|
|
|
|
}
|
|
|
|
|
以下是对这段代码的注释:
|
|
|
|
|
|
|
|
|
|
```cpp
|
|
|
|
|
/*
|
|
|
|
|
* opyright (c) 2021 - 2021, Huawei Technologies Co., Ltd. All rights reserved.
|
|
|
|
|
* Copyright (c) 2020 - 2021 Huawei Device Co., Ltd. All rights reserved.
|
|
|
|
|
*
|
|
|
|
|
* 这部分是版权声明,指出代码的版权归属华为技术有限公司和华为设备有限公司,并且说明了代码在满足一定条件下的分发和使用权限。
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#include "lt_net_netdb.h"
|
|
|
|
|
// 引入 "lt_net_netdb.h" 头文件,可能包含了网络数据库相关的函数声明、结构体定义等。
|
|
|
|
|
|
|
|
|
|
static int GetNetEntTest(void)
|
|
|
|
|
{
|
|
|
|
|
char network_file[] = "# symbolic names for networks, see networks(5) for more information\n"
|
|
|
|
|
"link - local 169.254.0.0\n"
|
|
|
|
|
"example 192.168.1.0 network example - network\n"
|
|
|
|
|
"test1";
|
|
|
|
|
// 定义一个字符数组network_file,其中包含了一些网络相关的信息,看起来像是网络配置信息的示例内容。
|
|
|
|
|
|
|
|
|
|
char *pathList[] = {"/etc/networks"};
|
|
|
|
|
char *streamList[] = {static_cast<char *>(network_file)};
|
|
|
|
|
int streamLen[] = {sizeof(network_file)};
|
|
|
|
|
const int file_number = 1;
|
|
|
|
|
// 定义了一些与文件操作相关的数组和变量。
|
|
|
|
|
// pathList是一个字符串指针数组,包含要操作的文件路径。
|
|
|
|
|
// streamList是一个字符指针数组,这里将network_file转换为字符指针后放入其中。
|
|
|
|
|
// streamLen是一个整数数组,记录每个流(这里对应network_file)的长度。
|
|
|
|
|
// file_number表示文件的数量。
|
|
|
|
|
|
|
|
|
|
int flag = PrepareFileEnv(pathList, streamList, streamLen, file_number);
|
|
|
|
|
if (flag!= 0) {
|
|
|
|
|
RecoveryFileEnv(pathList, file_number);
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
// 调用PrepareFileEnv函数来准备文件环境,如果返回值不为0(表示有错误),则调用RecoveryFileEnv进行文件环境的恢复,并返回 -1表示失败。
|
|
|
|
|
|
|
|
|
|
struct netent *se1 = nullptr;
|
|
|
|
|
struct netent *se2 = nullptr;
|
|
|
|
|
struct netent *se3 = nullptr;
|
|
|
|
|
// 定义三个指向netent结构体的指针,并初始化为nullptr,netent结构体可能用于存储网络相关的信息(例如网络名称、地址类型、网络地址等)。
|
|
|
|
|
|
|
|
|
|
se1 = getnetent();
|
|
|
|
|
ICUNIT_ASSERT_NOT_EQUAL(se1, nullptr, -1);
|
|
|
|
|
ICUNIT_ASSERT_STRING_EQUAL(se1->n_name, "link - local", -1);
|
|
|
|
|
ICUNIT_ASSERT_EQUAL(se1->n_addrtype, AF_INET, -1);
|
|
|
|
|
ICUNIT_ASSERT_EQUAL(se1->n_net, inet_network("169.254.0.0"), -1);
|
|
|
|
|
ICUNIT_ASSERT_EQUAL(se1->n_aliases[0], nullptr, -1);
|
|
|
|
|
// 调用getnetent函数获取网络相关信息,然后使用ICUNIT_ASSERT相关的宏进行断言。
|
|
|
|
|
// 确保se1不为nullptr,并且其名称为 "link - local",地址类型为AF_INET,网络地址为 "169.254.0.0",并且第一个别名(n_aliases[0])为nullptr。
|
|
|
|
|
|
|
|
|
|
endnetent();
|
|
|
|
|
se2 = getnetent();
|
|
|
|
|
ICUNIT_ASSERT_NOT_EQUAL(se2, nullptr, -1);
|
|
|
|
|
ICUNIT_ASSERT_STRING_EQUAL(se1->n_name, se2->n_name, -1);
|
|
|
|
|
ICUNIT_ASSERT_EQUAL(se1->n_addrtype, se2->n_addrtype, -1);
|
|
|
|
|
ICUNIT_ASSERT_EQUAL(se1->n_net, se2->n_net, -1);
|
|
|
|
|
// 先调用endnetent函数,然后再次调用getnetent获取网络信息,然后进行断言,确保两次获取的网络信息在名称、地址类型和网络地址上相同。
|
|
|
|
|
|
|
|
|
|
setnetent(0);
|
|
|
|
|
se3 = getnetent();
|
|
|
|
|
ICUNIT_ASSERT_NOT_EQUAL(se3, nullptr, -1);
|
|
|
|
|
ICUNIT_ASSERT_STRING_EQUAL(se1->n_name, se3->n_name, -1);
|
|
|
|
|
ICUNIT_ASSERT_EQUAL(se1->n_addrtype, se3->n_addrtype, -1);
|
|
|
|
|
ICUNIT_ASSERT_EQUAL(se1->n_net, se3->n_net, -1);
|
|
|
|
|
// 调用setnetent函数设置网络数据库的读取位置(这里参数为0可能有特殊含义),然后获取网络信息并进行断言,确保与之前获取的信息在名称、地址类型和网络地址上相同。
|
|
|
|
|
|
|
|
|
|
se1 = getnetent();
|
|
|
|
|
ICUNIT_ASSERT_NOT_EQUAL(se1, nullptr, -1);
|
|
|
|
|
ICUNIT_ASSERT_STRING_EQUAL(se1->n_name, "example", -1);
|
|
|
|
|
ICUNIT_ASSERT_EQUAL(se1->n_addrtype, AF_INET, -1);
|
|
|
|
|
ICUNIT_ASSERT_EQUAL(se1->n_net, inet_network("192.168.1.0"), -1);
|
|
|
|
|
ICUNIT_ASSERT_STRING_EQUAL(se1->n_aliases[0], "network", -1);
|
|
|
|
|
ICUNIT_ASSERT_STRING_EQUAL(se1->n_aliases[1], "example - network", -1);
|
|
|
|
|
ICUNIT_ASSERT_EQUAL(se1->n_aliases[2], nullptr, -1);
|
|
|
|
|
// 再次调用getnetent获取网络信息,并进行一系列断言,确保获取到的网络信息的名称、地址类型、网络地址以及别名等信息符合预期。
|
|
|
|
|
|
|
|
|
|
se1 = getnetent();
|
|
|
|
|
ICUNIT_ASSERT_EQUAL(se1, nullptr, -1);
|
|
|
|
|
endnetent();
|
|
|
|
|
// 再次调用getnetent,期望获取到nullptr(表示已经到达网络信息的末尾),然后调用endnetent结束网络信息的读取。
|
|
|
|
|
|
|
|
|
|
RecoveryFileEnv(pathList, file_number);
|
|
|
|
|
return ICUNIT_SUCCESS;
|
|
|
|
|
// 调用RecoveryFileEnv进行文件环境的恢复操作,并返回ICUNIT_SUCCESS表示函数执行成功。
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void NetNetDbTest020(void)
|
|
|
|
|
{
|
|
|
|
|
TEST_ADD_CASE(__FUNCTION__, GetNetEntTest, TEST_POSIX, TEST_TCP, TEST_LEVEL0, TEST_FUNCTION);
|
|
|
|
|
// 在NetNetDbTest020函数中,调用TEST_ADD_CASE宏,将当前函数名、GetNetEntTest函数以及一些测试相关的标记(如测试类型、协议类型、测试级别等)添加到测试用例中。
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
请注意,这里的ICUNIT_ASSERT相关的宏以及其他一些函数(如PrepareFileEnv、RecoveryFileEnv、inet_network等)的具体功能需要根据代码所在的更大的项目上下文来确定,如果有更多的头文件或者相关库的信息,能做出更精确的注释。
|