1 #include "tdb2-source.h"
2 #include <ccan/tap/tap.h>
5 int main(int argc, char *argv[])
8 struct tdb_context *tdb;
9 int flags[] = { TDB_INTERNAL, TDB_DEFAULT, TDB_NOMMAP,
10 TDB_INTERNAL|TDB_CONVERT, TDB_CONVERT,
11 TDB_NOMMAP|TDB_CONVERT,
12 TDB_INTERNAL|TDB_VERSION1, TDB_VERSION1,
13 TDB_NOMMAP|TDB_VERSION1,
14 TDB_INTERNAL|TDB_CONVERT|TDB_VERSION1,
15 TDB_CONVERT|TDB_VERSION1,
16 TDB_NOMMAP|TDB_CONVERT|TDB_VERSION1 };
19 for (i = 0; i < sizeof(flags) / sizeof(flags[0]); i++) {
20 tdb = tdb_open("run-add-remove-flags.tdb", flags[i],
21 O_RDWR|O_CREAT|O_TRUNC, 0600, &tap_log_attr);
26 ok1(tdb_get_flags(tdb) == tdb->flags);
28 tdb_add_flag(tdb, TDB_NOLOCK);
29 if (flags[i] & TDB_INTERNAL)
30 ok1(tap_log_messages == 1);
32 ok1(tap_log_messages == 0);
33 ok1(tdb_get_flags(tdb) & TDB_NOLOCK);
37 tdb_add_flag(tdb, TDB_NOMMAP);
38 if (flags[i] & TDB_INTERNAL)
39 ok1(tap_log_messages == 1);
41 ok1(tap_log_messages == 0);
42 ok1(tdb_get_flags(tdb) & TDB_NOMMAP);
43 ok1(tdb->file->map_ptr == NULL);
47 tdb_add_flag(tdb, TDB_NOSYNC);
48 if (flags[i] & TDB_INTERNAL)
49 ok1(tap_log_messages == 1);
51 ok1(tap_log_messages == 0);
52 ok1(tdb_get_flags(tdb) & TDB_NOSYNC);
55 ok1(tdb_get_flags(tdb) == tdb->flags);
58 tdb_remove_flag(tdb, TDB_NOLOCK);
59 if (flags[i] & TDB_INTERNAL)
60 ok1(tap_log_messages == 1);
62 ok1(tap_log_messages == 0);
63 ok1(!(tdb_get_flags(tdb) & TDB_NOLOCK));
67 tdb_remove_flag(tdb, TDB_NOMMAP);
68 if (flags[i] & TDB_INTERNAL)
69 ok1(tap_log_messages == 1);
71 ok1(tap_log_messages == 0);
72 ok1(!(tdb_get_flags(tdb) & TDB_NOMMAP));
73 ok1(tdb->file->map_ptr != NULL);
77 tdb_remove_flag(tdb, TDB_NOSYNC);
78 if (flags[i] & TDB_INTERNAL)
79 ok1(tap_log_messages == 1);
81 ok1(tap_log_messages == 0);
82 ok1(!(tdb_get_flags(tdb) & TDB_NOSYNC));
88 ok1(tap_log_messages == 0);