diff options
author | Rusty Russell <rusty@rustcorp.com.au> | 2011-09-14 07:47:13 +0930 |
---|---|---|
committer | Rusty Russell <rusty@rustcorp.com.au> | 2011-09-14 07:47:13 +0930 |
commit | 6e16e29d532d7542c210fd725bf61df1e7a97795 (patch) | |
tree | 463f4867fe4ff441d924672b564f508632e57c02 /lib/tdb2/test/run-tdb1-hashsize.c | |
parent | f8dbfad23c9cab9d52b366d56e8491666a90f714 (diff) | |
download | samba-6e16e29d532d7542c210fd725bf61df1e7a97795.tar.gz samba-6e16e29d532d7542c210fd725bf61df1e7a97795.tar.bz2 samba-6e16e29d532d7542c210fd725bf61df1e7a97795.zip |
tdb2: add TDB_ATTRIBUTE_TDB1_HASHSIZE
This replaces the tdb1_open "hash_size" argument. It will only be
valid when you call tdb_open() with O_CREAT in open_flags, and
TDB_VERSION1 in tdb_flags.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
(Imported from CCAN commit 49475d68deecd0b31597ed6094229171d2699b11)
Diffstat (limited to 'lib/tdb2/test/run-tdb1-hashsize.c')
-rw-r--r-- | lib/tdb2/test/run-tdb1-hashsize.c | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/lib/tdb2/test/run-tdb1-hashsize.c b/lib/tdb2/test/run-tdb1-hashsize.c new file mode 100644 index 0000000000..fc48c23076 --- /dev/null +++ b/lib/tdb2/test/run-tdb1-hashsize.c @@ -0,0 +1,61 @@ +#include "tdb2-source.h" +#include <ccan/tap/tap.h> +#include <stdlib.h> +#include <err.h> +#include "logging.h" + +int main(int argc, char *argv[]) +{ + struct tdb_context *tdb; + union tdb_attribute hsize, h2; + + hsize.base.attr = TDB_ATTRIBUTE_TDB1_HASHSIZE; + hsize.base.next = &tap_log_attr; + hsize.tdb1_hashsize.hsize = 1024; + + plan_tests(14); + tdb = tdb1_open("run-tdb1-hashsize.tdb1", TDB_DEFAULT, + O_CREAT|O_TRUNC|O_RDWR, 0600, &hsize); + ok1(tdb); + h2.base.attr = TDB_ATTRIBUTE_TDB1_HASHSIZE; + ok1(tdb_get_attribute(tdb, &h2) == TDB_SUCCESS); + ok1(h2.tdb1_hashsize.hsize == hsize.tdb1_hashsize.hsize); + tdb_close(tdb); + + /* Can't specify TDB_ATTRIBUTE_TDB1_HASHSIZE without O_CREAT */ + tdb = tdb1_open("run-tdb1-hashsize.tdb1", TDB_DEFAULT, + O_RDWR, 0600, &hsize); + ok1(!tdb); + ok1(tap_log_messages == 1); + + /* Can't specify TDB_ATTRIBUTE_TDB1_HASHSIZE for version2. */ + tdb = tdb_open("run-tdb1-hashsize.tdb", TDB_DEFAULT, + O_CREAT|O_TRUNC|O_RDWR, 0600, &hsize); + ok1(!tdb); + ok1(tap_log_messages == 2); + + /* We can get attribute even if we didn't set it though. */ + tdb = tdb1_open("run-tdb1-hashsize.tdb1", TDB_DEFAULT, + O_RDWR, 0600, &tap_log_attr); + + ok1(tdb); + memset(&h2, 0, sizeof(h2)); + h2.base.attr = TDB_ATTRIBUTE_TDB1_HASHSIZE; + ok1(tdb_get_attribute(tdb, &h2) == TDB_SUCCESS); + ok1(h2.tdb1_hashsize.hsize == hsize.tdb1_hashsize.hsize); + tdb_close(tdb); + + /* Check for default hash size. */ + tdb = tdb1_open("run-tdb1-hashsize.tdb1", TDB_DEFAULT, + O_CREAT|O_TRUNC|O_RDWR, 0600, &tap_log_attr); + + ok1(tdb); + memset(&h2, 0, sizeof(h2)); + h2.base.attr = TDB_ATTRIBUTE_TDB1_HASHSIZE; + ok1(tdb_get_attribute(tdb, &h2) == TDB_SUCCESS); + ok1(h2.tdb1_hashsize.hsize == TDB1_DEFAULT_HASH_SIZE); + tdb_close(tdb); + ok1(tap_log_messages == 2); + + return exit_status(); +} |