summaryrefslogtreecommitdiff
path: root/lib/tdb/test
diff options
context:
space:
mode:
Diffstat (limited to 'lib/tdb/test')
-rw-r--r--lib/tdb/test/run-transaction-expand.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/lib/tdb/test/run-transaction-expand.c b/lib/tdb/test/run-transaction-expand.c
index 3b79dbb6ea..bc22d2b53e 100644
--- a/lib/tdb/test/run-transaction-expand.c
+++ b/lib/tdb/test/run-transaction-expand.c
@@ -1,8 +1,10 @@
#include "../common/tdb_private.h"
-/* Speed up the tests: setting TDB_NOSYNC removed recovery altogether. */
+/* Speed up the tests, but do the actual sync tests. */
+static unsigned int sync_counts = 0;
static inline int fake_fsync(int fd)
{
+ sync_counts++;
return 0;
}
#define fsync fake_fsync
@@ -10,6 +12,7 @@ static inline int fake_fsync(int fd)
#ifdef MS_SYNC
static inline int fake_msync(void *addr, size_t length, int flags)
{
+ sync_counts++;
return 0;
}
#define msync fake_msync
@@ -18,6 +21,7 @@ static inline int fake_msync(void *addr, size_t length, int flags)
#ifdef HAVE_FDATASYNC
static inline int fake_fdatasync(int fd)
{
+ sync_counts++;
return 0;
}
#define fdatasync fake_fdatasync
@@ -59,7 +63,10 @@ int main(int argc, char *argv[])
struct tdb_record rec;
tdb_off_t off;
- plan_tests(4);
+ /* Do *not* suppress sync for this test; we do it ourselves. */
+ unsetenv("TDB_NO_FSYNC");
+
+ plan_tests(5);
tdb = tdb_open_ex("run-transaction-expand.tdb",
1024, TDB_CLEAR_IF_FIRST,
O_CREAT|O_TRUNC|O_RDWR, 0600, &taplogctx, NULL);
@@ -103,6 +110,9 @@ int main(int argc, char *argv[])
/* We should only be about 4 times larger than largest record. */
ok1(tdb->map_size < 5 * i * getpagesize());
+
+ /* We should have synchronized multiple times. */
+ ok1(sync_counts);
tdb_close(tdb);
free(data.dptr);