diff options
Diffstat (limited to 'example/single_thread.cpp')
| -rw-r--r-- | example/single_thread.cpp | 130 |
1 files changed, 118 insertions, 12 deletions
diff --git a/example/single_thread.cpp b/example/single_thread.cpp index fe584e2f..16966999 100644 --- a/example/single_thread.cpp +++ b/example/single_thread.cpp @@ -3,34 +3,140 @@ > Author: pxz > Created Time: Fri 11 Sep 2020 09:52:05 AM CST ************************************************************************/ +extern "C" +{ #include<stdio.h> +#include<stdlib.h> #include<unistd.h> +#include<string.h> +#include<time.h> +} #include"../src/hos_client.h" +//#define test_times 10000 + +#define debuginfo (void) + +static size_t calc_time(struct timespec start, struct timespec end) +{ + return (end.tv_sec * 1000 * 1000 * 1000 + end.tv_nsec - + (start.tv_sec * 1000 * 1000 * 1000 + start.tv_nsec)); +} + +int file_to_buffer(const char *file, char *buffer, size_t *len) +{ + FILE *fp = fopen(file, "r"); + int num = 0; + *len = 0; + if (fp == NULL) + { + debuginfo("fopen file failed:%s\n", file); + return -1; + } + do{ + num = fread(&buffer[*len], 1, 4096, fp); + if (num < 0) + { + return -1; + } + *len += num; + }while(num == 4096); + fclose(fp); + return 0; +} + +void callback(bool result, const char *error, void *userdata) +{ + //debuginfo("result : %s\n", result ? "true":"false"); + if (result) + return ; + //debuginfo("error: %s\n", error); + //debuginfo("userdata:%s\n", (char *)userdata); + hos_close_fd(*(int *)userdata, 0); + return ; +} + int main(int argc, char *argv[]) { + if (argc != 4) + { + debuginfo("usege: singThread [bucket name] [object name]\n"); + return -1; + } + struct timespec start, end; + size_t time; + int i = 0; char *bucket = argv[1]; - printf("hos_client_init start ...\n"); - hos_client_handle handle = hos_client_init("http://192.168.44.12:9098/hos", "default", "default"); + char *object = argv[2]; + int test_times = atoi(argv[3]); + //int test_times = 10000; + //char *buf = (char *)malloc(1024 * 1024 * 4); + char buf[1024 * 1024 * 4]; + size_t buf_size; + + file_to_buffer(object, buf, &buf_size); + + debuginfo("hos_client_init start ...\n"); + hos_client_handle handle = hos_client_create("http://192.168.44.12:9098/hos/", "default", "default", 4); if (handle == NULL) { - printf("error:hos_client_handle\n"); + debuginfo("error:hos_client_handle\n"); return -1; } - printf("hos_client_init success ..."); + debuginfo("hos_client_init success ... \n"); - printf("hos_create_bucket start ... \n"); - if(!hos_create_bucket(handle, bucket)) + debuginfo("hos_create_bucket start ... \n"); + if(hos_create_bucket(handle, bucket)) { - printf("hos_create_bucket failed ... \n"); + debuginfo("hos_create_bucket failed ... \n"); + return -1; } - printf("hos_create_bucket success ... \n"); + debuginfo("hos_create_bucket success ... \n"); - printf("hos_upload_async start ...\n"); - hos_upload_async(handle, bucket, "my-file.txt"); + debuginfo("hos_verify_bucket start ... \n"); + if(!hos_verify_bucket(handle, bucket)) + { + debuginfo("hos_verify_bucket failed ... \n"); + return -1; + } + debuginfo("hos_verify_bucket success ... \n"); - //sleep(30); - hos_client_close(handle); +#if 1 + int mode = FILE_MODE; + size_t fd = 0; + fd = hos_open_fd(handle, bucket, object, callback, (void *)&fd, 0, mode); + debuginfo("hos_upload_file start ...\n"); + clock_gettime(CLOCK_MONOTONIC, &start); + for (i = 0; i < test_times; i++) + { + hos_write(fd, object, 0, 0); + } + clock_gettime(CLOCK_MONOTONIC, &end); + time = calc_time(start, end); + time /= test_times; + printf("hos_upload_file spent %llu ns\n", time); + debuginfo("hos_upload_file end ...\n"); +#else + + int mode = BUFF_MODE; + size_t fd = 0; + fd = hos_open_fd(handle, bucket, object, callback, (void *)&fd, 0, mode); + debuginfo("hos_upload_buf start ...\n"); + clock_gettime(CLOCK_MONOTONIC, &start); + for (i = 0; i < test_times; i++) + { + hos_write(fd, buf, buf_size, 0); + } + clock_gettime(CLOCK_MONOTONIC, &end); + time = calc_time(start, end); + time /= test_times; + printf("hos_upload_buf spent %llu ns\n", time); + debuginfo("hos_upload_buf end ...\n"); + +#endif + debuginfo("hos_client_close start ...\n"); + hos_client_destory(handle); + debuginfo("hos_client_close end ...\n"); return 0; } |
