tdb2: unify tdb1_store into tdb_store
[ccan] / ccan / tdb2 / test / run-tdb1-corrupt.c
index b2dcafadc0e110b59690d828547c575989e0a0d3..373f079512f5689a9b7c420d079b83587ce6268f 100644 (file)
@@ -2,9 +2,9 @@
 #include <ccan/tap/tap.h>
 #include <stdlib.h>
 #include <err.h>
-#include "tdb1-logging.h"
+#include "logging.h"
 
-static int check(TDB1_DATA key, TDB1_DATA data, void *private)
+static int check(TDB_DATA key, TDB_DATA data, void *private)
 {
        unsigned int *sizes = private;
 
@@ -23,26 +23,26 @@ static int check(TDB1_DATA key, TDB1_DATA data, void *private)
        return 0;
 }
 
-static void tdb1_flip_bit(struct tdb1_context *tdb, unsigned int bit)
+static void tdb1_flip_bit(struct tdb_context *tdb, unsigned int bit)
 {
        unsigned int off = bit / CHAR_BIT;
        unsigned char mask = (1 << (bit % CHAR_BIT));
 
-       if (tdb->map_ptr)
-               ((unsigned char *)tdb->map_ptr)[off] ^= mask;
+       if (tdb->file->map_ptr)
+               ((unsigned char *)tdb->file->map_ptr)[off] ^= mask;
        else {
                unsigned char c;
-               if (pread(tdb->fd, &c, 1, off) != 1)
+               if (pread(tdb->file->fd, &c, 1, off) != 1)
                        err(1, "pread");
                c ^= mask;
-               if (pwrite(tdb->fd, &c, 1, off) != 1)
+               if (pwrite(tdb->file->fd, &c, 1, off) != 1)
                        err(1, "pwrite");
        }
 }
 
-static void check_test(struct tdb1_context *tdb)
+static void check_test(struct tdb_context *tdb)
 {
-       TDB1_DATA key, data;
+       TDB_DATA key, data;
        unsigned int i, verifiable, corrupt, sizes[2], dsize, ksize;
 
        ok1(tdb1_check(tdb, NULL, NULL) == 0);
@@ -58,13 +58,13 @@ static void check_test(struct tdb1_context *tdb)
        for (key.dsize = 1; key.dsize <= 5; key.dsize++) {
                ksize += key.dsize;
                dsize += data.dsize;
-               if (tdb1_store(tdb, key, data, TDB1_INSERT) != 0)
+               if (tdb_store(tdb, key, data, TDB_INSERT) != TDB_SUCCESS)
                        abort();
        }
 
        /* This is how many bytes we expect to be verifiable. */
        /* From the file header. */
-       verifiable = strlen(TDB1_MAGIC_FOOD) + 1
+       verifiable = strlen(TDB_MAGIC_FOOD) + 1
                + 2 * sizeof(uint32_t) + 2 * sizeof(tdb1_off_t)
                + 2 * sizeof(uint32_t);
        /* From the free list chain and hash chains. */
@@ -78,7 +78,7 @@ static void check_test(struct tdb1_context *tdb)
        verifiable += ksize + dsize;
 
        /* Flip one bit at a time, make sure it detects verifiable bytes. */
-       for (i = 0, corrupt = 0; i < tdb->map_size * CHAR_BIT; i++) {
+       for (i = 0, corrupt = 0; i < tdb->file->map_size * CHAR_BIT; i++) {
                tdb1_flip_bit(tdb, i);
                memset(sizes, 0, sizeof(sizes));
                if (tdb1_check(tdb, check, sizes) != 0)
@@ -93,26 +93,31 @@ static void check_test(struct tdb1_context *tdb)
 
 int main(int argc, char *argv[])
 {
-       struct tdb1_context *tdb;
+       struct tdb_context *tdb;
+       union tdb_attribute hsize;
+
+       hsize.base.attr = TDB_ATTRIBUTE_TDB1_HASHSIZE;
+       hsize.base.next = &tap_log_attr;
+       hsize.tdb1_hashsize.hsize = 2;
 
        plan_tests(4);
        /* This should use mmap. */
-       tdb = tdb1_open_ex("run-corrupt.tdb", 2, TDB1_CLEAR_IF_FIRST,
-                         O_CREAT|O_TRUNC|O_RDWR, 0600, &taplogctx, NULL);
+       tdb = tdb_open("run-corrupt.tdb1", TDB_VERSION1,
+                      O_CREAT|O_TRUNC|O_RDWR, 0600, &hsize);
 
        if (!tdb)
                abort();
        check_test(tdb);
-       tdb1_close(tdb);
+       tdb_close(tdb);
 
        /* This should not. */
-       tdb = tdb1_open_ex("run-corrupt.tdb", 2, TDB1_CLEAR_IF_FIRST|TDB1_NOMMAP,
-                         O_CREAT|O_TRUNC|O_RDWR, 0600, &taplogctx, NULL);
+       tdb = tdb_open("run-corrupt.tdb1", TDB_VERSION1|TDB_NOMMAP,
+                      O_CREAT|O_TRUNC|O_RDWR, 0600, &hsize);
 
        if (!tdb)
                abort();
        check_test(tdb);
-       tdb1_close(tdb);
+       tdb_close(tdb);
 
        return exit_status();
 }