Commit 655ef777 authored by Rusty Russell's avatar Rusty Russell

tdb: unify logging code in test dir.

parent 73598053
#include "external-agent.h"
#include "lock-tracking.h"
#include "logging.h"
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
......@@ -17,23 +18,8 @@
static struct tdb_context *tdb;
static void taplog(struct tdb_context *tdb,
enum tdb_debug_level level,
const char *fmt, ...)
{
va_list ap;
char line[200];
va_start(ap, fmt);
vsprintf(line, fmt, ap);
va_end(ap);
diag("external: %s", line);
}
static enum agent_return do_operation(enum operation op, const char *name)
{
struct tdb_logging_context logctx = { taplog, NULL };
TDB_DATA k;
enum agent_return ret;
TDB_DATA data;
......@@ -54,7 +40,7 @@ static enum agent_return do_operation(enum operation op, const char *name)
return OTHER_FAILURE;
}
tdb = tdb_open_ex(name, 0, TDB_DEFAULT, O_RDWR, 0,
&logctx, NULL);
&taplogctx, NULL);
if (!tdb) {
if (!locking_would_block)
diag("Opening tdb gave %s", strerror(errno));
......@@ -66,7 +52,7 @@ static enum agent_return do_operation(enum operation op, const char *name)
if (tdb)
return OTHER_FAILURE;
tdb = tdb_open_ex(name, 0, TDB_CLEAR_IF_FIRST, O_RDWR, 0,
&logctx, NULL);
&taplogctx, NULL);
ret = tdb ? SUCCESS : OTHER_FAILURE;
break;
case TRANSACTION_START:
......@@ -146,6 +132,7 @@ struct agent *prepare_external_agent(void)
/* We want to fail, not block. */
nonblocking_locks = true;
log_prefix = "external: ";
while ((ret = read(command[0], name, sizeof(name))) > 0) {
enum agent_return result;
......
......@@ -14,6 +14,7 @@
#include <ccan/tap/tap.h>
#include <stdlib.h>
#include <err.h>
#include "logging.h"
static int tdb_expand_file_sparse(struct tdb_context *tdb,
tdb_off_t size,
......@@ -73,8 +74,8 @@ int main(int argc, char *argv[])
struct tdb_record rec;
plan_tests(24);
tdb = tdb_open("run-36-file.tdb", 1024, TDB_CLEAR_IF_FIRST,
O_CREAT|O_TRUNC|O_RDWR, 0600);
tdb = tdb_open_ex("run-36-file.tdb", 1024, TDB_CLEAR_IF_FIRST,
O_CREAT|O_TRUNC|O_RDWR, 0600, &taplogctx, NULL);
ok1(tdb);
tdb->methods = &large_io_methods;
......
......@@ -12,6 +12,7 @@
#include <ccan/tap/tap.h>
#include <stdlib.h>
#include <err.h>
#include "logging.h"
int main(int argc, char *argv[])
{
......@@ -25,9 +26,11 @@ int main(int argc, char *argv[])
ok1(fd >= 0);
ok1(write(fd, "hello world", 11) == 11);
close(fd);
tdb = tdb_open("run-bad-tdb-header.tdb", 1024, 0, O_RDWR, 0);
tdb = tdb_open_ex("run-bad-tdb-header.tdb", 1024, 0, O_RDWR, 0,
&taplogctx, NULL);
ok1(!tdb);
tdb = tdb_open("run-bad-tdb-header.tdb", 1024, 0, O_CREAT|O_RDWR, 0600);
tdb = tdb_open_ex("run-bad-tdb-header.tdb", 1024, 0, O_CREAT|O_RDWR,
0600, &taplogctx, NULL);
ok1(tdb);
tdb_close(tdb);
......@@ -41,12 +44,14 @@ int main(int argc, char *argv[])
ok1(write(fd, &hdr, sizeof(hdr)) == sizeof(hdr));
close(fd);
tdb = tdb_open("run-bad-tdb-header.tdb", 1024, 0, O_RDWR|O_CREAT, 0600);
tdb = tdb_open_ex("run-bad-tdb-header.tdb", 1024, 0, O_RDWR|O_CREAT,
0600, &taplogctx, NULL);
ok1(errno == EIO);
ok1(!tdb);
/* With truncate, will be fine. */
tdb = tdb_open("run-bad-tdb-header.tdb", 1024, 0, O_RDWR|O_CREAT|O_TRUNC, 0600);
tdb = tdb_open_ex("run-bad-tdb-header.tdb", 1024, 0,
O_RDWR|O_CREAT|O_TRUNC, 0600, &taplogctx, NULL);
ok1(tdb);
tdb_close(tdb);
......
......@@ -12,6 +12,7 @@
#include <ccan/tap/tap.h>
#include <stdlib.h>
#include <err.h>
#include "logging.h"
int main(int argc, char *argv[])
{
......@@ -19,8 +20,8 @@ int main(int argc, char *argv[])
TDB_DATA key, data;
plan_tests(9);
tdb = tdb_open("run-check.tdb", 1, TDB_CLEAR_IF_FIRST,
O_CREAT|O_TRUNC|O_RDWR, 0600);
tdb = tdb_open_ex("run-check.tdb", 1, TDB_CLEAR_IF_FIRST,
O_CREAT|O_TRUNC|O_RDWR, 0600, &taplogctx, NULL);
ok1(tdb);
ok1(tdb_check(tdb, NULL, NULL) == 0);
......
......@@ -12,6 +12,7 @@
#include <ccan/tap/tap.h>
#include <stdlib.h>
#include <err.h>
#include "logging.h"
static int check(TDB_DATA key, TDB_DATA data, void *private)
{
......@@ -103,8 +104,8 @@ int main(int argc, char *argv[])
plan_tests(4);
/* This should use mmap. */
tdb = tdb_open("run-corrupt.tdb", 2, TDB_CLEAR_IF_FIRST,
O_CREAT|O_TRUNC|O_RDWR, 0600);
tdb = tdb_open_ex("run-corrupt.tdb", 2, TDB_CLEAR_IF_FIRST,
O_CREAT|O_TRUNC|O_RDWR, 0600, &taplogctx, NULL);
if (!tdb)
abort();
......@@ -112,8 +113,8 @@ int main(int argc, char *argv[])
tdb_close(tdb);
/* This should not. */
tdb = tdb_open("run-corrupt.tdb", 2, TDB_CLEAR_IF_FIRST|TDB_NOMMAP,
O_CREAT|O_TRUNC|O_RDWR, 0600);
tdb = tdb_open_ex("run-corrupt.tdb", 2, TDB_CLEAR_IF_FIRST|TDB_NOMMAP,
O_CREAT|O_TRUNC|O_RDWR, 0600, &taplogctx, NULL);
if (!tdb)
abort();
......
......@@ -27,6 +27,7 @@ static int ftruncate_check(int fd, off_t length);
#include <err.h>
#include <setjmp.h>
#include "external-agent.h"
#include "logging.h"
#undef write
#undef pwrite
......@@ -34,29 +35,11 @@ static int ftruncate_check(int fd, off_t length);
#undef ftruncate
static bool in_transaction;
static bool suppress_logging;
static int target, current;
static jmp_buf jmpbuf;
#define TEST_DBNAME "run-die-during-transaction.tdb"
#define KEY_STRING "helloworld"
static void taplog(struct tdb_context *tdb,
enum tdb_debug_level level,
const char *fmt, ...)
{
va_list ap;
char line[200];
if (suppress_logging)
return;
va_start(ap, fmt);
vsprintf(line, fmt, ap);
va_end(ap);
diag("%s", line);
}
static void maybe_die(int fd)
{
if (in_transaction && current++ == target) {
......@@ -109,7 +92,6 @@ static bool test_death(enum operation op, struct agent *agent)
{
struct tdb_context *tdb = NULL;
TDB_DATA key;
struct tdb_logging_context logctx = { taplog, NULL };
enum agent_return ret;
int needed_recovery = 0;
......@@ -172,7 +154,7 @@ reset:
unlink(TEST_DBNAME);
tdb = tdb_open_ex(TEST_DBNAME, 1024, TDB_NOMMAP,
O_CREAT|O_TRUNC|O_RDWR, 0600, &logctx, NULL);
O_CREAT|O_TRUNC|O_RDWR, 0600, &taplogctx, NULL);
/* Put key for agent to fetch. */
key.dsize = strlen(KEY_STRING);
......
......@@ -12,6 +12,7 @@
#include <ccan/tap/tap.h>
#include <stdlib.h>
#include <err.h>
#include "logging.h"
int main(int argc, char *argv[])
{
......@@ -19,8 +20,9 @@ int main(int argc, char *argv[])
TDB_DATA key, data;
plan_tests(13);
tdb = tdb_open("run-endian.tdb", 1024, TDB_CLEAR_IF_FIRST|TDB_CONVERT,
O_CREAT|O_TRUNC|O_RDWR, 0600);
tdb = tdb_open_ex("run-endian.tdb", 1024,
TDB_CLEAR_IF_FIRST|TDB_CONVERT,
O_CREAT|O_TRUNC|O_RDWR, 0600, &taplogctx, NULL);
ok1(tdb);
key.dsize = strlen("hi");
......@@ -46,7 +48,8 @@ int main(int argc, char *argv[])
tdb_close(tdb);
/* Reopen: should read it */
tdb = tdb_open("run-endian.tdb", 1024, 0, O_RDWR, 0);
tdb = tdb_open_ex("run-endian.tdb", 1024, 0, O_RDWR, 0,
&taplogctx, NULL);
ok1(tdb);
key.dsize = strlen("hi");
......
......@@ -13,6 +13,8 @@
#include <stdlib.h>
#include <stdbool.h>
#include <err.h>
#include "logging.h"
int main(int argc, char *argv[])
{
struct tdb_context *tdb;
......@@ -22,8 +24,9 @@ int main(int argc, char *argv[])
key.dsize = strlen("hi");
key.dptr = (void *)"hi";
tdb = tdb_open("run-nested-transactions.tdb", 1024, TDB_CLEAR_IF_FIRST,
O_CREAT|O_TRUNC|O_RDWR, 0600);
tdb = tdb_open_ex("run-nested-transactions.tdb",
1024, TDB_CLEAR_IF_FIRST,
O_CREAT|O_TRUNC|O_RDWR, 0600, &taplogctx, NULL);
ok1(tdb);
/* No nesting by default. */
......@@ -49,7 +52,8 @@ int main(int argc, char *argv[])
free(data.dptr);
tdb_close(tdb);
tdb = tdb_open("run-nested-transactions.tdb", 1024, TDB_ALLOW_NESTING, O_RDWR, 0);
tdb = tdb_open_ex("run-nested-transactions.tdb",
1024, TDB_ALLOW_NESTING, O_RDWR, 0, &taplogctx, NULL);
ok1(tdb);
ok1(tdb_transaction_start(tdb) == 0);
......
......@@ -17,6 +17,7 @@
#include <stdbool.h>
#include <err.h>
#include "external-agent.h"
#include "logging.h"
static struct agent *agent;
......@@ -65,8 +66,8 @@ int main(int argc, char *argv[])
if (!agent)
err(1, "preparing agent");
tdb = tdb_open("run-nested-traverse.tdb", 1024, TDB_CLEAR_IF_FIRST,
O_CREAT|O_TRUNC|O_RDWR, 0600);
tdb = tdb_open_ex("run-nested-traverse.tdb", 1024, TDB_CLEAR_IF_FIRST,
O_CREAT|O_TRUNC|O_RDWR, 0600, &taplogctx, NULL);
ok1(tdb);
ok1(external_agent_operation(agent, OPEN, tdb_name(tdb)) == SUCCESS);
......
......@@ -17,6 +17,7 @@
#include <ccan/tap/tap.h>
#include <stdlib.h>
#include <err.h>
#include "logging.h"
#undef fcntl
......@@ -78,8 +79,9 @@ int main(int argc, char *argv[])
int errors = 0;
plan_tests(41);
tdb = tdb_open("run-no-lock-during-traverse.tdb",
1024, TDB_CLEAR_IF_FIRST, O_CREAT|O_TRUNC|O_RDWR, 0600);
tdb = tdb_open_ex("run-no-lock-during-traverse.tdb",
1024, TDB_CLEAR_IF_FIRST, O_CREAT|O_TRUNC|O_RDWR,
0600, &taplogctx, NULL);
ok1(tdb);
ok1(prepare_entries(tdb));
......
......@@ -27,6 +27,7 @@ static int ftruncate_check(int fd, off_t length);
#include <stdarg.h>
#include <err.h>
#include "external-agent.h"
#include "logging.h"
static struct agent *agent;
static bool opened;
......@@ -39,20 +40,6 @@ static bool clear_if_first;
#undef fcntl
#undef ftruncate
static void taplog(struct tdb_context *tdb,
enum tdb_debug_level level,
const char *fmt, ...)
{
va_list ap;
char line[200];
va_start(ap, fmt);
vsprintf(line, fmt, ap);
va_end(ap);
diag("%s", line);
}
static bool is_same(const char *snapshot, const char *latest, off_t len)
{
unsigned i;
......@@ -154,7 +141,6 @@ static int ftruncate_check(int fd, off_t length)
int main(int argc, char *argv[])
{
struct tdb_logging_context logctx = { taplog, NULL };
const int flags[] = { TDB_DEFAULT,
TDB_CLEAR_IF_FIRST,
TDB_NOMMAP,
......@@ -177,7 +163,7 @@ int main(int argc, char *argv[])
unlink(TEST_DBNAME);
tdb = tdb_open_ex(TEST_DBNAME, 1024, flags[i],
O_CREAT|O_TRUNC|O_RDWR, 0600,
&logctx, NULL);
&taplogctx, NULL);
ok1(tdb);
opened = true;
......
......@@ -17,6 +17,7 @@
#include <stdbool.h>
#include <err.h>
#include "external-agent.h"
#include "logging.h"
static struct agent *agent;
......@@ -50,8 +51,9 @@ int main(int argc, char *argv[])
if (!agent)
err(1, "preparing agent");
tdb = tdb_open("run-traverse-in-transaction.tdb",
1024, TDB_CLEAR_IF_FIRST, O_CREAT|O_TRUNC|O_RDWR, 0600);
tdb = tdb_open_ex("run-traverse-in-transaction.tdb",
1024, TDB_CLEAR_IF_FIRST, O_CREAT|O_TRUNC|O_RDWR,
0600, &taplogctx, NULL);
ok1(tdb);
key.dsize = strlen("hi");
......
......@@ -12,6 +12,7 @@
#include <ccan/tap/tap.h>
#include <stdlib.h>
#include <err.h>
#include "logging.h"
int main(int argc, char *argv[])
{
......@@ -19,7 +20,8 @@ int main(int argc, char *argv[])
TDB_DATA key, data;
plan_tests(4);
tdb = tdb_open(NULL, 1024, TDB_INTERNAL, O_CREAT|O_TRUNC|O_RDWR, 0600);
tdb = tdb_open_ex(NULL, 1024, TDB_INTERNAL, O_CREAT|O_TRUNC|O_RDWR,
0600, &taplogctx, NULL);
ok1(tdb);
/* Tickle bug on appending zero length buffer to zero length buffer. */
......
......@@ -12,6 +12,7 @@
#include <ccan/tap/tap.h>
#include <stdlib.h>
#include <err.h>
#include "logging.h"
int main(int argc, char *argv[])
{
......@@ -19,8 +20,8 @@ int main(int argc, char *argv[])
TDB_DATA key, data;
plan_tests(10);
tdb = tdb_open("run.tdb", 1024, TDB_CLEAR_IF_FIRST,
O_CREAT|O_TRUNC|O_RDWR, 0600);
tdb = tdb_open_ex("run.tdb", 1024, TDB_CLEAR_IF_FIRST,
O_CREAT|O_TRUNC|O_RDWR, 0600, &taplogctx, NULL);
ok1(tdb);
key.dsize = strlen("hi");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment