You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ac...@apache.org on 2015/03/06 23:40:23 UTC

svn commit: r1664744 - in /qpid/dispatch/trunk: ./ include/qpid/ include/qpid/dispatch/ src/ src/posix/ tests/

Author: aconway
Date: Fri Mar  6 22:40:22 2015
New Revision: 1664744

URL: http://svn.apache.org/r1664744
Log:
DISPATCH-121: Allow memory pools to be switched off at compile time.

For debugging purposes to get better results from toolsl like valgrind.

Fixed memory bugs
- Numerous memory bugs in tests.
- Invalid read in qd_hash_free (remove from DEQ after free)
- Added missing qd_timer_finalize in qd_server_free

Added:
    qpid/dispatch/trunk/src/alloc.h
      - copied, changed from r1664743, qpid/dispatch/trunk/src/alloc_private.h
    qpid/dispatch/trunk/src/alloc_malloc.h
      - copied, changed from r1664743, qpid/dispatch/trunk/src/timer_private.h
    qpid/dispatch/trunk/src/alloc_pool.c
      - copied, changed from r1664743, qpid/dispatch/trunk/src/alloc.c
    qpid/dispatch/trunk/src/alloc_pool.h
      - copied, changed from r1664743, qpid/dispatch/trunk/include/qpid/dispatch/alloc.h
Removed:
    qpid/dispatch/trunk/include/qpid/dispatch/alloc.h
    qpid/dispatch/trunk/src/alloc.c
    qpid/dispatch/trunk/src/alloc_private.h
Modified:
    qpid/dispatch/trunk/CMakeLists.txt
    qpid/dispatch/trunk/include/qpid/dispatch.h
    qpid/dispatch/trunk/include/qpid/dispatch/container.h
    qpid/dispatch/trunk/include/qpid/dispatch/message.h
    qpid/dispatch/trunk/reconfigure.in
    qpid/dispatch/trunk/src/CMakeLists.txt
    qpid/dispatch/trunk/src/bitmask.c
    qpid/dispatch/trunk/src/buffer.c
    qpid/dispatch/trunk/src/compose.c
    qpid/dispatch/trunk/src/config.h.in
    qpid/dispatch/trunk/src/dispatch.c
    qpid/dispatch/trunk/src/hash.c
    qpid/dispatch/trunk/src/iovec.c
    qpid/dispatch/trunk/src/iterator.c
    qpid/dispatch/trunk/src/log.c
    qpid/dispatch/trunk/src/message_private.h
    qpid/dispatch/trunk/src/parse.c
    qpid/dispatch/trunk/src/posix/driver.c
    qpid/dispatch/trunk/src/python_embedded.c
    qpid/dispatch/trunk/src/server.c
    qpid/dispatch/trunk/src/server_private.h
    qpid/dispatch/trunk/src/timer.c
    qpid/dispatch/trunk/src/timer_private.h
    qpid/dispatch/trunk/tests/CMakeLists.txt
    qpid/dispatch/trunk/tests/alloc_test.c
    qpid/dispatch/trunk/tests/field_test.c
    qpid/dispatch/trunk/tests/message_test.c
    qpid/dispatch/trunk/tests/parse_test.c
    qpid/dispatch/trunk/tests/run_unit_tests.c
    qpid/dispatch/trunk/tests/run_unit_tests_size.c
    qpid/dispatch/trunk/tests/server_test.c
    qpid/dispatch/trunk/tests/system_test.py
    qpid/dispatch/trunk/tests/system_tests_qdmanage.py
    qpid/dispatch/trunk/tests/system_tests_qdstat.py
    qpid/dispatch/trunk/tests/timer_test.c
    qpid/dispatch/trunk/tests/tool_test.c

Modified: qpid/dispatch/trunk/CMakeLists.txt
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/CMakeLists.txt?rev=1664744&r1=1664743&r2=1664744&view=diff
==============================================================================
--- qpid/dispatch/trunk/CMakeLists.txt (original)
+++ qpid/dispatch/trunk/CMakeLists.txt Fri Mar  6 22:40:22 2015
@@ -27,6 +27,9 @@ message("Build type is \"${CMAKE_BUILD_T
 
 project(qpid-dispatch C)
 
+# Build time switch to turn off memory pooling.
+option(USE_MEMORY_POOL "Use per-thread memory pools" ON)
+
 file(STRINGS "${CMAKE_SOURCE_DIR}/VERSION.txt" QPID_DISPATCH_VERSION)
 
 cmake_minimum_required(VERSION 2.6)

Modified: qpid/dispatch/trunk/include/qpid/dispatch.h
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/include/qpid/dispatch.h?rev=1664744&r1=1664743&r2=1664744&view=diff
==============================================================================
--- qpid/dispatch/trunk/include/qpid/dispatch.h (original)
+++ qpid/dispatch/trunk/include/qpid/dispatch.h Fri Mar  6 22:40:22 2015
@@ -39,7 +39,6 @@
  * provides the tools to do so.
 */
 
-#include <qpid/dispatch/alloc.h>
 #include <qpid/dispatch/bitmask.h>
 #include <qpid/dispatch/buffer.h>
 #include <qpid/dispatch/ctools.h>

Modified: qpid/dispatch/trunk/include/qpid/dispatch/container.h
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/include/qpid/dispatch/container.h?rev=1664744&r1=1664743&r2=1664744&view=diff
==============================================================================
--- qpid/dispatch/trunk/include/qpid/dispatch/container.h (original)
+++ qpid/dispatch/trunk/include/qpid/dispatch/container.h Fri Mar  6 22:40:22 2015
@@ -32,7 +32,6 @@
 #include <proton/engine.h>
 #include <qpid/dispatch/dispatch.h>
 #include <qpid/dispatch/server.h>
-#include <qpid/dispatch/alloc.h>
 #include <qpid/dispatch/ctools.h>
 
 typedef uint8_t qd_dist_mode_t;

Modified: qpid/dispatch/trunk/include/qpid/dispatch/message.h
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/include/qpid/dispatch/message.h?rev=1664744&r1=1664743&r2=1664744&view=diff
==============================================================================
--- qpid/dispatch/trunk/include/qpid/dispatch/message.h (original)
+++ qpid/dispatch/trunk/include/qpid/dispatch/message.h Fri Mar  6 22:40:22 2015
@@ -20,7 +20,6 @@
  */
 
 #include <qpid/dispatch/ctools.h>
-#include <qpid/dispatch/alloc.h>
 #include <qpid/dispatch/iterator.h>
 #include <qpid/dispatch/buffer.h>
 #include <qpid/dispatch/compose.h>

Modified: qpid/dispatch/trunk/reconfigure.in
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/reconfigure.in?rev=1664744&r1=1664743&r2=1664744&view=diff
==============================================================================
--- qpid/dispatch/trunk/reconfigure.in (original)
+++ qpid/dispatch/trunk/reconfigure.in Fri Mar  6 22:40:22 2015
@@ -7,4 +7,4 @@
 # That will force automatic re-configure and everybody will be happy.
 #
 
-1
+2

Modified: qpid/dispatch/trunk/src/CMakeLists.txt
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/CMakeLists.txt?rev=1664744&r1=1664743&r2=1664744&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/CMakeLists.txt (original)
+++ qpid/dispatch/trunk/src/CMakeLists.txt Fri Mar  6 22:40:22 2015
@@ -43,7 +43,6 @@ include_directories(
 
 # Build the qpid-dispatch library.
 set(qpid_dispatch_SOURCES
-  alloc.c
   amqp.c
   bitmask.c
   buffer.c
@@ -74,6 +73,10 @@ set(qpid_dispatch_SOURCES
   waypoint.c
   )
 
+if(USE_MEMORY_POOL)
+  list(APPEND qpid_dispatch_SOURCES alloc_pool.c)
+endif()
+
 set_property(
   SOURCE python_embedded.c router_pynode.c
   PROPERTY COMPILE_FLAGS -Wno-strict-aliasing

Copied: qpid/dispatch/trunk/src/alloc.h (from r1664743, qpid/dispatch/trunk/src/alloc_private.h)
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/alloc.h?p2=qpid/dispatch/trunk/src/alloc.h&p1=qpid/dispatch/trunk/src/alloc_private.h&r1=1664743&r2=1664744&rev=1664744&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/alloc_private.h (original)
+++ qpid/dispatch/trunk/src/alloc.h Fri Mar  6 22:40:22 2015
@@ -1,5 +1,5 @@
-#ifndef __dispatch_alloc_private_h__
-#define __dispatch_alloc_private_h__ 1
+#ifndef ALLOC_H
+#define ALLOC_H
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -19,11 +19,12 @@
  * under the License.
  */
 
-#include <qpid/dispatch/alloc.h>
-#include <qpid/dispatch/dispatch.h>
-
-void qd_alloc_initialize(void);
-void qd_alloc_debug_dump(const char *file);
-void qd_alloc_finalize(void);
+#include "config.h"
 
+#if USE_MEMORY_POOL
+#include "alloc_pool.h"
+#else
+#include "alloc_malloc.h"
 #endif
+
+#endif // ALLOC_H

Copied: qpid/dispatch/trunk/src/alloc_malloc.h (from r1664743, qpid/dispatch/trunk/src/timer_private.h)
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/alloc_malloc.h?p2=qpid/dispatch/trunk/src/alloc_malloc.h&p1=qpid/dispatch/trunk/src/timer_private.h&r1=1664743&r2=1664744&rev=1664744&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/timer_private.h (original)
+++ qpid/dispatch/trunk/src/alloc_malloc.h Fri Mar  6 22:40:22 2015
@@ -1,5 +1,5 @@
-#ifndef __timer_private_h__
-#define __timer_private_h__ 1
+#ifndef ALLOC_MALLOC_H
+#define ALLOC_MALLOC_H
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -19,34 +19,26 @@
  * under the License.
  */
 
-#include <qpid/dispatch/ctools.h>
-#include <qpid/dispatch/timer.h>
-#include <qpid/dispatch/threading.h>
-
-typedef enum {
-    TIMER_FREE,
-    TIMER_IDLE,
-    TIMER_SCHEDULED,
-    TIMER_PENDING
-} qd_timer_state_t;
-
-
-struct qd_timer_t {
-    DEQ_LINKS(qd_timer_t);
-    qd_server_t      *server;
-    qd_timer_cb_t     handler;
-    void             *context;
-    long              delta_time;
-    qd_timer_state_t  state;
-};
-
-DEQ_DECLARE(qd_timer_t, qd_timer_list_t);
-
-void qd_timer_initialize(sys_mutex_t *server_lock);
-void qd_timer_finalize(void);
-long qd_timer_next_duration_LH(void);
-void qd_timer_visit_LH(long current_time);
-void qd_timer_idle_LH(qd_timer_t *timer);
+/**
+ *@file
+ *
+ * Use simple malloc/free allocation in place of allocation pools.
+ * Useful for debugging with tools like valgrind.
+ */
+
+#define ALLOC_DECLARE(T)                        \
+    T *new_##T(void);                           \
+    void free_##T(T *p);
+
+#define ALLOC_DEFINE_CONFIG(T,S,A,C)                                    \
+    T *new_##T(void) { size_t *a = (A); return (T*) malloc((S)+ (a ? *a : 0)); } \
+    void free_##T(T *p) { free(p); } \
+
+#define ALLOC_DEFINE(T) ALLOC_DEFINE_CONFIG(T, sizeof(T), 0, 0)
+
+static inline void qd_alloc_initialize(void) {}
+static inline void qd_alloc_debug_dump(const char *file) {}
+static inline void qd_alloc_finalize(void) {}
 
 
-#endif
+#endif // ALLOC_MALLOC_H

Copied: qpid/dispatch/trunk/src/alloc_pool.c (from r1664743, qpid/dispatch/trunk/src/alloc.c)
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/alloc_pool.c?p2=qpid/dispatch/trunk/src/alloc_pool.c&p1=qpid/dispatch/trunk/src/alloc.c&r1=1664743&r2=1664744&rev=1664744&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/alloc.c (original)
+++ qpid/dispatch/trunk/src/alloc_pool.c Fri Mar  6 22:40:22 2015
@@ -18,7 +18,7 @@
  */
 
 #include <Python.h>
-#include <qpid/dispatch/alloc.h>
+#include "alloc.h"
 #include <qpid/dispatch/ctools.h>
 #include <qpid/dispatch/log.h>
 #include <memory.h>
@@ -27,7 +27,9 @@
 #include "entity.h"
 #include "entity_cache.h"
 
+#if !defined(NDEBUG)
 #define QD_MEMORY_DEBUG 1
+#endif
 
 const char *QD_ALLOCATOR_TYPE = "allocator";
 
@@ -280,7 +282,7 @@ void qd_alloc_finalize(void)
 
     //
     // Note: By the time we get here, the server threads have been joined and there is
-    //       only the main thread remaining.  There is therefore no reason to be 
+    //       only the main thread remaining.  There is therefore no reason to be
     //       concerned about locking.
     //
 
@@ -333,7 +335,7 @@ void qd_alloc_finalize(void)
         //
         if (dump_file && desc->stats->total_free_to_heap < desc->stats->total_alloc_from_heap)
             fprintf(dump_file,
-                    "alloc.c: Items of type '%s' remain allocated at shutdown: %"PRId64"\n", 
+                    "alloc.c: Items of type '%s' remain allocated at shutdown: %"PRId64"\n",
                     desc->type_name,
                     desc->stats->total_alloc_from_heap - desc->stats->total_free_to_heap);
 

Copied: qpid/dispatch/trunk/src/alloc_pool.h (from r1664743, qpid/dispatch/trunk/include/qpid/dispatch/alloc.h)
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/alloc_pool.h?p2=qpid/dispatch/trunk/src/alloc_pool.h&p1=qpid/dispatch/trunk/include/qpid/dispatch/alloc.h&r1=1664743&r2=1664744&rev=1664744&view=diff
==============================================================================
--- qpid/dispatch/trunk/include/qpid/dispatch/alloc.h (original)
+++ qpid/dispatch/trunk/src/alloc_pool.h Fri Mar  6 22:40:22 2015
@@ -8,9 +8,9 @@
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
  * with the License.  You may obtain a copy of the License at
- * 
+ *
  *   http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -98,4 +98,8 @@ void qd_dealloc(qd_alloc_type_desc_t *de
  */
 #define ALLOC_DEFINE(T) ALLOC_DEFINE_CONFIG(T, sizeof(T), 0, 0)
 
+void qd_alloc_initialize(void);
+void qd_alloc_debug_dump(const char *file);
+void qd_alloc_finalize(void);
+
 #endif

Modified: qpid/dispatch/trunk/src/bitmask.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/bitmask.c?rev=1664744&r1=1664743&r2=1664744&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/bitmask.c (original)
+++ qpid/dispatch/trunk/src/bitmask.c Fri Mar  6 22:40:22 2015
@@ -17,9 +17,12 @@
  * under the License.
  */
 
+#include "alloc.h"
 #include <qpid/dispatch/bitmask.h>
-#include <qpid/dispatch/alloc.h>
 #include <assert.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <sys/types.h>
 
 #define QD_BITMASK_LONGS 16
 #define QD_BITMASK_BITS  (QD_BITMASK_LONGS * 64)

Modified: qpid/dispatch/trunk/src/buffer.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/buffer.c?rev=1664744&r1=1664743&r2=1664744&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/buffer.c (original)
+++ qpid/dispatch/trunk/src/buffer.c Fri Mar  6 22:40:22 2015
@@ -18,7 +18,7 @@
  */
 
 #include <qpid/dispatch/buffer.h>
-#include <qpid/dispatch/alloc.h>
+#include "alloc.h"
 
 static size_t buffer_size = 512;
 static int    size_locked = 0;

Modified: qpid/dispatch/trunk/src/compose.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/compose.c?rev=1664744&r1=1664743&r2=1664744&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/compose.c (original)
+++ qpid/dispatch/trunk/src/compose.c Fri Mar  6 22:40:22 2015
@@ -18,7 +18,7 @@
  */
 
 #include <qpid/dispatch/ctools.h>
-#include <qpid/dispatch/alloc.h>
+#include "alloc.h"
 #include <qpid/dispatch/buffer.h>
 #include <qpid/dispatch/amqp.h>
 #include "compose_private.h"

Modified: qpid/dispatch/trunk/src/config.h.in
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/config.h.in?rev=1664744&r1=1664743&r2=1664744&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/config.h.in (original)
+++ qpid/dispatch/trunk/src/config.h.in Fri Mar  6 22:40:22 2015
@@ -17,6 +17,5 @@
  * under the License.
  */
 
-#define QPID_DISPATCH_LIB            "${QPID_DISPATCH_LIB}"
-
-
+#define QPID_DISPATCH_LIB "${QPID_DISPATCH_LIB}"
+#cmakedefine01 USE_MEMORY_POOL

Modified: qpid/dispatch/trunk/src/dispatch.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/dispatch.c?rev=1664744&r1=1664743&r2=1664744&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/dispatch.c (original)
+++ qpid/dispatch/trunk/src/dispatch.c Fri Mar  6 22:40:22 2015
@@ -26,7 +26,7 @@
 
 #include "config.h"
 #include "dispatch_private.h"
-#include "alloc_private.h"
+#include "alloc.h"
 #include "log_private.h"
 #include "router_private.h"
 #include "waypoint_private.h"

Modified: qpid/dispatch/trunk/src/hash.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/hash.c?rev=1664744&r1=1664743&r2=1664744&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/hash.c (original)
+++ qpid/dispatch/trunk/src/hash.c Fri Mar  6 22:40:22 2015
@@ -19,7 +19,7 @@
 
 #include <qpid/dispatch/hash.h>
 #include <qpid/dispatch/ctools.h>
-#include <qpid/dispatch/alloc.h>
+#include "alloc.h"
 #include <stdio.h>
 #include <string.h>
 
@@ -109,8 +109,8 @@ void qd_hash_free(qd_hash_t *h)
         item = DEQ_HEAD(h->buckets[idx].items);
         while (item) {
             free(item->key);
-            free_qd_hash_item_t(item);
             DEQ_REMOVE_HEAD(h->buckets[idx].items);
+            free_qd_hash_item_t(item);
             item = DEQ_HEAD(h->buckets[idx].items);
         }
     }

Modified: qpid/dispatch/trunk/src/iovec.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/iovec.c?rev=1664744&r1=1664743&r2=1664744&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/iovec.c (original)
+++ qpid/dispatch/trunk/src/iovec.c Fri Mar  6 22:40:22 2015
@@ -17,9 +17,10 @@
  * under the License.
  */
 
+#include "alloc.h"
 #include <qpid/dispatch/iovec.h>
-#include <qpid/dispatch/alloc.h>
 #include <string.h>
+#include <stdlib.h>
 
 #define QD_IOVEC_MAX 64
 

Modified: qpid/dispatch/trunk/src/iterator.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/iterator.c?rev=1664744&r1=1664743&r2=1664744&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/iterator.c (original)
+++ qpid/dispatch/trunk/src/iterator.c Fri Mar  6 22:40:22 2015
@@ -19,7 +19,7 @@
 
 #include <qpid/dispatch/iterator.h>
 #include <qpid/dispatch/ctools.h>
-#include <qpid/dispatch/alloc.h>
+#include "alloc.h"
 #include <qpid/dispatch/log.h>
 #include "message_private.h"
 #include <stdio.h>

Modified: qpid/dispatch/trunk/src/log.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/log.c?rev=1664744&r1=1664743&r2=1664744&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/log.c (original)
+++ qpid/dispatch/trunk/src/log.c Fri Mar  6 22:40:22 2015
@@ -24,7 +24,7 @@
 #include "aprintf.h"
 #include <qpid/dispatch/ctools.h>
 #include <qpid/dispatch/dispatch.h>
-#include <qpid/dispatch/alloc.h>
+#include "alloc.h"
 #include <qpid/dispatch/threading.h>
 #include <qpid/dispatch/log.h>
 #include <stdarg.h>

Modified: qpid/dispatch/trunk/src/message_private.h
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/message_private.h?rev=1664744&r1=1664743&r2=1664744&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/message_private.h (original)
+++ qpid/dispatch/trunk/src/message_private.h Fri Mar  6 22:40:22 2015
@@ -20,7 +20,7 @@
  */
 
 #include <qpid/dispatch/message.h>
-#include <qpid/dispatch/alloc.h>
+#include "alloc.h"
 #include <qpid/dispatch/threading.h>
 
 /** @file

Modified: qpid/dispatch/trunk/src/parse.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/parse.c?rev=1664744&r1=1664743&r2=1664744&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/parse.c (original)
+++ qpid/dispatch/trunk/src/parse.c Fri Mar  6 22:40:22 2015
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-#include <qpid/dispatch/alloc.h>
+#include "alloc.h"
 #include <qpid/dispatch/ctools.h>
 #include <qpid/dispatch/parse.h>
 #include <qpid/dispatch/amqp.h>

Modified: qpid/dispatch/trunk/src/posix/driver.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/posix/driver.c?rev=1664744&r1=1664743&r2=1664744&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/posix/driver.c (original)
+++ qpid/dispatch/trunk/src/posix/driver.c Fri Mar  6 22:40:22 2015
@@ -37,7 +37,7 @@
 #include <assert.h>
 
 #include <qpid/dispatch/driver.h>
-#include <qpid/dispatch/alloc.h>
+#include "alloc.h"
 #include <proton/error.h>
 #include <proton/sasl.h>
 #include <proton/ssl.h>

Modified: qpid/dispatch/trunk/src/python_embedded.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/python_embedded.c?rev=1664744&r1=1664743&r2=1664744&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/python_embedded.c (original)
+++ qpid/dispatch/trunk/src/python_embedded.c Fri Mar  6 22:40:22 2015
@@ -23,7 +23,7 @@
 #include <qpid/dispatch/log.h>
 #include <qpid/dispatch/error.h>
 #include <qpid/dispatch/amqp.h>
-#include <qpid/dispatch/alloc.h>
+#include "alloc.h"
 #include <qpid/dispatch/router.h>
 #include <qpid/dispatch/error.h>
 

Modified: qpid/dispatch/trunk/src/server.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/server.c?rev=1664744&r1=1664743&r2=1664744&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/server.c (original)
+++ qpid/dispatch/trunk/src/server.c Fri Mar  6 22:40:22 2015
@@ -27,7 +27,7 @@
 #include "dispatch_private.h"
 #include "server_private.h"
 #include "timer_private.h"
-#include "alloc_private.h"
+#include "alloc.h"
 #include <stdio.h>
 #include <time.h>
 #include <string.h>
@@ -868,11 +868,9 @@ qd_server_t *qd_server(qd_dispatch_t *qd
 void qd_server_free(qd_server_t *qd_server)
 {
     if (!qd_server) return;
-    int i;
-
-    for (i = 0; i < qd_server->thread_count; i++)
+    for (int i = 0; i < qd_server->thread_count; i++)
         thread_free(qd_server->threads[i]);
-
+    qd_timer_finalize();
     qdpn_driver_free(qd_server->driver);
     sys_mutex_free(qd_server->lock);
     sys_cond_free(qd_server->cond);

Modified: qpid/dispatch/trunk/src/server_private.h
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/server_private.h?rev=1664744&r1=1664743&r2=1664744&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/server_private.h (original)
+++ qpid/dispatch/trunk/src/server_private.h Fri Mar  6 22:40:22 2015
@@ -22,7 +22,7 @@
 #include <qpid/dispatch/enum.h>
 #include <qpid/dispatch/server.h>
 #include <qpid/dispatch/user_fd.h>
-#include <qpid/dispatch/alloc.h>
+#include "alloc.h"
 #include <qpid/dispatch/ctools.h>
 #include <qpid/dispatch/log.h>
 #include <qpid/dispatch/driver.h>

Modified: qpid/dispatch/trunk/src/timer.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/timer.c?rev=1664744&r1=1664743&r2=1664744&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/timer.c (original)
+++ qpid/dispatch/trunk/src/timer.c Fri Mar  6 22:40:22 2015
@@ -22,7 +22,7 @@
 #include "server_private.h"
 #include <qpid/dispatch/ctools.h>
 #include <qpid/dispatch/threading.h>
-#include <qpid/dispatch/alloc.h>
+#include "alloc.h"
 #include <assert.h>
 #include <stdio.h>
 
@@ -34,6 +34,9 @@ static long             time_base;
 ALLOC_DECLARE(qd_timer_t);
 ALLOC_DEFINE(qd_timer_t);
 
+/// For tests only
+sys_mutex_t* qd_timer_lock() { return lock; }
+
 //=========================================================================
 // Private static functions
 //=========================================================================

Modified: qpid/dispatch/trunk/src/timer_private.h
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/timer_private.h?rev=1664744&r1=1664743&r2=1664744&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/timer_private.h (original)
+++ qpid/dispatch/trunk/src/timer_private.h Fri Mar  6 22:40:22 2015
@@ -48,5 +48,7 @@ long qd_timer_next_duration_LH(void);
 void qd_timer_visit_LH(long current_time);
 void qd_timer_idle_LH(qd_timer_t *timer);
 
+/// For tests only
+sys_mutex_t* qd_timer_lock();
 
 #endif

Modified: qpid/dispatch/trunk/tests/CMakeLists.txt
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/tests/CMakeLists.txt?rev=1664744&r1=1664743&r2=1664744&view=diff
==============================================================================
--- qpid/dispatch/trunk/tests/CMakeLists.txt (original)
+++ qpid/dispatch/trunk/tests/CMakeLists.txt Fri Mar  6 22:40:22 2015
@@ -21,9 +21,7 @@
 find_program(VALGRIND_EXECUTABLE valgrind DOC "Location of the valgrind program")
 mark_as_advanced(VALGRIND_EXECUTABLE)
 find_package_handle_standard_args(VALGRIND DEFAULT_MSG VALGRIND_EXECUTABLE)
-if (VALGRIND_FOUND)
-  option(USE_VALGRIND "Use valgrind when running tests" OFF)
-endif(VALGRIND_FOUND)
+option(USE_VALGRIND "Use valgrind when running tests" OFF)
 
 include_directories(
   ${CMAKE_SOURCE_DIR}/src
@@ -34,7 +32,6 @@ include_directories(
 ## Build test applications
 ##
 set(unit_test_SOURCES
-    alloc_test.c
     compose_test.c
     parse_test.c
     run_unit_tests.c
@@ -42,6 +39,9 @@ set(unit_test_SOURCES
     timer_test.c
     tool_test.c
     )
+if (USE_MEMORY_POOL)
+  list(APPEND unit_test_SOURCES alloc_test.c)
+endif()
 
 add_executable(unit_tests ${unit_test_SOURCES})
 target_link_libraries(unit_tests qpid-dispatch)

Modified: qpid/dispatch/trunk/tests/alloc_test.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/tests/alloc_test.c?rev=1664744&r1=1664743&r2=1664744&view=diff
==============================================================================
--- qpid/dispatch/trunk/tests/alloc_test.c (original)
+++ qpid/dispatch/trunk/tests/alloc_test.c Fri Mar  6 22:40:22 2015
@@ -18,9 +18,9 @@
  */
 
 #include "test_case.h"
+#include "alloc.h"
 #include <stdio.h>
 #include <string.h>
-#include "alloc_private.h"
 
 typedef struct {
     int A;
@@ -49,31 +49,29 @@ static char* test_alloc_basic(void *cont
     object_t         *obj[50];
     int               idx;
     qd_alloc_stats_t *stats;
-    char             *error;
+    char             *error = 0;
 
     for (idx = 0; idx < 20; idx++)
         obj[idx] = new_object_t();
-
     stats = alloc_stats_object_t();
     error = check_stats(stats, 21, 0, 21, 0, 0);
-    if (error) return error;
-
     for (idx = 0; idx < 20; idx++)
         free_object_t(obj[idx]);
+    if (error) return error;
 
     error = check_stats(stats, 21, 5, 6, 0, 5);
     if (error) return error;
 
     for (idx = 0; idx < 20; idx++)
         obj[idx] = new_object_t();
-
     error = check_stats(stats, 27, 5, 21, 3, 5);
+    for (idx = 0; idx < 20; idx++)
+        free_object_t(obj[idx]);
     if (error) return error;
 
     return 0;
 }
 
-
 int alloc_tests(void)
 {
     int result = 0;

Modified: qpid/dispatch/trunk/tests/field_test.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/tests/field_test.c?rev=1664744&r1=1664743&r2=1664744&view=diff
==============================================================================
--- qpid/dispatch/trunk/tests/field_test.c (original)
+++ qpid/dispatch/trunk/tests/field_test.c Fri Mar  6 22:40:22 2015
@@ -47,6 +47,8 @@ static char* test_view_global_dns(void *
     if (!qd_field_iterator_equal(iter, (unsigned char*) "M0global/sub"))
         return "ITER_VIEW_ADDRESS_HASH failed";
 
+    qd_field_iterator_free(iter);
+
     return 0;
 }
 
@@ -73,6 +75,8 @@ static char* test_view_global_non_dns(vo
     if (!qd_field_iterator_equal(iter, (unsigned char*) "M0global/sub"))
         return "ITER_VIEW_ADDRESS_HASH failed";
 
+    qd_field_iterator_free(iter);
+
     return 0;
 }
 
@@ -99,6 +103,8 @@ static char* test_view_global_no_host(vo
     if (!qd_field_iterator_equal(iter, (unsigned char*) "M0global/sub"))
         return "ITER_VIEW_ADDRESS_HASH failed";
 
+    qd_field_iterator_free(iter);
+
     return 0;
 }
 
@@ -133,6 +139,7 @@ static char* test_view_address_hash(void
                      cases[idx].addr, cases[idx].view, got);
             return fail_text;
         }
+        qd_field_iterator_free(iter);
     }
 
     return 0;
@@ -158,6 +165,7 @@ static char* test_view_address_hash_over
                      cases[idx].addr, cases[idx].view, got);
             return fail_text;
         }
+        qd_field_iterator_free(iter);
     }
 
     return 0;
@@ -181,7 +189,9 @@ static char* test_view_node_hash(void *c
             snprintf(fail_text, FAIL_TEXT_SIZE, "Addr '%s' failed.  Expected '%s', got '%s'",
                      cases[idx].addr, cases[idx].view, got);
             return fail_text;
+            qd_field_iterator_free(iter);
         }
+        qd_field_iterator_free(iter);
     }
 
     return 0;

Modified: qpid/dispatch/trunk/tests/message_test.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/tests/message_test.c?rev=1664744&r1=1664743&r2=1664744&view=diff
==============================================================================
--- qpid/dispatch/trunk/tests/message_test.c (original)
+++ qpid/dispatch/trunk/tests/message_test.c Fri Mar  6 22:40:22 2015
@@ -106,6 +106,7 @@ static char* test_receive_from_messenger
 
     if (!qd_field_iterator_equal(iter, (unsigned char*) "test_addr_1"))
         return "Mismatched 'to' field contents";
+    qd_field_iterator_free(iter);
 
     ssize_t test_len = qd_message_field_length(msg, QD_FIELD_TO);
     if (test_len != 11) return "Incorrect field length";
@@ -142,6 +143,8 @@ static char* test_message_properties(voi
 
     size_t       size = 10000;
     int result = pn_message_encode(pn_msg, buffer, &size);
+    pn_message_free(pn_msg);
+
     if (result != 0) return "Error in pn_message_encode";
 
     qd_message_t         *msg     = qd_message();
@@ -154,20 +157,24 @@ static char* test_message_properties(voi
     if (qd_field_iterator_length(iter) != 13) return "Bad length for correlation-id";
     if (!qd_field_iterator_equal(iter, (const unsigned char *)"correlationId"))
         return "Invalid correlation-id";
+    qd_field_iterator_free(iter);
 
     iter = qd_message_field_iterator(msg, QD_FIELD_SUBJECT);
     if (!iter) return "Expected iterator for the 'subject' field";
     if (!qd_field_iterator_equal(iter, (const unsigned char *)subject))
         return "Bad value for subject";
+    qd_field_iterator_free(iter);
 
     iter = qd_message_field_iterator(msg, QD_FIELD_MESSAGE_ID);
     if (!iter) return "Expected iterator for the 'message-id' field";
     if (qd_field_iterator_length(iter) != 9) return "Bad length for message-id";
     if (!qd_field_iterator_equal(iter, (const unsigned char *)"messageId"))
         return "Invalid message-id";
+    qd_field_iterator_free(iter);
 
     iter = qd_message_field_iterator(msg, QD_FIELD_TO);
     if (iter) return "Expected no iterator for the 'to' field";
+    qd_field_iterator_free(iter);
 
     qd_message_free(msg);
 
@@ -182,6 +189,7 @@ static char* test_check_multiple(void *c
 
     size_t size = 10000;
     int result = pn_message_encode(pn_msg, buffer, &size);
+    pn_message_free(pn_msg);
     if (result != 0) return "Error in pn_message_encode";
 
     qd_message_t         *msg     = qd_message();

Modified: qpid/dispatch/trunk/tests/parse_test.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/tests/parse_test.c?rev=1664744&r1=1664743&r2=1664744&view=diff
==============================================================================
--- qpid/dispatch/trunk/tests/parse_test.c (original)
+++ qpid/dispatch/trunk/tests/parse_test.c Fri Mar  6 22:40:22 2015
@@ -146,6 +146,8 @@ static char *test_parser_errors(void *co
                     err_vectors[idx].expected_error, qd_parse_error(parsed));
             return error;
         }
+        qd_parse_free(parsed);
+        qd_field_iterator_free(field);
         idx++;
     }
 

Modified: qpid/dispatch/trunk/tests/run_unit_tests.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/tests/run_unit_tests.c?rev=1664744&r1=1664743&r2=1664744&view=diff
==============================================================================
--- qpid/dispatch/trunk/tests/run_unit_tests.c (original)
+++ qpid/dispatch/trunk/tests/run_unit_tests.c Fri Mar  6 22:40:22 2015
@@ -17,6 +17,8 @@
  * under the License.
  */
 
+#include "alloc.h"
+
 #include <qpid/dispatch.h>
 #include <qpid/dispatch/buffer.h>
 #include <stdio.h>
@@ -34,17 +36,24 @@ int main(int argc, char** argv)
         fprintf(stderr, "usage: %s <config-file>\n", argv[0]);
         exit(1);
     }
+    int result = 0;
 
+    // Call qd_dispatch() first initialize allocator used by other tests.
     qd_dispatch_t *qd = qd_dispatch(0);
     qd_dispatch_load_config(qd, argv[1]);
-
-    int result = 0;
-    result += tool_tests();
-    result += alloc_tests();
+    if (qd_error_code()) {
+        printf("Config failed: %s\n", qd_error_message());
+        return 1;
+    }
+    result += timer_tests();
     result += server_tests(qd);
+    result += tool_tests();
     result += parse_tests();
     result += compose_tests();
-    qd_dispatch_free(qd);
-    result += timer_tests();
+#if USE_MEMORY_POOL
+    result += alloc_tests();
+#endif
+    qd_dispatch_free(qd);       // dispatch_free last.
+
     return result;
 }

Modified: qpid/dispatch/trunk/tests/run_unit_tests_size.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/tests/run_unit_tests_size.c?rev=1664744&r1=1664743&r2=1664744&view=diff
==============================================================================
--- qpid/dispatch/trunk/tests/run_unit_tests_size.c (original)
+++ qpid/dispatch/trunk/tests/run_unit_tests_size.c Fri Mar  6 22:40:22 2015
@@ -18,7 +18,7 @@
  */
 
 #include <qpid/dispatch/buffer.h>
-#include "alloc_private.h"
+#include "alloc.h"
 
 int message_tests();
 int field_tests();
@@ -39,6 +39,8 @@ int main(int argc, char** argv)
     int result = 0;
     result += message_tests();
     result += field_tests();
+    qd_alloc_finalize();
+
     return result;
 }
 

Modified: qpid/dispatch/trunk/tests/server_test.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/tests/server_test.c?rev=1664744&r1=1664743&r2=1664744&view=diff
==============================================================================
--- qpid/dispatch/trunk/tests/server_test.c (original)
+++ qpid/dispatch/trunk/tests/server_test.c Fri Mar  6 22:40:22 2015
@@ -121,6 +121,9 @@ static char* test_user_fd(void *context)
     close(fd[0]);
     close(fd[1]);
 
+    qd_user_fd_free(ufd_read);
+    qd_user_fd_free(ufd_write);
+
     if (stored_error[0])            return stored_error;
     if (write_count - OCTET_COUNT > 2) sprintf(stored_error, "Excessively high Write Count: %d", write_count);
     if (read_count != OCTET_COUNT)  sprintf(stored_error, "Incorrect Read Count: %d", read_count);;

Modified: qpid/dispatch/trunk/tests/system_test.py
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/tests/system_test.py?rev=1664744&r1=1664743&r2=1664744&view=diff
==============================================================================
--- qpid/dispatch/trunk/tests/system_test.py (original)
+++ qpid/dispatch/trunk/tests/system_test.py Fri Mar  6 22:40:22 2015
@@ -120,9 +120,9 @@ def retry_delay(deadline, delay, max_del
     return min(delay*2, max_delay)
 
 
-DEFAULT_TIMEOUT = float(os.environ.get("QPID_SYSTEM_TEST_TIMEOUT", 10))
+TIMEOUT = float(os.environ.get("QPID_SYSTEM_TEST_TIMEOUT", 10))
 
-def retry(function, timeout=DEFAULT_TIMEOUT, delay=.001, max_delay=1):
+def retry(function, timeout=TIMEOUT, delay=.001, max_delay=1):
     """Call function until it returns a true value or timeout expires.
     Double the delay for each retry up to max_delay.
     Returns what function returns or None if timeout expires.
@@ -137,7 +137,7 @@ def retry(function, timeout=DEFAULT_TIME
             if delay is None:
                 return None
 
-def retry_exception(function, timeout=DEFAULT_TIMEOUT, delay=.001, max_delay=1, exception_test=None):
+def retry_exception(function, timeout=TIMEOUT, delay=.001, max_delay=1, exception_test=None):
     """Call function until it returns without exception or timeout expires.
     Double the delay for each retry up to max_delay.
     Calls exception_test with any exception raised by function, exception_test
@@ -352,7 +352,7 @@ class Qdrouterd(Process):
     def management(self):
         """Return a management agent proxy for this router"""
         if not self._management:
-            self._management = Node.connect(self.addresses[0], timeout=DEFAULT_TIMEOUT)
+            self._management = Node.connect(self.addresses[0], timeout=TIMEOUT)
         return self._management
 
     def teardown(self):
@@ -481,7 +481,7 @@ class Qpidd(Process):
 class Messenger(proton.Messenger):
     """Convenience additions to proton.Messenger"""
 
-    def __init__(self, name=None, timeout=DEFAULT_TIMEOUT, blocking=True):
+    def __init__(self, name=None, timeout=TIMEOUT, blocking=True):
         super(Messenger, self).__init__(name)
         self.timeout = timeout
         self.blocking = blocking

Modified: qpid/dispatch/trunk/tests/system_tests_qdmanage.py
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/tests/system_tests_qdmanage.py?rev=1664744&r1=1664743&r2=1664744&view=diff
==============================================================================
--- qpid/dispatch/trunk/tests/system_tests_qdmanage.py (original)
+++ qpid/dispatch/trunk/tests/system_tests_qdmanage.py Fri Mar  6 22:40:22 2015
@@ -18,7 +18,7 @@
 #
 
 import re, json, unittest, os
-from system_test import TestCase, Process, Qdrouterd, main_module
+from system_test import TestCase, Process, Qdrouterd, main_module, TIMEOUT
 from subprocess import PIPE, STDOUT
 from qpid_dispatch_internal.compat import OrderedDict, dictify
 from qpid_dispatch_internal.management.qdrouter import QdSchema
@@ -53,7 +53,7 @@ class QdmanageTest(TestCase):
 
     def run_qdmanage(self, cmd, input=None, expect=Process.EXIT_OK, address=None):
         p = self.popen(
-            ['qdmanage'] + cmd.split(' ') + ['--bus', address or self.address(), '--indent=-1'],
+            ['qdmanage'] + cmd.split(' ') + ['--bus', address or self.address(), '--indent=-1', '--timeout', str(TIMEOUT)],
             stdin=PIPE, stdout=PIPE, stderr=STDOUT, expect=expect)
         out = p.communicate(input)[0]
         try:

Modified: qpid/dispatch/trunk/tests/system_tests_qdstat.py
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/tests/system_tests_qdstat.py?rev=1664744&r1=1664743&r2=1664744&view=diff
==============================================================================
--- qpid/dispatch/trunk/tests/system_tests_qdstat.py (original)
+++ qpid/dispatch/trunk/tests/system_tests_qdstat.py Fri Mar  6 22:40:22 2015
@@ -64,8 +64,9 @@ class QdstatTest(system_test.TestCase):
         cls.router = cls.tester.qdrouterd('test-router', config)
 
     def run_qdstat(self, args, regexp=None, address=None):
-        p = self.popen(['qdstat', '--bus', str(address or self.router.addresses[0])] + args,
-                       name='qdstat-'+self.id(), stdout=PIPE, expect=None)
+        p = self.popen(
+            ['qdstat', '--bus', str(address or self.router.addresses[0]), '--timeout', str(system_test.TIMEOUT) ] + args,
+            name='qdstat-'+self.id(), stdout=PIPE, expect=None)
         out = p.communicate()[0]
         assert p.returncode == 0, \
             "qdstat exit status %s, output:\n%s" % (p.returncode, out)

Modified: qpid/dispatch/trunk/tests/timer_test.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/tests/timer_test.c?rev=1664744&r1=1664743&r2=1664744&view=diff
==============================================================================
--- qpid/dispatch/trunk/tests/timer_test.c (original)
+++ qpid/dispatch/trunk/tests/timer_test.c Fri Mar  6 22:40:22 2015
@@ -20,7 +20,7 @@
 #include <stdio.h>
 #include <qpid/dispatch/timer.h>
 #include "dispatch_private.h"
-#include "alloc_private.h"
+#include "alloc.h"
 #include "timer_private.h"
 #include "test_case.h"
 #include <qpid/dispatch/threading.h>
@@ -367,12 +367,10 @@ static char* test_big(void *context)
 int timer_tests(void)
 {
     int result = 0;
-    qd_alloc_initialize();
 
     fire_mask = 0;
     DEQ_INIT(pending_timers);
-    lock = sys_mutex();
-    qd_timer_initialize(lock);
+    lock = qd_timer_lock();
     time = 1;
 
     timers[0]  = qd_timer(0, 0, (void*) 0x00000001);
@@ -407,9 +405,6 @@ int timer_tests(void)
     for (i = 0; i < 16; i++)
         qd_timer_free(timers[i]);
 
-    qd_timer_finalize();
-    sys_mutex_free(lock);
-
     return result;
 }
 

Modified: qpid/dispatch/trunk/tests/tool_test.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/tests/tool_test.c?rev=1664744&r1=1664743&r2=1664744&view=diff
==============================================================================
--- qpid/dispatch/trunk/tests/tool_test.c (original)
+++ qpid/dispatch/trunk/tests/tool_test.c Fri Mar  6 22:40:22 2015
@@ -22,7 +22,7 @@
 #include <string.h>
 #include <qpid/dispatch/ctools.h>
 #include <qpid/dispatch/bitmask.h>
-#include "alloc_private.h"
+#include "alloc.h"
 
 typedef struct item_t {
     DEQ_LINKS(struct item_t);
@@ -222,7 +222,6 @@ static char* test_bitmask(void *context)
 int tool_tests(void)
 {
     int result = 0;
-    qd_alloc_initialize();
 
     TEST_CASE(test_deq_basic, 0);
     TEST_CASE(test_deq_basic2, 0);



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org