1 #include "ntdb-source.h"
2 #include "tap-interface.h"
5 int main(int argc
, char *argv
[])
8 struct ntdb_context
*ntdb
;
9 int flags
[] = { NTDB_DEFAULT
, NTDB_NOMMAP
,
10 NTDB_CONVERT
, NTDB_NOMMAP
|NTDB_CONVERT
};
11 NTDB_DATA key
= ntdb_mkdata("key", 3);
12 NTDB_DATA data
= ntdb_mkdata("data", 4);
14 plan_tests(sizeof(flags
) / sizeof(flags
[0]) * 9 + 1);
16 for (i
= 0; i
< sizeof(flags
) / sizeof(flags
[0]); i
++) {
19 ntdb
= ntdb_open("run-expand-in-transaction.ntdb",
20 flags
[i
]|MAYBE_NOSYNC
,
21 O_RDWR
|O_CREAT
|O_TRUNC
, 0600, &tap_log_attr
);
26 size
= ntdb
->file
->map_size
;
27 /* Add a fake record to chew up the existing free space. */
28 k
= ntdb_mkdata("fake", 4);
29 d
.dsize
= ntdb
->file
->map_size
30 - NEW_DATABASE_HDR_SIZE(ntdb
->hash_bits
) - 8;
31 d
.dptr
= malloc(d
.dsize
);
32 memset(d
.dptr
, 0, d
.dsize
);
33 ok1(ntdb_store(ntdb
, k
, d
, NTDB_INSERT
) == 0);
34 ok1(ntdb
->file
->map_size
== size
);
36 ok1(ntdb_transaction_start(ntdb
) == 0);
37 ok1(ntdb_store(ntdb
, key
, data
, NTDB_INSERT
) == 0);
38 ok1(ntdb
->file
->map_size
> size
);
39 ok1(ntdb_transaction_commit(ntdb
) == 0);
40 ok1(ntdb
->file
->map_size
> size
);
41 ok1(ntdb_check(ntdb
, NULL
, NULL
) == 0);
45 ok1(tap_log_messages
== 0);