X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Ftdb2%2Ftest%2Frun-04-basichash.c;h=65d15282cf2144d08ca139917ecc595949194753;hp=ceee06835132fb54d1ab73d996e2377f0b2eaa33;hb=22d0e0dc59fc9d7e0046fec6971ef478c2d604fd;hpb=51a56b52627e635566253a3fae081c3f466b6bb6 diff --git a/ccan/tdb2/test/run-04-basichash.c b/ccan/tdb2/test/run-04-basichash.c index ceee0683..65d15282 100644 --- a/ccan/tdb2/test/run-04-basichash.c +++ b/ccan/tdb2/test/run-04-basichash.c @@ -1,17 +1,11 @@ -#include -#include -#include -#include -#include -#include -#include +#include "tdb2-source.h" #include #include "logging.h" /* 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 +18,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,24 +53,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, TDB_USED_MAGIC, false); - ok1(new_off != TDB_OFF_ERR); + 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, @@ -100,9 +94,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, @@ -126,9 +120,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. */ @@ -164,9 +158,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. */ @@ -175,7 +169,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, false) == 0); ok1(tdb_unlock_hashes(tdb, h.hlock_start, h.hlock_range, F_WRLCK) == 0); ok1(tdb_check(tdb, NULL, NULL) == 0); @@ -195,9 +190,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); @@ -228,14 +223,14 @@ int main(int argc, char *argv[]) /* Allocate a new record. */ new_off = alloc(tdb, key.dsize, dbuf.dsize, h.h, TDB_USED_MAGIC, false); - ok1(new_off != TDB_OFF_ERR); + 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,