]> source.dussan.org Git - rspamd.git/commitdiff
Add comparasion for rcl vs jansson.
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 15 Oct 2013 12:55:09 +0000 (13:55 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 15 Oct 2013 12:55:09 +0000 (13:55 +0100)
Fix some issues in jansson memory management.

src/json/dump.c
src/json/strbuffer.c
test/rspamd_rcl_test.c

index f384760c5dc9da91dadad8629486a4b2481a2d9d..7e4383abe1fd4411afb96451237ef53760ba80a6 100644 (file)
@@ -143,7 +143,7 @@ do_dump (const json_t * json, uint32_t flags, int depth, dump_func dump, void *d
                                return -1;
 
                        ret = dump (buffer, size, data);
-                       g_free (buffer);
+                       free (buffer);
                        return ret;
                }
 
@@ -157,7 +157,7 @@ do_dump (const json_t * json, uint32_t flags, int depth, dump_func dump, void *d
                                return -1;
 
                        ret = dump (buffer, size, data);
-                       g_free (buffer);
+                       free (buffer);
                        return ret;
                }
 
index 1ae336d3d2d25a5d1e10eb959ea9ffc288583c54..3fa1a92da3d002694c313c6346901a06cf52acf0 100644 (file)
@@ -75,7 +75,7 @@ strbuffer_append_bytes (strbuffer_t * strbuff, const char *data, int size)
        if (strbuff->length + size >= strbuff->size) {
                strbuff->size = max (strbuff->size * STRBUFFER_FACTOR, strbuff->length + size + 1);
 
-               strbuff->value = realloc (strbuff->value, strbuff->size);
+               strbuff->value = g_realloc (strbuff->value, strbuff->size);
                if (!strbuff->value)
                        return -1;
        }
index 2a93169a613f853526f0f8c44da804ff4a48ba20..778340890e699f8619795070b410cac3400a98a5 100644 (file)
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include "../src/config.h"
-#include "../src/rcl/rcl.h"
-#include "../src/main.h"
+#include "config.h"
+#include "rcl/rcl.h"
+#include "main.h"
+#include "json/jansson.h"
 #include "tests.h"
 
 const gchar *rcl_test_valid[] = {
@@ -105,6 +106,8 @@ rspamd_rcl_test_func (void)
        GError *err = NULL;
        struct timespec start, end;
        gdouble seconds;
+       json_t *json;
+       json_error_t jerr;
 
        cur = rcl_test_valid;
        while (*cur != NULL) {
@@ -162,14 +165,32 @@ rspamd_rcl_test_func (void)
        g_assert_no_error (err);
        clock_gettime (CLOCK_MONOTONIC, &end);
        seconds = (end.tv_sec - start.tv_sec) + (end.tv_nsec - start.tv_nsec) / 1000000000.;
-       msg_info ("parsed json in %.4f seconds", seconds);
+       msg_info ("rcl: parsed json in %.4f seconds", seconds);
        /* Test config emitting */
        clock_gettime (CLOCK_MONOTONIC, &start);
        emitted = rspamd_cl_object_emit (obj, RSPAMD_CL_EMIT_CONFIG);
        g_assert (emitted != NULL);
        clock_gettime (CLOCK_MONOTONIC, &end);
        seconds = (end.tv_sec - start.tv_sec) + (end.tv_nsec - start.tv_nsec) / 1000000000.;
-       msg_info ("emitted object in %.4f seconds", seconds);
+       msg_info ("rcl: emitted object in %.4f seconds", seconds);
        rspamd_cl_parser_free (parser);
        rspamd_cl_obj_unref (obj);
+       g_free (emitted);
+
+       clock_gettime (CLOCK_MONOTONIC, &start);
+       json = json_load_file ("./rcl_test.json", &jerr);
+       g_assert (json != NULL);
+       clock_gettime (CLOCK_MONOTONIC, &end);
+       seconds = (end.tv_sec - start.tv_sec) + (end.tv_nsec - start.tv_nsec) / 1000000000.;
+       msg_info ("jansson: parsed json in %.4f seconds", seconds);
+
+       clock_gettime (CLOCK_MONOTONIC, &start);
+       emitted = json_dumps (json, 0);
+       g_assert (emitted != NULL);
+       clock_gettime (CLOCK_MONOTONIC, &end);
+       seconds = (end.tv_sec - start.tv_sec) + (end.tv_nsec - start.tv_nsec) / 1000000000.;
+       msg_info ("jansson: emitted object in %.4f seconds", seconds);
+
+       //json_decref (json);
+       g_free (emitted);
 }