run-expand-in-transaction.c 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. #include "tdb2-source.h"
  2. #include <ccan/tap/tap.h>
  3. #include "logging.h"
  4. int main(int argc, char *argv[])
  5. {
  6. unsigned int i;
  7. struct tdb_context *tdb;
  8. int flags[] = { TDB_DEFAULT, TDB_NOMMAP,
  9. TDB_CONVERT, TDB_NOMMAP|TDB_CONVERT,
  10. TDB_VERSION1, TDB_NOMMAP|TDB_VERSION1,
  11. TDB_CONVERT|TDB_VERSION1,
  12. TDB_NOMMAP|TDB_CONVERT|TDB_VERSION1 };
  13. struct tdb_data key = tdb_mkdata("key", 3);
  14. struct tdb_data data = tdb_mkdata("data", 4);
  15. plan_tests(sizeof(flags) / sizeof(flags[0]) * 7 + 1);
  16. for (i = 0; i < sizeof(flags) / sizeof(flags[0]); i++) {
  17. size_t size;
  18. tdb = tdb_open("run-expand-in-transaction.tdb", flags[i],
  19. O_RDWR|O_CREAT|O_TRUNC, 0600, &tap_log_attr);
  20. ok1(tdb);
  21. if (!tdb)
  22. continue;
  23. size = tdb->file->map_size;
  24. ok1(tdb_transaction_start(tdb) == 0);
  25. ok1(tdb_store(tdb, key, data, TDB_INSERT) == 0);
  26. ok1(tdb->file->map_size > size);
  27. ok1(tdb_transaction_commit(tdb) == 0);
  28. ok1(tdb->file->map_size > size);
  29. ok1(tdb_check(tdb, NULL, NULL) == 0);
  30. tdb_close(tdb);
  31. }
  32. ok1(tap_log_messages == 0);
  33. return exit_status();
  34. }