autobuild: add a target "samba-ctdb" that builds samba (waf) with cluster support
[Samba.git] / lib / ntdb / test / api-add-remove-flags.c
blob4888c32f0659dd6a63999aaef7c2af22410746d8
1 #include "private.h" // for ntdb_context
2 #include "ntdb.h"
3 #include "tap-interface.h"
4 #include <sys/types.h>
5 #include <sys/stat.h>
6 #include <fcntl.h>
7 #include "logging.h"
9 int main(int argc, char *argv[])
11 unsigned int i;
12 struct ntdb_context *ntdb;
13 int flags[] = { NTDB_INTERNAL, NTDB_DEFAULT, NTDB_NOMMAP,
14 NTDB_INTERNAL|NTDB_CONVERT, NTDB_CONVERT,
15 NTDB_NOMMAP|NTDB_CONVERT };
17 plan_tests(87);
18 for (i = 0; i < sizeof(flags) / sizeof(flags[0]); i++) {
19 ntdb = ntdb_open("run-add-remove-flags.ntdb", flags[i],
20 O_RDWR|O_CREAT|O_TRUNC, 0600, &tap_log_attr);
21 ok1(ntdb);
22 if (!ntdb)
23 continue;
25 ok1(ntdb_get_flags(ntdb) == ntdb->flags);
26 tap_log_messages = 0;
27 ntdb_add_flag(ntdb, NTDB_NOLOCK);
28 if (flags[i] & NTDB_INTERNAL)
29 ok1(tap_log_messages == 1);
30 else {
31 ok1(tap_log_messages == 0);
32 ok1(ntdb_get_flags(ntdb) & NTDB_NOLOCK);
35 tap_log_messages = 0;
36 ntdb_add_flag(ntdb, NTDB_NOMMAP);
37 if (flags[i] & NTDB_INTERNAL)
38 ok1(tap_log_messages == 1);
39 else {
40 ok1(tap_log_messages == 0);
41 ok1(ntdb_get_flags(ntdb) & NTDB_NOMMAP);
42 ok1(ntdb->file->map_ptr == NULL);
45 tap_log_messages = 0;
46 ntdb_add_flag(ntdb, NTDB_NOSYNC);
47 if (flags[i] & NTDB_INTERNAL)
48 ok1(tap_log_messages == 1);
49 else {
50 ok1(tap_log_messages == 0);
51 ok1(ntdb_get_flags(ntdb) & NTDB_NOSYNC);
54 ok1(ntdb_get_flags(ntdb) == ntdb->flags);
56 tap_log_messages = 0;
57 ntdb_remove_flag(ntdb, NTDB_NOLOCK);
58 if (flags[i] & NTDB_INTERNAL)
59 ok1(tap_log_messages == 1);
60 else {
61 ok1(tap_log_messages == 0);
62 ok1(!(ntdb_get_flags(ntdb) & NTDB_NOLOCK));
65 tap_log_messages = 0;
66 ntdb_remove_flag(ntdb, NTDB_NOMMAP);
67 if (flags[i] & NTDB_INTERNAL)
68 ok1(tap_log_messages == 1);
69 else {
70 ok1(tap_log_messages == 0);
71 ok1(!(ntdb_get_flags(ntdb) & NTDB_NOMMAP));
72 ok1(ntdb->file->map_ptr != NULL);
75 tap_log_messages = 0;
76 ntdb_remove_flag(ntdb, NTDB_NOSYNC);
77 if (flags[i] & NTDB_INTERNAL)
78 ok1(tap_log_messages == 1);
79 else {
80 ok1(tap_log_messages == 0);
81 ok1(!(ntdb_get_flags(ntdb) & NTDB_NOSYNC));
84 ntdb_close(ntdb);
87 ok1(tap_log_messages == 0);
88 return exit_status();