Commit f2cea772 authored by Rich Prohaska's avatar Rich Prohaska

test app_private with cursors



git-svn-id: file:///svn/tokudb@391 c7de825b-a66e-492c-adef-691d508d4ae1
parent ea9cd982
...@@ -815,22 +815,26 @@ static void test_wrongendian_compare (int wrong_p, unsigned int N) { ...@@ -815,22 +815,26 @@ static void test_wrongendian_compare (int wrong_p, unsigned int N) {
int test_cursor_debug = 0; int test_cursor_debug = 0;
DB *test_db; DB *test_db = 0;
void *test_app_private = 0;
void set_test_db(DB *db) { void set_test_db_app(DB *db, void *app_private) {
test_db = db; test_db = db;
test_app_private = app_private;
} }
void clear_test_db() { void clear_test_db() {
test_db = null_db; test_db = null_db;
test_app_private = 0;
} }
int test_brt_cursor_keycompare(DB *db, const DBT *a, const DBT *b) { int test_brt_cursor_keycompare(DB *db, const DBT *a, const DBT *b) {
assert(db == test_db); assert(db == test_db);
assert(a->app_private == test_app_private);
return keycompare(a->data, a->size, b->data, b->size); return keycompare(a->data, a->size, b->data, b->size);
} }
void assert_cursor_notfound(BRT brt, int position, DB *db) { void assert_cursor_notfound(BRT brt, int position, DB *db, void *app_private) {
BRT_CURSOR cursor; BRT_CURSOR cursor;
int r; int r;
DBT kbt, vbt; DBT kbt, vbt;
...@@ -838,7 +842,7 @@ void assert_cursor_notfound(BRT brt, int position, DB *db) { ...@@ -838,7 +842,7 @@ void assert_cursor_notfound(BRT brt, int position, DB *db) {
r = brt_cursor(brt, &cursor); r = brt_cursor(brt, &cursor);
assert(r==0); assert(r==0);
init_dbt(&kbt); kbt.flags = DB_DBT_MALLOC; init_dbt(&kbt); kbt.flags = DB_DBT_MALLOC; kbt.app_private = app_private;
init_dbt(&vbt); vbt.flags = DB_DBT_MALLOC; init_dbt(&vbt); vbt.flags = DB_DBT_MALLOC;
r = brt_cursor_get(cursor, &kbt, &vbt, position, db, null_txn); r = brt_cursor_get(cursor, &kbt, &vbt, position, db, null_txn);
assert(r == DB_NOTFOUND); assert(r == DB_NOTFOUND);
...@@ -847,7 +851,7 @@ void assert_cursor_notfound(BRT brt, int position, DB *db) { ...@@ -847,7 +851,7 @@ void assert_cursor_notfound(BRT brt, int position, DB *db) {
assert(r==0); assert(r==0);
} }
void assert_cursor_value(BRT brt, int position, long long value, DB *db) { void assert_cursor_value(BRT brt, int position, long long value, DB *db, void *app_private) {
BRT_CURSOR cursor; BRT_CURSOR cursor;
int r; int r;
DBT kbt, vbt; DBT kbt, vbt;
...@@ -857,7 +861,7 @@ void assert_cursor_value(BRT brt, int position, long long value, DB *db) { ...@@ -857,7 +861,7 @@ void assert_cursor_value(BRT brt, int position, long long value, DB *db) {
assert(r==0); assert(r==0);
if (test_cursor_debug) printf("key: "); if (test_cursor_debug) printf("key: ");
init_dbt(&kbt); kbt.flags = DB_DBT_MALLOC; init_dbt(&kbt); kbt.flags = DB_DBT_MALLOC; kbt.app_private = app_private;
init_dbt(&vbt); vbt.flags = DB_DBT_MALLOC; init_dbt(&vbt); vbt.flags = DB_DBT_MALLOC;
r = brt_cursor_get(cursor, &kbt, &vbt, position, db, null_txn); r = brt_cursor_get(cursor, &kbt, &vbt, position, db, null_txn);
assert(r == 0); assert(r == 0);
...@@ -873,7 +877,7 @@ void assert_cursor_value(BRT brt, int position, long long value, DB *db) { ...@@ -873,7 +877,7 @@ void assert_cursor_value(BRT brt, int position, long long value, DB *db) {
assert(r==0); assert(r==0);
} }
void assert_cursor_first_last(BRT brt, long long firstv, long long lastv, DB *db) { void assert_cursor_first_last(BRT brt, long long firstv, long long lastv, DB *db, void *app_private) {
BRT_CURSOR cursor; BRT_CURSOR cursor;
int r; int r;
DBT kbt, vbt; DBT kbt, vbt;
...@@ -883,7 +887,7 @@ void assert_cursor_first_last(BRT brt, long long firstv, long long lastv, DB *db ...@@ -883,7 +887,7 @@ void assert_cursor_first_last(BRT brt, long long firstv, long long lastv, DB *db
assert(r==0); assert(r==0);
if (test_cursor_debug) printf("first key: "); if (test_cursor_debug) printf("first key: ");
init_dbt(&kbt); kbt.flags = DB_DBT_MALLOC; init_dbt(&kbt); kbt.flags = DB_DBT_MALLOC; kbt.app_private = app_private;
init_dbt(&vbt); vbt.flags = DB_DBT_MALLOC; init_dbt(&vbt); vbt.flags = DB_DBT_MALLOC;
r = brt_cursor_get(cursor, &kbt, &vbt, DB_FIRST, db, null_txn); r = brt_cursor_get(cursor, &kbt, &vbt, DB_FIRST, db, null_txn);
assert(r == 0); assert(r == 0);
...@@ -896,7 +900,7 @@ void assert_cursor_first_last(BRT brt, long long firstv, long long lastv, DB *db ...@@ -896,7 +900,7 @@ void assert_cursor_first_last(BRT brt, long long firstv, long long lastv, DB *db
if (test_cursor_debug) printf("\n"); if (test_cursor_debug) printf("\n");
if (test_cursor_debug) printf("last key:"); if (test_cursor_debug) printf("last key:");
init_dbt(&kbt); kbt.flags = DB_DBT_MALLOC; init_dbt(&kbt); kbt.flags = DB_DBT_MALLOC; kbt.app_private = app_private;
init_dbt(&vbt); vbt.flags = DB_DBT_MALLOC; init_dbt(&vbt); vbt.flags = DB_DBT_MALLOC;
r = brt_cursor_get(cursor, &kbt, &vbt, DB_LAST, db, null_txn); r = brt_cursor_get(cursor, &kbt, &vbt, DB_LAST, db, null_txn);
assert(r == 0); assert(r == 0);
...@@ -918,10 +922,11 @@ void test_brt_cursor_first(int n, DB *db) { ...@@ -918,10 +922,11 @@ void test_brt_cursor_first(int n, DB *db) {
BRT brt; BRT brt;
int r; int r;
int i; int i;
int my_app_private;
printf("test_brt_cursor_first:%d %p\n", n, db); printf("test_brt_cursor_first:%d %p\n", n, db);
set_test_db(db); set_test_db_app(db, &my_app_private);
unlink(fname); unlink(fname);
r = brt_create_cachetable(&ct, 0); r = brt_create_cachetable(&ct, 0);
...@@ -936,7 +941,7 @@ void test_brt_cursor_first(int n, DB *db) { ...@@ -936,7 +941,7 @@ void test_brt_cursor_first(int n, DB *db) {
DBT kbt, vbt; DBT kbt, vbt;
snprintf(key, sizeof key, "%4.4d", i); snprintf(key, sizeof key, "%4.4d", i);
fill_dbt(&kbt, key, strlen(key)+1); fill_dbt_ap(&kbt, key, strlen(key)+1, &my_app_private);
v = i; v = i;
fill_dbt(&vbt, &v, sizeof v); fill_dbt(&vbt, &v, sizeof v);
r = brt_insert(brt, &kbt, &vbt, db, 0); r = brt_insert(brt, &kbt, &vbt, db, 0);
...@@ -944,9 +949,9 @@ void test_brt_cursor_first(int n, DB *db) { ...@@ -944,9 +949,9 @@ void test_brt_cursor_first(int n, DB *db) {
} }
if (n == 0) if (n == 0)
assert_cursor_notfound(brt, DB_FIRST, db); assert_cursor_notfound(brt, DB_FIRST, db, &my_app_private);
else else
assert_cursor_value(brt, DB_FIRST, 0, db); assert_cursor_value(brt, DB_FIRST, 0, db, &my_app_private);
r = close_brt(brt); r = close_brt(brt);
assert(r==0); assert(r==0);
...@@ -963,10 +968,11 @@ void test_brt_cursor_last(int n, DB *db) { ...@@ -963,10 +968,11 @@ void test_brt_cursor_last(int n, DB *db) {
BRT brt; BRT brt;
int r; int r;
int i; int i;
int my_app_private;
printf("test_brt_cursor_last:%d %p\n", n, db); printf("test_brt_cursor_last:%d %p\n", n, db);
set_test_db(db);; set_test_db_app(db, &my_app_private);
unlink(fname); unlink(fname);
r = brt_create_cachetable(&ct, 0); r = brt_create_cachetable(&ct, 0);
...@@ -981,7 +987,7 @@ void test_brt_cursor_last(int n, DB *db) { ...@@ -981,7 +987,7 @@ void test_brt_cursor_last(int n, DB *db) {
DBT kbt, vbt; DBT kbt, vbt;
snprintf(key, sizeof key, "%4.4d", i); snprintf(key, sizeof key, "%4.4d", i);
fill_dbt(&kbt, key, strlen(key)+1); fill_dbt_ap(&kbt, key, strlen(key)+1, &my_app_private);
v = i; v = i;
fill_dbt(&vbt, &v, sizeof v); fill_dbt(&vbt, &v, sizeof v);
r = brt_insert(brt, &kbt, &vbt, db, 0); r = brt_insert(brt, &kbt, &vbt, db, 0);
...@@ -989,9 +995,9 @@ void test_brt_cursor_last(int n, DB *db) { ...@@ -989,9 +995,9 @@ void test_brt_cursor_last(int n, DB *db) {
} }
if (n == 0) if (n == 0)
assert_cursor_notfound(brt, DB_LAST, db); assert_cursor_notfound(brt, DB_LAST, db, &my_app_private);
else else
assert_cursor_value(brt, DB_LAST, n-1, db); assert_cursor_value(brt, DB_LAST, n-1, db, &my_app_private);
r = close_brt(brt); r = close_brt(brt);
assert(r==0); assert(r==0);
...@@ -1008,16 +1014,17 @@ void test_brt_cursor_first_last(int n, DB *db) { ...@@ -1008,16 +1014,17 @@ void test_brt_cursor_first_last(int n, DB *db) {
BRT brt; BRT brt;
int r; int r;
int i; int i;
int my_app_private;
printf("test_brt_cursor_first_last:%d %p\n", n, db); printf("test_brt_cursor_first_last:%d %p\n", n, db);
set_test_db(db); set_test_db_app(db, &my_app_private);
unlink(fname); unlink(fname);
r = brt_create_cachetable(&ct, 0); r = brt_create_cachetable(&ct, 0);
assert(r==0); assert(r==0);
r = open_brt(fname, 0, 1, &brt, 1<<12, ct, default_compare_fun); r = open_brt(fname, 0, 1, &brt, 1<<12, ct, test_brt_cursor_keycompare);
assert(r==0); assert(r==0);
/* insert a bunch of kv pairs */ /* insert a bunch of kv pairs */
...@@ -1026,7 +1033,7 @@ void test_brt_cursor_first_last(int n, DB *db) { ...@@ -1026,7 +1033,7 @@ void test_brt_cursor_first_last(int n, DB *db) {
DBT kbt, vbt; DBT kbt, vbt;
snprintf(key, sizeof key, "%4.4d", i); snprintf(key, sizeof key, "%4.4d", i);
fill_dbt(&kbt, key, strlen(key)+1); fill_dbt_ap(&kbt, key, strlen(key)+1, &my_app_private);
v = i; v = i;
fill_dbt(&vbt, &v, sizeof v); fill_dbt(&vbt, &v, sizeof v);
r = brt_insert(brt, &kbt, &vbt, db, 0); r = brt_insert(brt, &kbt, &vbt, db, 0);
...@@ -1034,10 +1041,10 @@ void test_brt_cursor_first_last(int n, DB *db) { ...@@ -1034,10 +1041,10 @@ void test_brt_cursor_first_last(int n, DB *db) {
} }
if (n == 0) { if (n == 0) {
assert_cursor_notfound(brt, DB_FIRST, db); assert_cursor_notfound(brt, DB_FIRST, db, &my_app_private);
assert_cursor_notfound(brt, DB_LAST, db); assert_cursor_notfound(brt, DB_LAST, db, &my_app_private);
} else } else
assert_cursor_first_last(brt, 0, n-1, db); assert_cursor_first_last(brt, 0, n-1, db, &my_app_private);
r = close_brt(brt); r = close_brt(brt);
assert(r==0); assert(r==0);
...@@ -1054,10 +1061,11 @@ void test_brt_cursor_rfirst(int n, DB *db) { ...@@ -1054,10 +1061,11 @@ void test_brt_cursor_rfirst(int n, DB *db) {
BRT brt; BRT brt;
int r; int r;
int i; int i;
int my_app_private;
printf("test_brt_cursor_rfirst:%d %p\n", n, db); printf("test_brt_cursor_rfirst:%d %p\n", n, db);
set_test_db(db); set_test_db_app(db, &my_app_private);
unlink(fname); unlink(fname);
r = brt_create_cachetable(&ct, 0); r = brt_create_cachetable(&ct, 0);
...@@ -1072,7 +1080,7 @@ void test_brt_cursor_rfirst(int n, DB *db) { ...@@ -1072,7 +1080,7 @@ void test_brt_cursor_rfirst(int n, DB *db) {
DBT kbt, vbt; DBT kbt, vbt;
snprintf(key, sizeof key, "%4.4d", i); snprintf(key, sizeof key, "%4.4d", i);
fill_dbt(&kbt, key, strlen(key)+1); fill_dbt_ap(&kbt, key, strlen(key)+1, &my_app_private);
v = i; v = i;
fill_dbt(&vbt, &v, sizeof v); fill_dbt(&vbt, &v, sizeof v);
r = brt_insert(brt, &kbt, &vbt, db, 0); r = brt_insert(brt, &kbt, &vbt, db, 0);
...@@ -1080,9 +1088,9 @@ void test_brt_cursor_rfirst(int n, DB *db) { ...@@ -1080,9 +1088,9 @@ void test_brt_cursor_rfirst(int n, DB *db) {
} }
if (n == 0) if (n == 0)
assert_cursor_notfound(brt, DB_FIRST, db); assert_cursor_notfound(brt, DB_FIRST, db, &my_app_private);
else else
assert_cursor_value(brt, DB_FIRST, 0, db); assert_cursor_value(brt, DB_FIRST, 0, db, &my_app_private);
r = close_brt(brt); r = close_brt(brt);
assert(r==0); assert(r==0);
...@@ -1093,7 +1101,7 @@ void test_brt_cursor_rfirst(int n, DB *db) { ...@@ -1093,7 +1101,7 @@ void test_brt_cursor_rfirst(int n, DB *db) {
clear_test_db(); clear_test_db();
} }
void assert_cursor_walk(BRT brt, int n, DB *db) { void assert_cursor_walk(BRT brt, int n, DB *db, void *app_private) {
BRT_CURSOR cursor; BRT_CURSOR cursor;
int i; int i;
int r; int r;
...@@ -1106,7 +1114,7 @@ void assert_cursor_walk(BRT brt, int n, DB *db) { ...@@ -1106,7 +1114,7 @@ void assert_cursor_walk(BRT brt, int n, DB *db) {
DBT kbt, vbt; DBT kbt, vbt;
long long v; long long v;
init_dbt(&kbt); kbt.flags = DB_DBT_MALLOC; init_dbt(&kbt); kbt.flags = DB_DBT_MALLOC; kbt.app_private = app_private;
init_dbt(&vbt); vbt.flags = DB_DBT_MALLOC; init_dbt(&vbt); vbt.flags = DB_DBT_MALLOC;
r = brt_cursor_get(cursor, &kbt, &vbt, DB_NEXT, db, null_txn); r = brt_cursor_get(cursor, &kbt, &vbt, DB_NEXT, db, null_txn);
if (r != 0) if (r != 0)
...@@ -1131,10 +1139,11 @@ void test_brt_cursor_walk(int n, DB *db) { ...@@ -1131,10 +1139,11 @@ void test_brt_cursor_walk(int n, DB *db) {
BRT brt; BRT brt;
int r; int r;
int i; int i;
int my_app_private;
printf("test_brt_cursor_walk:%d %p\n", n, db); printf("test_brt_cursor_walk:%d %p\n", n, db);
set_test_db(db); set_test_db_app(db, &my_app_private);
unlink(fname); unlink(fname);
r = brt_create_cachetable(&ct, 0); r = brt_create_cachetable(&ct, 0);
...@@ -1149,7 +1158,7 @@ void test_brt_cursor_walk(int n, DB *db) { ...@@ -1149,7 +1158,7 @@ void test_brt_cursor_walk(int n, DB *db) {
DBT kbt, vbt; DBT kbt, vbt;
snprintf(key, sizeof key, "%4.4d", i); snprintf(key, sizeof key, "%4.4d", i);
fill_dbt(&kbt, key, strlen(key)+1); fill_dbt_ap(&kbt, key, strlen(key)+1, &my_app_private);
v = i; v = i;
fill_dbt(&vbt, &v, sizeof v); fill_dbt(&vbt, &v, sizeof v);
r = brt_insert(brt, &kbt, &vbt, db, 0); r = brt_insert(brt, &kbt, &vbt, db, 0);
...@@ -1157,7 +1166,7 @@ void test_brt_cursor_walk(int n, DB *db) { ...@@ -1157,7 +1166,7 @@ void test_brt_cursor_walk(int n, DB *db) {
} }
/* walk the tree */ /* walk the tree */
assert_cursor_walk(brt, n, db); assert_cursor_walk(brt, n, db, &my_app_private);
r = close_brt(brt); r = close_brt(brt);
assert(r==0); assert(r==0);
...@@ -1168,7 +1177,7 @@ void test_brt_cursor_walk(int n, DB *db) { ...@@ -1168,7 +1177,7 @@ void test_brt_cursor_walk(int n, DB *db) {
clear_test_db(); clear_test_db();
} }
void assert_cursor_rwalk(BRT brt, int n, DB *db) { void assert_cursor_rwalk(BRT brt, int n, DB *db, void *app_private) {
BRT_CURSOR cursor; BRT_CURSOR cursor;
int i; int i;
int r; int r;
...@@ -1181,7 +1190,7 @@ void assert_cursor_rwalk(BRT brt, int n, DB *db) { ...@@ -1181,7 +1190,7 @@ void assert_cursor_rwalk(BRT brt, int n, DB *db) {
DBT kbt, vbt; DBT kbt, vbt;
long long v; long long v;
init_dbt(&kbt); kbt.flags = DB_DBT_MALLOC; init_dbt(&kbt); kbt.flags = DB_DBT_MALLOC; kbt.app_private = app_private;
init_dbt(&vbt); vbt.flags = DB_DBT_MALLOC; init_dbt(&vbt); vbt.flags = DB_DBT_MALLOC;
r = brt_cursor_get(cursor, &kbt, &vbt, DB_PREV, db, null_txn); r = brt_cursor_get(cursor, &kbt, &vbt, DB_PREV, db, null_txn);
if (r != 0) if (r != 0)
...@@ -1206,10 +1215,11 @@ void test_brt_cursor_rwalk(int n, DB *db) { ...@@ -1206,10 +1215,11 @@ void test_brt_cursor_rwalk(int n, DB *db) {
BRT brt; BRT brt;
int r; int r;
int i; int i;
int my_app_private;
printf("test_brt_cursor_rwalk:%d %p\n", n, db); printf("test_brt_cursor_rwalk:%d %p\n", n, db);
set_test_db(db); set_test_db_app(db, &my_app_private);
unlink(fname); unlink(fname);
r = brt_create_cachetable(&ct, 0); r = brt_create_cachetable(&ct, 0);
...@@ -1224,7 +1234,7 @@ void test_brt_cursor_rwalk(int n, DB *db) { ...@@ -1224,7 +1234,7 @@ void test_brt_cursor_rwalk(int n, DB *db) {
DBT kbt, vbt; DBT kbt, vbt;
k = htonl(i); k = htonl(i);
fill_dbt(&kbt, &k, sizeof k); fill_dbt_ap(&kbt, &k, sizeof k, &my_app_private);
v = i; v = i;
fill_dbt(&vbt, &v, sizeof v); fill_dbt(&vbt, &v, sizeof v);
r = brt_insert(brt, &kbt, &vbt, db, 0); r = brt_insert(brt, &kbt, &vbt, db, 0);
...@@ -1232,7 +1242,7 @@ void test_brt_cursor_rwalk(int n, DB *db) { ...@@ -1232,7 +1242,7 @@ void test_brt_cursor_rwalk(int n, DB *db) {
} }
/* walk the tree */ /* walk the tree */
assert_cursor_rwalk(brt, n, db); assert_cursor_rwalk(brt, n, db, &my_app_private);
r = close_brt(brt); r = close_brt(brt);
assert(r==0); assert(r==0);
...@@ -1243,7 +1253,7 @@ void test_brt_cursor_rwalk(int n, DB *db) { ...@@ -1243,7 +1253,7 @@ void test_brt_cursor_rwalk(int n, DB *db) {
clear_test_db(); clear_test_db();
} }
void assert_cursor_walk_inorder(BRT brt, int n, DB *db) { void assert_cursor_walk_inorder(BRT brt, int n, DB *db, void *app_private) {
BRT_CURSOR cursor; BRT_CURSOR cursor;
int i; int i;
int r; int r;
...@@ -1258,7 +1268,7 @@ void assert_cursor_walk_inorder(BRT brt, int n, DB *db) { ...@@ -1258,7 +1268,7 @@ void assert_cursor_walk_inorder(BRT brt, int n, DB *db) {
DBT kbt, vbt; DBT kbt, vbt;
long long v; long long v;
init_dbt(&kbt); kbt.flags = DB_DBT_MALLOC; init_dbt(&kbt); kbt.flags = DB_DBT_MALLOC; kbt.app_private = app_private;
init_dbt(&vbt); vbt.flags = DB_DBT_MALLOC; init_dbt(&vbt); vbt.flags = DB_DBT_MALLOC;
r = brt_cursor_get(cursor, &kbt, &vbt, DB_NEXT, db, null_txn); r = brt_cursor_get(cursor, &kbt, &vbt, DB_NEXT, db, null_txn);
if (r != 0) if (r != 0)
...@@ -1287,10 +1297,11 @@ void test_brt_cursor_rand(int n, DB *db) { ...@@ -1287,10 +1297,11 @@ void test_brt_cursor_rand(int n, DB *db) {
BRT brt; BRT brt;
int r; int r;
int i; int i;
int my_app_private;
printf("test_brt_cursor_rand:%d %p\n", n, db); printf("test_brt_cursor_rand:%d %p\n", n, db);
set_test_db(db); set_test_db_app(db, &my_app_private);
unlink(fname); unlink(fname);
r = brt_create_cachetable(&ct, 0); r = brt_create_cachetable(&ct, 0);
...@@ -1307,7 +1318,7 @@ void test_brt_cursor_rand(int n, DB *db) { ...@@ -1307,7 +1318,7 @@ void test_brt_cursor_rand(int n, DB *db) {
for (;;) { for (;;) {
v = ((long long) random() << 32) + random(); v = ((long long) random() << 32) + random();
snprintf(key, sizeof key, "%lld", v); snprintf(key, sizeof key, "%lld", v);
fill_dbt(&kbt, key, strlen(key)+1); fill_dbt_ap(&kbt, key, strlen(key)+1, &my_app_private);
v = i; v = i;
fill_dbt(&vbt, &v, sizeof v); fill_dbt(&vbt, &v, sizeof v);
r = brt_lookup(brt, &kbt, &vbt, db); r = brt_lookup(brt, &kbt, &vbt, db);
...@@ -1322,7 +1333,7 @@ void test_brt_cursor_rand(int n, DB *db) { ...@@ -1322,7 +1333,7 @@ void test_brt_cursor_rand(int n, DB *db) {
} }
/* walk the tree */ /* walk the tree */
assert_cursor_walk_inorder(brt, n, db); assert_cursor_walk_inorder(brt, n, db, &my_app_private);
r = close_brt(brt); r = close_brt(brt);
assert(r==0); assert(r==0);
...@@ -1342,10 +1353,11 @@ void test_brt_cursor_split(int n, DB *db) { ...@@ -1342,10 +1353,11 @@ void test_brt_cursor_split(int n, DB *db) {
int keyseqnum; int keyseqnum;
int i; int i;
DBT kbt, vbt; DBT kbt, vbt;
int my_app_private;
printf("test_brt_cursor_split:%d %p\n", n, db); printf("test_brt_cursor_split:%d %p\n", n, db);
set_test_db(db); set_test_db_app(db, &my_app_private);
unlink(fname); unlink(fname);
r = brt_create_cachetable(&ct, 0); r = brt_create_cachetable(&ct, 0);
...@@ -1359,7 +1371,7 @@ void test_brt_cursor_split(int n, DB *db) { ...@@ -1359,7 +1371,7 @@ void test_brt_cursor_split(int n, DB *db) {
char key[8]; long long v; char key[8]; long long v;
snprintf(key, sizeof key, "%4.4d", keyseqnum); snprintf(key, sizeof key, "%4.4d", keyseqnum);
fill_dbt(&kbt, key, strlen(key)+1); fill_dbt_ap(&kbt, key, strlen(key)+1, &my_app_private);
v = keyseqnum; v = keyseqnum;
fill_dbt(&vbt, &v, sizeof v); fill_dbt(&vbt, &v, sizeof v);
r = brt_insert(brt, &kbt, &vbt, db, 0); r = brt_insert(brt, &kbt, &vbt, db, 0);
...@@ -1371,7 +1383,7 @@ void test_brt_cursor_split(int n, DB *db) { ...@@ -1371,7 +1383,7 @@ void test_brt_cursor_split(int n, DB *db) {
if (test_cursor_debug) printf("key: "); if (test_cursor_debug) printf("key: ");
for (i=0; i<n/2; i++) { for (i=0; i<n/2; i++) {
init_dbt(&kbt); kbt.flags = DB_DBT_MALLOC; init_dbt(&kbt); kbt.flags = DB_DBT_MALLOC; kbt.app_private = &my_app_private;
init_dbt(&vbt); vbt.flags = DB_DBT_MALLOC; init_dbt(&vbt); vbt.flags = DB_DBT_MALLOC;
r = brt_cursor_get(cursor, &kbt, &vbt, DB_NEXT, db, null_txn); r = brt_cursor_get(cursor, &kbt, &vbt, DB_NEXT, db, null_txn);
assert(r==0); assert(r==0);
...@@ -1385,7 +1397,7 @@ void test_brt_cursor_split(int n, DB *db) { ...@@ -1385,7 +1397,7 @@ void test_brt_cursor_split(int n, DB *db) {
char key[8]; long long v; char key[8]; long long v;
snprintf(key, sizeof key, "%4.4d", keyseqnum); snprintf(key, sizeof key, "%4.4d", keyseqnum);
fill_dbt(&kbt, key, strlen(key)+1); fill_dbt_ap(&kbt, key, strlen(key)+1, &my_app_private);
v = keyseqnum; v = keyseqnum;
fill_dbt(&vbt, &v, sizeof v); fill_dbt(&vbt, &v, sizeof v);
r = brt_insert(brt, &kbt, &vbt, db, 0); r = brt_insert(brt, &kbt, &vbt, db, 0);
...@@ -1394,7 +1406,7 @@ void test_brt_cursor_split(int n, DB *db) { ...@@ -1394,7 +1406,7 @@ void test_brt_cursor_split(int n, DB *db) {
if (test_cursor_debug) printf("key: "); if (test_cursor_debug) printf("key: ");
for (;;) { for (;;) {
init_dbt(&kbt); kbt.flags = DB_DBT_MALLOC; init_dbt(&kbt); kbt.flags = DB_DBT_MALLOC; kbt.app_private = &my_app_private;
init_dbt(&vbt); vbt.flags = DB_DBT_MALLOC; init_dbt(&vbt); vbt.flags = DB_DBT_MALLOC;
r = brt_cursor_get(cursor, &kbt, &vbt, DB_NEXT, db, null_txn); r = brt_cursor_get(cursor, &kbt, &vbt, DB_NEXT, db, null_txn);
if (r != 0) if (r != 0)
...@@ -1425,8 +1437,9 @@ void test_multiple_brt_cursors(int n, DB *db) { ...@@ -1425,8 +1437,9 @@ void test_multiple_brt_cursors(int n, DB *db) {
CACHETABLE ct; CACHETABLE ct;
BRT brt; BRT brt;
BRT_CURSOR cursors[n]; BRT_CURSOR cursors[n];
int my_app_private;
set_test_db(db); set_test_db_app(db, &my_app_private);
unlink(fname); unlink(fname);
r = brt_create_cachetable(&ct, 0); r = brt_create_cachetable(&ct, 0);
...@@ -1475,8 +1488,9 @@ void test_multiple_brt_cursor_walk(int n, DB *db) { ...@@ -1475,8 +1488,9 @@ void test_multiple_brt_cursor_walk(int n, DB *db) {
const int cursor_gap = 1000; const int cursor_gap = 1000;
const int ncursors = n/cursor_gap; const int ncursors = n/cursor_gap;
BRT_CURSOR cursors[ncursors]; BRT_CURSOR cursors[ncursors];
int my_app_private;
set_test_db(db); set_test_db_app(db, &my_app_private);
unlink(fname); unlink(fname);
int nodesize = 1<<12; int nodesize = 1<<12;
...@@ -1503,7 +1517,7 @@ void test_multiple_brt_cursor_walk(int n, DB *db) { ...@@ -1503,7 +1517,7 @@ void test_multiple_brt_cursor_walk(int n, DB *db) {
for (i=0; i<n; i++) { for (i=0; i<n; i++) {
k = htonl(i); k = htonl(i);
v = i; v = i;
fill_dbt(&key, &k, sizeof k); fill_dbt_ap(&key, &k, sizeof k, &my_app_private);
fill_dbt(&val, &v, sizeof v); fill_dbt(&val, &v, sizeof v);
r = brt_insert(brt, &key, &val, db, 0); r = brt_insert(brt, &key, &val, db, 0);
assert(r == 0); assert(r == 0);
...@@ -1511,7 +1525,7 @@ void test_multiple_brt_cursor_walk(int n, DB *db) { ...@@ -1511,7 +1525,7 @@ void test_multiple_brt_cursor_walk(int n, DB *db) {
/* point cursor i / cursor_gap to the current last key i */ /* point cursor i / cursor_gap to the current last key i */
if ((i % cursor_gap) == 0) { if ((i % cursor_gap) == 0) {
c = i / cursor_gap; c = i / cursor_gap;
init_dbt(&key); key.flags = DB_DBT_MALLOC; init_dbt(&key); key.flags = DB_DBT_MALLOC; key.app_private = &my_app_private;
init_dbt(&val); val.flags = DB_DBT_MALLOC; init_dbt(&val); val.flags = DB_DBT_MALLOC;
r = brt_cursor_get(cursors[c], &key, &val, DB_LAST, db, null_txn); r = brt_cursor_get(cursors[c], &key, &val, DB_LAST, db, null_txn);
assert(r == 0); assert(r == 0);
...@@ -1523,7 +1537,7 @@ void test_multiple_brt_cursor_walk(int n, DB *db) { ...@@ -1523,7 +1537,7 @@ void test_multiple_brt_cursor_walk(int n, DB *db) {
/* walk the cursors by cursor_gap */ /* walk the cursors by cursor_gap */
for (i=0; i<cursor_gap; i++) { for (i=0; i<cursor_gap; i++) {
for (c=0; c<ncursors; c++) { for (c=0; c<ncursors; c++) {
init_dbt(&key); key.flags = DB_DBT_MALLOC; init_dbt(&key); key.flags = DB_DBT_MALLOC; key.app_private = &my_app_private;
init_dbt(&val); val.flags = DB_DBT_MALLOC; init_dbt(&val); val.flags = DB_DBT_MALLOC;
r = brt_cursor_get(cursors[c], &key, &val, DB_NEXT, db, null_txn); r = brt_cursor_get(cursors[c], &key, &val, DB_NEXT, db, null_txn);
if (r == DB_NOTFOUND) { if (r == DB_NOTFOUND) {
...@@ -1563,8 +1577,9 @@ void test_brt_cursor_set(int n, int cursor_op, DB *db) { ...@@ -1563,8 +1577,9 @@ void test_brt_cursor_set(int n, int cursor_op, DB *db) {
CACHETABLE ct; CACHETABLE ct;
BRT brt; BRT brt;
BRT_CURSOR cursor; BRT_CURSOR cursor;
int my_app_private;
set_test_db(db); set_test_db_app(db, &my_app_private);
unlink(fname); unlink(fname);
r = brt_create_cachetable(&ct, 0); r = brt_create_cachetable(&ct, 0);
...@@ -1581,8 +1596,8 @@ void test_brt_cursor_set(int n, int cursor_op, DB *db) { ...@@ -1581,8 +1596,8 @@ void test_brt_cursor_set(int n, int cursor_op, DB *db) {
for (i=0; i<n; i++) { for (i=0; i<n; i++) {
k = htonl(10*i); k = htonl(10*i);
v = 10*i; v = 10*i;
fill_dbt(&key, &k, sizeof k); fill_dbt_ap(&key, &k, sizeof k, &my_app_private);
fill_dbt(&val, &v, sizeof v); fill_dbt_ap(&val, &v, sizeof v, &my_app_private);
r = brt_insert(brt, &key, &val, db, 0); r = brt_insert(brt, &key, &val, db, 0);
assert(r == 0); assert(r == 0);
} }
...@@ -1596,7 +1611,7 @@ void test_brt_cursor_set(int n, int cursor_op, DB *db) { ...@@ -1596,7 +1611,7 @@ void test_brt_cursor_set(int n, int cursor_op, DB *db) {
v = 10*(random() % n); v = 10*(random() % n);
k = htonl(v); k = htonl(v);
fill_dbt(&key, &k, sizeof k); fill_dbt_ap(&key, &k, sizeof k, &my_app_private);
init_dbt(&val); val.flags = DB_DBT_MALLOC; init_dbt(&val); val.flags = DB_DBT_MALLOC;
r = brt_cursor_get(cursor, &key, &val, cursor_op, db, null_txn); r = brt_cursor_get(cursor, &key, &val, cursor_op, db, null_txn);
assert(r == 0); assert(r == 0);
...@@ -1611,7 +1626,7 @@ void test_brt_cursor_set(int n, int cursor_op, DB *db) { ...@@ -1611,7 +1626,7 @@ void test_brt_cursor_set(int n, int cursor_op, DB *db) {
if (i % 10 == 0) if (i % 10 == 0)
continue; continue;
k = htonl(i); k = htonl(i);
fill_dbt(&key, &k, sizeof k); fill_dbt_ap(&key, &k, sizeof k, &my_app_private);
init_dbt(&val); val.flags = DB_DBT_MALLOC; init_dbt(&val); val.flags = DB_DBT_MALLOC;
r = brt_cursor_get(cursor, &key, &val, DB_SET, db, null_txn); r = brt_cursor_get(cursor, &key, &val, DB_SET, db, null_txn);
assert(r == DB_NOTFOUND); assert(r == DB_NOTFOUND);
...@@ -1637,8 +1652,9 @@ void test_brt_cursor_set_range(int n, DB *db) { ...@@ -1637,8 +1652,9 @@ void test_brt_cursor_set_range(int n, DB *db) {
CACHETABLE ct; CACHETABLE ct;
BRT brt; BRT brt;
BRT_CURSOR cursor; BRT_CURSOR cursor;
int my_app_private;
set_test_db(db); set_test_db_app(db, &my_app_private);
unlink(fname); unlink(fname);
r = brt_create_cachetable(&ct, 0); r = brt_create_cachetable(&ct, 0);
...@@ -1656,8 +1672,8 @@ void test_brt_cursor_set_range(int n, DB *db) { ...@@ -1656,8 +1672,8 @@ void test_brt_cursor_set_range(int n, DB *db) {
for (i=0; i<n; i++) { for (i=0; i<n; i++) {
k = htonl(10*i); k = htonl(10*i);
v = 10*i; v = 10*i;
fill_dbt(&key, &k, sizeof k); fill_dbt_ap(&key, &k, sizeof k, &my_app_private);
fill_dbt(&val, &v, sizeof v); fill_dbt_ap(&val, &v, sizeof v, &my_app_private);
r = brt_insert(brt, &key, &val, db, 0); r = brt_insert(brt, &key, &val, db, 0);
assert(r == 0); assert(r == 0);
} }
...@@ -1672,7 +1688,7 @@ void test_brt_cursor_set_range(int n, DB *db) { ...@@ -1672,7 +1688,7 @@ void test_brt_cursor_set_range(int n, DB *db) {
v = random() % (10*n); v = random() % (10*n);
k = htonl(v); k = htonl(v);
fill_dbt(&key, &k, sizeof k); fill_dbt_ap(&key, &k, sizeof k, &my_app_private);
init_dbt(&val); val.flags = DB_DBT_MALLOC; init_dbt(&val); val.flags = DB_DBT_MALLOC;
r = brt_cursor_get(cursor, &key, &val, DB_SET_RANGE, db, null_txn); r = brt_cursor_get(cursor, &key, &val, DB_SET_RANGE, db, null_txn);
if (v > max_key) if (v > max_key)
...@@ -1707,8 +1723,9 @@ void test_brt_cursor_delete(int n, DB *db) { ...@@ -1707,8 +1723,9 @@ void test_brt_cursor_delete(int n, DB *db) {
CACHETABLE ct; CACHETABLE ct;
BRT brt; BRT brt;
BRT_CURSOR cursor; BRT_CURSOR cursor;
int my_app_private;
set_test_db(db); set_test_db_app(db, &my_app_private);
unlink(fname); unlink(fname);
error = brt_create_cachetable(&ct, 0); error = brt_create_cachetable(&ct, 0);
...@@ -1728,7 +1745,7 @@ void test_brt_cursor_delete(int n, DB *db) { ...@@ -1728,7 +1745,7 @@ void test_brt_cursor_delete(int n, DB *db) {
for (i=0; i<n; i++) { for (i=0; i<n; i++) {
k = htonl(i); k = htonl(i);
v = i; v = i;
fill_dbt(&key, &k, sizeof k); fill_dbt_ap(&key, &k, sizeof k, &my_app_private);
fill_dbt(&val, &v, sizeof v); fill_dbt(&val, &v, sizeof v);
error = brt_insert(brt, &key, &val, db, 0); error = brt_insert(brt, &key, &val, db, 0);
assert(error == 0); assert(error == 0);
...@@ -1736,7 +1753,7 @@ void test_brt_cursor_delete(int n, DB *db) { ...@@ -1736,7 +1753,7 @@ void test_brt_cursor_delete(int n, DB *db) {
/* walk the tree and delete under the cursor */ /* walk the tree and delete under the cursor */
for (;;) { for (;;) {
init_dbt(&key); key.flags = DB_DBT_MALLOC; init_dbt(&key); key.flags = DB_DBT_MALLOC; key.app_private = &my_app_private;
init_dbt(&val); val.flags = DB_DBT_MALLOC; init_dbt(&val); val.flags = DB_DBT_MALLOC;
error = brt_cursor_get(cursor, &key, &val, DB_NEXT, db, null_txn); error = brt_cursor_get(cursor, &key, &val, DB_NEXT, db, null_txn);
if (error == DB_NOTFOUND) if (error == DB_NOTFOUND)
...@@ -1772,8 +1789,9 @@ void test_brt_cursor_get_both(int n, DB *db) { ...@@ -1772,8 +1789,9 @@ void test_brt_cursor_get_both(int n, DB *db) {
CACHETABLE ct; CACHETABLE ct;
BRT brt; BRT brt;
BRT_CURSOR cursor; BRT_CURSOR cursor;
int my_app_private;
set_test_db(db); set_test_db_app(db, &my_app_private);
unlink(fname); unlink(fname);
error = brt_create_cachetable(&ct, 0); error = brt_create_cachetable(&ct, 0);
...@@ -1791,7 +1809,7 @@ void test_brt_cursor_get_both(int n, DB *db) { ...@@ -1791,7 +1809,7 @@ void test_brt_cursor_get_both(int n, DB *db) {
/* verify get_both on an empty tree fails */ /* verify get_both on an empty tree fails */
k = htonl(n+1); k = htonl(n+1);
v = n+1; v = n+1;
fill_dbt(&key, &k, sizeof k); fill_dbt_ap(&key, &k, sizeof k, &my_app_private);
fill_dbt(&val, &v, sizeof v); fill_dbt(&val, &v, sizeof v);
error = brt_cursor_get(cursor, &key, &val, DB_GET_BOTH, db, null_txn); error = brt_cursor_get(cursor, &key, &val, DB_GET_BOTH, db, null_txn);
assert(error == DB_NOTFOUND); assert(error == DB_NOTFOUND);
...@@ -1801,7 +1819,7 @@ void test_brt_cursor_get_both(int n, DB *db) { ...@@ -1801,7 +1819,7 @@ void test_brt_cursor_get_both(int n, DB *db) {
for (i=0; i<n; i++) { for (i=0; i<n; i++) {
k = htonl(i); k = htonl(i);
v = i; v = i;
fill_dbt(&key, &k, sizeof k); fill_dbt_ap(&key, &k, sizeof k, &my_app_private);
fill_dbt(&val, &v, sizeof v); fill_dbt(&val, &v, sizeof v);
error = brt_insert(brt, &key, &val, db, 0); error = brt_insert(brt, &key, &val, db, 0);
assert(error == 0); assert(error == 0);
...@@ -1810,7 +1828,7 @@ void test_brt_cursor_get_both(int n, DB *db) { ...@@ -1810,7 +1828,7 @@ void test_brt_cursor_get_both(int n, DB *db) {
/* verify that keys not in the tree fail */ /* verify that keys not in the tree fail */
k = htonl(n+1); k = htonl(n+1);
v = n-1; v = n-1;
fill_dbt(&key, &k, sizeof k); fill_dbt_ap(&key, &k, sizeof k, &my_app_private);
fill_dbt(&val, &v, sizeof v); fill_dbt(&val, &v, sizeof v);
error = brt_cursor_get(cursor, &key, &val, DB_GET_BOTH, db, null_txn); error = brt_cursor_get(cursor, &key, &val, DB_GET_BOTH, db, null_txn);
assert(error == DB_NOTFOUND); assert(error == DB_NOTFOUND);
...@@ -1819,8 +1837,8 @@ void test_brt_cursor_get_both(int n, DB *db) { ...@@ -1819,8 +1837,8 @@ void test_brt_cursor_get_both(int n, DB *db) {
for (i=0; i<n; i++) { for (i=0; i<n; i++) {
k = htonl(i); k = htonl(i);
v = i+1; v = i+1;
fill_dbt(&key, &k, sizeof k); fill_dbt_ap(&key, &k, sizeof k, &my_app_private);
fill_dbt(&val, &v, sizeof v); fill_dbt_ap(&val, &v, sizeof v, &my_app_private);
error = brt_cursor_get(cursor, &key, &val, DB_GET_BOTH, db, null_txn); error = brt_cursor_get(cursor, &key, &val, DB_GET_BOTH, db, null_txn);
assert(error == DB_NOTFOUND); assert(error == DB_NOTFOUND);
} }
...@@ -1829,8 +1847,8 @@ void test_brt_cursor_get_both(int n, DB *db) { ...@@ -1829,8 +1847,8 @@ void test_brt_cursor_get_both(int n, DB *db) {
for (i=0; i<n; i++) { for (i=0; i<n; i++) {
k = htonl(i); k = htonl(i);
v = i; v = i;
fill_dbt(&key, &k, sizeof k); fill_dbt_ap(&key, &k, sizeof k, &my_app_private);
fill_dbt(&val, &v, sizeof v); fill_dbt_ap(&val, &v, sizeof v, &my_app_private);
error = brt_cursor_get(cursor, &key, &val, DB_GET_BOTH, db, null_txn); error = brt_cursor_get(cursor, &key, &val, DB_GET_BOTH, db, null_txn);
assert(error == 0); assert(error == 0);
#ifdef DB_CURRENT #ifdef DB_CURRENT
...@@ -1850,8 +1868,8 @@ void test_brt_cursor_get_both(int n, DB *db) { ...@@ -1850,8 +1868,8 @@ void test_brt_cursor_get_both(int n, DB *db) {
k = htonl(i); k = htonl(i);
v = i; v = i;
fill_dbt(&key, &k, sizeof k); fill_dbt_ap(&key, &k, sizeof k, &my_app_private);
fill_dbt(&val, &v, sizeof v); fill_dbt_ap(&val, &v, sizeof v, &my_app_private);
error = brt_cursor_get(cursor, &key, &val, DB_GET_BOTH, db, null_txn); error = brt_cursor_get(cursor, &key, &val, DB_GET_BOTH, db, null_txn);
assert(error == DB_NOTFOUND); assert(error == DB_NOTFOUND);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment