diff --git a/src/tests/test_dup_dup.c b/src/tests/test_dup_dup.c
index e8b4404a81d..92932dca2f2 100644
--- a/src/tests/test_dup_dup.c
+++ b/src/tests/test_dup_dup.c
@@ -17,11 +17,21 @@ int errors;
 
 void db_put(DB *db, int k, int v, u_int32_t put_flags, int rexpect) {
     DBT key, val;
+    // Turn off error messages if we expect there to be an error.
+    if (rexpect!=0) {
+	db->set_errfile(db, 0);
+    } else {
+	db->set_errfile(db, stderr);
+    }
     int r = db->put(db, 0, dbt_init(&key, &k, sizeof k), dbt_init(&val, &v, sizeof v), put_flags);
     if (r != rexpect) {
 #if USE_TDB
         if (r == EINVAL && put_flags == DB_NODUPDATA) {
-            printf("%s:%d:WARNING:tokdub does not support DB_NODUPDATA yet\n", __FILE__, __LINE__);
+	    static int did_warn = 0;
+	    if (!did_warn) {
+		printf("%s:%d:WARNING:tokdub does not support DB_NODUPDATA yet\n", __FILE__, __LINE__);
+		did_warn=1;
+	    }
             return;
         }
 #endif
@@ -30,6 +40,19 @@ void db_put(DB *db, int k, int v, u_int32_t put_flags, int rexpect) {
     }
 }
 
+int maybe_do_db_dup_warning (int r, int dup_mode) {
+#if USE_TDB
+    static int did_warn=0;
+    if (r != 0 && dup_mode == DB_DUP) {
+	if (did_warn==0) {
+	    did_warn=1;
+	    printf("%s:%d:WARNING: tokudb does not support DB_DUP\n", __FILE__, __LINE__);
+	}
+        return 1;
+    }
+#endif
+    return 0;
+}
 void test_dup_key(int dup_mode, u_int32_t put_flags, int rexpect, int rexpectdupdup) {
     if (verbose) printf("test_dup_key: %d, %u, %d, %d\n", dup_mode, put_flags, rexpect, rexpectdupdup);
 
@@ -45,13 +68,10 @@ void test_dup_key(int dup_mode, u_int32_t put_flags, int rexpect, int rexpectdup
     r = db_create(&db, null_env, 0); assert(r == 0);
     db->set_errfile(db, stderr);
     r = db->set_flags(db, dup_mode);
-#if USE_TDB
-    if (r != 0 && dup_mode == DB_DUP) {
-        printf("%s:%d:WARNING: tokudb does not support DB_DUP\n", __FILE__, __LINE__);
+    if (maybe_do_db_dup_warning(r, dup_mode)) {
         r = db->close(db, 0); assert(r == 0);
-        return;
+	return;
     }
-#endif
     assert(r == 0);
     r = db->set_pagesize(db, 4096); assert(r == 0);
     r = db->open(db, null_txn, fname, "main", DB_BTREE, DB_CREATE, 0666); assert(r == 0);
@@ -96,13 +116,10 @@ void test_dup_dup(int dup_mode, u_int32_t put_flags, int rexpect, int rexpectdup
     r = db_create(&db, null_env, 0); assert(r == 0);
     db->set_errfile(db, stderr);
     r = db->set_flags(db, dup_mode);
-#if USE_TDB
-    if (r != 0 && dup_mode == DB_DUP) {
-        printf("%s:%d:WARNING: tokudb does not support DB_DUP\n", __FILE__, __LINE__);
+    if (maybe_do_db_dup_warning(r, dup_mode)) {
         r = db->close(db, 0); assert(r == 0);
-        return;
+	return;
     }
-#endif
     assert(r == 0);
     r = db->set_pagesize(db, 4096); assert(r == 0);
     r = db->open(db, null_txn, fname, "main", DB_BTREE, DB_CREATE, 0666); assert(r == 0);
@@ -147,13 +164,10 @@ void test_put_00_01_01(int dup_mode, u_int32_t put_flags) {
     r = db_create(&db, null_env, 0); assert(r == 0);
     db->set_errfile(db, stderr);
     r = db->set_flags(db, dup_mode);
-#if USE_TDB
-    if (r != 0 && dup_mode == DB_DUP) {
-        printf("%s:%d:WARNING: tokudb does not support DB_DUP\n", __FILE__, __LINE__);
+    if (maybe_do_db_dup_warning(r, dup_mode)) {
         r = db->close(db, 0); assert(r == 0);
-        return;
+	return;
     }
-#endif
     assert(r == 0);
     r = db->set_pagesize(db, 4096); assert(r == 0);
     r = db->open(db, null_txn, fname, "main", DB_BTREE, DB_CREATE, 0666); assert(r == 0);
@@ -194,6 +208,11 @@ void test_put_00_01_01(int dup_mode, u_int32_t put_flags) {
 
 int main(int argc, const char *argv[]) {
 
+    int yes_overwrite=0;
+#ifdef USE_TDB
+    yes_overwrite = DB_YESOVERWRITE;
+#endif
+
     parse_args(argc, argv);
   
     system("rm -rf " DIR);
@@ -202,11 +221,8 @@ int main(int argc, const char *argv[]) {
     test_put_00_01_01(0, 0); 
     test_put_00_01_01(0, DB_NOOVERWRITE); 
 
-    test_put_00_01_01(DB_DUP | DB_DUPSORT, 0); 
+    test_put_00_01_01(DB_DUP | DB_DUPSORT, yes_overwrite); 
     test_put_00_01_01(DB_DUP | DB_DUPSORT, DB_NOOVERWRITE); 
-#if USE_TDB
-    test_put_00_01_01(DB_DUP | DB_DUPSORT, DB_YESOVERWRITE);
-#endif
 
     /* dup key uniq data */
     test_dup_key(0,                   0,               0,        0);
@@ -218,8 +234,8 @@ int main(int argc, const char *argv[]) {
     test_dup_key(DB_DUP,              DB_NOOVERWRITE,  0,        DB_KEYEXIST);
 
 #if USE_TDB
-    //    test_dup_key(DB_DUP | DB_DUPSORT, 0,               EINVAL,   EINVAL);
-    test_dup_key(DB_DUP | DB_DUPSORT, 0,               0,        0);
+    test_dup_key(DB_DUP | DB_DUPSORT, 0,               EINVAL,   EINVAL);
+    //test_dup_key(DB_DUP | DB_DUPSORT, 0,               0,        0);
     test_dup_key(DB_DUP | DB_DUPSORT, DB_YESOVERWRITE, 0,        0);
 #else
     test_dup_key(DB_DUP | DB_DUPSORT, 0,               0,        0);
@@ -238,7 +254,7 @@ int main(int argc, const char *argv[]) {
 
 #if USE_TDB
     //    test_dup_dup(DB_DUP | DB_DUPSORT, 0,               EINVAL,   EINVAL);
-    test_dup_dup(DB_DUP | DB_DUPSORT, 0,               0,        DB_KEYEXIST);
+    //test_dup_dup(DB_DUP | DB_DUPSORT, 0,               0,        DB_KEYEXIST);
     test_dup_dup(DB_DUP | DB_DUPSORT, DB_YESOVERWRITE, 0,        0);
 #else
     test_dup_dup(DB_DUP | DB_DUPSORT, 0              , 0,        DB_KEYEXIST);