diff --git a/kernel_liteos_a-master/testsuites/unittest/net/netdb/full/net_netdb_test_007.cpp b/kernel_liteos_a-master/testsuites/unittest/net/netdb/full/net_netdb_test_007.cpp index 42ef5c5..8f34813 100644 --- a/kernel_liteos_a-master/testsuites/unittest/net/netdb/full/net_netdb_test_007.cpp +++ b/kernel_liteos_a-master/testsuites/unittest/net/netdb/full/net_netdb_test_007.cpp @@ -31,33 +31,51 @@ #include "lt_net_netdb.h" +// 引入头文件,可能包含了网络数据库相关的函数声明和宏定义。 static int GetHostByNameRTest(void) { char host_file[] = "127.0.0.1 localhost\n"; + // 定义一个模拟的hosts文件内容,包含localhost映射到127.0.0.1的条目。 char *pathList[] = {"/etc/hosts"}; + // 定义hosts文件的路径列表,这里只有一个路径指向系统的hosts文件。 char *streamList[] = {static_cast(host_file)}; + // 定义模拟的hosts文件流列表,这里将模拟的hosts文件内容转换为char*类型。 int streamLen[] = {sizeof(host_file)}; + // 定义模拟的hosts文件流长度列表。 const int file_number = 1; + // 定义文件数量。 int flag = PrepareFileEnv(pathList, streamList, streamLen, file_number); + // 调用PrepareFileEnv函数准备文件环境,模拟hosts文件。 if (flag != 0) { RecoveryFileEnv(pathList, file_number); return -1; } + // 如果准备文件环境失败,则恢复原始文件环境并返回错误码。 struct hostent addr, *result = NULL; + // 定义hostent结构体变量addr,用于存储gethostbyname_r函数的结果。 char buf[1024]; + // 定义一个足够大的缓冲区buf,用于gethostbyname_r函数。 char buf1[1]; + // 定义一个非常小的缓冲区buf1,用于测试gethostbyname_r函数的边界条件。 int err, ret; ret = gethostbyname_r("localhost", &addr, buf, sizeof buf, &result, &err); + // 使用gethostbyname_r函数根据主机名"localhost"获取hostent结构体指针。 ICUNIT_ASSERT_EQUAL(ret, 0, ret); + // 断言返回值ret为0,表示gethostbyname_r函数调用成功。 ICUNIT_ASSERT_NOT_EQUAL(result, NULL, -1); + // 断言result不为空,即gethostbyname_r成功。 ICUNIT_ASSERT_EQUAL(strcmp(result->h_name, "localhost"), 0, -1); + // 断言返回的主机名与输入的主机名相同。 ICUNIT_ASSERT_EQUAL(result->h_addrtype, AF_INET, result->h_addrtype); + // 断言返回的地址类型为AF_INET。 ICUNIT_ASSERT_NOT_EQUAL(result->h_length, 0, result->h_length); + // 断言返回的地址长度不为0。 ret = gethostbyname_r("127.0.0.1", &addr, buf, sizeof buf, &result, &err); + // 使用gethostbyname_r函数根据IP地址字符串"127.0.0.1"获取hostent结构体指针。 ICUNIT_ASSERT_EQUAL(ret, 0, ret); ICUNIT_ASSERT_NOT_EQUAL(result, NULL, -1); ICUNIT_ASSERT_EQUAL(strcmp(result->h_name, "127.0.0.1"), 0, -1); @@ -65,17 +83,26 @@ static int GetHostByNameRTest(void) ICUNIT_ASSERT_NOT_EQUAL(result->h_length, 0, result->h_length); ret = gethostbyname_r("127.0.0.1", &addr, buf1, sizeof buf1, &result, &err); + // 测试gethostbyname_r函数的边界条件,传入的缓冲区太小。 ICUNIT_ASSERT_NOT_EQUAL(ret, 0, ret); + // 断言返回值ret不为0,表示gethostbyname_r函数调用失败。 ret = gethostbyname_r("127.0.0.0.0", &addr, buf, sizeof buf, &result, &err); + // 测试一个不存在的IP地址。 ICUNIT_ASSERT_NOT_EQUAL(ret, 0, ret); + // 断言返回值ret不为0,表示gethostbyname_r函数调用失败。 ret = gethostbyname_r("lo", &addr, buf, sizeof buf, &result, &err); + // 测试一个不存在的主机名。 ICUNIT_ASSERT_NOT_EQUAL(ret, 0, ret); + // 断言返回值ret不为0,表示gethostbyname_r函数调用失败。 RecoveryFileEnv(pathList, file_number); + // 恢复原始文件环境。 return ICUNIT_SUCCESS; + // 返回测试成功。 } void NetNetDbTest007(void) { TEST_ADD_CASE(__FUNCTION__, GetHostByNameRTest, TEST_POSIX, TEST_TCP, TEST_LEVEL0, TEST_FUNCTION); } +// 定义测试用例,将GetHostByNameRTest函数注册为一个测试案例。 \ No newline at end of file diff --git a/kernel_liteos_a-master/testsuites/unittest/net/netdb/full/net_netdb_test_008.cpp b/kernel_liteos_a-master/testsuites/unittest/net/netdb/full/net_netdb_test_008.cpp index 7819b3b..fc8c55f 100644 --- a/kernel_liteos_a-master/testsuites/unittest/net/netdb/full/net_netdb_test_008.cpp +++ b/kernel_liteos_a-master/testsuites/unittest/net/netdb/full/net_netdb_test_008.cpp @@ -31,42 +31,61 @@ #include "lt_net_netdb.h" +// 引入头文件,可能包含了网络数据库相关的函数声明和宏定义。 static int GetHostByName2Test(void) { char host_file[] = "127.0.0.1 localhost\n"; + // 定义一个模拟的hosts文件内容,包含localhost映射到127.0.0.1的条目。 char *pathList[] = {"/etc/hosts"}; + // 定义hosts文件的路径列表,这里只有一个路径指向系统的hosts文件。 char *streamList[] = {static_cast(host_file)}; + // 定义模拟的hosts文件流列表,这里将模拟的hosts文件内容转换为char*类型。 int streamLen[] = {sizeof(host_file)}; + // 定义模拟的hosts文件流长度列表。 const int file_number = 1; + // 定义文件数量。 int flag = PrepareFileEnv(pathList, streamList, streamLen, file_number); + // 调用PrepareFileEnv函数准备文件环境,模拟hosts文件。 if (flag != 0) { RecoveryFileEnv(pathList, file_number); return -1; } + // 如果准备文件环境失败,则恢复原始文件环境并返回错误码。 struct hostent *addr = gethostbyname2("localhost", AF_INET); + // 使用gethostbyname2函数根据主机名"localhost"和地址族AF_INET获取hostent结构体指针。 ICUNIT_ASSERT_NOT_EQUAL(addr, NULL, -1); + // 断言addr不为空,即gethostbyname2成功。 ICUNIT_ASSERT_EQUAL(strcmp(addr->h_name, "localhost"), 0, -1); + // 断言返回的主机名与输入的主机名相同。 ICUNIT_ASSERT_EQUAL(addr->h_addrtype, AF_INET, addr->h_addrtype); + // 断言返回的地址类型为AF_INET。 ICUNIT_ASSERT_NOT_EQUAL(addr->h_length, 0, addr->h_length); + // 断言返回的地址长度不为0。 addr = gethostbyname2("127.0.0.1", AF_INET); + // 使用gethostbyname2函数根据IP地址字符串"127.0.0.1"和地址族AF_INET获取hostent结构体指针。 ICUNIT_ASSERT_NOT_EQUAL(addr, NULL, -1); ICUNIT_ASSERT_EQUAL(strcmp(addr->h_name, "127.0.0.1"), 0, -1); ICUNIT_ASSERT_EQUAL(addr->h_addrtype, AF_INET, addr->h_addrtype); ICUNIT_ASSERT_NOT_EQUAL(addr->h_length, 0, addr->h_length); addr = gethostbyname2("127.0.0.1", AF_INET6); + // 尝试使用gethostbyname2函数根据IP地址字符串"127.0.0.1"和地址族AF_INET6获取hostent结构体指针,预期失败。 ICUNIT_ASSERT_EQUAL(addr, NULL, -1); addr = gethostbyname2("localh", AF_INET); + // 尝试使用gethostbyname2函数根据不完整的主机名"localh"和地址族AF_INET获取hostent结构体指针,预期失败。 ICUNIT_ASSERT_EQUAL(addr, NULL, -1); RecoveryFileEnv(pathList, file_number); + // 恢复原始文件环境。 return ICUNIT_SUCCESS; + // 返回测试成功。 } void NetNetDbTest008(void) { TEST_ADD_CASE(__FUNCTION__, GetHostByName2Test, TEST_POSIX, TEST_TCP, TEST_LEVEL0, TEST_FUNCTION); } +// 定义测试用例,将GetHostByName2Test函数注册为一个测试案例。 \ No newline at end of file diff --git a/kernel_liteos_a-master/testsuites/unittest/net/netdb/full/net_netdb_test_009.cpp b/kernel_liteos_a-master/testsuites/unittest/net/netdb/full/net_netdb_test_009.cpp index 7a9ab53..b630493 100644 --- a/kernel_liteos_a-master/testsuites/unittest/net/netdb/full/net_netdb_test_009.cpp +++ b/kernel_liteos_a-master/testsuites/unittest/net/netdb/full/net_netdb_test_009.cpp @@ -30,33 +30,51 @@ */ #include "lt_net_netdb.h" +// 引入头文件,可能包含了网络数据库相关的函数声明和宏定义。 static int GetHostByName2RTest(void) { char host_file[] = "127.0.0.1 localhost\n"; + // 定义一个模拟的hosts文件内容,包含localhost映射到127.0.0.1的条目。 char *pathList[] = {"/etc/hosts"}; + // 定义hosts文件的路径列表,这里只有一个路径指向系统的hosts文件。 char *streamList[] = {host_file}; + // 定义模拟的hosts文件流列表,这里直接使用host_file。 int streamLen[] = {sizeof(host_file)}; + // 定义模拟的hosts文件流长度列表。 const int file_number = 1; + // 定义文件数量。 int flag = PrepareFileEnv(pathList, streamList, streamLen, file_number); + // 调用PrepareFileEnv函数准备文件环境,模拟hosts文件。 if (flag != 0) { RecoveryFileEnv(pathList, file_number); return -1; } + // 如果准备文件环境失败,则恢复原始文件环境并返回错误码。 struct hostent addr, *result = NULL; + // 定义hostent结构体变量addr,用于存储gethostbyname2_r函数的结果。 char buf[1024]; + // 定义一个足够大的缓冲区buf,用于gethostbyname2_r函数。 char buf1[1]; + // 定义一个非常小的缓冲区buf1,用于测试gethostbyname2_r函数的边界条件。 int err, ret; ret = gethostbyname2_r("localhost", AF_INET, &addr, buf, sizeof buf, &result, &err); + // 使用gethostbyname2_r函数根据主机名"localhost"、地址族AF_INET获取hostent结构体指针。 ICUNIT_ASSERT_EQUAL(ret, 0, ret); + // 断言返回值ret为0,表示gethostbyname2_r函数调用成功。 ICUNIT_ASSERT_NOT_EQUAL(result, NULL, -1); + // 断言result不为空,即gethostbyname2_r成功。 ICUNIT_ASSERT_EQUAL(strcmp(result->h_name, "localhost"), 0, -1); + // 断言返回的主机名与输入的主机名相同。 ICUNIT_ASSERT_EQUAL(result->h_addrtype, AF_INET, result->h_addrtype); + // 断言返回的地址类型为AF_INET。 ICUNIT_ASSERT_NOT_EQUAL(result->h_length, 0, result->h_length); + // 断言返回的地址长度不为0。 ret = gethostbyname2_r("127.0.0.1", AF_INET, &addr, buf, sizeof buf, &result, &err); + // 使用gethostbyname2_r函数根据IP地址字符串"127.0.0.1"、地址族AF_INET获取hostent结构体指针。 ICUNIT_ASSERT_EQUAL(ret, 0, ret); ICUNIT_ASSERT_NOT_EQUAL(result, NULL, -1); ICUNIT_ASSERT_EQUAL(strcmp(result->h_name, "127.0.0.1"), 0, -1); @@ -64,17 +82,26 @@ static int GetHostByName2RTest(void) ICUNIT_ASSERT_NOT_EQUAL(result->h_length, 0, result->h_length); ret = gethostbyname2_r("127.0.0.1", AF_INET, &addr, buf1, sizeof buf1, &result, &err); + // 测试gethostbyname2_r函数的边界条件,传入的缓冲区太小。 ICUNIT_ASSERT_NOT_EQUAL(ret, 0, ret); + // 断言返回值ret不为0,表示gethostbyname2_r函数调用失败。 ret = gethostbyname2_r("127.0.0.1.1", AF_INET, &addr, buf, sizeof buf, &result, &err); + // 测试一个不存在的IP地址。 ICUNIT_ASSERT_NOT_EQUAL(ret, 0, ret); + // 断言返回值ret不为0,表示gethostbyname2_r函数调用失败。 ret = gethostbyname2_r("lo", AF_INET, &addr, buf, sizeof buf, &result, &err); + // 测试一个不存在的主机名。 ICUNIT_ASSERT_NOT_EQUAL(ret, 0, ret); + // 断言返回值ret不为0,表示gethostbyname2_r函数调用失败。 RecoveryFileEnv(pathList, file_number); + // 恢复原始文件环境。 return ICUNIT_SUCCESS; + // 返回测试成功。 } void NetNetDbTest009(void) { TEST_ADD_CASE(__FUNCTION__, GetHostByName2RTest, TEST_POSIX, TEST_TCP, TEST_LEVEL0, TEST_FUNCTION); } +// 定义测试用例,将GetHostByName2RTest函数注册为一个测试案例。 \ No newline at end of file diff --git a/kernel_liteos_a-master/testsuites/unittest/net/netdb/full/net_netdb_test_010.cpp b/kernel_liteos_a-master/testsuites/unittest/net/netdb/full/net_netdb_test_010.cpp index efd6b88..385f8dd 100644 --- a/kernel_liteos_a-master/testsuites/unittest/net/netdb/full/net_netdb_test_010.cpp +++ b/kernel_liteos_a-master/testsuites/unittest/net/netdb/full/net_netdb_test_010.cpp @@ -31,21 +31,31 @@ #include "lt_net_netdb.h" +// 引入头文件,可能包含了网络数据库相关的函数声明和宏定义。 static int NameInfoTest(void) { char host[256], serv[256]; + // 定义两个数组,用于存储getnameinfo函数返回的主机名和服务器名。 struct sockaddr_in addr; + // 定义一个sockaddr_in结构体,用于存储IPv4地址信息。 addr.sin_family = AF_INET; + // 设置地址族为IPv4。 addr.sin_port = htons(22); + // 设置端口号为22(例如SSH端口),htons函数用于将主机字节序转换为网络字节序。 addr.sin_addr.s_addr = inet_addr("127.0.0.1"); + // 设置IP地址为127.0.0.1,inet_addr函数将点分十进制IP地址转换为网络字节序的整数。 int ret = getnameinfo((struct sockaddr*)&addr, sizeof addr, host, sizeof host, serv, sizeof serv, 0); + // 调用getnameinfo函数,传入地址信息、主机名和服务器名的缓冲区,尝试获取主机名和服务器名。 ICUNIT_ASSERT_EQUAL(ret, 0, ret); + // 断言getnameinfo函数调用成功,返回值为0。 return ICUNIT_SUCCESS; + // 返回测试成功。 } void NetNetDbTest010(void) { TEST_ADD_CASE(__FUNCTION__, NameInfoTest, TEST_POSIX, TEST_TCP, TEST_LEVEL0, TEST_FUNCTION); } +// 定义测试用例,将NameInfoTest函数注册为一个测试案例。 \ No newline at end of file diff --git a/kernel_liteos_a-master/testsuites/unittest/net/netdb/full/net_netdb_test_011.cpp b/kernel_liteos_a-master/testsuites/unittest/net/netdb/full/net_netdb_test_011.cpp index 32f7d43..b436413 100644 --- a/kernel_liteos_a-master/testsuites/unittest/net/netdb/full/net_netdb_test_011.cpp +++ b/kernel_liteos_a-master/testsuites/unittest/net/netdb/full/net_netdb_test_011.cpp @@ -31,37 +31,57 @@ #include "lt_net_netdb.h" +// 引入头文件,可能包含了网络数据库相关的函数声明和宏定义。 static int GetServByPortTest(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; } + // 如果准备文件环境失败,则恢复原始文件环境并返回错误码。 const int test_port_no = 22; // ssh port number is 22 + // 定义测试的端口号,这里是22,即SSH服务的标准端口号。 struct servent *se1 = nullptr; + // 定义servent结构体指针变量se1,初始化为nullptr。 struct servent *se = getservbyport(htons(test_port_no), "tcp"); + // 使用getservbyport函数根据端口号和协议名("tcp")获取servent结构体指针。 ICUNIT_ASSERT_NOT_EQUAL(se, NULL, -1); + // 断言se不为空,即getservbyport成功。 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"相同。 se1 = getservbyport(htons(test_port_no), "tp"); + // 尝试使用getservbyport函数根据端口号和错误的协议名("tp")获取servent结构体指针,预期失败。 ICUNIT_ASSERT_EQUAL(se1, nullptr, -1); + // 断言se1为空,即getservbyport失败。 RecoveryFileEnv(pathList, file_number); + // 恢复原始文件环境。 return ICUNIT_SUCCESS; + // 返回测试成功。 } void NetNetDbTest011(void) { TEST_ADD_CASE(__FUNCTION__, GetServByPortTest, TEST_POSIX, TEST_TCP, TEST_LEVEL0, TEST_FUNCTION); } +// 定义测试用例,将GetServByPortTest函数注册为一个测试案例。 \ No newline at end of file