summaryrefslogtreecommitdiff
path: root/tests/test_db.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_db.c')
-rw-r--r--tests/test_db.c60
1 files changed, 60 insertions, 0 deletions
diff --git a/tests/test_db.c b/tests/test_db.c
index 1bd69f0c1..9e1b5cb60 100644
--- a/tests/test_db.c
+++ b/tests/test_db.c
@@ -232,11 +232,70 @@ AST_TEST_DEFINE(perftest)
return res;
}
+
+AST_TEST_DEFINE(put_get_long)
+{
+ int res = AST_TEST_PASS;
+ struct ast_str *s;
+ int i, j;
+
+#define STR_FILL_32 "abcdefghijklmnopqrstuvwxyz123456"
+
+ switch (cmd) {
+ case TEST_INIT:
+ info->name = "put_get_long";
+ info->category = "/main/astdb/";
+ info->summary = "ast_db_(put|get_allocated) unit test";
+ info->description =
+ "Ensures that the ast_db_put and ast_db_get_allocated functions work";
+ return AST_TEST_NOT_RUN;
+ case TEST_EXECUTE:
+ break;
+ }
+
+ if (!(s = ast_str_create(4096))) {
+ return AST_TEST_FAIL;
+ }
+
+ for (i = 1024; i <= 1024 * 1024 * 8; i *= 2) {
+ char *out = NULL;
+
+ ast_str_reset(s);
+
+ for (j = 0; j < i; j += sizeof(STR_FILL_32) - 1) {
+ ast_str_append(&s, 0, "%s", STR_FILL_32);
+ }
+
+ if (ast_db_put("astdbtest", "long", ast_str_buffer(s))) {
+ ast_test_status_update(test, "Failed to put value of %zu bytes\n", ast_str_strlen(s));
+ res = AST_TEST_FAIL;
+ } else if (ast_db_get_allocated("astdbtest", "long", &out)) {
+ ast_test_status_update(test, "Failed to get value of %zu bytes\n", ast_str_strlen(s));
+ res = AST_TEST_FAIL;
+ } else if (strcmp(ast_str_buffer(s), out)) {
+ ast_test_status_update(test, "Failed to match value of %zu bytes\n", ast_str_strlen(s));
+ res = AST_TEST_FAIL;
+ } else if (ast_db_del("astdbtest", "long")) {
+ ast_test_status_update(test, "Failed to delete astdbtest/long\n");
+ res = AST_TEST_FAIL;
+ }
+
+ if (out) {
+ ast_free(out);
+ }
+ }
+
+ ast_free(s);
+
+ return res;
+}
+
static int unload_module(void)
{
AST_TEST_UNREGISTER(put_get_del);
AST_TEST_UNREGISTER(gettree_deltree);
AST_TEST_UNREGISTER(perftest);
+ AST_TEST_UNREGISTER(put_get_long);
return 0;
}
@@ -245,6 +304,7 @@ static int load_module(void)
AST_TEST_REGISTER(put_get_del);
AST_TEST_REGISTER(gettree_deltree);
AST_TEST_REGISTER(perftest);
+ AST_TEST_REGISTER(put_get_long);
return AST_MODULE_LOAD_SUCCESS;
}