Line data Source code
1 : #include "../common/tdb_private.h"
2 : #include "../common/io.c"
3 : #include "../common/tdb.c"
4 : #include "../common/lock.c"
5 : #include "../common/freelist.c"
6 : #include "../common/traverse.c"
7 : #include "../common/transaction.c"
8 : #include "../common/error.c"
9 : #include "../common/open.c"
10 : #include "../common/check.c"
11 : #include "../common/hash.c"
12 : #include "../common/mutex.c"
13 : #include "tap-interface.h"
14 : #include <stdlib.h>
15 :
16 2 : static void log_fn(struct tdb_context *tdb, enum tdb_debug_level level, const char *fmt, ...)
17 : {
18 2 : unsigned int *count = tdb_get_logging_private(tdb);
19 2 : if (strstr(fmt, "spinlocks"))
20 2 : (*count)++;
21 2 : }
22 :
23 : /* The code should barf on TDBs created with rwlocks. */
24 1 : int main(int argc, char *argv[])
25 : {
26 : struct tdb_context *tdb;
27 : unsigned int log_count;
28 1 : struct tdb_logging_context log_ctx = { log_fn, &log_count };
29 :
30 : plan_tests(4);
31 :
32 : /* We should fail to open rwlock-using tdbs of either endian. */
33 1 : log_count = 0;
34 1 : tdb = tdb_open_ex("test/rwlock-le.tdb", 0, 0, O_RDWR, 0,
35 : &log_ctx, NULL);
36 1 : ok1(!tdb);
37 1 : ok1(log_count == 1);
38 :
39 1 : log_count = 0;
40 1 : tdb = tdb_open_ex("test/rwlock-be.tdb", 0, 0, O_RDWR, 0,
41 : &log_ctx, NULL);
42 1 : ok1(!tdb);
43 1 : ok1(log_count == 1);
44 :
45 1 : return exit_status();
46 : }
|