Example #1
0
/**
* @brief test case for random number insert, search and delete.
*/
void testcase_for_random() {
	TREE* T = bptree_create();
	int i = 0, n = 100;
	int _t = 0;
	srand(time(NULL));
	for (i = 0; i < n; i ++) {
		_t = rand() % n;
		printf("bptree_insert(T, %d) = %d\n", _t, bptree_insert(T, _t));
	}
	for (i = 0; i < n; i ++) {
		_t = rand() % n;
		printf("bptree_search(T, %d) = %d\n", _t, bptree_search(T, _t));
	}

	printf("bptree_traveral: ");
	bptree_traveral(T, printout_node);
	printf("\n");

	for (i = 0; i < n; i ++) {
		_t = rand() % n;
		printf("bptree_delete(T, %d) = %d\n", _t, bptree_delete(T, _t));
	}

	printf("bptree_traveral: ");
	bptree_traveral(T, printout_node);
	printf("\n");

	bptree_destory(T);
}
Example #2
0
static void handle_bptree_insert(tcp_client* c,struct evbuffer* buffer)
{
	int rv;
	bptree_session *bps;
	int32_t ksize, vsize;
	char k[MAX_TRANSACTION_SIZE];
	char v[MAX_TRANSACTION_SIZE];
	bzero(k,MAX_TRANSACTION_SIZE);
	bzero(v,MAX_TRANSACTION_SIZE);
	enum bptree_insert_flags insert_flags;

	struct evbuffer* b = evbuffer_copy(buffer);
	transaction_set_get_cb(c->t, on_bptree_insert, c);
	if (bptree_message_incomplete(b)) return;

	bps = retrieve_bptree_session(c,b);
	if (bps ==  NULL)
	{
		printf("Big trouble yo!\n");
		fflush(stdout);
		rv = -1;
		evbuffer_drain(b,evbuffer_get_length(b));
		assert(1 == 0xBEEFCAFE);
	}
	else
	{
		evbuffer_remove(b,&ksize, sizeof(int32_t));
		evbuffer_remove(b,k, ksize);
		evbuffer_remove(b,&vsize, sizeof(int32_t));
		evbuffer_remove(b,v, vsize);
		// TODO We've moved this out of insert; clean it up elsewhere
		//evbuffer_remove(b,&insert_flags, sizeof(enum bptree_insert_flags));

		rv = bptree_insert(bps,k,ksize,v,vsize);//,insert_flags);

		evbuffer_free(b);
		if (rv == BPTREE_OP_TAPIOCA_NOT_READY) return;
		if (rv == BPTREE_OP_RETRY_NEEDED) {
			printf("Insert failed due to unavailable key, txn retry needed, bpt %d\n",bps->bpt_id);
		}
		evbuffer_drain(buffer, evbuffer_get_length(buffer));
		c->write_count++;
		send_result(c->buffer_ev, rv);

#ifdef TRACE_MODE
		c->kv_prev.k = malloc(ksize);
		c->kv_prev.v = malloc(vsize);
		memcpy(c->kv_prev.k, k, ksize);
		memcpy(c->kv_prev.v, v, vsize);
		c->kv_prev.ksize = ksize;
		c->kv_prev.vsize = vsize;
#endif

	}

}
Example #3
0
/**
* @brief test case for single insert, search and delete method.
*/
void testcase_for_single() {
	TREE* T = bptree_create();

	printf("bptree_insert(T, 32) = %d\n", bptree_insert(T, 32));

	printf("bptree_search(T, 32) = %d\n", bptree_search(T, 32));

	printf("bptree_delete(T, 32) = %d\n", bptree_delete(T, 32));

	printf("bptree_search(T, 32) = %d\n", bptree_search(T, 32));

	printf("bptree_traveral: ");
	bptree_traveral(T, printout_node);
	printf("\n");

	bptree_destory(T);
}