pull/2/head
赵颢翔 8 months ago
parent 5c9daabe2a
commit dafc1c8a0a

@ -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结构体的指针并初始化为nullptrnetent结构体可能用于存储网络相关的信息例如网络名称、地址类型、网络地址等
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_ASSERTPrepareFileEnvRecoveryFileEnvinet_network
Loading…
Cancel
Save