Commit 4b81ce0d authored by Yoni Fogel's avatar Yoni Fogel

Modified test_dup_dup to handle more cases. Addresses #124

git-svn-id: file:///svn/tokudb@966 c7de825b-a66e-492c-adef-691d508d4ae1
parent d1569489
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include <sys/stat.h> #include <sys/stat.h>
#include <arpa/inet.h> #include <arpa/inet.h>
#include <db.h> #include <db.h>
#include <errno.h>
#include "test.h" #include "test.h"
...@@ -25,14 +26,17 @@ DBT *dbt_init_malloc(DBT *dbt) { ...@@ -25,14 +26,17 @@ DBT *dbt_init_malloc(DBT *dbt) {
return dbt; return dbt;
} }
void db_put(DB *db, int k, int v) { void db_put(DB *db, int k, int v, u_int32_t put_flags, int rexpect) {
DBT key, val; DBT key, val;
int r = db->put(db, 0, dbt_init(&key, &k, sizeof k), dbt_init(&val, &v, sizeof v), 0); int r = db->put(db, 0, dbt_init(&key, &k, sizeof k), dbt_init(&val, &v, sizeof v), put_flags);
assert(r == 0); if (r != rexpect) {
printf("Expected %d, got %d\n", rexpect, r);
assert(r == rexpect);
}
} }
void test_dup_dup(int dup_mode) { void test_dup_dup(int dup_mode, u_int32_t put_flags, int rexpect, int rexpectdupdup) {
if (verbose) printf("test_dup_dup: %d\n", dup_mode); if (verbose) printf("test_dup_dup: %d, %u, %d, %d\n", dup_mode, put_flags, rexpect, rexpectdupdup);
DB_ENV * const null_env = 0; DB_ENV * const null_env = 0;
DB *db; DB *db;
...@@ -52,8 +56,8 @@ void test_dup_dup(int dup_mode) { ...@@ -52,8 +56,8 @@ void test_dup_dup(int dup_mode) {
r = db->open(db, null_txn, fname, "main", DB_BTREE, DB_CREATE, 0666); r = db->open(db, null_txn, fname, "main", DB_BTREE, DB_CREATE, 0666);
assert(r == 0); assert(r == 0);
db_put(db, 0, 0); db_put(db, 0, 0, put_flags, rexpect);
db_put(db, 0, 0); db_put(db, 0, 0, put_flags, rexpectdupdup);
DBC *cursor; DBC *cursor;
r = db->cursor(db, null_txn, &cursor, 0); r = db->cursor(db, null_txn, &cursor, 0);
...@@ -68,7 +72,7 @@ void test_dup_dup(int dup_mode) { ...@@ -68,7 +72,7 @@ void test_dup_dup(int dup_mode) {
int kk, vv; int kk, vv;
memcpy(&kk, key.data, key.size); memcpy(&kk, key.data, key.size);
memcpy(&vv, val.data, val.size); memcpy(&vv, val.data, val.size);
printf("kk %d vv %d\n", kk, vv); if (verbose) printf("kk %d vv %d\n", kk, vv);
free(key.data); free(key.data);
free(val.data); free(val.data);
} }
...@@ -87,8 +91,14 @@ int main(int argc, const char *argv[]) { ...@@ -87,8 +91,14 @@ int main(int argc, const char *argv[]) {
system("rm -rf " DIR); system("rm -rf " DIR);
mkdir(DIR, 0777); mkdir(DIR, 0777);
test_dup_dup(0); test_dup_dup(0, 0, 0, 0);
test_dup_dup(DB_DUP + DB_DUPSORT); test_dup_dup(0, DB_NODUPDATA, EINVAL, EINVAL);
test_dup_dup(0, DB_NOOVERWRITE, 0, DB_KEYEXIST);
test_dup_dup(DB_DUP, 0, 0, 0);
test_dup_dup(DB_DUP, DB_NODUPDATA, EINVAL, EINVAL);
test_dup_dup(DB_DUP, DB_NOOVERWRITE, 0, DB_KEYEXIST);
test_dup_dup(DB_DUP | DB_DUPSORT, 0, 0, DB_KEYEXIST);
test_dup_dup(DB_DUP | DB_DUPSORT, DB_NODUPDATA, 0, DB_KEYEXIST);
test_dup_dup(DB_DUP | DB_DUPSORT, DB_NOOVERWRITE, 0, DB_KEYEXIST);
return 0; return 0;
} }
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