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 2014/10/22 21:59:09 UTC

svn commit: r1633704 - in /qpid/dispatch/trunk: include/qpid/dispatch/ python/qpid_dispatch/management/ python/qpid_dispatch_internal/management/ python/qpid_dispatch_internal/router/ src/ tests/ tests/management/ tools/

Author: aconway
Date: Wed Oct 22 19:59:08 2014
New Revision: 1633704

URL: http://svn.apache.org/r1633704
Log:
DISPATCH-56: Consistent naming style for managment attribute and entity names.

Converted all entity and attribute names for AMQP management to lower camelCase
style like this: fooBar Previously there was a mix of styles for attribute
names: foo_bar, foo-bar and fooBar.  The fooBar style is used by the AMQP
management draft spec. and the Qpid Java and C++ brokers so is the most
consistent choice.

Configuration files are another way to specify management entity
attributes. Dispatch still accepts the foo-bar style in configuration files for
backwards compatibility, but it also accepts the fooBar style.

Modified:
    qpid/dispatch/trunk/include/qpid/dispatch/iterator.h
    qpid/dispatch/trunk/python/qpid_dispatch/management/entity.py
    qpid/dispatch/trunk/python/qpid_dispatch/management/qdrouter.json
    qpid/dispatch/trunk/python/qpid_dispatch_internal/management/agent.py
    qpid/dispatch/trunk/python/qpid_dispatch_internal/management/config.py
    qpid/dispatch/trunk/python/qpid_dispatch_internal/management/schema.py
    qpid/dispatch/trunk/python/qpid_dispatch_internal/router/link.py
    qpid/dispatch/trunk/python/qpid_dispatch_internal/router/mobile.py
    qpid/dispatch/trunk/python/qpid_dispatch_internal/router/neighbor.py
    qpid/dispatch/trunk/src/CMakeLists.txt
    qpid/dispatch/trunk/src/agent.c
    qpid/dispatch/trunk/src/alloc.c
    qpid/dispatch/trunk/src/c_entity.c
    qpid/dispatch/trunk/src/c_entity.h
    qpid/dispatch/trunk/src/connection_manager.c
    qpid/dispatch/trunk/src/dispatch.c
    qpid/dispatch/trunk/src/iterator.c
    qpid/dispatch/trunk/src/router_agent.c
    qpid/dispatch/trunk/src/router_config.c
    qpid/dispatch/trunk/tests/management/entity.py
    qpid/dispatch/trunk/tests/management/qdrouter.py
    qpid/dispatch/trunk/tests/management/schema.py
    qpid/dispatch/trunk/tests/router_engine_test.py
    qpid/dispatch/trunk/tests/system_tests_management.py
    qpid/dispatch/trunk/tests/system_tests_qdmanage.py
    qpid/dispatch/trunk/tests/system_tests_qdstat.py
    qpid/dispatch/trunk/tools/qdstat

Modified: qpid/dispatch/trunk/include/qpid/dispatch/iterator.h
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/include/qpid/dispatch/iterator.h?rev=1633704&r1=1633703&r2=1633704&view=diff
==============================================================================
--- qpid/dispatch/trunk/include/qpid/dispatch/iterator.h (original)
+++ qpid/dispatch/trunk/include/qpid/dispatch/iterator.h Wed Oct 22 19:59:08 2014
@@ -203,7 +203,7 @@ int qd_field_iterator_length(qd_field_it
 
 /**
  * Copy the iterator's view into buffer up to a maximum of n bytes.
- * There is no trailing '\n' added.
+ * There is no trailing '\0' added.
  * @return number of bytes copied.
  */
 int qd_field_iterator_ncopy(qd_field_iterator_t *iter, unsigned char* buffer, int n);
@@ -219,7 +219,7 @@ unsigned char *qd_field_iterator_copy(qd
  * up to a maximum of n bytes. Useful for log messages.
  * @return buffer.
  */
-char* qd_field_iterator_logstr(qd_field_iterator_t *iter, char* buffer, int n);
+char* qd_field_iterator_strncpy(qd_field_iterator_t *iter, char* buffer, int n);
 
 /**
  * Return the contents of this iter into an iovec structure.  This is used in a

Modified: qpid/dispatch/trunk/python/qpid_dispatch/management/entity.py
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/python/qpid_dispatch/management/entity.py?rev=1633704&r1=1633703&r2=1633704&view=diff
==============================================================================
--- qpid/dispatch/trunk/python/qpid_dispatch/management/entity.py (original)
+++ qpid/dispatch/trunk/python/qpid_dispatch/management/entity.py Wed Oct 22 19:59:08 2014
@@ -21,7 +21,7 @@
 AMQP Managment Entity
 """
 
-import itertools
+import itertools, re
 
 def clean_dict(items, **kwargs):
     """
@@ -78,9 +78,28 @@ class Entity(object):
 
     def __repr__(self): return "Entity(%r)" % self.attributes
 
+
 def update(entity, values):
     """Update entity from values
     @param entity: an Entity
     @param values: a map of values
     """
     for k, v in values.iteritems(): entity[k] = v
+
+SEPARATOR_RE = re.compile(' |_|-|\.')
+
+def camelcase(str, capital=False):
+    """Convert string str with ' ', '_', '.' or '-' separators to camelCase."""
+    if not str: return ''
+    words = SEPARATOR_RE.split(str)
+    first = words[0]
+    if capital: first = first[0].upper() + first[1:]
+    return first + ''.join([w.capitalize() for w in words[1:]])
+
+CAPS_RE = re.compile('[A-Z]')
+
+def uncamelcase(str, separator='_'):
+    """Convert camelCase string str to string with separator, e.g. camel_case"""
+    if len(str) == 0: return str
+    return str[0] + CAPS_RE.sub(lambda m: separator+m.group(0).lower(), str[1:])
+

Modified: qpid/dispatch/trunk/python/qpid_dispatch/management/qdrouter.json
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/python/qpid_dispatch/management/qdrouter.json?rev=1633704&r1=1633703&r2=1633704&view=diff
==============================================================================
--- qpid/dispatch/trunk/python/qpid_dispatch/management/qdrouter.json (original)
+++ qpid/dispatch/trunk/python/qpid_dispatch/management/qdrouter.json Wed Oct 22 19:59:08 2014
@@ -21,12 +21,12 @@
         "type": {
           "type": "String",
           "required": true,
-          "value": "$$entity-type",
+          "value": "$$entityType",
           "description": "Management entity type."
         }
       }
     },
-    "ip-address": {
+    "ipAddress": {
       "attributes": {
         "addr": {
           "description":"IP address: ipv4 or ipv6 literal or a host name",
@@ -42,7 +42,7 @@
     },
     "connection": {
       "attributes": {
-        "sasl-mechanisms": {
+        "saslMechanisms": {
           "type": "String",
           "required": true,
           "description": "Comma separated list of accepted SASL authentication mechanisms."
@@ -54,36 +54,36 @@
             "on-demand"
           ],
           "default": "normal",
-          "description": "The role of an established connection. In the normal role, the connection is assumed to be used for AMQP clients that are doing normal message delivery over the connection.  In the inter-router role, the connection is assumed to be to another router in the network.  Inter-router discovery and routing protocols can only be used over inter-router connections. "
+          "description": "The role of an established connection. In the normal role, the connection is assumed to be used for AMQP clients that are doing normal message delivery over the connection.  In the inter-router role, the connection is assumed to be to another router in the network.  Inter-router discovery and routing protocols can only be used over interRouter connections. "
         }
       }
     },
-    "ssl-profile": {
+    "sslProfile": {
       "attributes": {
-        "cert-db": {
+        "certDb": {
           "type": "String",
           "description": "The path to the database that contains the public certificates of trusted certificate authorities (CAs). "
         },
-        "cert-file": {
+        "certFile": {
           "type": "String",
           "description": "The path to the file containing the PEM-formatted public certificate to be used on the local end of any connections using this profile. "
         },
-        "key-file": {
+        "keyFile": {
           "type": "String",
           "description": "The path to the file containing the PEM-formatted private key for the above certificate. "
         },
-        "password-file": {
+        "passwordFile": {
           "type": "String",
           "description": "If the above private key is password protected, this is the path to a file containing the password that unlocks the certificate key. "
         },
         "password": {
           "type": "String",
-          "description": "An alternative to storing the password in a file referenced by password-file is to supply the password right here in the configuration file.  This option can be used by supplying the password in the 'password' option.  Don't use both password and password-file in the same profile. "
+          "description": "An alternative to storing the password in a file referenced by passwordFile is to supply the password right here in the configuration file.  This option can be used by supplying the password in the 'password' option.  Don't use both password and passwordFile in the same profile. "
         }
       }
     }
   },
-  "entity_types": {
+  "entityTypes": {
     "container": {
       "operations": ["CREATE", "READ"],
       "singleton": true,
@@ -91,11 +91,11 @@
         "common"
       ],
       "attributes": {
-        "container-name": {
+        "containerName": {
           "type": "String",
           "description": "The  name of the AMQP container.  If not specified, the container name will be set to a value of the container's choosing.  The automatically assigned container name is not guaranteed to be persistent across restarts of the container."
         },
-        "worker-threads": {
+        "workerThreads": {
           "type": "Integer",
           "default": "1",
           "description": "The number of threads that will be created to process message traffic and other application work (timers, non-amqp file descriptors, etc.) "
@@ -110,7 +110,7 @@
         "common"
       ],
       "attributes": {
-        "router-id": {
+        "routerId": {
           "type": "String"
         },
         "mode": {
@@ -127,27 +127,27 @@
           "type": "String",
           "description": ""
         },
-        "hello-interval": {
+        "helloInterval": {
           "type": "Integer",
           "default": 1,
           "description": ""
         },
-        "hello-max-age": {
+        "helloMaxAge": {
           "type": "Integer",
           "default": 3,
           "description": ""
         },
-        "ra-interval": {
+        "raInterval": {
           "type": "Integer",
           "default": 30,
           "description": ""
         },
-        "remote-ls-max-age": {
+        "remoteLsMaxAge": {
           "type": "Integer",
           "default": 60,
           "description": ""
         },
-        "mobile-addr-max-age": {
+        "mobileAddrMaxAge": {
           "type": "Integer",
           "default": 60,
           "description": ""
@@ -163,34 +163,34 @@
       "operations": ["CREATE", "READ"],
       "include": [
         "common",
-        "ssl-profile",
-        "ip-address",
+        "sslProfile",
+        "ipAddress",
         "connection"
       ],
       "attributes": {
-        "require-peer-auth": {
+        "requirePeerAuth": {
           "type": "Boolean",
           "default": true,
           "description": "Only for listeners using SSL.  If set to \"yes\", attached clients will be required to supply a certificate.  If the certificate is not traceable to a CA in the ssl profile's cert-db, authentication fails for the connection. "
         },
-        "trusted-certs": {
+        "trustedCerts": {
           "type": "String",
           "description": "This optional setting can be used to reduce the set of available CAs for client authentication.  If used, this setting must provide a path to a PEM file that contains the trusted certificates. "
         },
-        "allow-unsecured": {
+        "allowUnsecured": {
           "type": "Boolean",
           "default": false,
           "description": "For listeners using SSL only.  If set to \"yes\", this option causes the listener to watch the initial network traffic to determine if the client is using SSL or is running in-the-clear.  The listener will enable SSL only if the client uis using SSL. "
         },
-        "allow-no-sasl": {
+        "allowNoSasl": {
           "type": "Boolean",
           "default": false,
           "description": "If set to \"yes\", this option causes the listener to allow clients to connect even if they skip the SASL authentication protocol. "
         },
-        "max-frame-size": {
+        "maxFrameSize": {
           "type": "Integer",
           "default": 65536,
-          "description": "Defaults to 65536.  If specified, it is the maximum-frame-size in octets that will be used in the connection-open negotiation with a connected peer.  The frame size is the largest contiguous set of uniterruptible data that can be sent for a message delivery over the connection. Interleaving of messages on different links is done at frame granularity. "
+          "description": "Defaults to 65536.  If specified, it is the maximum frame size in octets that will be used in the connection-open negotiation with a connected peer.  The frame size is the largest contiguous set of uniterruptible data that can be sent for a message delivery over the connection. Interleaving of messages on different links is done at frame granularity. "
         }
       }
     },
@@ -199,17 +199,17 @@
       "operations": ["CREATE", "READ"],
       "include": [
         "common",
-        "ssl-profile",
-        "ip-address",
+        "sslProfile",
+        "ipAddress",
         "connection"
       ],
       "attributes": {
-        "allow-redirect": {
+        "allowRedirect": {
           "type": "Boolean",
           "default": true,
           "description": ""
         },
-        "max-frame-size": {
+        "maxFrameSize": {
           "type": "Integer",
           "default": 65536,
           "description": "Maximum frame size in octets that will be used in the connection-open negotiation with a connected peer.  The frame size is the largest contiguous set of uniterruptible data that can be sent for a message delivery over the connection. Interleaving of messages on different links is done at frame granularity. "
@@ -271,7 +271,7 @@
       }
     },
 
-    "fixed-address": {
+    "fixedAddress": {
       "operations": ["CREATE", "READ"],
       "include": [
         "common"
@@ -319,11 +319,11 @@
           "type": "String",
           "required": true
         },
-        "in-phase": {
+        "inPhase": {
           "type": "Integer",
           "default": -1
         },
-        "out-phase": {
+        "outPhase": {
           "type": "Integer",
           "default": -1
         }
@@ -408,15 +408,15 @@
       "operations": ["READ"],
       "include": ["common"],
       "attributes": {
-	"type_size": {"type": "Integer"},
-	"transfer_batch_size": {"type": "Integer"},
-	"local_free_list_max": {"type": "Integer"},
-	"global_free_list_max": {"type": "Integer"},
-	"total_alloc_from_heap": {"type": "Integer"},
-	"total_free_to_heap": {"type": "Integer"},
-	"held_by_threads": {"type": "Integer"},
-	"batches_rebalanced_to_threads": {"type": "Integer"},
-	"batches_rebalanced_to_global": {"type": "Integer"}
+	"typeSize": {"type": "Integer"},
+	"transferBatchSize": {"type": "Integer"},
+	"localFreeListMax": {"type": "Integer"},
+	"globalFreeListMax": {"type": "Integer"},
+	"totalAllocFromHeap": {"type": "Integer"},
+	"totalFreeToHeap": {"type": "Integer"},
+	"heldByThreads": {"type": "Integer"},
+	"batchesRebalancedToThreads": {"type": "Integer"},
+	"batchesRebalancedToGlobal": {"type": "Integer"}
        }
     }
   }

Modified: qpid/dispatch/trunk/python/qpid_dispatch_internal/management/agent.py
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/python/qpid_dispatch_internal/management/agent.py?rev=1633704&r1=1633703&r2=1633704&view=diff
==============================================================================
--- qpid/dispatch/trunk/python/qpid_dispatch_internal/management/agent.py (original)
+++ qpid/dispatch/trunk/python/qpid_dispatch_internal/management/agent.py Wed Oct 22 19:59:08 2014
@@ -56,11 +56,13 @@ from ctypes import c_void_p, py_object, 
 from dispatch import IoAdapter, LogAdapter, LOG_DEBUG, LOG_ERROR
 from qpid_dispatch.management.error import ManagementError, OK, CREATED, NO_CONTENT, STATUS_TEXT, \
     BadRequestStatus, InternalServerErrorStatus, NotImplementedStatus, NotFoundStatus
+from qpid_dispatch.management.entity import camelcase
 from .. import dispatch_c
 from .schema import ValidationError, Entity as SchemaEntity, EntityType
 from .qdrouter import QdSchema
 from ..router.message import Message
 
+
 def dictstr(d):
     """Stringify a dict in the form 'k=v, k=v ...' instead of '{k:v, ...}'"""
     return ", ".join("%s=%r" % (k, v) for k, v in d.iteritems())
@@ -347,8 +349,6 @@ class Agent(object):
             info = traceback.extract_stack(limit=2)[0] # Caller frame info
             self.log_adapter.log(level, text, info[0], info[1])
 
-    SEP_RE = re.compile(r'-|\.')
-
     def activate(self, address):
         """Register the management address to receive management requests"""
         self.io = [IoAdapter(self.receive, address),
@@ -357,11 +357,11 @@ class Agent(object):
 
     def entity_class(self, entity_type):
         """Return the class that implements entity_type"""
-        class_name = ''.join([n.capitalize() for n in re.split(self.SEP_RE, entity_type.short_name)])
-        class_name += 'Entity'
+        class_name = camelcase(entity_type.short_name, capital=True) + 'Entity'
         entity_class = globals().get(class_name)
         if not entity_class:
-            raise InternalServerErrorStatus("Can't find implementation for %s" % entity_type)
+            raise InternalServerErrorStatus(
+                "Can't find implementation '%s' for '%s'" % (class_name, entity_type.name))
         return entity_class
 
     def create_entity(self, attributes):

Modified: qpid/dispatch/trunk/python/qpid_dispatch_internal/management/config.py
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/python/qpid_dispatch_internal/management/config.py?rev=1633704&r1=1633703&r2=1633704&view=diff
==============================================================================
--- qpid/dispatch/trunk/python/qpid_dispatch_internal/management/config.py (original)
+++ qpid/dispatch/trunk/python/qpid_dispatch_internal/management/config.py Wed Oct 22 19:59:08 2014
@@ -23,10 +23,10 @@ Configuration file parsing
 
 import json, re, sys
 from copy import copy
+from qpid_dispatch.management.entity import camelcase
 from .schema import ValidationError
 from .. import dispatch_c
 from .qdrouter import QdSchema
-from ..compat import json_load_kwargs
 
 class Config(object):
     """Load config entities from qdrouterd.conf and validated against L{QdSchema}."""
@@ -56,7 +56,14 @@ class Config(object):
         js_text = "[%s]"%("".join([sub(l) for l in lines]))
         spare_comma = re.compile(r',\s*([]}])') # Strip spare commas
         js_text = re.sub(spare_comma, r'\1', js_text)
-        return json.loads(js_text, **json_load_kwargs)
+        # Convert dictionary keys to camelCase
+        def cameldict(pairs): return dict((camelcase(k), v) for k, v in pairs)
+        sections = json.loads(js_text)
+        for s in sections:
+            s[0] = camelcase(s[0])
+            s[1] = dict((camelcase(k), v) for k, v in s[1].iteritems())
+        return sections
+
 
     def _expand(self, content):
         """
@@ -82,7 +89,7 @@ class Config(object):
     def _default_ids(self, content):
         """
         Set default name and identity where missing.
-        - If entity has no name/identity, set both to "<entity-type>-<i>"
+        - If entity has no name/identity, set both to "<entity-type>:<i>"
         - If entity has one of name/identity set the other to be the same.
         - If entity has both, do nothing
         """
@@ -157,7 +164,7 @@ def configure_dispatch(dispatch, filenam
     qd.qd_router_setup_late(dispatch);
 
     # Note must configure addresses, waypoints, listeners and connectors after qd_dispatch_prepare
-    for a in config.by_type('fixed-address'): qd.qd_dispatch_configure_address(dispatch, a)
+    for a in config.by_type('fixedAddress'): qd.qd_dispatch_configure_address(dispatch, a)
     for w in config.by_type('waypoint'): qd.qd_dispatch_configure_waypoint(dispatch, w)
     for l in config.by_type('listener'): qd.qd_dispatch_configure_listener(dispatch, l)
     for c in config.by_type('connector'): qd.qd_dispatch_configure_connector(dispatch, c)

Modified: qpid/dispatch/trunk/python/qpid_dispatch_internal/management/schema.py
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/python/qpid_dispatch_internal/management/schema.py?rev=1633704&r1=1633703&r2=1633704&view=diff
==============================================================================
--- qpid/dispatch/trunk/python/qpid_dispatch_internal/management/schema.py (original)
+++ qpid/dispatch/trunk/python/qpid_dispatch_internal/management/schema.py Wed Oct 22 19:59:08 2014
@@ -324,7 +324,7 @@ class EntityType(AttributeTypeHolder):
         """
         super(EntityType, self).__init__(name, schema, attributes, description)
         self.short_name = schema.short_name(name)
-        self.refs = {'entity-type': name}
+        self.refs = {'entityType': name}
         self.singleton = singleton
         self.include = include
         self.operations = operations or []
@@ -414,11 +414,14 @@ class EntityType(AttributeTypeHolder):
 class Schema(object):
     """
     Schema defining entity types.
+    Note: keyword arguments come from schema so use camelCase
 
     @ivar prefix: Prefix to prepend to short entity type names.
-    @ivar entity_types: Map of L{EntityType} by name.
+    @ivar entityTypes: Map of L{EntityType} by name.
+    @ivar includes: Map of L{IncludeType} by name.
+    @ivar description: Text description of schema.
     """
-    def __init__(self, prefix="", includes=None, entity_types=None, description=""):
+    def __init__(self, prefix="", includes=None, entityTypes=None, description=""):
         """
         @param prefix: Prefix for entity names.
         @param includes: Map of  { include-name: {attribute-name:value, ... }}
@@ -435,8 +438,8 @@ class Schema(object):
             for k, v in includes.iteritems():
                 self.includes[k] = IncludeType(k, self, **v)
         self.entity_types = OrderedDict()
-        if entity_types:
-            for k, v in entity_types.iteritems():
+        if entityTypes:
+            for k, v in entityTypes.iteritems():
                 name = self.long_name(k)
                 self.entity_types[name] = EntityType(name, self, **v)
 
@@ -459,7 +462,7 @@ class Schema(object):
             ('prefix', self.prefix),
             ('includes',
              OrderedDict((k, v.dump()) for k, v in self.includes.iteritems())),
-            ('entity_types',
+            ('entityTypes',
              OrderedDict((e.short_name, e.dump())
                          for e in self.entity_types.itervalues()))
         ])

Modified: qpid/dispatch/trunk/python/qpid_dispatch_internal/router/link.py
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/python/qpid_dispatch_internal/router/link.py?rev=1633704&r1=1633703&r2=1633704&view=diff
==============================================================================
--- qpid/dispatch/trunk/python/qpid_dispatch_internal/router/link.py (original)
+++ qpid/dispatch/trunk/python/qpid_dispatch_internal/router/link.py Wed Oct 22 19:59:08 2014
@@ -30,8 +30,8 @@ class LinkStateEngine(object):
         self.container = container
         self.id = self.container.id
         self.area = self.container.area
-        self.ra_interval = self.container.config.ra_interval
-        self.remote_ls_max_age = self.container.config.remote_ls_max_age
+        self.ra_interval = self.container.config.raInterval
+        self.remote_ls_max_age = self.container.config.remoteLsMaxAge
         self.last_ra_time = 0
         self.collection = {}
         self.collection_changed = False

Modified: qpid/dispatch/trunk/python/qpid_dispatch_internal/router/mobile.py
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/python/qpid_dispatch_internal/router/mobile.py?rev=1633704&r1=1633703&r2=1633704&view=diff
==============================================================================
--- qpid/dispatch/trunk/python/qpid_dispatch_internal/router/mobile.py (original)
+++ qpid/dispatch/trunk/python/qpid_dispatch_internal/router/mobile.py Wed Oct 22 19:59:08 2014
@@ -32,7 +32,7 @@ class MobileAddressEngine(object):
         self.node_tracker = node_tracker
         self.id = self.container.id
         self.area = self.container.area
-        self.mobile_addr_max_age = self.container.config.mobile_addr_max_age
+        self.mobile_addr_max_age = self.container.config.mobileAddrMaxAge
         self.mobile_seq = 0
         self.local_addrs = []
         self.added_addrs = []

Modified: qpid/dispatch/trunk/python/qpid_dispatch_internal/router/neighbor.py
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/python/qpid_dispatch_internal/router/neighbor.py?rev=1633704&r1=1633703&r2=1633704&view=diff
==============================================================================
--- qpid/dispatch/trunk/python/qpid_dispatch_internal/router/neighbor.py (original)
+++ qpid/dispatch/trunk/python/qpid_dispatch_internal/router/neighbor.py Wed Oct 22 19:59:08 2014
@@ -31,8 +31,8 @@ class NeighborEngine(object):
         self.id = self.container.id
         self.area = self.container.area
         self.last_hello_time = 0.0
-        self.hello_interval = container.config.hello_interval
-        self.hello_max_age = container.config.hello_max_age
+        self.hello_interval = container.config.helloInterval
+        self.hello_max_age = container.config.helloMaxAge
         self.hellos = {}
         self.link_state_changed = False
         self.link_state = LinkState(None, self.id, self.area, 0, [])

Modified: qpid/dispatch/trunk/src/CMakeLists.txt
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/CMakeLists.txt?rev=1633704&r1=1633703&r2=1633704&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/CMakeLists.txt (original)
+++ qpid/dispatch/trunk/src/CMakeLists.txt Wed Oct 22 19:59:08 2014
@@ -23,18 +23,19 @@ set(GENERATED_SOURCES
   schema_enum.c
   )
 
-file (GLOB_RECURSE GENERATOR_DEPENDS
+set(GENERATOR_DEPENDS
   ${CMAKE_CURRENT_SOURCE_DIR}/schema_c.py
-  ${CMAKE_SOURCE_DIR}/python/qpid_router_internal/management/*.py
-  ${CMAKE_SOURCE_DIR}/python/qpid_router/management/qdrouterd.json)
+  ${CMAKE_SOURCE_DIR}/python/qpid_dispatch/management/qdrouter.json)
+file (GLOB GENERATOR_SRC ${CMAKE_SOURCE_DIR}/python/qpid_dispatch_internal/management/*.py)
+set(GENERATOR_DEPENDS ${GENERATOR_DEPENDS} ${GENERATOR_SRC})
+file (GLOB GENERATOR_SRC ${CMAKE_SOURCE_DIR}/python/qpid_dispatch/management/*.py)
+set(GENERATOR_DEPENDS ${GENERATOR_DEPENDS} ${GENERATOR_SRC})
 
 add_custom_command (
   OUTPUT ${GENERATED_SOURCES}
   COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_BINARY_DIR}/tests/run.py -s ${CMAKE_CURRENT_SOURCE_DIR}/schema_c.py
   DEPENDS ${GENERATOR_DEPENDS})
 
-add_custom_target(generate ALL DEPENDS ${GENERATED_SOURCES})
-
 # Build the qpid-dispatch library.
 set(qpid_dispatch_SOURCES
   agent.c

Modified: qpid/dispatch/trunk/src/agent.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/agent.c?rev=1633704&r1=1633703&r2=1633704&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/agent.c (original)
+++ qpid/dispatch/trunk/src/agent.c Wed Oct 22 19:59:08 2014
@@ -402,7 +402,7 @@ static void qd_agent_process_object_quer
             //
             if (cls_record == 0) {
 		char entity[QD_ERROR_MAX];
-		qd_field_iterator_ncopy(cls_string, (unsigned char*)entity, sizeof(entity));
+		qd_field_iterator_strncpy(cls_string, entity, sizeof(entity));
                 qd_agent_send_error(agent, reply_to, cid, QD_AMQP_NOT_FOUND, entity);
                 break;
             }
@@ -688,8 +688,7 @@ static void qd_agent_process_request(qd_
         qd_agent_process_discover_nodes(agent, map, reply_to, cid);
     else {
 	char op[QD_ERROR_MAX];
-	int i = qd_field_iterator_ncopy(operation_string, (unsigned char*)op, sizeof(op)-1);
-	op[i] = '\0';
+	qd_field_iterator_strncpy(operation_string, op, sizeof(op));
         qd_agent_send_error(agent, reply_to, cid, QD_AMQP_NOT_IMPLEMENTED, op);
     }
 
@@ -755,7 +754,7 @@ static qd_agent_class_t *qd_agent_regist
 
     DEQ_INSERT_TAIL(agent->class_list, cls);
 
-    qd_log(agent->log_source, QD_LOG_INFO, "Manageable Entity Type (%s) %s", query_handler ? "object" : "event", fqname);
+    qd_log(agent->log_source, QD_LOG_DEBUG, "Manageable Entity Type (%s) %s", query_handler ? "object" : "event", fqname);
     return cls;
 }
 

Modified: qpid/dispatch/trunk/src/alloc.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/alloc.c?rev=1633704&r1=1633703&r2=1633704&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/alloc.c (original)
+++ qpid/dispatch/trunk/src/alloc.c Wed Oct 22 19:59:08 2014
@@ -351,15 +351,15 @@ qd_error_t qd_c_entity_update_allocator(
     qd_alloc_type_t *alloc_type = (qd_alloc_type_t*) impl;
     if ((qd_entity_has(entity, "identity") ||
          qd_entity_set_string(entity, "identity", alloc_type->desc->type_name) == 0) &&
-        qd_entity_set_long(entity, "type_size", alloc_type->desc->total_size) == 0 &&
-        qd_entity_set_long(entity, "transfer_batch_size", alloc_type->desc->config->transfer_batch_size) == 0 &&
-        qd_entity_set_long(entity, "local_free_list_max", alloc_type->desc->config->local_free_list_max) == 0 &&
-        qd_entity_set_long(entity, "global_free_list_max", alloc_type->desc->config->global_free_list_max) == 0 &&
-        qd_entity_set_long(entity, "total_alloc_from_heap", alloc_type->desc->stats->total_alloc_from_heap) == 0 &&
-        qd_entity_set_long(entity, "total_free_to_heap", alloc_type->desc->stats->total_free_to_heap) == 0 &&
-        qd_entity_set_long(entity, "held_by_threads", alloc_type->desc->stats->held_by_threads) == 0 &&
-        qd_entity_set_long(entity, "batches_rebalanced_to_threads", alloc_type->desc->stats->batches_rebalanced_to_threads) == 0 &&
-        qd_entity_set_long(entity, "batches_rebalanced_to_global", alloc_type->desc->stats->batches_rebalanced_to_global) == 0)
+        qd_entity_set_long(entity, "typeSize", alloc_type->desc->total_size) == 0 &&
+        qd_entity_set_long(entity, "transferBatchSize", alloc_type->desc->config->transfer_batch_size) == 0 &&
+        qd_entity_set_long(entity, "localFreeListMax", alloc_type->desc->config->local_free_list_max) == 0 &&
+        qd_entity_set_long(entity, "globalFreeListMax", alloc_type->desc->config->global_free_list_max) == 0 &&
+        qd_entity_set_long(entity, "totalAllocFromHeap", alloc_type->desc->stats->total_alloc_from_heap) == 0 &&
+        qd_entity_set_long(entity, "totalFreeToHeap", alloc_type->desc->stats->total_free_to_heap) == 0 &&
+        qd_entity_set_long(entity, "heldByThreads", alloc_type->desc->stats->held_by_threads) == 0 &&
+        qd_entity_set_long(entity, "batchesRebalancedToThreads", alloc_type->desc->stats->batches_rebalanced_to_threads) == 0 &&
+        qd_entity_set_long(entity, "batchesRebalancedToGlobal", alloc_type->desc->stats->batches_rebalanced_to_global) == 0)
         return QD_ERROR_NONE;
     return qd_error_code();
 }
@@ -438,15 +438,15 @@ static void alloc_attr_batches_rebalance
 static const qd_agent_attribute_t ALLOC_ATTRIBUTES[] =
     {{"name", alloc_attr_name, 0},
      {"identity", alloc_attr_name, 0},
-     {"type_size", alloc_attr_type_size, 0},
-     {"transfer_batch_size", alloc_attr_transfer_batch_size, 0},
-     {"local_free_list_max", alloc_attr_local_free_list_max, 0},
-     {"global_free_list_max", alloc_attr_global_free_list_max, 0},
-     {"total_alloc_from_heap", alloc_attr_total_alloc_from_heap, 0},
-     {"total_free_to_heap", alloc_attr_total_free_to_heap, 0},
-     {"held_by_threads", alloc_attr_held_by_threads, 0},
-     {"batches_rebalanced_to_threads", alloc_attr_batches_rebalanced_to_threads, 0},
-     {"batches_rebalanced_to_global", alloc_attr_batches_rebalanced_to_global, 0},
+     {"typeSize", alloc_attr_type_size, 0},
+     {"transferBatchSize", alloc_attr_transfer_batch_size, 0},
+     {"localFreeListMax", alloc_attr_local_free_list_max, 0},
+     {"globalFreeListMax", alloc_attr_global_free_list_max, 0},
+     {"totalAllocFromHeap", alloc_attr_total_alloc_from_heap, 0},
+     {"totalFreeToHeap", alloc_attr_total_free_to_heap, 0},
+     {"heldByThreads", alloc_attr_held_by_threads, 0},
+     {"batchesRebalancedToThreads", alloc_attr_batches_rebalanced_to_threads, 0},
+     {"batchesRebalancedToGlobal", alloc_attr_batches_rebalanced_to_global, 0},
      {0, 0, 0}};
 
 
@@ -464,7 +464,7 @@ static void alloc_query_handler(void* co
 
 void qd_alloc_setup_agent(qd_dispatch_t *qd)
 {
-    qd_agent_register_class(qd, QD_ALLOCATOR_TYPE, 0, ALLOC_ATTRIBUTES, alloc_query_handler);
+    qd_agent_register_class(qd, QD_ALLOCATOR_TYPE_LONG, 0, ALLOC_ATTRIBUTES, alloc_query_handler);
 }
 
 

Modified: qpid/dispatch/trunk/src/c_entity.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/c_entity.c?rev=1633704&r1=1633703&r2=1633704&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/c_entity.c (original)
+++ qpid/dispatch/trunk/src/c_entity.c Wed Oct 22 19:59:08 2014
@@ -75,14 +75,13 @@ qd_error_t qd_c_entity_flush(PyObject *l
     if (!event_lock) return QD_ERROR_NONE;    /* Unit tests don't call qd_c_entity_initialize */
     qd_error_clear();
     sys_mutex_lock(event_lock);
-    fprintf(stderr, "qd_c_entity_flush %d\n", (int)DEQ_SIZE(event_list));
     entity_event_t *event = DEQ_HEAD(event_list);
     while (event) {
         PyObject *tuple = Py_BuildValue("(isl)", (int)event->action, event->type, (long)event->object);
-        if (!tuple) { fprintf(stderr, "No tuple"); qd_error_py(); break; }
+        if (!tuple) { qd_error_py(); break; }
         int err = PyList_Append(list, tuple);
         Py_DECREF(tuple);
-        if (err) { fprintf(stderr, "No tuple"); qd_error_py(); break; }
+        if (err) { qd_error_py(); break; }
         DEQ_REMOVE_HEAD(event_list);
         free(event);
         event = DEQ_HEAD(event_list);
@@ -97,3 +96,10 @@ const char *QD_ROUTER_TYPE = "router";
 const char *QD_ROUTER_NODE_TYPE = "router.node";
 const char *QD_ROUTER_ADDRESS_TYPE = "router.address";
 const char *QD_ROUTER_LINK_TYPE = "router.link";
+
+const char *QD_ALLOCATOR_TYPE_LONG = "org.apache.qpid.dispatch.allocator";
+const char *QD_CONNECTION_TYPE_LONG = "org.apache.qpid.dispatch.connection";
+const char *QD_ROUTER_TYPE_LONG = "org.apache.qpid.dispatch.router";
+const char *QD_ROUTER_NODE_TYPE_LONG = "org.apache.qpid.dispatch.router.node";
+const char *QD_ROUTER_ADDRESS_TYPE_LONG = "org.apache.qpid.dispatch.router.address";
+const char *QD_ROUTER_LINK_TYPE_LONG = "org.apache.qpid.dispatch.router.link";

Modified: qpid/dispatch/trunk/src/c_entity.h
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/c_entity.h?rev=1633704&r1=1633703&r2=1633704&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/c_entity.h (original)
+++ qpid/dispatch/trunk/src/c_entity.h Wed Oct 22 19:59:08 2014
@@ -36,7 +36,7 @@ void qd_c_entity_add(const char *type, v
 /** Record an entity remove event. */
 void qd_c_entity_remove(const char *type, void *object);
 
-/** Entity type strings */
+/** Short entity type names (no org.apache.qpid.dispatch prefix). */
 extern const char *QD_ALLOCATOR_TYPE;
 extern const char *QD_CONNECTION_TYPE;
 extern const char *QD_ROUTER_TYPE;
@@ -44,4 +44,12 @@ extern const char *QD_ROUTER_NODE_TYPE;
 extern const char *QD_ROUTER_ADDRESS_TYPE;
 extern const char *QD_ROUTER_LINK_TYPE;
 
+/** Long entity type names (with org.apache.qpid.dispatch prefix). */
+extern const char *QD_ALLOCATOR_TYPE_LONG;
+extern const char *QD_CONNECTION_TYPE_LONG;
+extern const char *QD_ROUTER_TYPE_LONG;
+extern const char *QD_ROUTER_NODE_TYPE_LONG;
+extern const char *QD_ROUTER_ADDRESS_TYPE_LONG;
+extern const char *QD_ROUTER_LINK_TYPE_LONG;
+
 #endif

Modified: qpid/dispatch/trunk/src/connection_manager.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/connection_manager.c?rev=1633704&r1=1633703&r2=1633704&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/connection_manager.c (original)
+++ qpid/dispatch/trunk/src/connection_manager.c Wed Oct 22 19:59:08 2014
@@ -94,27 +94,27 @@ static qd_error_t load_server_config(qd_
     config->host           = qd_entity_string(entity, "addr"); CHECK();
     config->port           = qd_entity_string(entity, "port"); CHECK();
     config->role           = qd_entity_string(entity, "role"); CHECK();
-    config->max_frame_size = qd_entity_long(entity, "max-frame-size"); CHECK();
-    config->sasl_mechanisms = qd_entity_string(entity, "sasl-mechanisms"); CHECK();
+    config->max_frame_size = qd_entity_long(entity, "maxFrameSize"); CHECK();
+    config->sasl_mechanisms = qd_entity_string(entity, "saslMechanisms"); CHECK();
     config->ssl_enabled = has_attrs(entity, ssl_attributes, ssl_attributes_count);
     config->allow_no_sasl =
-        qd_entity_opt_bool(entity, "allow-no-sasl", false); CHECK();
+        qd_entity_opt_bool(entity, "allowNoSasl", false); CHECK();
     if (config->ssl_enabled) {
         config->ssl_server = 1;
         config->ssl_allow_unsecured_client =
-            qd_entity_opt_bool(entity, "allow-unsecured", false); CHECK();
+            qd_entity_opt_bool(entity, "allowUnsecured", false); CHECK();
         config->ssl_certificate_file =
-            qd_entity_opt_string(entity, "cert-file", 0); CHECK();
+            qd_entity_opt_string(entity, "certFile", 0); CHECK();
         config->ssl_private_key_file =
-            qd_entity_opt_string(entity, "key-file", 0); CHECK();
+            qd_entity_opt_string(entity, "keyFile", 0); CHECK();
         config->ssl_password =
             qd_entity_opt_string(entity, "password", 0); CHECK();
         config->ssl_trusted_certificate_db =
-            qd_entity_opt_string(entity, "cert-db", 0); CHECK();
+            qd_entity_opt_string(entity, "certDb", 0); CHECK();
         config->ssl_trusted_certificates =
-            qd_entity_opt_string(entity, "trusted-certs", 0); CHECK();
+            qd_entity_opt_string(entity, "trustedCerts", 0); CHECK();
         config->ssl_require_peer_authentication =
-            qd_entity_opt_bool(entity, "require-peer-auth", true);
+            qd_entity_opt_bool(entity, "requirePeerAuth", true);
     }
     return QD_ERROR_NONE;
 
@@ -366,7 +366,7 @@ static void server_query_handler(void* c
 
 void qd_connection_manager_setup_agent(qd_dispatch_t *qd)
 {
-    qd_agent_register_class(qd, QD_CONNECTION_TYPE, qd, CONN_ATTRIBUTES, server_query_handler);
+    qd_agent_register_class(qd, QD_CONNECTION_TYPE_LONG, qd, CONN_ATTRIBUTES, server_query_handler);
 }
 
 

Modified: qpid/dispatch/trunk/src/dispatch.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/dispatch.c?rev=1633704&r1=1633703&r2=1633704&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/dispatch.c (original)
+++ qpid/dispatch/trunk/src/dispatch.c Wed Oct 22 19:59:08 2014
@@ -93,8 +93,8 @@ qd_error_t qd_dispatch_load_config(qd_di
 qd_error_t qd_dispatch_configure_container(qd_dispatch_t *qd, qd_entity_t *entity)
 {
     const char *default_name = "00000000-0000-0000-0000-000000000000";
-    qd->thread_count   = qd_entity_opt_long(entity, "worker-threads", 1); QD_ERROR_RET();
-    qd->container_name = qd_entity_opt_string(entity, "container-name", default_name); QD_ERROR_RET();
+    qd->thread_count   = qd_entity_opt_long(entity, "workerThreads", 1); QD_ERROR_RET();
+    qd->container_name = qd_entity_opt_string(entity, "containerName", default_name); QD_ERROR_RET();
     return QD_ERROR_NONE;
 }
 
@@ -103,7 +103,7 @@ qd_error_t qd_dispatch_configure_router(
 {
     qd_error_clear();
     free(qd->router_id);
-    qd->router_id   = qd_entity_opt_string(entity, "router-id", qd->container_name);
+    qd->router_id   = qd_entity_opt_string(entity, "routerId", qd->container_name);
     QD_ERROR_RET();
     qd->router_mode = qd_entity_long(entity, "mode");
     return qd_error_code();

Modified: qpid/dispatch/trunk/src/iterator.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/iterator.c?rev=1633704&r1=1633703&r2=1633704&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/iterator.c (original)
+++ qpid/dispatch/trunk/src/iterator.c Wed Oct 22 19:59:08 2014
@@ -480,7 +480,7 @@ int qd_field_iterator_ncopy(qd_field_ite
     return i;
 }
 
-char* qd_field_iterator_logstr(qd_field_iterator_t *iter, char* buffer, int n) {
+char* qd_field_iterator_strncpy(qd_field_iterator_t *iter, char* buffer, int n) {
     int i = qd_field_iterator_ncopy(iter, (unsigned char*)buffer, n-1);
     buffer[i] = '\0';
     return buffer;

Modified: qpid/dispatch/trunk/src/router_agent.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/router_agent.c?rev=1633704&r1=1633703&r2=1633704&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/router_agent.c (original)
+++ qpid/dispatch/trunk/src/router_agent.c Wed Oct 22 19:59:08 2014
@@ -39,8 +39,9 @@ ENUM_DEFINE(qd_router_mode, qd_router_mo
 qd_error_t qd_c_entity_update_router(qd_entity_t* entity, void *impl) {
     qd_dispatch_t *qd = (qd_dispatch_t*) impl;
     qd_router_t *router = qd->router;
-    if (qd_entity_set_string(entity, "name", router->router_id) == 0 &&
-        qd_entity_set_string(entity, "identity", router->router_id) == 0 &&
+    if (qd_entity_set_stringf(entity, "name", "%s:%s", QD_ROUTER_TYPE, router->router_id) == 0 &&
+        qd_entity_set_stringf(entity, "identity", "%s:%s", QD_ROUTER_TYPE, router->router_id) == 0 &&
+        
         qd_entity_set_string(entity, "area", router->router_area) == 0 &&
         qd_entity_set_string(entity, "mode", qd_router_mode_name(router->router_mode)) == 0 &&
         qd_entity_set_long(entity, "addrCount", DEQ_SIZE(router->addrs)) == 0 &&
@@ -79,7 +80,7 @@ qd_error_t qd_c_entity_update_router_nod
     qd_router_node_t *rnode = (qd_router_node_t*) impl;
 
     if (!qd_entity_has(entity, "identity")) {
-        CHECK(qd_entity_set_stringf(entity, "identity", "%s-%d", QD_ROUTER_NODE_TYPE, rnode->mask_bit));
+        CHECK(qd_entity_set_stringf(entity, "identity", "%s:%d", QD_ROUTER_NODE_TYPE, rnode->mask_bit));
     }
     CHECK(qd_entity_set_string(entity, "addr", address_text(rnode->owning_addr)));
     long next_hop = rnode->next_hop ? rnode->next_hop->mask_bit : 0;
@@ -431,13 +432,13 @@ qd_error_t qd_router_agent_setup(qd_rout
 {
     qd_error_clear();
     router->class_router =
-        qd_agent_register_class(router->qd, QD_ROUTER_TYPE, router, ROUTER_ATTRIBUTES, qd_router_query_router);
+        qd_agent_register_class(router->qd, QD_ROUTER_TYPE_LONG, router, ROUTER_ATTRIBUTES, qd_router_query_router);
     router->class_link =
-        qd_agent_register_class(router->qd, QD_ROUTER_LINK_TYPE, router, LINK_ATTRIBUTES, qd_router_query_link);
+        qd_agent_register_class(router->qd, QD_ROUTER_LINK_TYPE_LONG, router, LINK_ATTRIBUTES, qd_router_query_link);
     router->class_node =
-        qd_agent_register_class(router->qd, QD_ROUTER_NODE_TYPE, router, NODE_ATTRIBUTES, qd_router_query_node);
+        qd_agent_register_class(router->qd, QD_ROUTER_NODE_TYPE_LONG, router, NODE_ATTRIBUTES, qd_router_query_node);
     router->class_address =
-        qd_agent_register_class(router->qd, QD_ROUTER_ADDRESS_TYPE, router, ADDRESS_ATTRIBUTES, qd_router_query_address);
+        qd_agent_register_class(router->qd, QD_ROUTER_ADDRESS_TYPE_LONG, router, ADDRESS_ATTRIBUTES, qd_router_query_address);
     return qd_error_code();
 }
 

Modified: qpid/dispatch/trunk/src/router_config.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/router_config.c?rev=1633704&r1=1633703&r2=1633704&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/router_config.c (original)
+++ qpid/dispatch/trunk/src/router_config.c Wed Oct 22 19:59:08 2014
@@ -28,8 +28,8 @@
 qd_error_t qd_router_configure_address(qd_router_t *router, qd_entity_t *entity) {
     qd_error_clear();
     int   phase  = qd_entity_opt_long(entity, "phase", 0); QD_ERROR_RET();
-    qd_schema_fixed_address_fanout_t fanout = qd_entity_long(entity, "fanout"); QD_ERROR_RET();
-    qd_schema_fixed_address_bias_t bias   = qd_entity_long(entity, "bias"); QD_ERROR_RET();
+    qd_schema_fixedAddress_fanout_t fanout = qd_entity_long(entity, "fanout"); QD_ERROR_RET();
+    qd_schema_fixedAddress_bias_t bias   = qd_entity_long(entity, "bias"); QD_ERROR_RET();
     char *prefix = qd_entity_string(entity, "prefix"); QD_ERROR_RET();
 
     if (phase < 0 || phase > 9) {
@@ -72,8 +72,8 @@ qd_error_t qd_router_configure_address(q
 
     qd_address_semantics_t semantics = 0;
     switch(fanout) {
-      case QD_SCHEMA_FIXED_ADDRESS_FANOUT_MULTIPLE: semantics |= QD_FANOUT_MULTIPLE; break;
-      case QD_SCHEMA_FIXED_ADDRESS_FANOUT_SINGLE: semantics |= QD_FANOUT_SINGLE; break;
+      case QD_SCHEMA_FIXEDADDRESS_FANOUT_MULTIPLE: semantics |= QD_FANOUT_MULTIPLE; break;
+      case QD_SCHEMA_FIXEDADDRESS_FANOUT_SINGLE: semantics |= QD_FANOUT_SINGLE; break;
       default:
         free(prefix);
         return qd_error(QD_ERROR_CONFIG, "Invalid fanout value %d", fanout);
@@ -81,8 +81,8 @@ qd_error_t qd_router_configure_address(q
 
     if ((semantics & QD_FANOUTMASK) == QD_FANOUT_SINGLE) {
         switch(bias) {
-          case QD_SCHEMA_FIXED_ADDRESS_BIAS_CLOSEST: semantics |= QD_BIAS_CLOSEST; break;
-          case QD_SCHEMA_FIXED_ADDRESS_BIAS_SPREAD: semantics |= QD_BIAS_SPREAD; break;
+          case QD_SCHEMA_FIXEDADDRESS_BIAS_CLOSEST: semantics |= QD_BIAS_CLOSEST; break;
+          case QD_SCHEMA_FIXEDADDRESS_BIAS_SPREAD: semantics |= QD_BIAS_SPREAD; break;
           default:
             free(prefix);
             return qd_error(QD_ERROR_CONFIG, "Invalid bias value %d", fanout);
@@ -90,12 +90,12 @@ qd_error_t qd_router_configure_address(q
 	qd_log(router->log_source, QD_LOG_INFO,
 		   "Configured Address: prefix=%s phase=%d fanout=%s bias=%s",
 		   prefix, phase,
-		   qd_schema_fixed_address_fanout_names[fanout],
-		   qd_schema_fixed_address_bias_names[bias]);
+		   qd_schema_fixedAddress_fanout_names[fanout],
+		   qd_schema_fixedAddress_bias_names[bias]);
     } else {
 	semantics |= QD_BIAS_NONE;
 	qd_log(router->log_source, QD_LOG_INFO, "Configured Address: prefix=%s phase=%d fanout=%s",
-	       prefix, phase, qd_schema_fixed_address_fanout_names[fanout]);
+	       prefix, phase, qd_schema_fixedAddress_fanout_names[fanout]);
     }
 
     addr_phase->semantics = semantics;
@@ -110,8 +110,8 @@ qd_error_t qd_router_configure_waypoint(
 
     char *address = qd_entity_string(entity, "address"); QD_ERROR_RET();
     char *connector = qd_entity_string(entity, "connector"); QD_ERROR_RET();
-    int   in_phase  = qd_entity_opt_long(entity, "in-phase", 0); QD_ERROR_RET();
-    int   out_phase = qd_entity_opt_long(entity, "out-phase", 0);  QD_ERROR_RET();
+    int   in_phase  = qd_entity_opt_long(entity, "inPhase", 0); QD_ERROR_RET();
+    int   out_phase = qd_entity_opt_long(entity, "outPhase", 0);  QD_ERROR_RET();
 
     if (in_phase > 9 || out_phase > 9) {
         free(address);

Modified: qpid/dispatch/trunk/tests/management/entity.py
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/tests/management/entity.py?rev=1633704&r1=1633703&r2=1633704&view=diff
==============================================================================
--- qpid/dispatch/trunk/tests/management/entity.py (original)
+++ qpid/dispatch/trunk/tests/management/entity.py Wed Oct 22 19:59:08 2014
@@ -18,10 +18,23 @@
 #
 
 import unittest
-from qpid_dispatch.management.entity import Entity
+from qpid_dispatch.management.entity import Entity, camelcase
 
 class EntityTest(unittest.TestCase):
 
+    def test_camelcase(self):
+        self.assertEqual('', camelcase(''))
+        self.assertEqual('foo', camelcase('foo'))
+        self.assertEqual('Foo', camelcase('foo', capital=True))
+        self.assertEqual('fooBar', camelcase('foo bar'))
+        self.assertEqual('fooBar', camelcase('foo.bar'))
+        self.assertEqual('fooBar', camelcase('foo-bar'))
+        self.assertEqual('fooBar', camelcase('foo_bar'))
+        self.assertEqual('fooBarBaz', camelcase('foo_bar.baz'))
+        self.assertEqual('FooBarBaz', camelcase('foo_bar.baz', capital=True))
+        self.assertEqual('fooBar', camelcase('fooBar'))
+        self.assertEqual('FooBar', camelcase('fooBar', capital=True))
+
     def test_entity(self):
         e = Entity({'foo-bar': 'baz'}, type='container', name='x')
         self.assertEqual(e.attributes, {'type': 'container', 'name':'x', 'foo-bar': 'baz'})

Modified: qpid/dispatch/trunk/tests/management/qdrouter.py
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/tests/management/qdrouter.py?rev=1633704&r1=1633703&r2=1633704&view=diff
==============================================================================
--- qpid/dispatch/trunk/tests/management/qdrouter.py (original)
+++ qpid/dispatch/trunk/tests/management/qdrouter.py Wed Oct 22 19:59:08 2014
@@ -19,15 +19,11 @@
 
 #pylint: disable=wildcard-import,unused-wildcard-import,missing-docstring,too-many-public-methods
 
-import unittest
+import unittest, sys
 from qpid_dispatch_internal.management.config import Config
 
-class QdrouterTest(unittest.TestCase):
-    """Tests for qpid_dispatch_internal.config.qdrouter"""
-
-    def test_qdrouter_parse(self):
-        conf = Config()
-        conf_text = """
+# Dash-separated configuration file
+conf_text = """
 # Line comment
 router {
     mode: standalone            # End of line comment
@@ -50,36 +46,69 @@ listener {
     sasl-mechanisms: ANONYMOUS
     port: 4567
 }
-        """
-        #pylint: disable=protected-access
-        content = conf._parse(conf_text.split("\n"))
+"""
+
+# camelCase configuration file
+confText = """
+# Line comment
+router {
+    mode: standalone            # End of line comment
+}
+sslProfile {
+    name: test-profile
+    password: secret
+}
+listener {
+    name: l0
+    saslMechanisms: ANONYMOUS
+    sslProfile: test-profile
+}
+listener {
+    identity: l1
+    saslMechanisms: ANONYMOUS
+    port: 1234
+}
+listener {
+    saslMechanisms: ANONYMOUS
+    port: 4567
+}
+"""
 
-        self.maxDiff = None     # pylint: disable=invalid-name
-        self.assertEqual(content, [
-            ["router", {"mode":"standalone"}],
-            ["ssl-profile", {"name":"test-profile", "password":"secret"}],
-            ["listener", {"name":"l0", "sasl-mechanisms":"ANONYMOUS", "ssl-profile":"test-profile"}],
-            ["listener", {"identity":"l1", "sasl-mechanisms":"ANONYMOUS", "port":"1234"}],
-            ["listener", {"sasl-mechanisms":"ANONYMOUS", "port":"4567"}]
-        ])
+
+class QdrouterTest(unittest.TestCase):
+    """Tests for qpid_dispatch_internal.config.qdrouter"""
+
+    def do_test_qdrouter_parse(self, text):
+        conf = Config()
+        content = conf._parse(text.split("\n"))
+        self.maxDiff = None
+        expect = [
+            [u"router", {u"mode":u"standalone"}],
+            [u"sslProfile", {u"name":u"test-profile", u"password":u"secret"}],
+            [u"listener", {u"name":u"l0", u"saslMechanisms":u"ANONYMOUS", u"sslProfile":u"test-profile"}],
+            [u"listener", {u"identity":u"l1", u"saslMechanisms":u"ANONYMOUS", u"port":u"1234"}],
+            [u"listener", {u"saslMechanisms":u"ANONYMOUS", u"port":u"4567"}]
+        ]
+        self.assertEqual(content, expect)
 
         content = conf._expand(content)
-        self.assertEqual(content, [
-            ["router", {"mode":"standalone"}],
-            ["listener", {"name":"l0", "sasl-mechanisms":"ANONYMOUS", "password":"secret"}],
-            ["listener", {"identity":"l1", "sasl-mechanisms":"ANONYMOUS", "port":"1234"}],
-            ["listener", {"sasl-mechanisms":"ANONYMOUS", "port":"4567"}]
-        ])
+        expect = [
+            [u"router", {u"mode":u"standalone"}],
+            [u"listener", {u"name":u"l0", u"saslMechanisms":u"ANONYMOUS", u"password":u"secret"}],
+            [u"listener", {u"identity":u"l1", u"saslMechanisms":u"ANONYMOUS", u"port":u"1234"}],
+            [u"listener", {u"saslMechanisms":u"ANONYMOUS", u"port":u"4567"}]
+        ]
+        self.assertEqual(content, expect)
 
         content = conf._default_ids(content)
         self.assertEqual(content, [
-            ["router", {"mode":"standalone", "name":"router:0", "identity":"router:0"}],
-            ["listener", {"name":"l0", "identity":"l0", "sasl-mechanisms":"ANONYMOUS", "password":"secret"}],
-            ["listener", {"name":"l1", "identity":"l1", "sasl-mechanisms":"ANONYMOUS", "port":"1234"}],
-            ["listener", {"name":"listener:2", "identity":"listener:2", "sasl-mechanisms":"ANONYMOUS", "port":"4567"}]
+            [u"router", {u"mode":u"standalone", u"name":u"router:0", u"identity":u"router:0"}],
+            [u"listener", {u"name":u"l0", u"identity":u"l0", u"saslMechanisms":u"ANONYMOUS", u"password":u"secret"}],
+            [u"listener", {u"name":u"l1", u"identity":u"l1", u"saslMechanisms":u"ANONYMOUS", u"port":u"1234"}],
+            [u"listener", {u"name":u"listener:2", u"identity":u"listener:2", u"saslMechanisms":u"ANONYMOUS", u"port":u"4567"}]
         ])
 
-        conf.load(conf_text.split("\n"))
+        conf.load(text.split(u"\n"))
         router = conf.by_type('router').next()
         self.assertEqual(router['name'], 'router:0')
         self.assertEqual(router['identity'], 'router:0')
@@ -89,5 +118,12 @@ listener {
         self.assertEqual(listeners[2]['name'], 'listener:2')
         self.assertEqual(listeners[2]['identity'], 'listener:2')
 
+    def test_qdrouter_parse_dash(self):
+        self.do_test_qdrouter_parse(conf_text)
+
+    def test_qdrouter_parse_camel(self):
+        self.do_test_qdrouter_parse(confText)
+
+
 if __name__ == '__main__':
     unittest.main()

Modified: qpid/dispatch/trunk/tests/management/schema.py
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/tests/management/schema.py?rev=1633704&r1=1633703&r2=1633704&view=diff
==============================================================================
--- qpid/dispatch/trunk/tests/management/schema.py (original)
+++ qpid/dispatch/trunk/tests/management/schema.py Wed Oct 22 19:59:08 2014
@@ -34,29 +34,29 @@ def replace_od(thing):
 SCHEMA_1 = {
     "prefix":"org.example",
     "includes": {
-        "entity-id": {
+        "entityId": {
             "attributes": {
                 "name": {"type":"String", "required": True, "unique":True},
                 "type": {"type":"String", "required": True}
             }
         }
     },
-    "entity_types": {
+    "entityTypes": {
         "container": {
             "singleton": True,
-            "include" : ["entity-id"],
+            "include" : ["entityId"],
             "attributes": {
-                "worker-threads" : {"type":"Integer", "default": 1}
+                "workerThreads" : {"type":"Integer", "default": 1}
             }
         },
         "listener": {
-            "include" : ["entity-id"],
+            "include" : ["entityId"],
             "attributes": {
                 "addr" : {"type":"String"}
             }
         },
         "connector": {
-            "include" : ["entity-id"],
+            "include" : ["entityId"],
             "attributes": {
                 "addr" : {"type":"String"}
             }
@@ -128,7 +128,7 @@ class SchemaTest(unittest.TestCase):
 
     def test_entity_refs(self):
         e = EntityType('MyEntity', Schema(), attributes={
-            'type': {'type': 'String', 'required': True, 'value': '$$entity-type'},
+            'type': {'type': 'String', 'required': True, 'value': '$$entityType'},
             'name': {'type':'String', 'default':'$identity'},
             'identity': {'type':'String', 'default':'$name', "required": True}})
 
@@ -160,7 +160,7 @@ class SchemaTest(unittest.TestCase):
             "prefix":"org.example",
 
             "includes": {
-                "entity-id": {
+                "entityId": {
                     "attributes": {
                         "name": {"required": True,
                                  "unique":True,
@@ -169,12 +169,12 @@ class SchemaTest(unittest.TestCase):
                 }
             },
 
-            "entity_types": {
+            "entityTypes": {
                 "container": {
                     "singleton": True,
                     "attributes": {
                         "name": {"type":"String", "unique":True, "required": True},
-                        "worker-threads": {"type":"Integer", "default": 1}
+                        "workerThreads": {"type":"Integer", "default": 1}
                     }
                     },
                     "listener": {

Modified: qpid/dispatch/trunk/tests/router_engine_test.py
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/tests/router_engine_test.py?rev=1633704&r1=1633703&r2=1633704&view=diff
==============================================================================
--- qpid/dispatch/trunk/tests/router_engine_test.py (original)
+++ qpid/dispatch/trunk/tests/router_engine_test.py Wed Oct 22 19:59:08 2014
@@ -269,11 +269,11 @@ class NeighborTest(unittest.TestCase):
         self.area = "area"
         # Fake configuration
         self.config = Entity({
-            'hello_interval'      :  1.0,
-            'hello_max_age'       :  3.0,
-            'ra_interval'         : 30.0,
-            'remote_ls_max_age'   : 60.0,
-            'mobile_addr_max_age' : 60.0  })
+            'helloInterval'      :  1.0,
+            'helloMaxAge'       :  3.0,
+            'raInterval'         : 30.0,
+            'remoteLsMaxAge'   : 60.0,
+            'mobileAddrMaxAge' : 60.0  })
         self.neighbors = {}
 
     def test_hello_sent(self):

Modified: qpid/dispatch/trunk/tests/system_tests_management.py
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/tests/system_tests_management.py?rev=1633704&r1=1633703&r2=1633704&view=diff
==============================================================================
--- qpid/dispatch/trunk/tests/system_tests_management.py (original)
+++ qpid/dispatch/trunk/tests/system_tests_management.py Wed Oct 22 19:59:08 2014
@@ -26,7 +26,7 @@ from system_test import Qdrouterd, messa
 DISPATCH = 'org.apache.qpid.dispatch'
 LISTENER = DISPATCH + '.listener'
 CONNECTOR = DISPATCH + '.connector'
-FIXED_ADDRESS = DISPATCH + '.fixed-address'
+FIXED_ADDRESS = DISPATCH + '.fixedAddress'
 WAYPOINT = DISPATCH + '.waypoint'
 DUMMY = DISPATCH + '.dummy'
 ROUTER = DISPATCH + '.router'
@@ -43,7 +43,7 @@ class ManagementTest(system_test.TestCas
         # Stand-alone router
         name = cls.__name__
         conf = Qdrouterd.Config([
-            ('router', { 'mode': 'standalone', 'router-id': name}),
+            ('router', { 'mode': 'standalone', 'routerId': name}),
             ('listener', {'name': 'l0', 'port':cls.get_port(), 'role':'normal'}),
             # Extra listeners to exercise managment query
             ('listener', {'name': 'l1', 'port':cls.get_port(), 'role':'normal'}),
@@ -94,7 +94,7 @@ class ManagementTest(system_test.TestCas
         expect = [[LISTENER, 'l%s' % i, str(self.router.ports[i])] for i in xrange(3)]
         for r in expect: # We might have extras in results due to create tests
             self.assertTrue(r in response.results)
-        for name in [self.router.name, 'log:0']:
+        for name in ['router:' + self.router.name, 'log:0']:
             self.assertTrue([r for r in response.get_dicts() if r['name'] == name],
                             msg="Can't find result with name '%s'" % name)
 
@@ -113,7 +113,7 @@ class ManagementTest(system_test.TestCas
 
         port = self.get_port()
         # Note qdrouter schema defines port as string not int, since it can be a service name.
-        attributes = {'name':'foo', 'port':str(port), 'role':'normal', 'sasl-mechanisms': 'ANONYMOUS'}
+        attributes = {'name':'foo', 'port':str(port), 'role':'normal', 'saslMechanisms': 'ANONYMOUS'}
         entity = self.assert_create_ok(LISTENER, 'foo', attributes)
         self.assertEqual(entity['identity'], attributes['name'])
         self.assertEqual(entity['addr'], '0.0.0.0')
@@ -121,7 +121,7 @@ class ManagementTest(system_test.TestCas
         # Connect via the new listener
         node3 = self.cleanup(Node(Url(port=port)))
         router = node3.query(type=ROUTER).get_entities()
-        self.assertEqual(self.__class__.router.name, router[0]['name'])
+        self.assertEqual(self.__class__.router.name, router[0]['routerId'])
 
     def test_create_log(self):
         """Create a log entity"""
@@ -143,13 +143,13 @@ class ManagementTest(system_test.TestCas
         self.assertEqual('hello', msgr.fetch().body)
 
     def test_create_connector_waypoint(self):
-        """Test creating waypoint, connector and fixed-address
+        """Test creating waypoint, connector and fixedAddress
         Create a waypoint that leads out and back from a second router.
         """
         conf = Qdrouterd.Config([
-            ('router', {'mode': 'standalone', 'router-id': 'wp-router'}),
+            ('router', {'mode': 'standalone', 'routerId': 'wp-router'}),
             ('listener', {'port':self.get_port(), 'role':'normal'}),
-            ('fixed-address', {'prefix':'foo'})
+            ('fixedAddress', {'prefix':'foo'})
         ])
         wp_router = self.qdrouterd('wp-router', conf)
         wp_router.wait_ready()
@@ -158,8 +158,8 @@ class ManagementTest(system_test.TestCas
         for c in [
                 (FIXED_ADDRESS, 'a1', {'prefix':'foo', 'phase':0, 'fanout':'single', 'bias':'spread'}),
                 (FIXED_ADDRESS, 'a2', {'prefix':'foo', 'phase':1, 'fanout':'single', 'bias':'spread'}),
-                (CONNECTOR, 'wp_connector', {'port':str(wp_router.ports[0]), 'sasl-mechanisms': 'ANONYMOUS', 'role': 'on-demand'}),
-                (WAYPOINT, 'wp', {'address': 'foo', 'in-phase': 0, 'out-phase': 1, 'connector': 'wp_connector'})
+                (CONNECTOR, 'wp_connector', {'port':str(wp_router.ports[0]), 'saslMechanisms': 'ANONYMOUS', 'role': 'on-demand'}),
+                (WAYPOINT, 'wp', {'address': 'foo', 'inPhase': 0, 'outPhase': 1, 'connector': 'wp_connector'})
         ]:
             self.assert_create_ok(*c)
         assert retry(lambda: self.router.is_connected, wp_router.ports[0])
@@ -269,12 +269,12 @@ class ManagementTest(system_test.TestCas
         """Test node entity in a pair of linked routers"""
         # Pair of linked interior routers
         conf1 = Qdrouterd.Config([
-            ('router', { 'mode': 'interior', 'router-id': 'router1'}),
+            ('router', { 'mode': 'interior', 'routerId': 'router1'}),
             ('listener', {'port':self.get_port(), 'role':'normal'}),
             ('listener', {'port':self.get_port(), 'role':'inter-router'})
         ])
         conf2 = Qdrouterd.Config([
-            ('router', { 'mode': 'interior', 'router-id': 'router2'}),
+            ('router', { 'mode': 'interior', 'routerId': 'router2'}),
             ('listener', {'port':self.get_port(), 'role':'normal'}),
             ('connector', {'port':conf1.sections('listener')[1]['port'], 'role':'inter-router'})
         ])

Modified: qpid/dispatch/trunk/tests/system_tests_qdmanage.py
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/tests/system_tests_qdmanage.py?rev=1633704&r1=1633703&r2=1633704&view=diff
==============================================================================
--- qpid/dispatch/trunk/tests/system_tests_qdmanage.py (original)
+++ qpid/dispatch/trunk/tests/system_tests_qdmanage.py Wed Oct 22 19:59:08 2014
@@ -35,11 +35,13 @@ class QdmanageTest(TestCase):
         ])
         cls.router = cls.tester.qdrouterd('test-router', config, wait=True)
 
+    def address(self): return self.router.hostports[0]
+
     def run_qdmanage(self, cmd, input=None, expect=Process.EXIT_OK, **kwargs):
         args = filter(None, sum([["--%s" % k.replace('_','-'), v]
                                  for k, v in kwargs.iteritems()], []))
         p = self.popen(
-            ['qdmanage', cmd, '--bus', self.router.hostports[0], '--indent=-1']+args,
+            ['qdmanage', cmd, '--bus', self.address(), '--indent=-1']+args,
             stdin=PIPE, stdout=PIPE, stderr=STDOUT, expect=expect)
         out = p.communicate(input)[0]
         try:
@@ -92,6 +94,7 @@ class QdmanageTest(TestCase):
 
 
     def test_stdin(self):
+        """Test piping from stdin"""
         def check(cmd, expect, input, copy=None):
             actual = json.loads(self.run_qdmanage(cmd, input=input, stdin=None))
             self.assert_entity_equal(expect, actual, copy=copy)
@@ -138,5 +141,16 @@ class QdmanageTest(TestCase):
                        if e['type'] not in ignore_types)
         self.assertEqual(name_type(qall), name_type(qattr))
 
+
+class OldQdmanageTest(QdmanageTest):
+    """Test with old managment interface"""
+    def address(self): return super(OldQdmanageTest, self).address() + '/$cmanagement'
+
+    def test_crud(self): pass   # Not supported by old management
+
+    def test_query(self): pass  # Not supported by old management
+
+    def test_stdin(self): pass  # Not supported by old management
+
 if __name__ == '__main__':
     unittest.main(main_module())

Modified: qpid/dispatch/trunk/tests/system_tests_qdstat.py
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/tests/system_tests_qdstat.py?rev=1633704&r1=1633703&r2=1633704&view=diff
==============================================================================
--- qpid/dispatch/trunk/tests/system_tests_qdstat.py (original)
+++ qpid/dispatch/trunk/tests/system_tests_qdstat.py Wed Oct 22 19:59:08 2014
@@ -29,15 +29,18 @@ class QdstatTest(system_test.TestCase):
     def setUpClass(cls):
         super(QdstatTest, cls).setUpClass()
         config = system_test.Qdrouterd.Config([
-            ('listener', {'port': cls.tester.get_port()})
+            ('listener', {'port': cls.tester.get_port()}),
         ])
         cls.router = cls.tester.qdrouterd('test-router', config)
 
+    def address(self): return self.router.hostports[0] # Overridden by subclasses
+
     def run_qdstat(self, args, regexp=None):
-        p = self.popen(['qdstat', '--bus', self.router.hostports[0]]+args,
-                       name='qdstat-'+self.id(), stdout=PIPE)
+        p = self.popen(['qdstat', '--bus', self.address()] + args,
+                       name='qdstat-'+self.id(), stdout=PIPE, expect=None)
         out = p.communicate()[0]
-        self.assertEqual(0, p.returncode, "qdstat exit status %s, output:\n%s" % (p.returncode, out))
+        assert p.returncode == 0, \
+            "qdstat exit status %s, output:\n%s" % (p.returncode, out)
         if regexp: assert re.search(regexp, out, re.I), "Can't find '%s' in '%s'" % (regexp, out)
         return out
 
@@ -63,6 +66,9 @@ class QdstatTest(system_test.TestCase):
         self.run_qdstat(['--memory'], r'qd_address_t\s+[0-9]+')
 
 
+class OldQdstatTest(QdstatTest):
+    """Test with old managment interface"""
+    def address(self): return super(OldQdstatTest, self).address() + '/$cmanagement'
 
 if __name__ == '__main__':
     unittest.main(system_test.main_module())

Modified: qpid/dispatch/trunk/tools/qdstat
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/tools/qdstat?rev=1633704&r1=1633703&r2=1633704&view=diff
==============================================================================
--- qpid/dispatch/trunk/tools/qdstat (original)
+++ qpid/dispatch/trunk/tools/qdstat Wed Oct 22 19:59:08 2014
@@ -298,13 +298,13 @@ class BusManager(Node):
         for t in objects:
             row = []
             row.append(t.name)
-            row.append(t.type_size)
-            row.append(t.transfer_batch_size)
-            row.append(t.local_free_list_max)
-            row.append(t.total_alloc_from_heap)
-            row.append(t.held_by_threads)
-            row.append(t.batches_rebalanced_to_threads)
-            row.append(t.batches_rebalanced_to_global)
+            row.append(t.typeSize)
+            row.append(t.transferBatchSize)
+            row.append(t.localFreeListMax)
+            row.append(t.totalAllocFromHeap)
+            row.append(t.heldByThreads)
+            row.append(t.batchesRebalancedToThreads)
+            row.append(t.batchesRebalancedToGlobal)
             rows.append(row)
         title = "Types"
         sorter = Sorter(heads, rows, 'type', 0, True)



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