Example #1
0
int main(int argc, char *argv[])
{
	struct list list;
	char *store_name = "kvstore.db";
	unsigned long rec_num, rec_size;
	int rval;
	pthread_t ptid;

	if (argc != 5) {
		printf("Argument error! ./main test_type record_num record_size kv_type\n");
		return 0;
	}
	
	rec_num = (unsigned long)atoi(argv[2]);
	if (rec_num <= 0 ) {
		printf("[POS] record num argument error!\n");
		return 0;
	}
	rec_num *= 10000;
	
	rec_size = atoi(argv[3]);
	if (rec_size <= 0 ) {
		printf("[BDB] record size argument error!\n");
		return 0;
	}

	if (strcmp(argv[4], "btree") == 0) {
		kv_type = BTREE;
	} else if (strcmp(argv[4], "hash") == 0) {
		kv_type = HASH;
	} else {
		printf("[BDB] KV type argument error!\n");
		return 0;
	}

	/*if (strcmp(argv[5], "1") == 0) {
		log_flag = 1;
	} else if (strcmp(argv[5], "0") == 0) {
		log_flag = 0;
	} else {
		printf("[BDB] Log argument error!\n");
		return 0;
	}*/

	if (init_experiment(store_name) != 1) {
		printf("[BDB] init_experiment() fail!\n");
		return 0;
	}
	
	if (strcmp(argv[1], "insert") == 0) {
		rval = list_from_file(&list, rec_num, "workload_insert.txt");
		if (rval != rec_num) {
			printf("list_from_file() error!\n");
			return 0;
		}
		
		printf("[BDB] Insert Experiment\n");
		rval = do_experiment(&list, store_name, rec_num, rec_size, INSERT);

		delete_list(&list);
	} else if (strcmp(argv[1], "lookup") == 0) {
		rval = list_from_file(&list, rec_num, "workload_insert.txt");
		if (rval != rec_num) {
			printf("list_from_file() error!\n");
			return 0;
		}
		
		printf("[BDB] Lookup Experiment\n");
		rval = do_experiment(&list, store_name, rec_num, rec_size, LOOKUP);
		if (rval != rec_num) {
			printf("error!\n");
			return 0;
		}
		
		delete_list(&list);
	} else if (strcmp(argv[1], "delete") == 0) {
		rval = list_from_file(&list, rec_num, "workload_insert.txt");
		if (rval != rec_num) {
			printf("list_from_file() error!\n");
			return 0;
		}
		
		printf("[BDB] Delete Experiment\n");
		rval = do_experiment(&list, store_name, rec_num, rec_size, DELETE);
		if (rval != rec_num) {
			printf("error!\n");
			return 0;
		}
		
		delete_list(&list);
	} else if (strcmp(argv[1], "update") == 0) {
		rec_num += rec_num/FREQ_NUM;
		rval = list_from_file(&list, rec_num, "workload_update.txt");
		if (rval != rec_num) {
			printf("list_from_file() error!\n");
			return 0;
		}
		
		printf("[BDB] Update Experiment\n");
		rval = do_experiment(&list, store_name, rec_num, rec_size, UPDATE);
		if (rval != rec_num) {
			printf("error!\n");
			return 0;
		}
		
		delete_list(&list);
	} else {
		printf("[BDB] type error!\n");
	}

	if (terminate_experiment(store_name) != 1) {
		printf("[BDB] terminate_experiment() fail!\n");
		return 0;
	}

	//system("rm /mnt/kvstore.db");
	
	return 0;
}
Example #2
0
File: main.c Project: kunulee/f-stm
int main(int argc, char *argv[])
{
	struct list list;
	unsigned long rec_num, rec_size;
	int rval;

	if (argc != 6) {
		printf("Argument error! ./main obj_store record_num record_size kv_type TEST_TYPE\n");
		return 0;
	}
	//store_name = argv[6] ;
	//store_name = argv[6];
	char * store_name ; 	
	store_name = argv[1] ; 	

	printf("===============================\n") ; 	
	printf("store_name : %s\n" , store_name) ;	
	

	rec_num = (unsigned long)atoi(argv[2]);
	printf("rec_num :%d\n" , rec_num) ; 	

	if (rec_num <= 0 ) {
		printf("[POS] record num argument error!\n");
		return 0;
	}
	rec_num *= 10000;
	
	rec_size = atoi(argv[3]);
	printf("rec_size : %d\n" ,rec_size ) ; 	
	printf("==============================\n") ; 	

	if (rec_size <= 0 ) {
		printf("[POS] record size argument error!\n");
		return 0;
	}
	value = (unsigned long *)malloc(rec_size);

	func_ptr = (struct function_ptr *)malloc(sizeof(struct function_ptr));
	if (strcmp(argv[4], "btree") == 0) {
		kv_type = BTREE;
		func_ptr->open_func = stm_pos_btree_open;
		func_ptr->close_func = stm_pos_btree_close;
		func_ptr->insert_func = stm_pos_btree_insert;
		func_ptr->lookup_func = pos_btree_lookup;
		func_ptr->remove_func = stm_pos_btree_remove;
	} else if (strcmp(argv[4], "hash") == 0) {
		kv_type = HASH;
		func_ptr->open_func = stm_pos_hashtable_open;
		func_ptr->close_func = stm_pos_hashtable_close;
		func_ptr->insert_func = stm_pos_hashtable_insert;
		func_ptr->lookup_func = pos_hashtable_search;
		func_ptr->remove_func = stm_pos_hashtable_remove;
	} else if (strcmp(argv[4], "list") == 0) {
		printf("LIST\n") ; 	
		kv_type = LIST;
		func_ptr->open_func = stm_pos_list_open;
		func_ptr->close_func = stm_pos_list_close;
		func_ptr->insert_func = stm_pos_list_insert;
		func_ptr->lookup_func = pos_list_lookup;
		func_ptr->remove_func = stm_pos_list_remove;
	} else {
		printf("[POS] KV type argument error!\n");
		return 0;
	}
	/* pos_stm_init_xxx , pos_stm_open_xxx */ 
	printf("===init===\n") ; 		
	if (init_experiment(store_name, rec_num) != 1) {
		printf("[POS] init_experiment() fail!\n");
		return 0;
	}
	printf("===end===\n\n") ; 	


	//if (func_ptr->open_func(store_name) != 0) {
	//	printf("[POS] pos_open() fail\n");
	//	return 0;
	//}

	if (strcmp(argv[5], "insert") == 0 ){ 
		rval = list_from_file(&list ,rec_num , "workload_insert.txt") ; 	
		if( rval != rec_num ){ 
			printf("list_from_file() error\n"); 
			return 0 ;
		}
		printf("[POS] Insert Experiment\n") ; 	
		rval = do_experiment(&list , store_name , rec_num , rec_size ,INSERT) ; 	
	}else if(strcmp(argv[5], "update") == 0){ 
		rval = list_from_file(&list ,rec_num , "workload_insert.txt") ; 	
		if( rval != rec_num ){ 
			printf("list_from_file() error\n"); 
			return 0 ;
		}
	}else if(strcmp(argv[5] , "delete") == 0){ 
		rval = list_from_file(&list ,rec_num , "workload_insert.txt") ; 	
		if( rval != rec_num ){ 
			printf("list_from_file() error\n"); 
			return 0 ;
		}
		printf("[POS] Delete Experiment\n") ;
		rval = do_experiment(&list , store_name , rec_num , rec_size ,DELETE) ; 	
	}	
	else if (strcmp(argv[5], "separate") == 0) {
	
		rval = list_from_file(&list, rec_num, "workload_insert.txt");
	
		if (rval != rec_num) {
			printf("list_from_file() error!\n");
			return 0;
		}
		
		printf("[POS] Insert Experiment\n");
		rval = do_experiment(&list, store_name, rec_num, rec_size, INSERT);

		printf("[POS] Lookup Experiment\n");
		rval = do_experiment(&list, store_name, rec_num, rec_size, LOOKUP);

		printf("[POS] Delete Experiment\n");
		rval = do_experiment(&list, store_name, rec_num, rec_size, DELETE);
		
		delete_list(&list);
	} else if (strcmp(argv[1], "update") == 0) {
		rec_num += rec_num/FREQ_NUM;
		rval = list_from_file(&list, rec_num, "workload_update.txt");
		if (rval != rec_num) {
			printf("list_from_file() error!\n");
			return 0;
		}
		
		printf("[POS] Update Experiment\n");
		rval = do_experiment(&list, store_name, rec_num, rec_size, UPDATE);
		
		delete_list(&list);
	}
	
	//func_ptr->close_func(store_name);
	free(value);
	free(func_ptr);
	if (terminate_experiment(store_name) != 1) {
		printf("[POS] terminate_experiment() fail!\n");
		return 0;
	}
	return 0;
}