X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Ftdb2%2Ftest%2Frun-04-basichash.c;h=b92b6bdde05a4d1928094576b03206e9b194864d;hp=491c853fce27fb58b5778edc05f5d22aaa9570cb;hb=5c4a21ab03a428373e7659b9606facf85dcbe17b;hpb=5e8b9af5e7fe5f1ccac407873a3b782b8a629782 diff --git a/ccan/tdb2/test/run-04-basichash.c b/ccan/tdb2/test/run-04-basichash.c index 491c853f..b92b6bdd 100644 --- a/ccan/tdb2/test/run-04-basichash.c +++ b/ccan/tdb2/test/run-04-basichash.c @@ -1,4 +1,5 @@ #include +#include #include #include #include @@ -11,7 +12,7 @@ /* We rig the hash so adjacent-numbered records always clash. */ static uint64_t clash(const void *key, size_t len, uint64_t seed, void *priv) { - return ((uint64_t)*(unsigned int *)key) + return ((uint64_t)*(const unsigned int *)key) << (64 - TDB_TOPLEVEL_HASH_BITS - 1); } @@ -24,7 +25,7 @@ int main(int argc, char *argv[]) struct tdb_data key = { (unsigned char *)&v, sizeof(v) }; struct tdb_data dbuf = { (unsigned char *)&v, sizeof(v) }; union tdb_attribute hattr = { .hash = { .base = { TDB_ATTRIBUTE_HASH }, - .hash_fn = clash } }; + .fn = clash } }; int flags[] = { TDB_INTERNAL, TDB_DEFAULT, TDB_NOMMAP, TDB_INTERNAL|TDB_CONVERT, TDB_CONVERT, TDB_NOMMAP|TDB_CONVERT, @@ -59,23 +60,24 @@ int main(int argc, char *argv[]) ok1(h.hlock_start == 0); ok1(h.hlock_range == 1ULL << (64-(TDB_TOPLEVEL_HASH_BITS-TDB_HASH_GROUP_BITS))); - ok1((tdb->flags & TDB_NOLOCK) || tdb->num_lockrecs == 1); + ok1((tdb->flags & TDB_NOLOCK) || tdb->file->num_lockrecs == 1); ok1((tdb->flags & TDB_NOLOCK) - || tdb->lockrecs[0].off == TDB_HASH_LOCK_START); + || tdb->file->lockrecs[0].off == TDB_HASH_LOCK_START); /* FIXME: Check lock length */ /* Allocate a new record. */ - new_off = alloc(tdb, key.dsize, dbuf.dsize, h.h, false); - ok1(new_off != TDB_OFF_ERR); + new_off = alloc(tdb, key.dsize, dbuf.dsize, h.h, + TDB_USED_MAGIC, false); + ok1(!TDB_OFF_IS_ERR(new_off)); /* We should be able to add it now. */ ok1(add_to_hash(tdb, &h, new_off) == 0); /* Make sure we fill it in for later finding. */ off = new_off + sizeof(struct tdb_used_record); - ok1(!tdb->methods->write(tdb, off, key.dptr, key.dsize)); + ok1(!tdb->methods->twrite(tdb, off, key.dptr, key.dsize)); off += key.dsize; - ok1(!tdb->methods->write(tdb, off, dbuf.dptr, dbuf.dsize)); + ok1(!tdb->methods->twrite(tdb, off, dbuf.dptr, dbuf.dsize)); /* We should be able to unlock that OK. */ ok1(tdb_unlock_hashes(tdb, h.hlock_start, h.hlock_range, @@ -99,9 +101,9 @@ int main(int argc, char *argv[]) ok1(h.hlock_start == 0); ok1(h.hlock_range == 1ULL << (64-(TDB_TOPLEVEL_HASH_BITS-TDB_HASH_GROUP_BITS))); - ok1((tdb->flags & TDB_NOLOCK) || tdb->num_lockrecs == 1); + ok1((tdb->flags & TDB_NOLOCK) || tdb->file->num_lockrecs == 1); ok1((tdb->flags & TDB_NOLOCK) - || tdb->lockrecs[0].off == TDB_HASH_LOCK_START); + || tdb->file->lockrecs[0].off == TDB_HASH_LOCK_START); /* FIXME: Check lock length */ ok1(tdb_unlock_hashes(tdb, h.hlock_start, h.hlock_range, @@ -125,9 +127,9 @@ int main(int argc, char *argv[]) ok1(h.hlock_start == 0); ok1(h.hlock_range == 1ULL << (64-(TDB_TOPLEVEL_HASH_BITS-TDB_HASH_GROUP_BITS))); - ok1((tdb->flags & TDB_NOLOCK) || tdb->num_lockrecs == 1); + ok1((tdb->flags & TDB_NOLOCK) || tdb->file->num_lockrecs == 1); ok1((tdb->flags & TDB_NOLOCK) - || tdb->lockrecs[0].off == TDB_HASH_LOCK_START); + || tdb->file->lockrecs[0].off == TDB_HASH_LOCK_START); /* FIXME: Check lock length */ /* Make it expand 0'th bucket. */ @@ -163,9 +165,9 @@ int main(int argc, char *argv[]) ok1(h.hlock_start == 0); ok1(h.hlock_range == 1ULL << (64-(TDB_TOPLEVEL_HASH_BITS-TDB_HASH_GROUP_BITS))); - ok1((tdb->flags & TDB_NOLOCK) || tdb->num_lockrecs == 1); + ok1((tdb->flags & TDB_NOLOCK) || tdb->file->num_lockrecs == 1); ok1((tdb->flags & TDB_NOLOCK) - || tdb->lockrecs[0].off == TDB_HASH_LOCK_START); + || tdb->file->lockrecs[0].off == TDB_HASH_LOCK_START); /* FIXME: Check lock length */ /* Simple delete should work. */ @@ -174,7 +176,8 @@ int main(int argc, char *argv[]) sizeof(struct tdb_used_record) + rec_key_length(&rec) + rec_data_length(&rec) - + rec_extra_padding(&rec)) == 0); + + rec_extra_padding(&rec), + TDB_LOCK_NOWAIT) == 0); ok1(tdb_unlock_hashes(tdb, h.hlock_start, h.hlock_range, F_WRLCK) == 0); ok1(tdb_check(tdb, NULL, NULL) == 0); @@ -194,9 +197,9 @@ int main(int argc, char *argv[]) ok1(h.hlock_start == 0); ok1(h.hlock_range == 1ULL << (64-(TDB_TOPLEVEL_HASH_BITS-TDB_HASH_GROUP_BITS))); - ok1((tdb->flags & TDB_NOLOCK) || tdb->num_lockrecs == 1); + ok1((tdb->flags & TDB_NOLOCK) || tdb->file->num_lockrecs == 1); ok1((tdb->flags & TDB_NOLOCK) - || tdb->lockrecs[0].off == TDB_HASH_LOCK_START); + || tdb->file->lockrecs[0].off == TDB_HASH_LOCK_START); /* FIXME: Check lock length */ ok1(expand_group(tdb, &h) == 0); @@ -225,15 +228,16 @@ int main(int argc, char *argv[]) /* We should be able to add it now. */ /* Allocate a new record. */ - new_off = alloc(tdb, key.dsize, dbuf.dsize, h.h, false); - ok1(new_off != TDB_OFF_ERR); + new_off = alloc(tdb, key.dsize, dbuf.dsize, h.h, + TDB_USED_MAGIC, false); + ok1(!TDB_OFF_IS_ERR(new_off)); ok1(add_to_hash(tdb, &h, new_off) == 0); /* Make sure we fill it in for later finding. */ off = new_off + sizeof(struct tdb_used_record); - ok1(!tdb->methods->write(tdb, off, key.dptr, key.dsize)); + ok1(!tdb->methods->twrite(tdb, off, key.dptr, key.dsize)); off += key.dsize; - ok1(!tdb->methods->write(tdb, off, dbuf.dptr, dbuf.dsize)); + ok1(!tdb->methods->twrite(tdb, off, dbuf.dptr, dbuf.dsize)); /* We should be able to unlock that OK. */ ok1(tdb_unlock_hashes(tdb, h.hlock_start, h.hlock_range,