void case_setup() { #if 1 system("rm -rf /tmp/testenv"); system("mkdir /tmp/testenv -p"); system("cd ../../../ && ./output/bin/mkfs.hlfs -u local:///tmp/testenv/testfs -b 8192 -s 67108864 -m 1024"); system("cd -"); char * uri = "local:///tmp/testenv/testfs"; fixture.hctrl = init_hlfs(uri); g_assert(NULL != fixture.hctrl); int ret = 0; ret = hlfs_open(fixture.hctrl,1); g_assert(ret == 0); g_print("TEST hlfs open over \n"); int i = 0; int offset = 0; int BATCHSIZE = 8192; char content[BATCHSIZE]; for(i=0;i<8192*3;i++){ hlfs_write(fixture.hctrl,content,BATCHSIZE,offset); hlfs_write(fixture.hctrl,content,BATCHSIZE,offset); offset = offset + BATCHSIZE; if(offset == 8192*8192){ ret = hlfs_take_snapshot(fixture.hctrl,"test_snapshot1"); g_assert(ret == 0); g_print("take snapshot 1\n"); } if(offset == 8192*8192*2){ ret = hlfs_take_snapshot(fixture.hctrl,"test_snapshot2"); g_assert(ret == 0); g_print("take snapshot 2\n"); } if(offset == 8192*8192*2 + 8192*1){ ret = hlfs_take_snapshot(fixture.hctrl,"test_snapshot3"); g_assert(ret == 0); g_print("take snapshot 3\n"); } } hlfs_close(fixture.hctrl); deinit_hlfs(fixture.hctrl); #endif }
void test_cache() { /*---init HLFS with cache on by conf file---*/ int ret = 0; g_message("test begin..."); g_assert(fixture.ctrl->cctrl->block_size == 8192); g_assert(fixture.ctrl->cctrl->cache_size == 1024); g_assert(fixture.ctrl->cctrl->flush_interval == 10); g_assert(fixture.ctrl->cctrl->flush_trigger_level == 80); g_assert(fixture.ctrl->cctrl->flush_once_size == 100); ret = g_trash_stack_height(&(fixture.ctrl->cctrl->block_cache)); g_message("height of cache blocks:%d", ret); g_assert(ret == 1024); g_assert(fixture.ctrl->cctrl->dirty_block != NULL); g_assert(g_queue_get_length(fixture.ctrl->cctrl->dirty_block) == 0); g_assert(fixture.ctrl->cctrl->block_map != NULL); g_assert(fixture.ctrl->cctrl->flush_waken_cond != NULL); g_message("initializing HLFS successfully"); /*---Write something and check when flush---*/ uint64_t pos = 0; int loop = 0; char *buf = (char *)g_malloc0(8192); if (0 > hlfs_open(fixture.ctrl, 1)) { g_message("open HLFS error"); return; } struct stat *_stat = (struct stat *)g_malloc0(sizeof(struct stat)); for (loop = 0; loop < BLK_NO; loop++) { if (0 > hlfs_write(fixture.ctrl, buf, BLK_NO, pos)) { g_message("hlfs_write error"); return; } g_message("write the %dth blk", loop); pos += BLK_NO; if (!g_file_test("/tmp/testenv/testfs/0.seg", G_FILE_TEST_EXISTS)) { g_message("file not exists"); } else { memset(_stat, 0, sizeof(_stat)); ret = stat("/tmp/testenv/testfs/0.seg", _stat); if (ret < 0) { g_message("error no: %d", errno); perror("stat error:"); } g_assert(ret == 0); g_message("size of 0.seg:%d", _stat->st_size); g_message("inode of 0.seg:%d", _stat->st_ino); g_message("atime of 0.seg:%d", _stat->st_atime); //sleep(1); } } }
static void take_snapshot(Fixture *fixture, const void *data) { g_message("enter func %s", __func__); char content[REQ_SIZE]; int offset = 0; int i = 0; memset(content, 0, REQ_SIZE); while (offset < TOTAL_SIZE) { int ret1 = hlfs_write(fixture->ctrl, content, REQ_SIZE, offset); g_assert_cmpint(ret1, ==, REQ_SIZE); do_snapshot(fixture, i); offset += REQ_SIZE; i += 1; } g_message("leave func %s", __func__); return; }
/* * ./test -u uri -r request_size -a total_size * uri: /tmp/testenv/testfs * request_size: 4096bytes * total_size: 409600bytes */ int main(int argc, char *argv[]){ if (log4c_init()) { g_message("log4c_init error!"); } GError *error = NULL; GOptionContext *context; context = g_option_context_new("- hlfs test -"); g_option_context_add_main_entries(context, entries, NULL); g_option_context_set_help_enabled(context, TRUE); g_option_group_set_error_hook(g_option_context_get_main_group(context), (GOptionErrorFunc)error_func); if (!g_option_context_parse(context, &argc, &argv, &error)) { g_message("option parsing failed: %s", error->message); exit(EXIT_FAILURE); } g_option_context_free(context); g_print("TEST: uri is %s, request size is %d, total size is %d\n", uri, request_size, total_size); char *content = (char*)g_malloc0(request_size); HLFS_CTRL * ctrl = init_hlfs(uri); g_assert(ctrl != NULL); uint64_t ret = 0; ret = hlfs_open(ctrl,1); g_assert(ret == 0); g_print("TEST hlfs open over \n"); g_print("test hlfs write\n"); sleep(2); int offset = 0; while(offset < total_size){ ret = hlfs_write(ctrl,content,request_size,offset); g_assert(ret==request_size); offset +=request_size; printf("offset:%d\n",offset); } g_print("TEST hlfs write over \n"); g_print("test hlfs read\n"); sleep(2); offset = 0; while(offset < total_size){ ret = hlfs_read(ctrl,content,request_size,offset); g_assert(ret==request_size); offset +=request_size; printf("offset:%d\n",offset); } g_print("again ------------------------\n"); offset = 0; /******************************************************************************************************************************************/ int fdd; int len; int rett; int i; //char read_buf[409600]; char *contentt = (char*)g_malloc0(40960); if((fdd = open("test.c", O_RDONLY )) == -1){ my_err("open", __LINE__); } else { g_print("Open file success\n"); } //if(write(fd, write_buf, strlen(write_buf)) != strlen(write_buf)){ // my_err("write", __LINE__); //} if(lseek(fdd, 0, SEEK_END) == -1){ my_err("lseek", __LINE__); } if((len = lseek(fdd, 0, SEEK_CUR)) == -1){ my_err("lseek", __LINE__); } if((lseek(fdd, 0, SEEK_SET)) == -1){ my_err("lseek", __LINE__); } printf("len: %d\n", len); if((rett = read(fdd, contentt, len)) < 0){ my_err("lseek",__LINE__); } strcpy(content, contentt); //for(i = 0; i< len; i ++){ g_print("%s ", contentt); //} g_print("\n"); g_print("/************************************************/"); if(lseek(fdd, 10, SEEK_END) == -1){ my_err("lseek", __LINE__); } //close (fdd); /****************************************************************************************************/ //FILE* srcFile = NULL; int srcLength = lseek(fdd, 0, SEEK_CUR); int SNAPPY_OK = 0; char* pSrcBuffer = (char*)g_malloc0(srcLength); read(fdd, pSrcBuffer, srcLength); size_t cbOfCompressed = 32+ srcLength + srcLength/6; char* pCompressedBuffer = (char*)g_malloc0(cbOfCompressed); if (snappy_compress(pSrcBuffer, srcLength, pCompressedBuffer, &cbOfCompressed) == SNAPPY_OK) { free(pSrcBuffer); pSrcBuffer = NULL; if (snappy_validate_compressed_buffer(pCompressedBuffer, cbOfCompressed) == SNAPPY_OK) { size_t cbDecompress = 0; snappy_uncompressed_length(pCompressedBuffer, cbOfCompressed, &cbDecompress); assert(cbDecompress == srcLength); char* pDecompressedBuffer = (char*)g_malloc0(cbDecompress); snappy_uncompress(pCompressedBuffer, cbOfCompressed, pDecompressedBuffer, (size_t*)&cbDecompress); int file; file = open("test1.txt", O_CREAT | O_RDWR ); //_wfopen_s(&file, _T("123.pdf"), _T("ab")); write(file, pDecompressedBuffer, cbDecompress); close(file); free(pDecompressedBuffer); pDecompressedBuffer = NULL; } } close (fdd); /******************************************************************************************************************************************/ // while(offset < total_size){ // ret = hlfs_write(ctrl,content,request_size,offset); // g_assert(ret==request_size); // offset +=request_size; // printf("offset:%d\n",offset); // } // g_print("TEST hlfs write over \n"); // g_print("test hlfs read\n"); // sleep(2); // offset = 0; while(offset < len+1){ ret = hlfs_read(ctrl,content,len,offset); g_assert(ret==len); offset +=len; printf("offset:%d\n",offset); } g_free(content); g_free(contentt); ret = hlfs_close(ctrl); deinit_hlfs(ctrl); g_print("TEST hlfs test over \n"); return 0; }