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/summary.c"
13 #include <ccan/tap/tap.h>
17 int main(int argc
, char *argv
[])
20 struct tdb_context
*tdb
;
21 int flags
[] = { TDB_INTERNAL
, TDB_DEFAULT
, TDB_NOMMAP
,
22 TDB_INTERNAL
|TDB_CONVERT
, TDB_CONVERT
,
23 TDB_NOMMAP
|TDB_CONVERT
};
24 TDB_DATA key
= { (unsigned char *)&j
, sizeof(j
) };
25 TDB_DATA data
= { (unsigned char *)&j
, sizeof(j
) };
28 plan_tests(sizeof(flags
) / sizeof(flags
[0]) * 14);
29 for (i
= 0; i
< sizeof(flags
) / sizeof(flags
[0]); i
++) {
30 tdb
= tdb_open("run-summary.tdb", 131, flags
[i
],
31 O_RDWR
|O_CREAT
|O_TRUNC
, 0600);
36 /* Put some stuff in there. */
37 for (j
= 0; j
< 500; j
++) {
38 /* Make sure padding varies to we get some graphs! */
39 data
.dsize
= j
% (sizeof(j
) + 1);
40 if (tdb_store(tdb
, key
, data
, TDB_REPLACE
) != 0)
41 fail("Storing in tdb");
44 summary
= tdb_summary(tdb
);
46 ok1(strstr(summary
, "Size of file/data: "));
47 ok1(strstr(summary
, "Number of records: 500\n"));
48 ok1(strstr(summary
, "Smallest/average/largest keys: 4/4/4\n"));
49 ok1(strstr(summary
, "Smallest/average/largest data: 0/2/4\n"));
50 ok1(strstr(summary
, "Smallest/average/largest padding: "));
51 ok1(strstr(summary
, "Number of dead records: 0\n"));
52 ok1(strstr(summary
, "Number of free records: 1\n"));
53 ok1(strstr(summary
, "Smallest/average/largest free records: "));
54 ok1(strstr(summary
, "Number of hash chains: 131\n"));
55 ok1(strstr(summary
, "Smallest/average/largest hash chains: "));
56 ok1(strstr(summary
, "Number of uncoalesced records: 0\n"));
57 ok1(strstr(summary
, "Smallest/average/largest uncoalesced runs: 0/0/0\n"));
58 ok1(strstr(summary
, "Percentage keys/data/padding/free/dead/rechdrs&tailers/hashes: "));