1 #include "tdb2-source.h"
2 #include <ccan/tap/tap.h>
7 int main(int argc
, char *argv
[])
9 struct tdb_context
*tdb
;
11 struct tdb1_header hdr
;
12 struct tdb_data key
= { (unsigned char *)&hdr
, sizeof(hdr
) };
13 struct tdb_data data
= { (unsigned char *)&hdr
, sizeof(hdr
) };
14 int flags
[] = { TDB_DEFAULT
, TDB_NOMMAP
,
15 TDB_CONVERT
, TDB_NOMMAP
|TDB_CONVERT
};
17 plan_tests(sizeof(flags
) / sizeof(flags
[0]) * 7);
18 for (i
= 0; i
< sizeof(flags
) / sizeof(flags
[0]); i
++) {
19 tdb
= tdb_open("run-tdb1-seqnum-wrap.tdb1",
20 flags
[i
]|TDB_VERSION1
|TDB_SEQNUM
,
21 O_RDWR
|O_CREAT
|O_TRUNC
, 0600, &tap_log_attr
);
25 ok1(pread(tdb
->file
->fd
, &hdr
, sizeof(hdr
), 0) == sizeof(hdr
));
26 hdr
.sequence_number
= 0xFFFFFFFF;
27 ok1(pwrite(tdb
->file
->fd
, &hdr
, sizeof(hdr
), 0) == sizeof(hdr
));
29 /* Must not be negative: that would mean an error! */
30 ok1(tdb_get_seqnum(tdb
) == 0xFFFFFFFF);
32 ok1(tdb_store(tdb
, key
, data
, TDB_INSERT
) == TDB_SUCCESS
);
33 ok1(tdb_get_seqnum(tdb
) == 0);
35 ok1(tap_log_messages
== 0);