blob: b5efa859b0b11b3f9e6ede532ae32804e3245a1b [file] [log] [blame]
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -03001/*
2 * QDict unit-tests.
3 *
4 * Copyright (C) 2009 Red Hat Inc.
5 *
6 * Authors:
7 * Luiz Capitulino <lcapitulino@redhat.com>
Luiz Capitulino41836a92010-05-12 16:34:42 -03008 *
9 * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
10 * See the COPYING.LIB file in the top-level directory.
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -030011 */
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -030012
Markus Armbruster47e6b292018-02-01 12:18:38 +010013#include "qemu/osdep.h"
Paolo Bonzini7b1b5d12012-12-17 18:19:43 +010014#include "qapi/qmp/qdict.h"
Markus Armbruster992159c2018-09-26 14:23:09 +020015#include "qapi/qmp/qnum.h"
16#include "qapi/qmp/qstring.h"
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -030017
18/*
19 * Public Interface test-cases
20 *
21 * (with some violations to access 'private' data)
22 */
23
Anthony Liguoriac531cb2012-01-10 13:10:44 -060024static void qdict_new_test(void)
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -030025{
26 QDict *qdict;
27
28 qdict = qdict_new();
Anthony Liguoriac531cb2012-01-10 13:10:44 -060029 g_assert(qdict != NULL);
30 g_assert(qdict_size(qdict) == 0);
31 g_assert(qdict->base.refcnt == 1);
32 g_assert(qobject_type(QOBJECT(qdict)) == QTYPE_QDICT);
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -030033
Marc-André Lureaucb3e7f02018-04-19 17:01:43 +020034 qobject_unref(qdict);
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -030035}
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -030036
Anthony Liguoriac531cb2012-01-10 13:10:44 -060037static void qdict_put_obj_test(void)
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -030038{
Marc-André Lureau01b2ffc2017-06-07 20:35:58 +040039 QNum *qn;
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -030040 QDict *qdict;
41 QDictEntry *ent;
42 const int num = 42;
43
44 qdict = qdict_new();
45
46 // key "" will have tdb hash 12345
Eric Blake46f5ac22017-04-27 16:58:17 -050047 qdict_put_int(qdict, "", num);
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -030048
Anthony Liguoriac531cb2012-01-10 13:10:44 -060049 g_assert(qdict_size(qdict) == 1);
Luiz Capitulinoc8bc3cd2010-06-07 15:45:22 -030050 ent = QLIST_FIRST(&qdict->table[12345 % QDICT_BUCKET_MAX]);
Max Reitz7dc847e2018-02-24 16:40:29 +010051 qn = qobject_to(QNum, ent->value);
Marc-André Lureau01b2ffc2017-06-07 20:35:58 +040052 g_assert_cmpint(qnum_get_int(qn), ==, num);
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -030053
Marc-André Lureaucb3e7f02018-04-19 17:01:43 +020054 qobject_unref(qdict);
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -030055}
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -030056
Anthony Liguoriac531cb2012-01-10 13:10:44 -060057static void qdict_destroy_simple_test(void)
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -030058{
59 QDict *qdict;
60
61 qdict = qdict_new();
Eric Blake46f5ac22017-04-27 16:58:17 -050062 qdict_put_int(qdict, "num", 0);
63 qdict_put_str(qdict, "str", "foo");
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -030064
Marc-André Lureaucb3e7f02018-04-19 17:01:43 +020065 qobject_unref(qdict);
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -030066}
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -030067
Anthony Liguoriac531cb2012-01-10 13:10:44 -060068static void qdict_get_test(void)
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -030069{
Marc-André Lureau01b2ffc2017-06-07 20:35:58 +040070 QNum *qn;
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -030071 QObject *obj;
72 const int value = -42;
73 const char *key = "test";
Anthony Liguoriac531cb2012-01-10 13:10:44 -060074 QDict *tests_dict = qdict_new();
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -030075
Eric Blake46f5ac22017-04-27 16:58:17 -050076 qdict_put_int(tests_dict, key, value);
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -030077
78 obj = qdict_get(tests_dict, key);
Anthony Liguoriac531cb2012-01-10 13:10:44 -060079 g_assert(obj != NULL);
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -030080
Max Reitz7dc847e2018-02-24 16:40:29 +010081 qn = qobject_to(QNum, obj);
Marc-André Lureau01b2ffc2017-06-07 20:35:58 +040082 g_assert_cmpint(qnum_get_int(qn), ==, value);
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -030083
Marc-André Lureaucb3e7f02018-04-19 17:01:43 +020084 qobject_unref(tests_dict);
Anthony Liguoriac531cb2012-01-10 13:10:44 -060085}
86
87static void qdict_get_int_test(void)
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -030088{
89 int ret;
90 const int value = 100;
91 const char *key = "int";
Anthony Liguoriac531cb2012-01-10 13:10:44 -060092 QDict *tests_dict = qdict_new();
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -030093
Eric Blake46f5ac22017-04-27 16:58:17 -050094 qdict_put_int(tests_dict, key, value);
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -030095
96 ret = qdict_get_int(tests_dict, key);
Anthony Liguoriac531cb2012-01-10 13:10:44 -060097 g_assert(ret == value);
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -030098
Marc-André Lureaucb3e7f02018-04-19 17:01:43 +020099 qobject_unref(tests_dict);
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600100}
101
102static void qdict_get_try_int_test(void)
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300103{
104 int ret;
105 const int value = 100;
106 const char *key = "int";
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600107 QDict *tests_dict = qdict_new();
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300108
Eric Blake46f5ac22017-04-27 16:58:17 -0500109 qdict_put_int(tests_dict, key, value);
Marc-André Lureau269c20b2017-06-07 20:36:33 +0400110 qdict_put_str(tests_dict, "string", "test");
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300111
112 ret = qdict_get_try_int(tests_dict, key, 0);
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600113 g_assert(ret == value);
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300114
Marc-André Lureau269c20b2017-06-07 20:36:33 +0400115 ret = qdict_get_try_int(tests_dict, "missing", -42);
116 g_assert_cmpuint(ret, ==, -42);
117
118 ret = qdict_get_try_int(tests_dict, "string", -42);
119 g_assert_cmpuint(ret, ==, -42);
120
Marc-André Lureaucb3e7f02018-04-19 17:01:43 +0200121 qobject_unref(tests_dict);
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600122}
123
124static void qdict_get_str_test(void)
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300125{
126 const char *p;
127 const char *key = "key";
128 const char *str = "string";
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600129 QDict *tests_dict = qdict_new();
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300130
Eric Blake46f5ac22017-04-27 16:58:17 -0500131 qdict_put_str(tests_dict, key, str);
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300132
133 p = qdict_get_str(tests_dict, key);
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600134 g_assert(p != NULL);
135 g_assert(strcmp(p, str) == 0);
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300136
Marc-André Lureaucb3e7f02018-04-19 17:01:43 +0200137 qobject_unref(tests_dict);
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600138}
139
140static void qdict_get_try_str_test(void)
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300141{
142 const char *p;
143 const char *key = "key";
144 const char *str = "string";
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600145 QDict *tests_dict = qdict_new();
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300146
Eric Blake46f5ac22017-04-27 16:58:17 -0500147 qdict_put_str(tests_dict, key, str);
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300148
149 p = qdict_get_try_str(tests_dict, key);
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600150 g_assert(p != NULL);
151 g_assert(strcmp(p, str) == 0);
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300152
Marc-André Lureaucb3e7f02018-04-19 17:01:43 +0200153 qobject_unref(tests_dict);
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600154}
155
156static void qdict_haskey_not_test(void)
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300157{
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600158 QDict *tests_dict = qdict_new();
159 g_assert(qdict_haskey(tests_dict, "test") == 0);
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300160
Marc-André Lureaucb3e7f02018-04-19 17:01:43 +0200161 qobject_unref(tests_dict);
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600162}
163
164static void qdict_haskey_test(void)
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300165{
166 const char *key = "test";
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600167 QDict *tests_dict = qdict_new();
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300168
Eric Blake46f5ac22017-04-27 16:58:17 -0500169 qdict_put_int(tests_dict, key, 0);
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600170 g_assert(qdict_haskey(tests_dict, key) == 1);
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300171
Marc-André Lureaucb3e7f02018-04-19 17:01:43 +0200172 qobject_unref(tests_dict);
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600173}
174
175static void qdict_del_test(void)
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300176{
177 const char *key = "key test";
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600178 QDict *tests_dict = qdict_new();
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300179
Eric Blake46f5ac22017-04-27 16:58:17 -0500180 qdict_put_str(tests_dict, key, "foo");
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600181 g_assert(qdict_size(tests_dict) == 1);
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300182
183 qdict_del(tests_dict, key);
184
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600185 g_assert(qdict_size(tests_dict) == 0);
186 g_assert(qdict_haskey(tests_dict, key) == 0);
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300187
Marc-André Lureaucb3e7f02018-04-19 17:01:43 +0200188 qobject_unref(tests_dict);
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600189}
190
191static void qobject_to_qdict_test(void)
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300192{
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600193 QDict *tests_dict = qdict_new();
Max Reitz7dc847e2018-02-24 16:40:29 +0100194 g_assert(qobject_to(QDict, QOBJECT(tests_dict)) == tests_dict);
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300195
Marc-André Lureaucb3e7f02018-04-19 17:01:43 +0200196 qobject_unref(tests_dict);
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600197}
198
199static void qdict_iterapi_test(void)
Luiz Capitulinod02c6bd2010-06-07 15:29:58 -0300200{
201 int count;
202 const QDictEntry *ent;
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600203 QDict *tests_dict = qdict_new();
Luiz Capitulinod02c6bd2010-06-07 15:29:58 -0300204
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600205 g_assert(qdict_first(tests_dict) == NULL);
Luiz Capitulinod02c6bd2010-06-07 15:29:58 -0300206
Eric Blake46f5ac22017-04-27 16:58:17 -0500207 qdict_put_int(tests_dict, "key1", 1);
208 qdict_put_int(tests_dict, "key2", 2);
209 qdict_put_int(tests_dict, "key3", 3);
Luiz Capitulinod02c6bd2010-06-07 15:29:58 -0300210
211 count = 0;
212 for (ent = qdict_first(tests_dict); ent; ent = qdict_next(tests_dict, ent)){
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600213 g_assert(qdict_haskey(tests_dict, qdict_entry_key(ent)) == 1);
Luiz Capitulinod02c6bd2010-06-07 15:29:58 -0300214 count++;
215 }
216
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600217 g_assert(count == qdict_size(tests_dict));
Luiz Capitulinod02c6bd2010-06-07 15:29:58 -0300218
219 /* Do it again to test restarting */
220 count = 0;
221 for (ent = qdict_first(tests_dict); ent; ent = qdict_next(tests_dict, ent)){
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600222 g_assert(qdict_haskey(tests_dict, qdict_entry_key(ent)) == 1);
Luiz Capitulinod02c6bd2010-06-07 15:29:58 -0300223 count++;
224 }
225
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600226 g_assert(count == qdict_size(tests_dict));
227
Marc-André Lureaucb3e7f02018-04-19 17:01:43 +0200228 qobject_unref(tests_dict);
Luiz Capitulinod02c6bd2010-06-07 15:29:58 -0300229}
Luiz Capitulinod02c6bd2010-06-07 15:29:58 -0300230
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300231/*
232 * Errors test-cases
233 */
234
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600235static void qdict_put_exists_test(void)
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300236{
237 int value;
238 const char *key = "exists";
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600239 QDict *tests_dict = qdict_new();
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300240
Eric Blake46f5ac22017-04-27 16:58:17 -0500241 qdict_put_int(tests_dict, key, 1);
242 qdict_put_int(tests_dict, key, 2);
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300243
244 value = qdict_get_int(tests_dict, key);
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600245 g_assert(value == 2);
Luiz Capitulino29ec3152009-12-14 18:53:20 -0200246
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600247 g_assert(qdict_size(tests_dict) == 1);
248
Marc-André Lureaucb3e7f02018-04-19 17:01:43 +0200249 qobject_unref(tests_dict);
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300250}
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300251
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600252static void qdict_get_not_exists_test(void)
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300253{
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600254 QDict *tests_dict = qdict_new();
255 g_assert(qdict_get(tests_dict, "foo") == NULL);
256
Marc-André Lureaucb3e7f02018-04-19 17:01:43 +0200257 qobject_unref(tests_dict);
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300258}
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300259
260/*
261 * Stress test-case
262 *
263 * This is a lot big for a unit-test, but there is no other place
264 * to have it.
265 */
266
267static void remove_dots(char *string)
268{
269 char *p = strchr(string, ':');
270 if (p)
271 *p = '\0';
272}
273
274static QString *read_line(FILE *file, char *key)
275{
276 char value[128];
277
Stefan Weil7464f052011-01-21 22:50:30 +0100278 if (fscanf(file, "%127s%127s", key, value) == EOF) {
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300279 return NULL;
Stefan Weil7464f052011-01-21 22:50:30 +0100280 }
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300281 remove_dots(key);
282 return qstring_from_str(value);
283}
284
285#define reset_file(file) fseek(file, 0L, SEEK_SET)
286
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600287static void qdict_stress_test(void)
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300288{
289 size_t lines;
290 char key[128];
291 FILE *test_file;
292 QDict *qdict;
293 QString *value;
Philippe Mathieu-Daudéfe07b622018-12-18 12:37:17 +0100294 const char *test_file_path = "tests/data/qobject/qdict.txt";
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300295
296 test_file = fopen(test_file_path, "r");
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600297 g_assert(test_file != NULL);
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300298
299 // Create the dict
300 qdict = qdict_new();
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600301 g_assert(qdict != NULL);
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300302
303 // Add everything from the test file
304 for (lines = 0;; lines++) {
305 value = read_line(test_file, key);
306 if (!value)
307 break;
308
309 qdict_put(qdict, key, value);
310 }
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600311 g_assert(qdict_size(qdict) == lines);
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300312
313 // Check if everything is really in there
314 reset_file(test_file);
315 for (;;) {
316 const char *str1, *str2;
317
318 value = read_line(test_file, key);
319 if (!value)
320 break;
321
322 str1 = qstring_get_str(value);
323
324 str2 = qdict_get_str(qdict, key);
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600325 g_assert(str2 != NULL);
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300326
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600327 g_assert(strcmp(str1, str2) == 0);
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300328
Marc-André Lureaucb3e7f02018-04-19 17:01:43 +0200329 qobject_unref(value);
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300330 }
331
332 // Delete everything
333 reset_file(test_file);
334 for (;;) {
335 value = read_line(test_file, key);
336 if (!value)
337 break;
338
339 qdict_del(qdict, key);
Marc-André Lureaucb3e7f02018-04-19 17:01:43 +0200340 qobject_unref(value);
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300341
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600342 g_assert(qdict_haskey(qdict, key) == 0);
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300343 }
344 fclose(test_file);
345
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600346 g_assert(qdict_size(qdict) == 0);
Marc-André Lureaucb3e7f02018-04-19 17:01:43 +0200347 qobject_unref(qdict);
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300348}
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300349
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600350int main(int argc, char **argv)
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300351{
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600352 g_test_init(&argc, &argv, NULL);
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300353
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600354 g_test_add_func("/public/new", qdict_new_test);
355 g_test_add_func("/public/put_obj", qdict_put_obj_test);
356 g_test_add_func("/public/destroy_simple", qdict_destroy_simple_test);
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300357
358 /* Continue, but now with fixtures */
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600359 g_test_add_func("/public/get", qdict_get_test);
360 g_test_add_func("/public/get_int", qdict_get_int_test);
361 g_test_add_func("/public/get_try_int", qdict_get_try_int_test);
362 g_test_add_func("/public/get_str", qdict_get_str_test);
363 g_test_add_func("/public/get_try_str", qdict_get_try_str_test);
364 g_test_add_func("/public/haskey_not", qdict_haskey_not_test);
365 g_test_add_func("/public/haskey", qdict_haskey_test);
366 g_test_add_func("/public/del", qdict_del_test);
367 g_test_add_func("/public/to_qdict", qobject_to_qdict_test);
368 g_test_add_func("/public/iterapi", qdict_iterapi_test);
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300369
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600370 g_test_add_func("/errors/put_exists", qdict_put_exists_test);
371 g_test_add_func("/errors/get_not_exists", qdict_get_not_exists_test);
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300372
373 /* The Big one */
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600374 if (g_test_slow()) {
375 g_test_add_func("/stress/test", qdict_stress_test);
376 }
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300377
Anthony Liguoriac531cb2012-01-10 13:10:44 -0600378 return g_test_run();
Luiz Capitulino7b8c51a2009-08-28 15:27:32 -0300379}