diff --git a/kernel_liteos_a-master/testsuites/unittest/net/netdb/full/net_netdb_test_012.cpp b/kernel_liteos_a-master/testsuites/unittest/net/netdb/full/net_netdb_test_012.cpp index 503948f..77225ab 100644 --- a/kernel_liteos_a-master/testsuites/unittest/net/netdb/full/net_netdb_test_012.cpp +++ b/kernel_liteos_a-master/testsuites/unittest/net/netdb/full/net_netdb_test_012.cpp @@ -31,50 +31,80 @@ #include "lt_net_netdb.h" +// 引入头文件,可能包含了网络数据库相关的函数声明和宏定义。 static int GetServByPortRTest(void) { // refer to the `/etc/services' file. char serv_file[] = "ssh 22/tcp\n"; + // 定义一个模拟的services文件内容,包含ssh服务的条目。 char *pathList[] = {"/etc/services"}; + // 定义services文件的路径列表,这里只有一个路径指向系统的services文件。 char *streamList[] = {static_cast(serv_file)}; + // 定义模拟的services文件流列表,这里将模拟的services文件内容转换为char*类型。 int streamLen[] = {sizeof(serv_file)}; + // 定义模拟的services文件流长度列表。 const int file_number = 1; + // 定义文件数量。 int flag = PrepareFileEnv(pathList, streamList, streamLen, file_number); + // 调用PrepareFileEnv函数准备文件环境,模拟services文件。 if (flag != 0) { RecoveryFileEnv(pathList, file_number); return -1; } + // 如果准备文件环境失败,则恢复原始文件环境并返回错误码。 struct servent se, *result = NULL; + // 定义servent结构体变量se,用于存储getservbyport_r函数的结果。 char buf[1024]; + // 定义一个足够大的缓冲区buf,用于getservbyport_r函数。 char buf1[2]; + // 定义一个非常小的缓冲区buf1,用于测试getservbyport_r函数的边界条件。 const int test_port_no = 22; // ssh port number is 22 + // 定义测试的端口号,这里是22,即SSH服务的标准端口号。 int ret = getservbyport_r(htons(test_port_no), "tcp", &se, buf, sizeof buf, &result); + // 使用getservbyport_r函数根据端口号和协议名("tcp")获取servent结构体指针。 ICUNIT_ASSERT_EQUAL(ret, 0, ret); + // 断言返回值ret为0,表示getservbyport_r函数调用成功。 ICUNIT_ASSERT_NOT_EQUAL(result, NULL, -1); + // 断言result不为空,即getservbyport_r成功。 ICUNIT_ASSERT_STRING_EQUAL(se.s_name, "ssh", -1); + // 断言返回的服务名称与"ssh"相同。 ICUNIT_ASSERT_STRING_EQUAL(se.s_proto, "tcp", -1); + // 断言返回的服务协议与"tcp"相同。 ICUNIT_ASSERT_STRING_EQUAL(se.s_aliases[0], "ssh", -1); + // 断言返回的服务别名与"ssh"相同。 ICUNIT_ASSERT_STRING_EQUAL(result->s_name, "ssh", -1); + // 断言result结构体中的服务名称与"ssh"相同。 ICUNIT_ASSERT_STRING_EQUAL(result->s_proto, "tcp", -1); + // 断言result结构体中的服务协议与"tcp"相同。 ICUNIT_ASSERT_STRING_EQUAL(result->s_aliases[0], "ssh", -1); + // 断言result结构体中的服务别名与"ssh"相同。 ret = getservbyport_r(htons(test_port_no), "udp", &se, buf, sizeof buf, &result); + // 尝试使用getservbyport_r函数根据端口号和协议名("udp")获取servent结构体指针,预期失败。 ICUNIT_ASSERT_EQUAL(ret, ENOENT, -1); + // 断言返回值ret为ENOENT,表示未找到对应服务。 ret = getservbyport_r(htons(test_port_no), "udp", &se, buf1, sizeof buf1, &result); + // 测试getservbyport_r函数的边界条件,传入的缓冲区太小。 ICUNIT_ASSERT_EQUAL(ret, ERANGE, ret); + // 断言返回值ret为ERANGE,表示缓冲区太小。 ret = getservbyport_r(htons(test_port_no), "ud", &se, buf, sizeof buf, &result); + // 尝试使用getservbyport_r函数根据端口号和不完整的协议名("ud")获取servent结构体指针,预期失败。 ICUNIT_ASSERT_EQUAL(ret, EINVAL, ret); + // 断言返回值ret为EINVAL,表示提供的协议名不合法。 RecoveryFileEnv(pathList, file_number); + // 恢复原始文件环境。 return ICUNIT_SUCCESS; + // 返回测试成功。 } void NetNetDbTest012(void) { TEST_ADD_CASE(__FUNCTION__, GetServByPortRTest, TEST_POSIX, TEST_TCP, TEST_LEVEL0, TEST_FUNCTION); } +// 定义测试用例,将GetServByPortRTest函数注册为一个测试案例。 \ No newline at end of file diff --git a/kernel_liteos_a-master/testsuites/unittest/net/netdb/full/net_netdb_test_015.cpp b/kernel_liteos_a-master/testsuites/unittest/net/netdb/full/net_netdb_test_015.cpp index 612b157..e2f3787 100644 --- a/kernel_liteos_a-master/testsuites/unittest/net/netdb/full/net_netdb_test_015.cpp +++ b/kernel_liteos_a-master/testsuites/unittest/net/netdb/full/net_netdb_test_015.cpp @@ -1,5 +1,5 @@ /* - * opyright (c) 2021-2021, Huawei Technologies Co., Ltd. All rights reserved. + * Copyright (c) 2021-2021, Huawei Technologies Co., Ltd. All rights reserved. * Copyright (c) 2020-2021 Huawei Device Co., Ltd. All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, @@ -30,6 +30,7 @@ #include "lt_net_netdb.h" #include +// 引入头文件,包括网络数据库相关的函数声明和宏定义,以及网络接口相关的函数和宏定义。 static int IfNameToIndexTest(void) { @@ -38,20 +39,30 @@ static int IfNameToIndexTest(void) char *str = nullptr; ret = if_nametoindex("lo"); + // 调用if_nametoindex函数将接口名称"lo"转换为系统索引。 ICUNIT_ASSERT_NOT_EQUAL(ret, 0, -1); + // 断言转换成功,返回的索引值不为0。 str = if_indextoname(ret, if_name); + // 调用if_indextoname函数将系统索引转换回接口名称。 ICUNIT_ASSERT_NOT_EQUAL(str, nullptr, -1); + // 断言转换成功,返回的字符串指针不为nullptr。 ICUNIT_ASSERT_STRING_EQUAL(if_name, "lo", -1); + // 断言转换回的接口名称为"lo"。 ret = if_nametoindex("eth1"); + // 尝试调用if_nametoindex函数将接口名称"eth1"转换为系统索引。 ICUNIT_ASSERT_EQUAL(ret, 0, ret); + // 断言转换失败,返回的索引值为0。 ICUNIT_ASSERT_EQUAL(errno, ENODEV, errno); + // 断言errno被设置为ENODEV,表示没有找到对应的设备。 return ICUNIT_SUCCESS; + // 返回测试成功。 } void NetNetDbTest015(void) { TEST_ADD_CASE(__FUNCTION__, IfNameToIndexTest, TEST_POSIX, TEST_TCP, TEST_LEVEL0, TEST_FUNCTION); } +// 定义测试用例,将IfNameToIndexTest函数注册为一个测试案例。 \ No newline at end of file