summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAaron Haslett <aaronhaslett@catalyst.net.nz>2019-05-28 17:22:10 +1200
committerAndrew Bartlett <abartlet@samba.org>2019-05-29 04:41:24 +0000
commit2de0aebed60b8e83508f50e5391ede618ce0e595 (patch)
treecd7809248a7bce209bd3fcccbe8bafa7165c8708 /lib
parent73080f255e379ed030005031f560c3ed71919b06 (diff)
downloadsamba-2de0aebed60b8e83508f50e5391ede618ce0e595.tar.gz
ldb: test for parse errors
Parse errors aren't passed up correctly by the tdb backend. This patch modifies a test to expose the issue, next patch will fix it. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13959 Signed-off-by: Aaron Haslett <aaronhaslett@catalyst.net.nz> Reviewed-by: Andrew Bartlett <abartlet@samba.org> Reviewed-by: Garming Sam <garming@catalyst.net.nz>
Diffstat (limited to 'lib')
-rw-r--r--lib/ldb/tests/ldb_kv_ops_test.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/lib/ldb/tests/ldb_kv_ops_test.c b/lib/ldb/tests/ldb_kv_ops_test.c
index c16297e136b..ab9d75bc69c 100644
--- a/lib/ldb/tests/ldb_kv_ops_test.c
+++ b/lib/ldb/tests/ldb_kv_ops_test.c
@@ -207,6 +207,17 @@ static int parse(struct ldb_val key,
}
/*
+ * Parse function that just returns the int we pass it.
+ */
+static int parse_return(struct ldb_val key,
+ struct ldb_val data,
+ void *private_data)
+{
+ int *rcode = private_data;
+ return *rcode;
+}
+
+/*
* Test that data can be written to the kv store and be read back.
*/
static void test_add_get(void **state)
@@ -228,6 +239,7 @@ static void test_add_get(void **state)
};
struct ldb_val read;
+ int rcode;
int flags = 0;
TALLOC_CTX *tmp_ctx;
@@ -265,6 +277,17 @@ static void test_add_get(void **state)
assert_int_equal(sizeof(value), read.length);
assert_memory_equal(value, read.data, sizeof(value));
+ /*
+ * Now check that the error code we return in the
+ * parse function is returned by fetch_and_parse.
+ */
+ for (rcode=0; rcode<50; rcode++) {
+ ret = ldb_kv->kv_ops->fetch_and_parse(ldb_kv, key,
+ parse_return,
+ &rcode);
+ assert_int_equal(ret, rcode);
+ }
+
ret = ldb_kv->kv_ops->unlock_read(test_ctx->ldb->modules);
assert_int_equal(ret, 0);
talloc_free(tmp_ctx);