diff options
author | Rusty Russell <rusty@rustcorp.com.au> | 2012-06-18 22:30:29 +0930 |
---|---|---|
committer | Rusty Russell <rusty@rustcorp.com.au> | 2012-06-19 05:38:06 +0200 |
commit | 40cf08823dadb7f2f9cb3b32c2e64b6242522ef4 (patch) | |
tree | 92ae2284e9c3c7277b9b724a7cd828d76f982716 /lib/ntdb/test/external-agent.c | |
parent | 3bccb610c166df1ce2ea5c8a80daa451bd6edf67 (diff) | |
download | samba-40cf08823dadb7f2f9cb3b32c2e64b6242522ef4.tar.gz samba-40cf08823dadb7f2f9cb3b32c2e64b6242522ef4.tar.bz2 samba-40cf08823dadb7f2f9cb3b32c2e64b6242522ef4.zip |
ntdb: enhance external-helper test code.
Our external test helper is a bit primitive when it comes to doing STORE or
FETCH commands: let us specify the data we expect, instead of assuming it's
the same as the key.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Diffstat (limited to 'lib/ntdb/test/external-agent.c')
-rw-r--r-- | lib/ntdb/test/external-agent.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/lib/ntdb/test/external-agent.c b/lib/ntdb/test/external-agent.c index 098d0cb595..46654c2e64 100644 --- a/lib/ntdb/test/external-agent.c +++ b/lib/ntdb/test/external-agent.c @@ -45,11 +45,12 @@ static enum NTDB_ERROR clear_if_first(int fd, void *arg) static enum agent_return do_operation(enum operation op, const char *name) { - NTDB_DATA k; + NTDB_DATA k, d; enum agent_return ret; NTDB_DATA data; enum NTDB_ERROR ecode; union ntdb_attribute cif; + const char *eq; if (op != OPEN && op != OPEN_WITH_HOOK && !ntdb) { diag("external: No ntdb open!"); @@ -58,7 +59,15 @@ static enum agent_return do_operation(enum operation op, const char *name) diag("external: %s", operation_name(op)); - k = ntdb_mkdata(name, strlen(name)); + eq = strchr(name, '='); + if (eq) { + k = ntdb_mkdata(name, eq - name); + d = ntdb_mkdata(eq + 1, strlen(eq+1)); + } else { + k = ntdb_mkdata(name, strlen(name)); + d.dsize = 0; + d.dptr = NULL; + } locking_would_block = 0; switch (op) { @@ -99,7 +108,7 @@ static enum agent_return do_operation(enum operation op, const char *name) ret = FAILED; } else if (ecode < 0) { ret = OTHER_FAILURE; - } else if (!ntdb_deq(data, k)) { + } else if (!ntdb_deq(data, d)) { ret = OTHER_FAILURE; external_agent_free(data.dptr); } else { @@ -108,7 +117,7 @@ static enum agent_return do_operation(enum operation op, const char *name) } break; case STORE: - ret = ntdb_store(ntdb, k, k, 0) == 0 ? SUCCESS : OTHER_FAILURE; + ret = ntdb_store(ntdb, k, d, 0) == 0 ? SUCCESS : OTHER_FAILURE; break; case TRANSACTION_START: ret = ntdb_transaction_start(ntdb) == 0 ? SUCCESS : OTHER_FAILURE; |