Esempio n. 1
0
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 
}
Esempio n. 2
0
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;
}
Esempio n. 4
0
/*
 * ./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;
}