strsplit: remove nump argument
[ccan] / ccan / tdb / test / run-wronghash-fail.c
index 2804515a363b19b4c82752560cc0b81f100710d1..17fd867e980db322a918a33aca640c2212912159 100644 (file)
@@ -9,22 +9,15 @@
 #include <ccan/tdb/error.c>
 #include <ccan/tdb/open.c>
 #include <ccan/tdb/check.c>
-#include <ccan/hash/hash.h>
+#include <ccan/tdb/hash.c>
 #include <ccan/tap/tap.h>
 #include <stdlib.h>
 #include <err.h>
 
-static unsigned int jenkins_hash(TDB_DATA *key)
-{
-       return hash_stable(key->dptr, key->dsize, 0);
-}
-
 static void log_fn(struct tdb_context *tdb, enum tdb_debug_level level, const char *fmt, ...)
 {
        unsigned int *count = tdb_get_logging_private(tdb);
-       /* Old code used to complain about spinlocks when we put something
-          here. */
-       if (strstr(fmt, "wrong hash") || strstr(fmt, "spinlock"))
+       if (strstr(fmt, "hash"))
                (*count)++;
 }
 
@@ -32,9 +25,10 @@ int main(int argc, char *argv[])
 {
        struct tdb_context *tdb;
        unsigned int log_count;
+       TDB_DATA d;
        struct tdb_logging_context log_ctx = { log_fn, &log_count };
 
-       plan_tests(16);
+       plan_tests(28);
 
        /* Create with default hash. */
        log_count = 0;
@@ -42,11 +36,14 @@ int main(int argc, char *argv[])
                          O_CREAT|O_RDWR|O_TRUNC, 0600, &log_ctx, NULL);
        ok1(tdb);
        ok1(log_count == 0);
+       d.dptr = (void *)"Hello";
+       d.dsize = 5;
+       ok1(tdb_store(tdb, d, d, TDB_INSERT) == 0);
        tdb_close(tdb);
 
        /* Fail to open with different hash. */
        tdb = tdb_open_ex("run-wronghash-fail.tdb", 0, 0, O_RDWR, 0,
-                         &log_ctx, jenkins_hash);
+                         &log_ctx, tdb_jenkins_hash);
        ok1(!tdb);
        ok1(log_count == 1);
 
@@ -54,7 +51,7 @@ int main(int argc, char *argv[])
        log_count = 0;
        tdb = tdb_open_ex("run-wronghash-fail.tdb", 0, 0,
                          O_CREAT|O_RDWR|O_TRUNC,
-                         0600, &log_ctx, jenkins_hash);
+                         0600, &log_ctx, tdb_jenkins_hash);
        ok1(tdb);
        ok1(log_count == 0);
        tdb_close(tdb);
@@ -62,36 +59,64 @@ int main(int argc, char *argv[])
        /* Endian should be no problem. */
        log_count = 0;
        tdb = tdb_open_ex("test/jenkins-le-hash.tdb", 0, 0, O_RDWR, 0,
-                         &log_ctx, NULL);
+                         &log_ctx, tdb_old_hash);
        ok1(!tdb);
        ok1(log_count == 1);
 
        log_count = 0;
        tdb = tdb_open_ex("test/jenkins-be-hash.tdb", 0, 0, O_RDWR, 0,
-                         &log_ctx, NULL);
+                         &log_ctx, tdb_old_hash);
        ok1(!tdb);
        ok1(log_count == 1);
 
        log_count = 0;
-       /* Fail to open with defailt hash. */
+       /* Fail to open with old default hash. */
        tdb = tdb_open_ex("run-wronghash-fail.tdb", 0, 0, O_RDWR, 0,
-                         &log_ctx, NULL);
+                         &log_ctx, tdb_old_hash);
        ok1(!tdb);
        ok1(log_count == 1);
 
        log_count = 0;
        tdb = tdb_open_ex("test/jenkins-le-hash.tdb", 0, 0, O_RDONLY,
-                         0, &log_ctx, jenkins_hash);
+                         0, &log_ctx, tdb_jenkins_hash);
        ok1(tdb);
        ok1(log_count == 0);
+       ok1(tdb_check(tdb, NULL, NULL) == 0);
        tdb_close(tdb);
 
        log_count = 0;
        tdb = tdb_open_ex("test/jenkins-be-hash.tdb", 0, 0, O_RDONLY,
-                         0, &log_ctx, jenkins_hash);
+                         0, &log_ctx, tdb_jenkins_hash);
+       ok1(tdb);
+       ok1(log_count == 0);
+       ok1(tdb_check(tdb, NULL, NULL) == 0);
+       tdb_close(tdb);
+
+       /* It should open with jenkins hash if we don't specify. */
+       log_count = 0;
+       tdb = tdb_open_ex("test/jenkins-le-hash.tdb", 0, 0, O_RDWR, 0,
+                         &log_ctx, NULL);
        ok1(tdb);
        ok1(log_count == 0);
+       ok1(tdb_check(tdb, NULL, NULL) == 0);
        tdb_close(tdb);
 
+       log_count = 0;
+       tdb = tdb_open_ex("test/jenkins-be-hash.tdb", 0, 0, O_RDWR, 0,
+                         &log_ctx, NULL);
+       ok1(tdb);
+       ok1(log_count == 0);
+       ok1(tdb_check(tdb, NULL, NULL) == 0);
+       tdb_close(tdb);
+
+       log_count = 0;
+       tdb = tdb_open_ex("run-wronghash-fail.tdb", 0, 0, O_RDONLY,
+                         0, &log_ctx, NULL);
+       ok1(tdb);
+       ok1(log_count == 0);
+       ok1(tdb_check(tdb, NULL, NULL) == 0);
+       tdb_close(tdb);
+
+
        return exit_status();
 }