From 0dc322f289faf11f99068ccc6634c37a19e4408a Mon Sep 17 00:00:00 2001 From: chenzhikai <895543892@qq.com> Date: Fri, 25 Apr 2025 15:10:59 +0800 Subject: [PATCH] =?UTF-8?q?ut=E5=8F=8A=E9=83=A8=E5=88=86=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/interface/wr_api.c | 88 +++++---------------------------------- src/interface/wr_api.h | 26 +++++------- test/gtest/test_wr_api.cc | 67 +++++++++++++++++++---------- 3 files changed, 66 insertions(+), 115 deletions(-) diff --git a/src/interface/wr_api.c b/src/interface/wr_api.c index 9cc5dc0..75c47d3 100644 --- a/src/interface/wr_api.c +++ b/src/interface/wr_api.c @@ -142,22 +142,8 @@ int wr_vfs_delete(wr_instance_handle inst_handle, const char *vfs_name, unsigned return (int)ret; } -int wr_vfs_mount(wr_instance_handle inst_handle, const char *vfs_name, VfsHandlePtr *vfs_handle) +int wr_vfs_mount(wr_instance_handle inst_handle, const char *vfs_name, wr_vfs_handle *vfs_handle) { - /* - if (inst_handle == NULL) { - LOG_RUN_ERR("instance handle is NULL."); - return WR_ERROR; - } - st_wr_instance_handle *hdl = (st_wr_instance_handle*)inst_handle; - if (hdl->conn == NULL) { - LOG_RUN_ERR("wr_vfs_mount get conn error."); - return WR_ERROR; - } - wr_vfs_t *dir = wr_open_dir_impl(hdl->conn, vfs_name, CM_TRUE); - *vfs_handle = (wr_vfs_handle)dir; - return WR_SUCCESS; - */ if (inst_handle == NULL || vfs_handle == NULL) { LOG_RUN_ERR("instance handle or vfs_handle is NULL."); return WR_ERROR; @@ -169,30 +155,13 @@ int wr_vfs_mount(wr_instance_handle inst_handle, const char *vfs_name, VfsHandle WR_THROW_ERROR(ERR_SYSTEM_CALL, errcode); return WR_ERROR; } - // open dir, get dir descriptor - // wr_vfs_t *dir = wr_open_dir_impl(hdl->conn, vfs_name, CM_TRUE); - return WR_SUCCESS; } -int wr_vfs_unmount(wr_instance_handle inst_handle, VfsHandlePtr vfs_handle) +int wr_vfs_unmount(wr_instance_handle inst_handle, wr_vfs_handle vfs_handle) { - /* - if (inst_handle == NULL) { - LOG_RUN_ERR("instance handle is NULL."); - return WR_ERROR; - } - st_wr_instance_handle *hdl = (st_wr_instance_handle*)inst_handle; - if (hdl->conn == NULL) { - LOG_RUN_ERR("wr_vfs_unmount get conn error."); - return WR_ERROR; - } - status_t ret = wr_close_dir_impl(hdl->conn, (wr_vfs_t *)vfs_handle); - return (int)ret; - */ - // close dir - // status_t ret = wr_close_dir_impl(hdl->conn, (wr_vfs_t *)vfs_handle); - CM_FREE_PTR(vfs_handle.handle); + vfs_handle.handle = NULL; + vfs_handle.vfs_name[0] = '\0'; return CM_SUCCESS; } @@ -201,41 +170,6 @@ int wr_vfs_control(void) return WR_SUCCESS; } -int wr_dread(wr_vfs_handle dir, wr_dir_item_t item, wr_dir_item_t *result, wr_instance_handle inst_handle) -{ - if (item == NULL || result == NULL) { - WR_THROW_ERROR(ERR_WR_INVALID_PARAM, "wr_dir_item_t"); - return WR_ERROR; - } - *result = NULL; - if (dir == NULL) { - return WR_SUCCESS; - } - - if (inst_handle == NULL) { - LOG_RUN_ERR("instance handle is NULL."); - return WR_ERROR; - } - st_wr_instance_handle *hdl = (st_wr_instance_handle*)inst_handle; - if (hdl->conn == NULL) { - LOG_RUN_ERR("dread get conn error."); - return WR_ERROR; - } - - gft_node_t *node = wr_read_dir_impl(hdl->conn, (wr_vfs_t *)dir, CM_TRUE); - if (node == NULL) { - return WR_SUCCESS; - } - item->d_type = (wr_item_type_t)node->type; - int32 errcode = memcpy_s(item->d_name, WR_MAX_NAME_LEN, node->name, WR_MAX_NAME_LEN); - if (SECUREC_UNLIKELY(errcode != EOK)) { - WR_THROW_ERROR(ERR_SYSTEM_CALL, errcode); - return WR_ERROR; - } - *result = item; - return WR_SUCCESS; -} - int wr_stat(const char *path, wr_stat_info_t item, wr_instance_handle inst_handle) { if (item == NULL) { @@ -309,7 +243,7 @@ int wr_fstat(int handle, wr_stat_info_t item, wr_instance_handle inst_handle) return (int)ret; } -int wr_file_create(VfsHandlePtr vfs_handle, const char *name, const FileParameter *param, int *fd) +int wr_file_create(wr_vfs_handle vfs_handle, const char *name, const FileParameter *param) { if (vfs_handle.handle == NULL) { LOG_RUN_ERR("instance handle is NULL."); @@ -327,7 +261,7 @@ int wr_file_create(VfsHandlePtr vfs_handle, const char *name, const FileParamete return (int)ret; } -int wr_file_delete(VfsHandlePtr vfs_handle, const char *file) +int wr_file_delete(wr_vfs_handle vfs_handle, const char *file) { if (vfs_handle.handle == NULL) { LOG_RUN_ERR("instance handle is NULL."); @@ -342,7 +276,7 @@ int wr_file_delete(VfsHandlePtr vfs_handle, const char *file) return (int)ret; } -int wr_file_open(VfsHandlePtr vfs_handle, const char *file, int flag, int *fd) +int wr_file_open(wr_vfs_handle vfs_handle, const char *file, int flag, int *fd) { timeval_t begin_tv; *fd = -1; @@ -410,7 +344,7 @@ int wr_set_main_inst(wr_instance_handle inst_handle) return (int)ret; } -int wr_file_close(VfsHandlePtr vfs_handle, int fd) +int wr_file_close(wr_vfs_handle vfs_handle, int fd) { if (vfs_handle.handle == NULL) { LOG_RUN_ERR("instance handle is NULL."); @@ -442,7 +376,7 @@ long long wr_fseek(int handle, long long offset, int origin, wr_instance_handle return status; } -int wr_file_pwrite(int fd, const void *buf, unsigned long long count, long long offset, VfsHandlePtr vfs_handle) +int wr_file_pwrite(int fd, const void *buf, unsigned long long count, long long offset, wr_vfs_handle vfs_handle) { timeval_t begin_tv; wr_begin_stat(&begin_tv); @@ -473,7 +407,7 @@ int wr_file_pwrite(int fd, const void *buf, unsigned long long count, long long return (int)ret; } -int wr_file_pread(int fd, void *buf, unsigned long long count, long long offset, VfsHandlePtr vfs_handle) +int wr_file_pread(int fd, void *buf, unsigned long long count, long long offset, wr_vfs_handle vfs_handle) { timeval_t begin_tv; wr_begin_stat(&begin_tv); @@ -521,7 +455,7 @@ int wr_frename(const char *src, const char *dst, wr_instance_handle inst_handle) return (int)ret; } -int wr_file_truncate(int fd, int truncateType, long long offset, VfsHandlePtr vfs_handle) +int wr_file_truncate(int fd, int truncateType, long long offset, wr_vfs_handle vfs_handle) { if (vfs_handle.handle == NULL) { LOG_RUN_ERR("instance handle is NULL."); diff --git a/src/interface/wr_api.h b/src/interface/wr_api.h index fdb3ce9..8356592 100644 --- a/src/interface/wr_api.h +++ b/src/interface/wr_api.h @@ -46,10 +46,6 @@ extern "C" { #define WR_DECLARE __attribute__((visibility("default"))) #endif -/* handle */ -struct __wr_dir; -typedef struct __wr_dir *wr_vfs_handle; - struct __wr_instance_handle; typedef struct __wr_instance_handle *wr_instance_handle; @@ -96,10 +92,10 @@ typedef struct st_wr_dirent { char d_name[WR_MAX_NAME_LEN]; } wr_dirent_t; -typedef struct VfsHandlePtr { +typedef struct wr_vfs_handle { wr_instance_handle handle; char vfs_name[WR_MAX_NAME_LEN]; -} VfsHandlePtr; +} wr_vfs_handle; typedef struct FileParameter { unsigned long long attrFlag; @@ -165,8 +161,8 @@ typedef void (*wr_exit_callback_t)(int exit_code); // vfs WR_DECLARE int wr_vfs_create(wr_instance_handle inst_handle, const char *vfs_name, unsigned long long attrFlag); WR_DECLARE int wr_vfs_delete(wr_instance_handle inst_handle, const char *vfs_name, unsigned long long attrFlag); -WR_DECLARE int wr_vfs_mount(wr_instance_handle inst_handle, const char *vfs_name, VfsHandlePtr *vfs_handle); -WR_DECLARE int wr_vfs_unmount(wr_instance_handle inst_handle, VfsHandlePtr vfs_handle); +WR_DECLARE int wr_vfs_mount(wr_instance_handle inst_handle, const char *vfs_name, wr_vfs_handle *vfs_handle); +WR_DECLARE int wr_vfs_unmount(wr_instance_handle inst_handle, wr_vfs_handle vfs_handle); WR_DECLARE int wr_vfs_control(void); WR_DECLARE int wr_dread(wr_vfs_handle dir, wr_dir_item_t item, wr_dir_item_t *result, wr_instance_handle inst_handle); @@ -175,17 +171,17 @@ WR_DECLARE int wr_vfs_query_file_info(wr_vfs_handle dir, wr_dir_item_t item, wr_ WR_DECLARE int wr_vfs_query_file_num(wr_instance_handle inst_handle, const char *vfs_name, int *file_num); // file -WR_DECLARE int wr_file_create(VfsHandlePtr vfs_handle, const char *name, const FileParameter *param, int *fd); -WR_DECLARE int wr_file_delete(VfsHandlePtr vfs_handle, const char *file); -WR_DECLARE int wr_file_open(VfsHandlePtr vfs_handle, const char *file, int flag, int *fd); -WR_DECLARE int wr_file_close(VfsHandlePtr vfs_handle, int fd); +WR_DECLARE int wr_file_create(wr_vfs_handle vfs_handle, const char *name, const FileParameter *param); +WR_DECLARE int wr_file_delete(wr_vfs_handle vfs_handle, const char *file); +WR_DECLARE int wr_file_open(wr_vfs_handle vfs_handle, const char *file, int flag, int *fd); +WR_DECLARE int wr_file_close(wr_vfs_handle vfs_handle, int fd); WR_DECLARE long long wr_fseek(int handle, long long offset, int origin, wr_instance_handle inst_handle); WR_DECLARE int wr_file_rename(const char *src, const char *dst); -WR_DECLARE int wr_file_truncate(int fd, int truncateType, long long offset, VfsHandlePtr vfs_handle); +WR_DECLARE int wr_file_truncate(int fd, int truncateType, long long offset, wr_vfs_handle vfs_handle); WR_DECLARE int wr_file_size_physical(int handle, long long *fsize); WR_DECLARE void wr_file_size_maxwr(const char *fname, long long *fsize); -WR_DECLARE int wr_file_pwrite(int fd, const void *buf, unsigned long long count, long long offset, VfsHandlePtr vfs_handle); -WR_DECLARE int wr_file_pread(int fd, void *buf, unsigned long long count, long long offset, VfsHandlePtr vfs_handle); +WR_DECLARE int wr_file_pwrite(int fd, const void *buf, unsigned long long count, long long offset, wr_vfs_handle vfs_handle); +WR_DECLARE int wr_file_pread(int fd, void *buf, unsigned long long count, long long offset, wr_vfs_handle vfs_handle); WR_DECLARE int wr_file_fallocate(int handle, int mode, long long offset, long long length); WR_DECLARE int wr_file_stat(const char *fileName, long long offset, unsigned long long count); WR_DECLARE int wr_file_pwrite_async(); diff --git a/test/gtest/test_wr_api.cc b/test/gtest/test_wr_api.cc index 9eddf4f..1521af6 100644 --- a/test/gtest/test_wr_api.cc +++ b/test/gtest/test_wr_api.cc @@ -14,8 +14,11 @@ extern "C" { int errorcode = 0; const char *errormsg = NULL; wr_instance_handle g_inst_handle = NULL; +wr_vfs_handle g_vfs_handle; int handle1 = 0, handle2 = 0, handle3 = 0; + + class WrApiTest : public ::testing::Test { protected: void SetUp() override { @@ -33,7 +36,7 @@ protected: }; TEST_F(WrApiTest, TestWrCreateInstance) { - int result = wr_create_instance(SERVER_ADDR, &g_inst_handle); + int result = wr_create_inst(SERVER_ADDR, &g_inst_handle); if (result != 0) { wr_get_error(&errorcode, &errormsg); printf("%d : %s\n", errorcode, errormsg); @@ -42,7 +45,16 @@ TEST_F(WrApiTest, TestWrCreateInstance) { } TEST_F(WrApiTest, TestWrVfsCreate) { - int result = wr_vfs_create(TEST_DIR, g_inst_handle); + int result = wr_vfs_create(g_inst_handle, TEST_DIR, 0); + if (result != 0) { + wr_get_error(&errorcode, &errormsg); + printf("%d : %s\n", errorcode, errormsg); + } + EXPECT_EQ(result, WR_SUCCESS); +} + +TEST_F(WrApiTest, TestWrVfsMount) { + int result = wr_vfs_mount(g_inst_handle, TEST_DIR, &g_vfs_handle); if (result != 0) { wr_get_error(&errorcode, &errormsg); printf("%d : %s\n", errorcode, errormsg); @@ -51,18 +63,18 @@ TEST_F(WrApiTest, TestWrVfsCreate) { } TEST_F(WrApiTest, TestWrVfsCreateFiles) { - int result1 = wr_file_create(TEST_FILE1, 0, g_inst_handle); - int result2 = wr_file_create(TEST_FILE2, 0, g_inst_handle); - int result3 = wr_file_create(TEST_FILE3, 0, g_inst_handle); + int result1 = wr_file_create(g_vfs_handle, TEST_FILE1, NULL); + int result2 = wr_file_create(g_vfs_handle, TEST_FILE2, NULL); + int result3 = wr_file_create(g_vfs_handle, TEST_FILE3, NULL); EXPECT_EQ(result1, WR_SUCCESS); EXPECT_EQ(result2, WR_SUCCESS); EXPECT_EQ(result3, WR_SUCCESS); } TEST_F(WrApiTest, TestWrfileOpen) { - int result1 = wr_file_open(TEST_FILE1, 0, &handle1, g_inst_handle); - int result2 = wr_file_open(TEST_FILE2, 0, &handle2, g_inst_handle); - int result3 = wr_file_open(TEST_FILE3, 0, &handle3, g_inst_handle); + int result1 = wr_file_open(g_vfs_handle, TEST_FILE1, 0, &handle1); + int result2 = wr_file_open(g_vfs_handle, TEST_FILE2, 0, &handle2); + int result3 = wr_file_open(g_vfs_handle, TEST_FILE3, 0, &handle3); EXPECT_EQ(result1, WR_SUCCESS); EXPECT_EQ(result2, WR_SUCCESS); EXPECT_EQ(result3, WR_SUCCESS); @@ -75,11 +87,11 @@ TEST_F(WrApiTest, TestWrfileWriteReadLargeData) { memset(large_data, 'A', large_data_size); // 用'A'填充数据 // 写入大数据块到文件 - EXPECT_EQ(wr_file_pwrite(handle1, large_data, large_data_size, 0, g_inst_handle), WR_SUCCESS); + EXPECT_EQ(wr_file_pwrite(handle1, large_data, large_data_size, 0, g_vfs_handle), WR_SUCCESS); // 读取大数据块 char *read_buffer = new char[large_data_size]; - EXPECT_EQ(wr_file_pread(handle1, read_buffer, large_data_size, 0, g_inst_handle), WR_SUCCESS); + EXPECT_EQ(wr_file_pread(handle1, read_buffer, large_data_size, 0, g_vfs_handle), WR_SUCCESS); // 验证读取的数据是否与写入的数据一致 EXPECT_EQ(memcmp(large_data, read_buffer, large_data_size), 0); @@ -95,15 +107,15 @@ TEST_F(WrApiTest, TestWrfileWriteRead) { const char *data3 = "hello world 3"; // Write to files - EXPECT_EQ(wr_file_pwrite(handle1, data1, strlen(data1), 0, g_inst_handle), WR_SUCCESS); - EXPECT_EQ(wr_file_pwrite(handle2, data2, strlen(data2), 0, g_inst_handle), WR_SUCCESS); - EXPECT_EQ(wr_file_pwrite(handle3, data3, strlen(data3), 0, g_inst_handle), WR_SUCCESS); + EXPECT_EQ(wr_file_pwrite(handle1, data1, strlen(data1), 0, g_vfs_handle), WR_SUCCESS); + EXPECT_EQ(wr_file_pwrite(handle2, data2, strlen(data2), 0, g_vfs_handle), WR_SUCCESS); + EXPECT_EQ(wr_file_pwrite(handle3, data3, strlen(data3), 0, g_vfs_handle), WR_SUCCESS); // Read from files char buf1[100] = {0}, buf2[100] = {0}, buf3[100] = {0}; - EXPECT_EQ(wr_file_pread(handle1, buf1, strlen(data1), 0, g_inst_handle), WR_SUCCESS); - EXPECT_EQ(wr_file_pread(handle2, buf2, strlen(data2), 0, g_inst_handle), WR_SUCCESS); - EXPECT_EQ(wr_file_pread(handle3, buf3, strlen(data3), 0, g_inst_handle), WR_SUCCESS); + EXPECT_EQ(wr_file_pread(handle1, buf1, strlen(data1), 0, g_vfs_handle), WR_SUCCESS); + EXPECT_EQ(wr_file_pread(handle2, buf2, strlen(data2), 0, g_vfs_handle), WR_SUCCESS); + EXPECT_EQ(wr_file_pread(handle3, buf3, strlen(data3), 0, g_vfs_handle), WR_SUCCESS); printf("buf1: %s\n", buf1); printf("buf2: %s\n", buf2); @@ -111,9 +123,9 @@ TEST_F(WrApiTest, TestWrfileWriteRead) { } TEST_F(WrApiTest, TestWrfileClose) { - EXPECT_EQ(wr_file_close(handle1, g_inst_handle), WR_SUCCESS); - EXPECT_EQ(wr_file_close(handle2, g_inst_handle), WR_SUCCESS); - EXPECT_EQ(wr_file_close(handle3, g_inst_handle), WR_SUCCESS); + EXPECT_EQ(wr_file_close(g_vfs_handle, handle1), WR_SUCCESS); + EXPECT_EQ(wr_file_close(g_vfs_handle, handle2), WR_SUCCESS); + EXPECT_EQ(wr_file_close(g_vfs_handle, handle3), WR_SUCCESS); } TEST_F(WrApiTest, TestWrVfsQueryFileNum) { @@ -123,13 +135,22 @@ TEST_F(WrApiTest, TestWrVfsQueryFileNum) { } TEST_F(WrApiTest, TestWrVfsDeleteFiles) { - EXPECT_EQ(wr_file_delete(TEST_FILE1, g_inst_handle), WR_SUCCESS); - EXPECT_EQ(wr_file_delete(TEST_FILE2, g_inst_handle), WR_SUCCESS); - EXPECT_EQ(wr_file_delete(TEST_FILE3, g_inst_handle), WR_SUCCESS); + EXPECT_EQ(wr_file_delete(g_vfs_handle, TEST_FILE1), WR_SUCCESS); + EXPECT_EQ(wr_file_delete(g_vfs_handle, TEST_FILE2), WR_SUCCESS); + EXPECT_EQ(wr_file_delete(g_vfs_handle, TEST_FILE3), WR_SUCCESS); +} + +TEST_F(WrApiTest, TestWrVfsUnmount) { + int result = wr_vfs_unmount(g_inst_handle, g_vfs_handle); + if (result != 0) { + wr_get_error(&errorcode, &errormsg); + printf("%d : %s\n", errorcode, errormsg); + } + EXPECT_EQ(result, WR_SUCCESS); } TEST_F(WrApiTest, TestWrVfsDelete) { - EXPECT_EQ(wr_vfs_delete(TEST_DIR, g_inst_handle), WR_SUCCESS); + EXPECT_EQ(wr_vfs_delete(g_inst_handle, TEST_DIR, 0), WR_SUCCESS); } int main(int argc, char **argv) { -- Gitee