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