分支昶
wcr 7 months ago
parent cd4901a844
commit 2c6af109bd

@ -32,40 +32,60 @@
#include "lt_net_netdb.h" #include "lt_net_netdb.h"
// 测试函数AddrInfoTest的定义
static int AddrInfoTest(void) static int AddrInfoTest(void)
{ {
// Prerequisite: correct DNS servers must be configured. // 假设DNS服务器配置正确
char host_file[] = "127.0.0.2 example.com\n", serv_file[] = "ftp 21/tcp\n"; char host_file[] = "127.0.0.2 example.com\n", serv_file[] = "ftp 21/tcp\n";
// 文件路径数组
char *pathList[] = {"/etc/hosts", "/etc/services"}; char *pathList[] = {"/etc/hosts", "/etc/services"};
// 要写入文件的内容数组
char *streamList[] = {host_file, serv_file}; char *streamList[] = {host_file, serv_file};
// 内容长度数组
int streamLen[] = {sizeof(host_file), sizeof(serv_file)}; int streamLen[] = {sizeof(host_file), sizeof(serv_file)};
// 文件数量
const int file_number = 2; const int file_number = 2;
// 准备文件环境
int flag = PrepareFileEnv(pathList, streamList, streamLen, file_number); int flag = PrepareFileEnv(pathList, streamList, streamLen, file_number);
if (flag != 0) { if (flag != 0) {
// 如果准备失败,恢复文件环境并返回错误
RecoveryFileEnv(pathList, file_number); RecoveryFileEnv(pathList, file_number);
return -1; return -1;
} }
// 声明addrinfo结构体指针
struct addrinfo *addr = NULL; struct addrinfo *addr = NULL;
// 使用getaddrinfo函数解析域名和端口
int ret = getaddrinfo("example.com", "ftp", NULL, &addr); int ret = getaddrinfo("example.com", "ftp", NULL, &addr);
// 断言getaddrinfo函数返回0表示成功
ICUNIT_ASSERT_EQUAL(ret, 0, ret); ICUNIT_ASSERT_EQUAL(ret, 0, ret);
// 释放addrinfo结构体
freeaddrinfo(addr); freeaddrinfo(addr);
// 尝试解析一个不存在的域名和端口
ret = getaddrinfo("local", "ftp", NULL, &addr); ret = getaddrinfo("local", "ftp", NULL, &addr);
// 断言getaddrinfo函数返回EAI_AGAIN表示临时失败
ICUNIT_ASSERT_EQUAL(ret, EAI_AGAIN, ret); ICUNIT_ASSERT_EQUAL(ret, EAI_AGAIN, ret);
// 尝试解析一个不存在的服务名称
ret = getaddrinfo("localhost", "fp", NULL, &addr); ret = getaddrinfo("localhost", "fp", NULL, &addr);
// 断言getaddrinfo函数返回EAI_SERVICE表示服务名称错误
ICUNIT_ASSERT_EQUAL(ret, EAI_SERVICE, ret); ICUNIT_ASSERT_EQUAL(ret, EAI_SERVICE, ret);
// 获取错误信息字符串
const char *p = gai_strerror(EAI_AGAIN); const char *p = gai_strerror(EAI_AGAIN);
// 断言错误信息字符串不为空
ICUNIT_ASSERT_NOT_EQUAL(p, NULL, -1); ICUNIT_ASSERT_NOT_EQUAL(p, NULL, -1);
// 恢复文件环境
RecoveryFileEnv(pathList, file_number); RecoveryFileEnv(pathList, file_number);
return ICUNIT_SUCCESS; return ICUNIT_SUCCESS;
} }
// 测试用例NetNetDbTest002的定义
void NetNetDbTest002(void) void NetNetDbTest002(void)
{ {
// 添加测试用例
TEST_ADD_CASE(__FUNCTION__, AddrInfoTest, TEST_POSIX, TEST_TCP, TEST_LEVEL0, TEST_FUNCTION); TEST_ADD_CASE(__FUNCTION__, AddrInfoTest, TEST_POSIX, TEST_TCP, TEST_LEVEL0, TEST_FUNCTION);
} }

Loading…
Cancel
Save