test-dict-client.c (dovecot-2.3.16) | : | test-dict-client.c (dovecot-2.3.17) | ||
---|---|---|---|---|
skipping to change at line 36 | skipping to change at line 36 | |||
if (result->ret < 0) | if (result->ret < 0) | |||
i_error("commit %d", result->ret); | i_error("commit %d", result->ret); | |||
pending--; | pending--; | |||
} | } | |||
int main(int argc, char *argv[]) | int main(int argc, char *argv[]) | |||
{ | { | |||
const char *prefix, *uri; | const char *prefix, *uri; | |||
struct dict *dict; | struct dict *dict; | |||
struct dict_settings set; | struct dict_settings set; | |||
struct dict_op_settings opset; | ||||
struct ioloop *ioloop; | struct ioloop *ioloop; | |||
const char *error; | const char *error; | |||
unsigned int i; | unsigned int i; | |||
char key[1000], value[100]; | char key[1000], value[100]; | |||
lib_init(); | lib_init(); | |||
ioloop = io_loop_create(); | ioloop = io_loop_create(); | |||
dict_driver_register(&dict_driver_client); | dict_driver_register(&dict_driver_client); | |||
if (argc < 3) | if (argc < 3) | |||
i_fatal("Usage: <prefix> <uri>"); | i_fatal("Usage: <prefix> <uri>"); | |||
prefix = argv[1]; | prefix = argv[1]; | |||
uri = argv[2]; | uri = argv[2]; | |||
i_zero(&set); | i_zero(&set); | |||
i_zero(&opset); | ||||
set.base_dir = "/var/run/dovecot"; | set.base_dir = "/var/run/dovecot"; | |||
set.username = "testuser"; | opset.username = "testuser"; | |||
if (dict_init(uri, &set, &dict, &error) < 0) | if (dict_init(uri, &set, &dict, &error) < 0) | |||
i_fatal("dict_init(%s) failed: %s", argv[1], error); | i_fatal("dict_init(%s) failed: %s", argv[1], error); | |||
for (i = 0;; i++) { | for (i = 0;; i++) { | |||
i_snprintf(key, sizeof(key), "%s/%02x", prefix, | i_snprintf(key, sizeof(key), "%s/%02x", prefix, | |||
i_rand_limit(0xff)); | i_rand_limit(0xff)); | |||
i_snprintf(value, sizeof(value), "%04x", i_rand_limit(0xffff)); | i_snprintf(value, sizeof(value), "%04x", i_rand_limit(0xffff)); | |||
switch (i_rand_limit(4)) { | switch (i_rand_limit(4)) { | |||
case 0: | case 0: | |||
pending++; | pending++; | |||
dict_lookup_async(dict, key, lookup_callback, NULL); | dict_lookup_async(dict, NULL, key, lookup_callback, NULL) ; | |||
break; | break; | |||
case 1: { | case 1: { | |||
struct dict_transaction_context *trans; | struct dict_transaction_context *trans; | |||
pending++; | pending++; | |||
trans = dict_transaction_begin(dict); | trans = dict_transaction_begin(dict, &opset); | |||
dict_set(trans, key, value); | dict_set(trans, key, value); | |||
dict_transaction_commit_async(&trans, commit_callback, NU LL); | dict_transaction_commit_async(&trans, commit_callback, NU LL); | |||
break; | break; | |||
} | } | |||
case 2: { | case 2: { | |||
struct dict_transaction_context *trans; | struct dict_transaction_context *trans; | |||
pending++; | pending++; | |||
trans = dict_transaction_begin(dict); | trans = dict_transaction_begin(dict, &opset); | |||
dict_unset(trans, key); | dict_unset(trans, key); | |||
dict_transaction_commit_async(&trans, commit_callback, NU LL); | dict_transaction_commit_async(&trans, commit_callback, NU LL); | |||
break; | break; | |||
} | } | |||
case 3: { | case 3: { | |||
struct dict_iterate_context *iter; | struct dict_iterate_context *iter; | |||
const char *k, *v; | const char *k, *v; | |||
iter = dict_iterate_init(dict, prefix, DICT_ITERATE_FLAG_ EXACT_KEY); | iter = dict_iterate_init(dict, &opset, prefix, DICT_ITERA TE_FLAG_EXACT_KEY); | |||
while (dict_iterate(iter, &k, &v)) ; | while (dict_iterate(iter, &k, &v)) ; | |||
if (dict_iterate_deinit(&iter, &error) < 0) | if (dict_iterate_deinit(&iter, &error) < 0) | |||
i_error("iter failed: %s", error); | i_error("iter failed: %s", error); | |||
break; | break; | |||
} | } | |||
} | } | |||
while (pending > 100) { | while (pending > 100) { | |||
dict_wait(dict); | dict_wait(dict); | |||
printf("%d\n", pending); fflush(stdout); | printf("%d\n", pending); fflush(stdout); | |||
} | } | |||
End of changes. 7 change blocks. | ||||
5 lines changed or deleted | 7 lines changed or added |