You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ea...@apache.org on 2016/11/15 14:31:58 UTC

[49/51] [partial] qpid-dispatch git commit: DISPATCH-561 Added program to return fake management data

http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/c24cddee/console/test/mock/entities.py
----------------------------------------------------------------------
diff --git a/console/test/mock/entities.py b/console/test/mock/entities.py
new file mode 100644
index 0000000..b20538d
--- /dev/null
+++ b/console/test/mock/entities.py
@@ -0,0 +1,358 @@
+#!/usr/bin/env python
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# 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
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+import json
+from proton import generate_uuid
+import collections
+
+class Schema(object):
+    schema = {}
+
+    @staticmethod
+    def i(entity, attribute):
+        return Schema.schema[entity]["attributeNames"].index(attribute)
+
+    @staticmethod
+    def type(entity):
+        return Schema.schema[entity]["fullyQualifiedType"]
+
+    @staticmethod
+    def init():
+        with open("topologies/schema.json") as fp:
+            data = json.load(fp)
+            for entity in data["entityTypes"]:
+                Schema.schema[entity] = {"attributeNames": [],
+                                         "fullyQualifiedType": data["entityTypes"][entity]["fullyQualifiedType"]}
+                for attribute in data["entityTypes"][entity]["attributes"]:
+                    Schema.schema[entity]["attributeNames"].append(attribute)
+                Schema.schema[entity]["attributeNames"].append("type")
+
+class SparseList(list):
+    '''
+    from http://stackoverflow.com/questions/1857780/sparse-assignment-list-in-python
+    '''
+    def __setitem__(self, index, value):
+        missing = index - len(self) + 1
+        if missing > 0:
+            self.extend([None] * missing)
+        list.__setitem__(self, index, value)
+    def __getitem__(self, index):
+        try: return list.__getitem__(self, index)
+        except IndexError: return None
+
+class Entity(object):
+    def __init__(self, name):
+        self.name = name
+        self.value = SparseList()
+        self.settype()
+
+    def setval(self, attribute, value):
+        self.value[Schema.i(self.name, attribute)] = value
+
+    def settype(self):
+        self.setval("type", Schema.type(self.name))
+
+    def setZero(self, attributes):
+        for attribute in attributes:
+            self.setval(attribute, 0)
+
+    def getval(self, attr):
+        return self.value[Schema.i(self.name, attr)]
+
+    def vals(self):
+        return self.value
+
+class Multiple(object):
+    def __init__(self):
+        self.results = []
+
+    def vals(self):
+        return self.results
+
+class RouterNode(Entity):
+    instance = 0
+    def __init__(self, f, t, links, hopper):
+        super(RouterNode, self).__init__("router.node")
+        self.hopper = hopper
+        self.init(f, t, links)
+
+    def init(self, f, t, links):
+        RouterNode.instance += 1
+        self.setval("name", "router.node/" + t)
+        self.setval("nextHop", "(self)" if f == t else self.hopper.get(f, t, links))
+        self.setval("validOrigins", [])
+        self.setval("linkState", [])
+        self.setval("instance", RouterNode.instance)
+        self.setval("cost", 1)
+        self.setval("address", "amqp:/_topo/0/" + t)
+        self.setval("id", t)
+        self.setval("identity", self.value[Schema.i(self.name, "name")])
+
+    def reset(self):
+        RouterNode.nh = NextHop()
+
+class Connector(Entity):
+    def __init__(self, host, port):
+        super(Connector, self).__init__("connector")
+        self.init(host, port)
+
+    def init(self, host, port):
+        self.setval("verifyHostName", True)
+        self.setval("cost", 1)
+        self.setval("addr", "127.0.0.1")
+        self.setval("maxSessions", 32768)
+        self.setval("allowRedirect", True)
+        self.setval("idleTimeoutSeconds", 16)
+        self.setval("saslMechanisms", "AMONYMOUS")
+        self.setval("maxFrameSize", 16384)
+        self.setval("maxSessionFrames", 100)
+        self.setval("host", host)
+        self.setval("role", "inter-router")
+        self.setval("stripAnnotations", "both")
+        self.setval("port", port)
+        self.setval("identity", "connector/" + host + ":" + port)
+        self.setval("name", self.getval("identity"))
+
+class Policy(Entity):
+    def __init__(self):
+        super(Policy, self).__init__("policy")
+        self.init()
+
+    def init(self):
+        self.setval("connectionsProcessed", 2)
+        self.setval("defaultVhost", "$default")
+        self.setval("connectionsDenied", 0)
+        self.setval("enableVhostPolicy", False)
+        self.setval("maxConnections", 65535)
+        self.setval("connectionsCurrent", self.getval("connectionsProcessed"))
+        self.setval("identity", 1)
+        self.setval("name", "policy/" + str(self.getval("identity")))
+
+class Logs(Multiple):
+    modules = ["AGENT", "CONTAINER", "DEFAULT", "ERROR", "MESSAGE", "POLICY", "ROUTER", "ROUTER_CORE", "ROUTER_HELLO",
+               "ROUTER_LS", "ROUTER_MA", "SERVER"]
+
+    def __init__(self):
+        super(Logs, self).__init__()
+        for module in Logs.modules:
+            self.results.append(Log(module).vals())
+
+class Log(Entity):
+    def __init__(self, module):
+        super(Log, self).__init__("log")
+        self.init(module)
+
+    def init(self, module):
+        self.setval("name", "log/" + module)
+        self.setval("identity", self.getval("name"))
+        self.setval("module", module)
+
+class Allocators(Multiple):
+    names = [["qd_bitmask", 24], ["_buffer", 536], ["_composed_field", 64], ["_composite", 112], ["_connection", 232],
+             ["_connector", 56], ["_deferred_call", 32], ["_field_iterator", 128], ["_hash_handle", 16],
+             ["_hash_item", 32], ["_hash_segment", 24], ["_link", 48], ["_listener", 32], ["_log_entry", 2104],
+             ["_management_context", 56], ["_message_context", 640], ["_message", 128], ["_node", 56],
+             ["_parsed_field", 88], ["_timer", 56], ["_work_item", 24], ["pn_connector", 600], ["pn_listener", 48],
+             ["r_action", 160], ["r_address_config", 56], ["r_address", 264], ["r_connection", 232],
+             ["r_connection_work", 56], ["r_delivery_ref", 24], ["r_delivery", 144], ["r_field", 40],
+             ["r_general_work", 64], ["r_link_ref", 24], ["r_link", 304], ["r_node", 64], ["r_query", 336],
+             ["r_terminus", 64], ["tm_router", 16]]
+
+    def __init__(self):
+        super(Allocators, self).__init__()
+        for name in Allocators.names:
+            self.results.append(Allocator(name).vals())
+
+class Allocator(Entity):
+    def __init__(self, name):
+        super(Allocator, self).__init__("allocator")
+        self.init(name)
+
+    def init(self, name):
+        n = "qd" + name[0] + "_t"
+        self.setZero(["heldByThreads", "transferBatchSize", "globalFreeListMax", "batchesRebalancedToGlobal", "batchesRebalancedToThreads",
+                      "totalFreeToHeap", "totalAllocFromHeap", "localFreeListMax"])
+        self.setval("name", "allocator/" + n)
+        self.setval("identity", self.getval("name"))
+        self.setval("typeName", n)
+        self.setval("typeSize", name[1])
+
+class RouterAddresses(Multiple):
+    def __init__(self, node, nodes):
+        super(RouterAddresses, self).__init__()
+
+        addresses = {}
+        others = []
+        for n in nodes:
+            if n['nodeType'] == 'inter-router':
+                if n['name'] != node['name']:
+                    self.results.append(RouterAddress("R"+n['name'], [n['name']], "closest", 0).vals())
+                    others.append(n['name'])
+            else:
+                for normal in n['normals']:
+                    nname = '.'.join(normal['name'].split('.')[:-1])
+                    if "console_identifier" not in node['properties']:
+                        maddr = "M0" + normal['addr']
+                        if maddr not in addresses:
+                            addresses[maddr] = []
+                        if nname != node['name']:
+                            if nname not in addresses[maddr]:
+                                addresses[maddr].append(nname)
+
+        for address in addresses:
+            self.results.append(RouterAddress(address, addresses[address], "balanced", 0).vals())
+
+        self.results.append(RouterAddress("L_$management_internal", [], "closest", 1).vals())
+        self.results.append(RouterAddress("M0$management", [], "closest", 1).vals())
+        self.results.append(RouterAddress("L$management", [], "closest", 1).vals())
+        self.results.append(RouterAddress("L$qdhello", [], "flood", 1).vals())
+        self.results.append(RouterAddress("L$qdrouter", [], "flood", 1).vals())
+        self.results.append(RouterAddress("L$qdrouter.ma", [], "multicast", 1).vals())
+        self.results.append(RouterAddress("Tqdrouter", others, "flood", 1).vals())
+        self.results.append(RouterAddress("Tqdrouter.ma", others, "multicast", 1).vals())
+
+class RouterAddress(Entity):
+    def __init__(self, name, rhrList, distribution, inProcess):
+        super(RouterAddress, self).__init__("router.address")
+        self.init(name, rhrList, distribution, inProcess)
+
+    def init(self, name, rhrList, distribution, inProcess):
+        self.setZero(["subscriberCount", "deliveriesEgress", "deliveriesIngress",
+                      "deliveriesFromContainer", "deliveriesTransit", "containerCount",
+                      "trackedDeliveries", "deliveriesToContainer"])
+        self.setval("name", name)
+        self.setval("key", self.getval("name"))
+        self.setval("distribution", distribution)
+        self.setval("identity", self.getval("name"))
+        self.setval("remoteHostRouters", rhrList)
+        self.setval("remoteCount", len(rhrList))
+        self.setval("inProcess", inProcess)
+
+class Address(Entity):
+    def __init__(self):
+        super(Address, self).__init__("address")
+        self.init()
+
+    def init(self):
+        self.setval("egressPhase", 0)
+        self.setval("ingressPhase", 0)
+        self.setval("prefix", "closest")
+        self.setval("waypoint", False)
+        self.setval("distribution", "closest")
+        self.setval("identity", 1)
+        self.setval("name", "address/" + str(self.getval("identity")))
+
+class Router(Entity):
+    def __init__(self, node):
+        super(Router, self).__init__("router")
+        self.init(node)
+
+    def init(self, node):
+        self.setval("mobileAddrMaxAge", 60)
+        self.setval("raIntervalFlux", 4)
+        self.setval("workerThreads", 4)
+        self.setval("name", "router/" + node['name'])
+        self.setval("helloInterval", 1)
+        self.setval("area", 0)
+        self.setval("helloMaxAge", 3)
+        self.setval("remoteLsMaxAge", 60)
+        self.setval("addrCount", 0)
+        self.setval("raInterval", 30)
+        self.setval("mode", "interior")
+        self.setval("nodeCount", 0)
+        self.setval("saslConfigName", "qdrouterd")
+        self.setval("linkCount", 0)
+        self.setval("id", node['name'])
+        self.setval("identity", "router/" + node['name'])
+
+class Listener(Entity):
+    def __init__(self, port):
+        super(Listener, self).__init__("listener")
+        self.init(port)
+
+    def init(self, port):
+        self.setval("stripAnnotations", "both")
+        self.setval("requireSsl", False)
+        self.setval("idleTimeoutSeconds", 16)
+        self.setval("cost", 1)
+        self.setval("port", str(port))
+        self.setval("addr", "0.0.0.0")
+        self.setval("saslMechanisms", "ANONYMOUS")
+        self.setval("requireEncryption", False)
+        self.setval("linkCapacity", 4)
+        self.setval("role", "normal")
+        self.setval("authenticatePeer", False)
+        self.setval("host", "::")
+        self.setval("identity", "listener/:::" + str(port))
+        self.setval("name", self.getval("identity"))
+        self.setval("maxFrameSize", 16384)
+
+class Connection(Entity):
+    def __init__(self, node, id):
+        super(Connection, self).__init__("connection")
+        self.init(node, id)
+
+    def init(self, node, id):
+        if "container" not in node:
+            self.setval("container", str(generate_uuid()))
+        else:
+            self.setval("container", node["container"])
+        self.setval("opened", True)
+        self.setval("name", "connection/0.0.0.0:" + str(id))
+        self.setval("properties", node["properties"])
+        self.setval("ssl", False)
+        if "host" in node:
+            self.setval("host", node["host"])
+        else:
+            self.setval("host", "0.0.0.0:20000")
+        if "isEncrypted" not in node:
+            self.setval("isEncrypted", False)
+        else:
+            self.setval("isEncrypted", node["isEncrypted"])
+        if "user" not in node:
+            self.setval("user", "anonymous")
+        else:
+            self.setval("user", node["user"])
+        self.setval("role", node["nodeType"])
+        self.setval("isAuthenticated", False)
+        self.setval("identity", id)
+        self.setval("dir", node["cdir"])
+
+class RouterLink(Entity):
+    def __init__(self, node, identity, ldir, owningAddr, linkType, connId):
+        super(RouterLink, self).__init__("router.link")
+        self.init(node, identity, ldir, owningAddr, linkType, connId)
+
+    def init(self, node, identity, ldir, owningAddr, linkType, connId):
+        linkUuid = str(generate_uuid())
+        self.setval("name", linkUuid)
+        self.setval("identity", identity)
+        self.setval("linkName", linkUuid)
+        self.setval("linkType", linkType)
+        self.setval("linkDir", ldir)
+        self.setval("owningAddr", owningAddr)
+        self.setval("capacity", 250)
+        self.setZero(["undeliveredCount", "unsettledCount", "deliveryCount", "presettledCount", "acceptedCount",
+                      "rejectedCount", "releasedCount", "modifiedCount"])
+        self.setval("connectionId", connId)
+        self.setval("adminStatus", "enabled")
+        self.setval("operStatus", "up")
+
+Schema.init()
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/c24cddee/console/test/mock/nexthop.py
----------------------------------------------------------------------
diff --git a/console/test/mock/nexthop.py b/console/test/mock/nexthop.py
new file mode 100644
index 0000000..ab0c01a
--- /dev/null
+++ b/console/test/mock/nexthop.py
@@ -0,0 +1,145 @@
+#!/usr/bin/env python
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# 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
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+import collections
+
+class TreeNode(object):
+    def __init__(self, f, parent):
+        self.name = f
+        self.parent = parent
+        self.children = []
+        self.visited = False
+
+    def procreate(self, links):
+        if self.visited:
+            return
+        self.visited = True
+        for link in links:
+            if link['source']['nodeType'] == 'inter-router' and link['target']['nodeType'] == 'inter-router':
+                if (link['source']['name'] == self.name or link['target']['name'] == self.name):
+                    name = link['source']['name'] if link['target']['name'] == self.name else link['target']['name']
+                    if not name in self.ancestors():
+                        self.children.append(TreeNode(name, self))
+
+    def ancestors(self):
+        a = self.geneology(self.parent)
+        a.reverse()
+        return a
+
+    def geneology(self, parent):
+        if parent is None:
+            return []
+        ret = [parent.name]
+        ret.extend(self.geneology(parent.parent))
+        return ret
+
+class Hopper(object):
+    def __init__(self, verbose):
+        self.tree = {}
+        self.table = {}
+        self.verbose = verbose
+
+    def get(self, f, t, links):
+        if self.verbose:
+            print ("------- asked to get " + f + " to " + t)
+        if f in self.table and t in self.table[f]:
+            if self.verbose:
+                print " ------- returning existing " + str(self.table[f][t])
+            return self.table[f][t]
+
+        self.tree = {}
+        #treef = self.highest(f)
+        #if treef is None:
+        treef = self.root(f)
+
+        q = collections.deque([treef])
+        while len(q):
+            node = q.popleft()
+            self.process(f, node, treef.name, links)
+            if f in self.table and t in self.table[f]:
+                if self.verbose:
+                    print " ------- returning " + str(self.table[f][t])
+                ret = self.table[f][t]
+                self.table = {}
+                return ret
+            for n in node.children:
+                q.append(n)
+        if self.verbose:
+            print (" ------- returning unfound nextHop of None")
+
+    def process(self, f, node, r, links):
+        node.procreate(links)
+        for n in node.children:
+            self.populateTable(f, n, r)
+
+    def populateTable(self, f, node, r):
+        n = node.name
+        if not f in self.table:
+            self.table[f] = {}
+            self.table[f][f] = None
+        if not n in self.table:
+            self.table[n] = {}
+            self.table[n][n] = None
+        if not node.parent:
+            return
+        if node.parent.name == f:
+            self.table[f][n] = None
+            self.table[n][f] = None
+        else:
+            def setHop(n, a, p):
+                if not a in self.table[n]:
+                    self.table[n][a] = p
+
+            def loop(ancestors):
+                for i in range(1): #range(len(ancestors)):
+                    start = ancestors[i]
+                    for j in range(i+1, len(ancestors)):
+                        stop = ancestors[j]
+                        if j-i == 1:
+                            setHop(start, stop, None)
+                        else:
+                            setHop(start, stop, ancestors[i+1])
+
+
+            ancestors = node.ancestors()
+            while len(ancestors) > 0 and ancestors[0] != r:
+                ancestors.pop(0)
+            ancestors.append(n)
+            loop(ancestors)
+            ancestors.reverse()
+            loop(ancestors)
+
+    def root(self, f):
+        if not self.tree:
+            self.tree[f] = TreeNode(f, None)
+        return self.tree[list(self.tree.keys())[0]]
+
+    def highest(self, f):
+        r = self.root(f)
+        if r.name == f:
+            return r
+        q = collections.deque([r])
+        while len(q):
+            node = q.popleft()
+            for n in node.children:
+                if n.name == f:
+                    return n
+                q.append(n)
+        return None

http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/c24cddee/console/test/topologies/config-1/R.0.json
----------------------------------------------------------------------
diff --git a/console/test/topologies/config-1/R.0.json b/console/test/topologies/config-1/R.0.json
new file mode 100644
index 0000000..53467c8
--- /dev/null
+++ b/console/test/topologies/config-1/R.0.json
@@ -0,0 +1,1725 @@
+{
+  ".allocator": {
+    "attributeNames": [
+      "heldByThreads", 
+      "localFreeListMax", 
+      "transferBatchSize", 
+      "globalFreeListMax", 
+      "batchesRebalancedToGlobal", 
+      "typeName", 
+      "batchesRebalancedToThreads", 
+      "totalFreeToHeap", 
+      "totalAllocFromHeap", 
+      "typeSize", 
+      "identity", 
+      "name", 
+      "type"
+    ], 
+    "results": [
+      [
+        0, 
+        0, 
+        0, 
+        0, 
+        0, 
+        "qdqd_bitmask_t", 
+        0, 
+        0, 
+        0, 
+        24, 
+        "allocator/qdqd_bitmask_t", 
+        "allocator/qdqd_bitmask_t", 
+        "org.apache.qpid.dispatch.allocator"
+      ], 
+      [
+        0, 
+        0, 
+        0, 
+        0, 
+        0, 
+        "qd_buffer_t", 
+        0, 
+        0, 
+        0, 
+        536, 
+        "allocator/qd_buffer_t", 
+        "allocator/qd_buffer_t", 
+        "org.apache.qpid.dispatch.allocator"
+      ], 
+      [
+        0, 
+        0, 
+        0, 
+        0, 
+        0, 
+        "qd_composed_field_t", 
+        0, 
+        0, 
+        0, 
+        64, 
+        "allocator/qd_composed_field_t", 
+        "allocator/qd_composed_field_t", 
+        "org.apache.qpid.dispatch.allocator"
+      ], 
+      [
+        0, 
+        0, 
+        0, 
+        0, 
+        0, 
+        "qd_composite_t", 
+        0, 
+        0, 
+        0, 
+        112, 
+        "allocator/qd_composite_t", 
+        "allocator/qd_composite_t", 
+        "org.apache.qpid.dispatch.allocator"
+      ], 
+      [
+        0, 
+        0, 
+        0, 
+        0, 
+        0, 
+        "qd_connection_t", 
+        0, 
+        0, 
+        0, 
+        232, 
+        "allocator/qd_connection_t", 
+        "allocator/qd_connection_t", 
+        "org.apache.qpid.dispatch.allocator"
+      ], 
+      [
+        0, 
+        0, 
+        0, 
+        0, 
+        0, 
+        "qd_connector_t", 
+        0, 
+        0, 
+        0, 
+        56, 
+        "allocator/qd_connector_t", 
+        "allocator/qd_connector_t", 
+        "org.apache.qpid.dispatch.allocator"
+      ], 
+      [
+        0, 
+        0, 
+        0, 
+        0, 
+        0, 
+        "qd_deferred_call_t", 
+        0, 
+        0, 
+        0, 
+        32, 
+        "allocator/qd_deferred_call_t", 
+        "allocator/qd_deferred_call_t", 
+        "org.apache.qpid.dispatch.allocator"
+      ], 
+      [
+        0, 
+        0, 
+        0, 
+        0, 
+        0, 
+        "qd_field_iterator_t", 
+        0, 
+        0, 
+        0, 
+        128, 
+        "allocator/qd_field_iterator_t", 
+        "allocator/qd_field_iterator_t", 
+        "org.apache.qpid.dispatch.allocator"
+      ], 
+      [
+        0, 
+        0, 
+        0, 
+        0, 
+        0, 
+        "qd_hash_handle_t", 
+        0, 
+        0, 
+        0, 
+        16, 
+        "allocator/qd_hash_handle_t", 
+        "allocator/qd_hash_handle_t", 
+        "org.apache.qpid.dispatch.allocator"
+      ], 
+      [
+        0, 
+        0, 
+        0, 
+        0, 
+        0, 
+        "qd_hash_item_t", 
+        0, 
+        0, 
+        0, 
+        32, 
+        "allocator/qd_hash_item_t", 
+        "allocator/qd_hash_item_t", 
+        "org.apache.qpid.dispatch.allocator"
+      ], 
+      [
+        0, 
+        0, 
+        0, 
+        0, 
+        0, 
+        "qd_hash_segment_t", 
+        0, 
+        0, 
+        0, 
+        24, 
+        "allocator/qd_hash_segment_t", 
+        "allocator/qd_hash_segment_t", 
+        "org.apache.qpid.dispatch.allocator"
+      ], 
+      [
+        0, 
+        0, 
+        0, 
+        0, 
+        0, 
+        "qd_link_t", 
+        0, 
+        0, 
+        0, 
+        48, 
+        "allocator/qd_link_t", 
+        "allocator/qd_link_t", 
+        "org.apache.qpid.dispatch.allocator"
+      ], 
+      [
+        0, 
+        0, 
+        0, 
+        0, 
+        0, 
+        "qd_listener_t", 
+        0, 
+        0, 
+        0, 
+        32, 
+        "allocator/qd_listener_t", 
+        "allocator/qd_listener_t", 
+        "org.apache.qpid.dispatch.allocator"
+      ], 
+      [
+        0, 
+        0, 
+        0, 
+        0, 
+        0, 
+        "qd_log_entry_t", 
+        0, 
+        0, 
+        0, 
+        2104, 
+        "allocator/qd_log_entry_t", 
+        "allocator/qd_log_entry_t", 
+        "org.apache.qpid.dispatch.allocator"
+      ], 
+      [
+        0, 
+        0, 
+        0, 
+        0, 
+        0, 
+        "qd_management_context_t", 
+        0, 
+        0, 
+        0, 
+        56, 
+        "allocator/qd_management_context_t", 
+        "allocator/qd_management_context_t", 
+        "org.apache.qpid.dispatch.allocator"
+      ], 
+      [
+        0, 
+        0, 
+        0, 
+        0, 
+        0, 
+        "qd_message_context_t", 
+        0, 
+        0, 
+        0, 
+        640, 
+        "allocator/qd_message_context_t", 
+        "allocator/qd_message_context_t", 
+        "org.apache.qpid.dispatch.allocator"
+      ], 
+      [
+        0, 
+        0, 
+        0, 
+        0, 
+        0, 
+        "qd_message_t", 
+        0, 
+        0, 
+        0, 
+        128, 
+        "allocator/qd_message_t", 
+        "allocator/qd_message_t", 
+        "org.apache.qpid.dispatch.allocator"
+      ], 
+      [
+        0, 
+        0, 
+        0, 
+        0, 
+        0, 
+        "qd_node_t", 
+        0, 
+        0, 
+        0, 
+        56, 
+        "allocator/qd_node_t", 
+        "allocator/qd_node_t", 
+        "org.apache.qpid.dispatch.allocator"
+      ], 
+      [
+        0, 
+        0, 
+        0, 
+        0, 
+        0, 
+        "qd_parsed_field_t", 
+        0, 
+        0, 
+        0, 
+        88, 
+        "allocator/qd_parsed_field_t", 
+        "allocator/qd_parsed_field_t", 
+        "org.apache.qpid.dispatch.allocator"
+      ], 
+      [
+        0, 
+        0, 
+        0, 
+        0, 
+        0, 
+        "qd_timer_t", 
+        0, 
+        0, 
+        0, 
+        56, 
+        "allocator/qd_timer_t", 
+        "allocator/qd_timer_t", 
+        "org.apache.qpid.dispatch.allocator"
+      ], 
+      [
+        0, 
+        0, 
+        0, 
+        0, 
+        0, 
+        "qd_work_item_t", 
+        0, 
+        0, 
+        0, 
+        24, 
+        "allocator/qd_work_item_t", 
+        "allocator/qd_work_item_t", 
+        "org.apache.qpid.dispatch.allocator"
+      ], 
+      [
+        0, 
+        0, 
+        0, 
+        0, 
+        0, 
+        "qdpn_connector_t", 
+        0, 
+        0, 
+        0, 
+        600, 
+        "allocator/qdpn_connector_t", 
+        "allocator/qdpn_connector_t", 
+        "org.apache.qpid.dispatch.allocator"
+      ], 
+      [
+        0, 
+        0, 
+        0, 
+        0, 
+        0, 
+        "qdpn_listener_t", 
+        0, 
+        0, 
+        0, 
+        48, 
+        "allocator/qdpn_listener_t", 
+        "allocator/qdpn_listener_t", 
+        "org.apache.qpid.dispatch.allocator"
+      ], 
+      [
+        0, 
+        0, 
+        0, 
+        0, 
+        0, 
+        "qdr_action_t", 
+        0, 
+        0, 
+        0, 
+        160, 
+        "allocator/qdr_action_t", 
+        "allocator/qdr_action_t", 
+        "org.apache.qpid.dispatch.allocator"
+      ], 
+      [
+        0, 
+        0, 
+        0, 
+        0, 
+        0, 
+        "qdr_address_config_t", 
+        0, 
+        0, 
+        0, 
+        56, 
+        "allocator/qdr_address_config_t", 
+        "allocator/qdr_address_config_t", 
+        "org.apache.qpid.dispatch.allocator"
+      ], 
+      [
+        0, 
+        0, 
+        0, 
+        0, 
+        0, 
+        "qdr_address_t", 
+        0, 
+        0, 
+        0, 
+        264, 
+        "allocator/qdr_address_t", 
+        "allocator/qdr_address_t", 
+        "org.apache.qpid.dispatch.allocator"
+      ], 
+      [
+        0, 
+        0, 
+        0, 
+        0, 
+        0, 
+        "qdr_connection_t", 
+        0, 
+        0, 
+        0, 
+        232, 
+        "allocator/qdr_connection_t", 
+        "allocator/qdr_connection_t", 
+        "org.apache.qpid.dispatch.allocator"
+      ], 
+      [
+        0, 
+        0, 
+        0, 
+        0, 
+        0, 
+        "qdr_connection_work_t", 
+        0, 
+        0, 
+        0, 
+        56, 
+        "allocator/qdr_connection_work_t", 
+        "allocator/qdr_connection_work_t", 
+        "org.apache.qpid.dispatch.allocator"
+      ], 
+      [
+        0, 
+        0, 
+        0, 
+        0, 
+        0, 
+        "qdr_delivery_ref_t", 
+        0, 
+        0, 
+        0, 
+        24, 
+        "allocator/qdr_delivery_ref_t", 
+        "allocator/qdr_delivery_ref_t", 
+        "org.apache.qpid.dispatch.allocator"
+      ], 
+      [
+        0, 
+        0, 
+        0, 
+        0, 
+        0, 
+        "qdr_delivery_t", 
+        0, 
+        0, 
+        0, 
+        144, 
+        "allocator/qdr_delivery_t", 
+        "allocator/qdr_delivery_t", 
+        "org.apache.qpid.dispatch.allocator"
+      ], 
+      [
+        0, 
+        0, 
+        0, 
+        0, 
+        0, 
+        "qdr_field_t", 
+        0, 
+        0, 
+        0, 
+        40, 
+        "allocator/qdr_field_t", 
+        "allocator/qdr_field_t", 
+        "org.apache.qpid.dispatch.allocator"
+      ], 
+      [
+        0, 
+        0, 
+        0, 
+        0, 
+        0, 
+        "qdr_general_work_t", 
+        0, 
+        0, 
+        0, 
+        64, 
+        "allocator/qdr_general_work_t", 
+        "allocator/qdr_general_work_t", 
+        "org.apache.qpid.dispatch.allocator"
+      ], 
+      [
+        0, 
+        0, 
+        0, 
+        0, 
+        0, 
+        "qdr_link_ref_t", 
+        0, 
+        0, 
+        0, 
+        24, 
+        "allocator/qdr_link_ref_t", 
+        "allocator/qdr_link_ref_t", 
+        "org.apache.qpid.dispatch.allocator"
+      ], 
+      [
+        0, 
+        0, 
+        0, 
+        0, 
+        0, 
+        "qdr_link_t", 
+        0, 
+        0, 
+        0, 
+        304, 
+        "allocator/qdr_link_t", 
+        "allocator/qdr_link_t", 
+        "org.apache.qpid.dispatch.allocator"
+      ], 
+      [
+        0, 
+        0, 
+        0, 
+        0, 
+        0, 
+        "qdr_node_t", 
+        0, 
+        0, 
+        0, 
+        64, 
+        "allocator/qdr_node_t", 
+        "allocator/qdr_node_t", 
+        "org.apache.qpid.dispatch.allocator"
+      ], 
+      [
+        0, 
+        0, 
+        0, 
+        0, 
+        0, 
+        "qdr_query_t", 
+        0, 
+        0, 
+        0, 
+        336, 
+        "allocator/qdr_query_t", 
+        "allocator/qdr_query_t", 
+        "org.apache.qpid.dispatch.allocator"
+      ], 
+      [
+        0, 
+        0, 
+        0, 
+        0, 
+        0, 
+        "qdr_terminus_t", 
+        0, 
+        0, 
+        0, 
+        64, 
+        "allocator/qdr_terminus_t", 
+        "allocator/qdr_terminus_t", 
+        "org.apache.qpid.dispatch.allocator"
+      ], 
+      [
+        0, 
+        0, 
+        0, 
+        0, 
+        0, 
+        "qdtm_router_t", 
+        0, 
+        0, 
+        0, 
+        16, 
+        "allocator/qdtm_router_t", 
+        "allocator/qdtm_router_t", 
+        "org.apache.qpid.dispatch.allocator"
+      ]
+    ]
+  }, 
+  ".autoLink": {
+    "attributeNames": [
+      "addr", 
+      "linkRef", 
+      "containerId", 
+      "operStatus", 
+      "connection", 
+      "dir", 
+      "phase", 
+      "lastError", 
+      "externalAddr", 
+      "identity", 
+      "name", 
+      "type"
+    ], 
+    "results": []
+  }, 
+  ".connection": {
+    "attributeNames": [
+      "container", 
+      "opened", 
+      "sslCipher", 
+      "user", 
+      "sslProto", 
+      "dir", 
+      "ssl", 
+      "host", 
+      "isEncrypted", 
+      "role", 
+      "identity", 
+      "sasl", 
+      "sslSsf", 
+      "properties", 
+      "isAuthenticated", 
+      "name", 
+      "type"
+    ], 
+    "results": [
+      [
+        "b9053259-30b3-4c3f-b080-74e529da07a3", 
+        true, 
+        null, 
+        "anonymous", 
+        null, 
+        "both", 
+        false, 
+        "0.0.0.0:20002", 
+        false, 
+        "normal", 
+        1, 
+        null, 
+        null, 
+        {
+          "console_identifier": "Dispatch console"
+        }, 
+        false, 
+        "connection/0.0.0.0:1", 
+        "org.apache.qpid.dispatch.connection"
+      ], 
+      [
+        "efe7ddf0-fc6d-49cb-8a17-ca571e12fe98", 
+        true, 
+        null, 
+        "anonymous", 
+        null, 
+        "both", 
+        false, 
+        "0.0.0.0:20002", 
+        false, 
+        "normal", 
+        2, 
+        null, 
+        null, 
+        {
+          "console_identifier": "Dispatch console"
+        }, 
+        false, 
+        "connection/0.0.0.0:2", 
+        "org.apache.qpid.dispatch.connection"
+      ], 
+      [
+        "fdc6626f-7e1d-465f-99cf-8b02842faf6c", 
+        true, 
+        null, 
+        "anonymous", 
+        null, 
+        "out", 
+        false, 
+        "0.0.0.0:20004", 
+        false, 
+        "normal", 
+        3, 
+        null, 
+        null, 
+        {}, 
+        false, 
+        "connection/0.0.0.0:3", 
+        "org.apache.qpid.dispatch.connection"
+      ], 
+      [
+        "9b24bcaa-1e6c-4498-99cd-a123865744ee", 
+        true, 
+        null, 
+        "anonymous", 
+        null, 
+        "out", 
+        false, 
+        "0.0.0.0:20004", 
+        false, 
+        "normal", 
+        4, 
+        null, 
+        null, 
+        {}, 
+        false, 
+        "connection/0.0.0.0:4", 
+        "org.apache.qpid.dispatch.connection"
+      ], 
+      [
+        "faf3c05e-c1eb-4ce8-af30-d034273d3e9d", 
+        true, 
+        null, 
+        "anonymous", 
+        null, 
+        "out", 
+        false, 
+        "0.0.0.0:20004", 
+        false, 
+        "normal", 
+        5, 
+        null, 
+        null, 
+        {}, 
+        false, 
+        "connection/0.0.0.0:5", 
+        "org.apache.qpid.dispatch.connection"
+      ], 
+      [
+        "aaf5a8ec-3e6c-4289-9204-7178a539d37f", 
+        true, 
+        null, 
+        "anonymous", 
+        null, 
+        "in", 
+        false, 
+        "0.0.0.0:20005", 
+        false, 
+        "normal", 
+        6, 
+        null, 
+        null, 
+        {}, 
+        false, 
+        "connection/0.0.0.0:6", 
+        "org.apache.qpid.dispatch.connection"
+      ], 
+      [
+        "1aa7d699-650c-423a-a31a-c25dc2794931", 
+        true, 
+        null, 
+        "anonymous", 
+        null, 
+        "in", 
+        false, 
+        "0.0.0.0:20005", 
+        false, 
+        "normal", 
+        7, 
+        null, 
+        null, 
+        {}, 
+        false, 
+        "connection/0.0.0.0:7", 
+        "org.apache.qpid.dispatch.connection"
+      ], 
+      [
+        "3a948171-9075-42fd-941c-71998faa6106", 
+        true, 
+        null, 
+        "anonymous", 
+        null, 
+        "both", 
+        false, 
+        "0.0.0.0:20006", 
+        false, 
+        "normal", 
+        8, 
+        null, 
+        null, 
+        {}, 
+        false, 
+        "connection/0.0.0.0:8", 
+        "org.apache.qpid.dispatch.connection"
+      ]
+    ]
+  }, 
+  ".connector": {
+    "attributeNames": [
+      "maxSessionFrames", 
+      "verifyHostName", 
+      "stripAnnotations", 
+      "addr", 
+      "saslUsername", 
+      "allowRedirect", 
+      "idleTimeoutSeconds", 
+      "saslMechanisms", 
+      "maxFrameSize", 
+      "port", 
+      "linkCapacity", 
+      "host", 
+      "cost", 
+      "role", 
+      "saslPassword", 
+      "sslProfile", 
+      "maxSessions", 
+      "protocolFamily", 
+      "identity", 
+      "name", 
+      "type"
+    ], 
+    "results": [
+      [
+        100, 
+        true, 
+        "both", 
+        "127.0.0.1", 
+        null, 
+        true, 
+        16, 
+        "AMONYMOUS", 
+        16384, 
+        "20004", 
+        null, 
+        "0.0.0.0", 
+        1, 
+        "inter-router", 
+        null, 
+        null, 
+        32768, 
+        null, 
+        "connector/0.0.0.0:20004", 
+        "connector/0.0.0.0:20004", 
+        "org.apache.qpid.dispatch.connector"
+      ], 
+      [
+        100, 
+        true, 
+        "both", 
+        "127.0.0.1", 
+        null, 
+        true, 
+        16, 
+        "AMONYMOUS", 
+        16384, 
+        "20004", 
+        null, 
+        "0.0.0.0", 
+        1, 
+        "inter-router", 
+        null, 
+        null, 
+        32768, 
+        null, 
+        "connector/0.0.0.0:20004", 
+        "connector/0.0.0.0:20004", 
+        "org.apache.qpid.dispatch.connector"
+      ], 
+      [
+        100, 
+        true, 
+        "both", 
+        "127.0.0.1", 
+        null, 
+        true, 
+        16, 
+        "AMONYMOUS", 
+        16384, 
+        "20004", 
+        null, 
+        "0.0.0.0", 
+        1, 
+        "inter-router", 
+        null, 
+        null, 
+        32768, 
+        null, 
+        "connector/0.0.0.0:20004", 
+        "connector/0.0.0.0:20004", 
+        "org.apache.qpid.dispatch.connector"
+      ]
+    ]
+  }, 
+  ".linkRoute": {
+    "attributeNames": [
+      "containerId", 
+      "operStatus", 
+      "prefix", 
+      "connection", 
+      "dir", 
+      "distribution", 
+      "identity", 
+      "name", 
+      "type"
+    ], 
+    "results": []
+  }, 
+  ".listener": {
+    "attributeNames": [
+      "stripAnnotations", 
+      "requireSsl", 
+      "idleTimeoutSeconds", 
+      "trustedCerts", 
+      "maxSessionFrames", 
+      "cost", 
+      "port", 
+      "allowNoSasl", 
+      "addr", 
+      "saslMechanisms", 
+      "requireEncryption", 
+      "linkCapacity", 
+      "requirePeerAuth", 
+      "allowUnsecured", 
+      "maxSessions", 
+      "authenticatePeer", 
+      "host", 
+      "role", 
+      "protocolFamily", 
+      "identity", 
+      "name", 
+      "maxFrameSize", 
+      "sslProfile", 
+      "type"
+    ], 
+    "results": [
+      [
+        "both", 
+        false, 
+        16, 
+        null, 
+        null, 
+        1, 
+        "20001", 
+        null, 
+        "0.0.0.0", 
+        "ANONYMOUS", 
+        false, 
+        4, 
+        null, 
+        null, 
+        null, 
+        false, 
+        "::", 
+        "normal", 
+        null, 
+        "listener/:::20001", 
+        "listener/:::20001", 
+        16384, 
+        null, 
+        "org.apache.qpid.dispatch.listener"
+      ]
+    ]
+  }, 
+  ".log": {
+    "attributeNames": [
+      "enable", 
+      "name", 
+      "timestamp", 
+      "module", 
+      "source", 
+      "output", 
+      "identity", 
+      "type"
+    ], 
+    "results": [
+      [
+        null, 
+        "log/AGENT", 
+        null, 
+        "AGENT", 
+        null, 
+        null, 
+        "log/AGENT", 
+        "org.apache.qpid.dispatch.log"
+      ], 
+      [
+        null, 
+        "log/CONTAINER", 
+        null, 
+        "CONTAINER", 
+        null, 
+        null, 
+        "log/CONTAINER", 
+        "org.apache.qpid.dispatch.log"
+      ], 
+      [
+        null, 
+        "log/DEFAULT", 
+        null, 
+        "DEFAULT", 
+        null, 
+        null, 
+        "log/DEFAULT", 
+        "org.apache.qpid.dispatch.log"
+      ], 
+      [
+        null, 
+        "log/ERROR", 
+        null, 
+        "ERROR", 
+        null, 
+        null, 
+        "log/ERROR", 
+        "org.apache.qpid.dispatch.log"
+      ], 
+      [
+        null, 
+        "log/MESSAGE", 
+        null, 
+        "MESSAGE", 
+        null, 
+        null, 
+        "log/MESSAGE", 
+        "org.apache.qpid.dispatch.log"
+      ], 
+      [
+        null, 
+        "log/POLICY", 
+        null, 
+        "POLICY", 
+        null, 
+        null, 
+        "log/POLICY", 
+        "org.apache.qpid.dispatch.log"
+      ], 
+      [
+        null, 
+        "log/ROUTER", 
+        null, 
+        "ROUTER", 
+        null, 
+        null, 
+        "log/ROUTER", 
+        "org.apache.qpid.dispatch.log"
+      ], 
+      [
+        null, 
+        "log/ROUTER_CORE", 
+        null, 
+        "ROUTER_CORE", 
+        null, 
+        null, 
+        "log/ROUTER_CORE", 
+        "org.apache.qpid.dispatch.log"
+      ], 
+      [
+        null, 
+        "log/ROUTER_HELLO", 
+        null, 
+        "ROUTER_HELLO", 
+        null, 
+        null, 
+        "log/ROUTER_HELLO", 
+        "org.apache.qpid.dispatch.log"
+      ], 
+      [
+        null, 
+        "log/ROUTER_LS", 
+        null, 
+        "ROUTER_LS", 
+        null, 
+        null, 
+        "log/ROUTER_LS", 
+        "org.apache.qpid.dispatch.log"
+      ], 
+      [
+        null, 
+        "log/ROUTER_MA", 
+        null, 
+        "ROUTER_MA", 
+        null, 
+        null, 
+        "log/ROUTER_MA", 
+        "org.apache.qpid.dispatch.log"
+      ], 
+      [
+        null, 
+        "log/SERVER", 
+        null, 
+        "SERVER", 
+        null, 
+        null, 
+        "log/SERVER", 
+        "org.apache.qpid.dispatch.log"
+      ]
+    ]
+  }, 
+  ".policy": {
+    "attributeNames": [
+      "connectionsProcessed", 
+      "policyDir", 
+      "defaultVhost", 
+      "connectionsDenied", 
+      "enableVhostPolicy", 
+      "maxConnections", 
+      "connectionsCurrent", 
+      "identity", 
+      "name", 
+      "type"
+    ], 
+    "results": [
+      [
+        2, 
+        null, 
+        "$default", 
+        0, 
+        false, 
+        65535, 
+        2, 
+        1, 
+        "policy/1", 
+        "org.apache.qpid.dispatch.policy"
+      ]
+    ]
+  }, 
+  ".router": {
+    "attributeNames": [
+      "identity", 
+      "debugDump", 
+      "raIntervalFlux", 
+      "workerThreads", 
+      "name", 
+      "helloInterval", 
+      "area", 
+      "helloMaxAge", 
+      "saslConfigPath", 
+      "remoteLsMaxAge", 
+      "addrCount", 
+      "routerId", 
+      "raInterval", 
+      "mode", 
+      "nodeCount", 
+      "saslConfigName", 
+      "mobileAddrMaxAge", 
+      "id", 
+      "linkCount", 
+      "type"
+    ], 
+    "results": [
+      [
+        "router/R.0", 
+        null, 
+        4, 
+        4, 
+        "router/R.0", 
+        1, 
+        0, 
+        3, 
+        null, 
+        60, 
+        0, 
+        null, 
+        30, 
+        "interior", 
+        0, 
+        "qdrouterd", 
+        60, 
+        "R.0", 
+        0, 
+        "org.apache.qpid.dispatch.router"
+      ]
+    ]
+  }, 
+  ".router.address": {
+    "attributeNames": [
+      "subscriberCount", 
+      "deliveriesEgress", 
+      "name", 
+      "deliveriesIngress", 
+      "transitOutstanding", 
+      "remoteCount", 
+      "inProcess", 
+      "deliveriesFromContainer", 
+      "deliveriesTransit", 
+      "containerCount", 
+      "key", 
+      "distribution", 
+      "trackedDeliveries", 
+      "deliveriesToContainer", 
+      "identity", 
+      "remoteHostRouters", 
+      "type"
+    ], 
+    "results": [
+      [
+        0, 
+        0, 
+        "M0addr1", 
+        0, 
+        null, 
+        0, 
+        0, 
+        0, 
+        0, 
+        0, 
+        "M0addr1", 
+        "balanced", 
+        0, 
+        0, 
+        "M0addr1", 
+        [], 
+        "org.apache.qpid.dispatch.router.address"
+      ], 
+      [
+        0, 
+        0, 
+        "L_$management_internal", 
+        0, 
+        null, 
+        0, 
+        1, 
+        0, 
+        0, 
+        0, 
+        "L_$management_internal", 
+        "closest", 
+        0, 
+        0, 
+        "L_$management_internal", 
+        [], 
+        "org.apache.qpid.dispatch.router.address"
+      ], 
+      [
+        0, 
+        0, 
+        "M0$management", 
+        0, 
+        null, 
+        0, 
+        1, 
+        0, 
+        0, 
+        0, 
+        "M0$management", 
+        "closest", 
+        0, 
+        0, 
+        "M0$management", 
+        [], 
+        "org.apache.qpid.dispatch.router.address"
+      ], 
+      [
+        0, 
+        0, 
+        "L$management", 
+        0, 
+        null, 
+        0, 
+        1, 
+        0, 
+        0, 
+        0, 
+        "L$management", 
+        "closest", 
+        0, 
+        0, 
+        "L$management", 
+        [], 
+        "org.apache.qpid.dispatch.router.address"
+      ], 
+      [
+        0, 
+        0, 
+        "L$qdhello", 
+        0, 
+        null, 
+        0, 
+        1, 
+        0, 
+        0, 
+        0, 
+        "L$qdhello", 
+        "flood", 
+        0, 
+        0, 
+        "L$qdhello", 
+        [], 
+        "org.apache.qpid.dispatch.router.address"
+      ], 
+      [
+        0, 
+        0, 
+        "L$qdrouter", 
+        0, 
+        null, 
+        0, 
+        1, 
+        0, 
+        0, 
+        0, 
+        "L$qdrouter", 
+        "flood", 
+        0, 
+        0, 
+        "L$qdrouter", 
+        [], 
+        "org.apache.qpid.dispatch.router.address"
+      ], 
+      [
+        0, 
+        0, 
+        "L$qdrouter.ma", 
+        0, 
+        null, 
+        0, 
+        1, 
+        0, 
+        0, 
+        0, 
+        "L$qdrouter.ma", 
+        "multicast", 
+        0, 
+        0, 
+        "L$qdrouter.ma", 
+        [], 
+        "org.apache.qpid.dispatch.router.address"
+      ], 
+      [
+        0, 
+        0, 
+        "Tqdrouter", 
+        0, 
+        null, 
+        0, 
+        1, 
+        0, 
+        0, 
+        0, 
+        "Tqdrouter", 
+        "flood", 
+        0, 
+        0, 
+        "Tqdrouter", 
+        [], 
+        "org.apache.qpid.dispatch.router.address"
+      ], 
+      [
+        0, 
+        0, 
+        "Tqdrouter.ma", 
+        0, 
+        null, 
+        0, 
+        1, 
+        0, 
+        0, 
+        0, 
+        "Tqdrouter.ma", 
+        "multicast", 
+        0, 
+        0, 
+        "Tqdrouter.ma", 
+        [], 
+        "org.apache.qpid.dispatch.router.address"
+      ]
+    ]
+  }, 
+  ".router.config.address": {
+    "attributeNames": [
+      "egressPhase", 
+      "prefix", 
+      "ingressPhase", 
+      "waypoint", 
+      "distribution", 
+      "identity", 
+      "name", 
+      "type"
+    ], 
+    "results": [
+      [
+        0, 
+        "closest", 
+        0, 
+        false, 
+        "closest", 
+        1, 
+        "address/1", 
+        "org.apache.qpid.dispatch.router.config.address"
+      ]
+    ]
+  }, 
+  ".router.link": {
+    "attributeNames": [
+      "adminStatus", 
+      "linkType", 
+      "releasedCount", 
+      "capacity", 
+      "name", 
+      "operStatus", 
+      "linkDir", 
+      "unsettledCount", 
+      "deliveryCount", 
+      "modifiedCount", 
+      "peer", 
+      "connectionId", 
+      "owningAddr", 
+      "rejectedCount", 
+      "undeliveredCount", 
+      "linkName", 
+      "presettledCount", 
+      "acceptedCount", 
+      "identity", 
+      "type"
+    ], 
+    "results": [
+      [
+        "enabled", 
+        "endpoint", 
+        0, 
+        250, 
+        "ddee54ee-682b-4b3c-87fd-acbd9e489729", 
+        "up", 
+        "out", 
+        0, 
+        0, 
+        0, 
+        null, 
+        1, 
+        "", 
+        0, 
+        0, 
+        "ddee54ee-682b-4b3c-87fd-acbd9e489729", 
+        0, 
+        0, 
+        "0", 
+        "org.apache.qpid.dispatch.router.link"
+      ], 
+      [
+        "enabled", 
+        "endpoint", 
+        0, 
+        250, 
+        "3737620a-c24d-4395-88f9-629fd2177ef1", 
+        "up", 
+        "in", 
+        0, 
+        0, 
+        0, 
+        null, 
+        1, 
+        "Ltemp.XQKAT6M2K3QJ6BQ", 
+        0, 
+        0, 
+        "3737620a-c24d-4395-88f9-629fd2177ef1", 
+        0, 
+        0, 
+        "1", 
+        "org.apache.qpid.dispatch.router.link"
+      ], 
+      [
+        "enabled", 
+        "endpoint", 
+        0, 
+        250, 
+        "e1350823-25b4-4fa5-bbd9-bddbaff0fca1", 
+        "up", 
+        "out", 
+        0, 
+        0, 
+        0, 
+        null, 
+        2, 
+        "", 
+        0, 
+        0, 
+        "e1350823-25b4-4fa5-bbd9-bddbaff0fca1", 
+        0, 
+        0, 
+        "2", 
+        "org.apache.qpid.dispatch.router.link"
+      ], 
+      [
+        "enabled", 
+        "endpoint", 
+        0, 
+        250, 
+        "f26e3692-9136-417f-8b29-c68e62b13f9b", 
+        "up", 
+        "in", 
+        0, 
+        0, 
+        0, 
+        null, 
+        2, 
+        "Ltemp.M2WAWD9DU2D7FLJ", 
+        0, 
+        0, 
+        "f26e3692-9136-417f-8b29-c68e62b13f9b", 
+        0, 
+        0, 
+        "3", 
+        "org.apache.qpid.dispatch.router.link"
+      ], 
+      [
+        "enabled", 
+        "endpoint", 
+        0, 
+        250, 
+        "8762c5ad-902d-4d00-9950-e108f68f47aa", 
+        "up", 
+        "out", 
+        0, 
+        0, 
+        0, 
+        null, 
+        3, 
+        "M0addr1", 
+        0, 
+        0, 
+        "8762c5ad-902d-4d00-9950-e108f68f47aa", 
+        0, 
+        0, 
+        "4", 
+        "org.apache.qpid.dispatch.router.link"
+      ], 
+      [
+        "enabled", 
+        "endpoint", 
+        0, 
+        250, 
+        "adb6a17b-5762-4386-9677-4ca549043e30", 
+        "up", 
+        "out", 
+        0, 
+        0, 
+        0, 
+        null, 
+        4, 
+        "M0addr1", 
+        0, 
+        0, 
+        "adb6a17b-5762-4386-9677-4ca549043e30", 
+        0, 
+        0, 
+        "5", 
+        "org.apache.qpid.dispatch.router.link"
+      ], 
+      [
+        "enabled", 
+        "endpoint", 
+        0, 
+        250, 
+        "258290b4-20a0-4424-b275-de7006523dde", 
+        "up", 
+        "out", 
+        0, 
+        0, 
+        0, 
+        null, 
+        5, 
+        "M0addr1", 
+        0, 
+        0, 
+        "258290b4-20a0-4424-b275-de7006523dde", 
+        0, 
+        0, 
+        "6", 
+        "org.apache.qpid.dispatch.router.link"
+      ], 
+      [
+        "enabled", 
+        "endpoint", 
+        0, 
+        250, 
+        "24d76c37-3d4b-4fc6-8352-26269ec3b41f", 
+        "up", 
+        "in", 
+        0, 
+        0, 
+        0, 
+        null, 
+        6, 
+        "M0addr1", 
+        0, 
+        0, 
+        "24d76c37-3d4b-4fc6-8352-26269ec3b41f", 
+        0, 
+        0, 
+        "7", 
+        "org.apache.qpid.dispatch.router.link"
+      ], 
+      [
+        "enabled", 
+        "endpoint", 
+        0, 
+        250, 
+        "da3123a7-9d70-4284-a2e2-284d6dbb8080", 
+        "up", 
+        "in", 
+        0, 
+        0, 
+        0, 
+        null, 
+        7, 
+        "M0addr1", 
+        0, 
+        0, 
+        "da3123a7-9d70-4284-a2e2-284d6dbb8080", 
+        0, 
+        0, 
+        "8", 
+        "org.apache.qpid.dispatch.router.link"
+      ], 
+      [
+        "enabled", 
+        "endpoint", 
+        0, 
+        250, 
+        "c5a344f5-2f72-422f-89c4-a9b22d4cfd46", 
+        "up", 
+        "out", 
+        0, 
+        0, 
+        0, 
+        null, 
+        8, 
+        "M0addr1", 
+        0, 
+        0, 
+        "c5a344f5-2f72-422f-89c4-a9b22d4cfd46", 
+        0, 
+        0, 
+        "9", 
+        "org.apache.qpid.dispatch.router.link"
+      ], 
+      [
+        "enabled", 
+        "endpoint", 
+        0, 
+        250, 
+        "296a251d-251c-4fac-8589-f423766d9ca3", 
+        "up", 
+        "in", 
+        0, 
+        0, 
+        0, 
+        null, 
+        8, 
+        "M0addr1", 
+        0, 
+        0, 
+        "296a251d-251c-4fac-8589-f423766d9ca3", 
+        0, 
+        0, 
+        "10", 
+        "org.apache.qpid.dispatch.router.link"
+      ]
+    ]
+  }, 
+  ".router.node": {
+    "attributeNames": [
+      "routerLink", 
+      "nextHop", 
+      "name", 
+      "validOrigins", 
+      "linkState", 
+      "instance", 
+      "cost", 
+      "address", 
+      "id", 
+      "identity", 
+      "type"
+    ], 
+    "results": [
+      [
+        null, 
+        "(self)", 
+        "router.node/R.0", 
+        [], 
+        [], 
+        53, 
+        1, 
+        "amqp:/_topo/0/R.0", 
+        "R.0", 
+        "router.node/R.0", 
+        "org.apache.qpid.dispatch.router.node"
+      ]
+    ]
+  }, 
+  ".sslProfile": {
+    "attributeNames": [
+      "certFile", 
+      "displayNameFile", 
+      "uidFormat", 
+      "certDb", 
+      "passwordFile", 
+      "password", 
+      "keyFile", 
+      "identity", 
+      "name", 
+      "type"
+    ], 
+    "results": []
+  }, 
+  ".vhost": {
+    "attributeNames": [
+      "allowUnknownUser", 
+      "maxConnectionsPerUser", 
+      "groups", 
+      "maxConnections", 
+      "maxConnectionsPerHost", 
+      "id", 
+      "identity", 
+      "name", 
+      "type"
+    ], 
+    "results": []
+  }, 
+  ".vhostStats": {
+    "attributeNames": [
+      "name", 
+      "perHostState", 
+      "id", 
+      "perUserState", 
+      "sessionDenied", 
+      "connectionsApproved", 
+      "receiverDenied", 
+      "connectionsCurrent", 
+      "connectionsDenied", 
+      "senderDenied", 
+      "identity", 
+      "type"
+    ], 
+    "results": []
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/c24cddee/console/test/topologies/config-1/nodeslinks.dat
----------------------------------------------------------------------
diff --git a/console/test/topologies/config-1/nodeslinks.dat b/console/test/topologies/config-1/nodeslinks.dat
new file mode 100644
index 0000000..16b3dcd
--- /dev/null
+++ b/console/test/topologies/config-1/nodeslinks.dat
@@ -0,0 +1,398 @@
+{
+  "nodes": [
+    {
+      "index": 0, 
+      "nodeType": "inter-router", 
+      "name": "R.0", 
+      "weight": 4, 
+      "px": 164.29187931882578, 
+      "py": 175.80207806090868, 
+      "resultIndex": null, 
+      "id": 0, 
+      "routerId": "R.0", 
+      "host": "0.0.0.0:20001", 
+      "highlighted": false, 
+      "key": "amqp:/_topo/0/R.0/$management", 
+      "y": 175.8087056018603, 
+      "x": 164.29388840186058, 
+      "fixed": 0, 
+      "properties": {}, 
+      "cls": ""
+    }, 
+    {
+      "weight": 1, 
+      "isEncrypted": false, 
+      "resultIndex": 0, 
+      "id": 1, 
+      "index": 1, 
+      "px": 100.46794372031725, 
+      "py": 223.7253838476624, 
+      "highlighted": false, 
+      "routerId": "R.0", 
+      "cls": "", 
+      "nodeType": "normal", 
+      "connectionId": 1, 
+      "host": "0.0.0.0:20002", 
+      "user": "anonymous", 
+      "key": "amqp:/_topo/0/R.0/$management", 
+      "cdir": "both", 
+      "properties": {
+        "console_identifier": "Dispatch console"
+      }, 
+      "name": "R.0.1", 
+      "normals": [
+        {
+          "name": "R.0.1", 
+          "addr": "addr1"
+        }, 
+        {
+          "name": "R.0.8", 
+          "addr": "addr1"
+        }
+      ], 
+      "y": 223.74204007613326, 
+      "x": 100.45333632665597, 
+      "fixed": 0
+    }, 
+    {
+      "weight": 1, 
+      "isEncrypted": false, 
+      "resultIndex": 0, 
+      "id": 2, 
+      "index": 2, 
+      "px": 243.83192673800565, 
+      "py": 171.34084903772512, 
+      "highlighted": false, 
+      "routerId": "R.0", 
+      "cls": "", 
+      "nodeType": "normal", 
+      "connectionId": 3, 
+      "host": "0.0.0.0:20004", 
+      "user": "anonymous", 
+      "key": "amqp:/_topo/0/R.0/$management", 
+      "cdir": "out", 
+      "properties": {}, 
+      "name": "R.0.4", 
+      "normals": [
+        {
+          "name": "R.0.4", 
+          "addr": "addr1"
+        }, 
+        {
+          "name": "R.0.5", 
+          "addr": "addr1"
+        }, 
+        {
+          "name": "R.0.6", 
+          "addr": "addr1"
+        }
+      ], 
+      "y": 171.34342749529537, 
+      "x": 243.85250914335518, 
+      "fixed": false
+    }, 
+    {
+      "weight": 1, 
+      "isEncrypted": false, 
+      "resultIndex": 0, 
+      "id": 3, 
+      "index": 3, 
+      "px": 102.4586287826755, 
+      "py": 125.00260883166828, 
+      "highlighted": false, 
+      "routerId": "R.0", 
+      "cls": "", 
+      "nodeType": "normal", 
+      "connectionId": 3, 
+      "host": "0.0.0.0:20005", 
+      "user": "anonymous", 
+      "key": "amqp:/_topo/0/R.0/$management", 
+      "cdir": "in", 
+      "properties": {}, 
+      "name": "R.0.3", 
+      "normals": [
+        {
+          "name": "R.0.3", 
+          "addr": "addr1"
+        }, 
+        {
+          "name": "R.0.4", 
+          "addr": "addr1"
+        }
+      ], 
+      "y": 124.99076765235854, 
+      "x": 102.4404612736399, 
+      "fixed": false
+    }, 
+    {
+      "weight": 1, 
+      "isEncrypted": false, 
+      "resultIndex": 0, 
+      "id": 4, 
+      "index": 4, 
+      "px": 183.762386523301, 
+      "py": 98.37984932621536, 
+      "highlighted": false, 
+      "routerId": "R.0", 
+      "cls": "", 
+      "nodeType": "normal", 
+      "connectionId": 4, 
+      "host": "0.0.0.0:20006", 
+      "user": "anonymous", 
+      "key": "amqp:/_topo/0/R.0/$management", 
+      "cdir": "both", 
+      "properties": {}, 
+      "name": "R.0.7", 
+      "normals": [
+        {
+          "name": "R.0.7", 
+          "addr": "addr1"
+        }
+      ], 
+      "y": 98.36087509657327, 
+      "x": 183.77066774374404, 
+      "fixed": false
+    }
+  ], 
+  "links": [
+    {
+      "right": true, 
+      "uid": "0.1", 
+      "highlighted": false, 
+      "source": {
+        "index": 0, 
+        "nodeType": "inter-router", 
+        "name": "R.0", 
+        "weight": 4, 
+        "px": 164.29187931882578, 
+        "py": 175.80207806090868, 
+        "resultIndex": null, 
+        "id": 0, 
+        "routerId": "R.0", 
+        "host": "0.0.0.0:20001", 
+        "highlighted": false, 
+        "key": "amqp:/_topo/0/R.0/$management", 
+        "y": 175.8087056018603, 
+        "x": 164.29388840186058, 
+        "fixed": 0, 
+        "properties": {}, 
+        "cls": ""
+      }, 
+      "left": true, 
+      "cls": "small", 
+      "target": {
+        "weight": 1, 
+        "isEncrypted": false, 
+        "resultIndex": 0, 
+        "id": 1, 
+        "index": 1, 
+        "px": 100.46794372031725, 
+        "py": 223.7253838476624, 
+        "highlighted": false, 
+        "routerId": "R.0", 
+        "cls": "", 
+        "nodeType": "normal", 
+        "connectionId": 1, 
+        "host": "0.0.0.0:20002", 
+        "user": "anonymous", 
+        "key": "amqp:/_topo/0/R.0/$management", 
+        "cdir": "both", 
+        "properties": {
+          "console_identifier": "Dispatch console"
+        }, 
+        "name": "R.0.1", 
+        "normals": [
+          {
+            "name": "R.0.1", 
+            "addr": "addr1"
+          }, 
+          {
+            "name": "R.0.8", 
+            "addr": "addr1"
+          }
+        ], 
+        "y": 223.74204007613326, 
+        "x": 100.45333632665597, 
+        "fixed": 0
+      }
+    }, 
+    {
+      "right": true, 
+      "uid": "0.2", 
+      "highlighted": false, 
+      "source": {
+        "index": 0, 
+        "nodeType": "inter-router", 
+        "name": "R.0", 
+        "weight": 4, 
+        "px": 164.29187931882578, 
+        "py": 175.80207806090868, 
+        "resultIndex": null, 
+        "id": 0, 
+        "routerId": "R.0", 
+        "host": "0.0.0.0:20001", 
+        "highlighted": false, 
+        "key": "amqp:/_topo/0/R.0/$management", 
+        "y": 175.8087056018603, 
+        "x": 164.29388840186058, 
+        "fixed": 0, 
+        "properties": {}, 
+        "cls": ""
+      }, 
+      "left": false, 
+      "cls": "small", 
+      "target": {
+        "weight": 1, 
+        "isEncrypted": false, 
+        "resultIndex": 0, 
+        "id": 2, 
+        "index": 2, 
+        "px": 243.83192673800565, 
+        "py": 171.34084903772512, 
+        "highlighted": false, 
+        "routerId": "R.0", 
+        "cls": "", 
+        "nodeType": "normal", 
+        "connectionId": 3, 
+        "host": "0.0.0.0:20004", 
+        "user": "anonymous", 
+        "key": "amqp:/_topo/0/R.0/$management", 
+        "cdir": "out", 
+        "properties": {}, 
+        "name": "R.0.4", 
+        "normals": [
+          {
+            "name": "R.0.4", 
+            "addr": "addr1"
+          }, 
+          {
+            "name": "R.0.5", 
+            "addr": "addr1"
+          }, 
+          {
+            "name": "R.0.6", 
+            "addr": "addr1"
+          }
+        ], 
+        "y": 171.34342749529537, 
+        "x": 243.85250914335518, 
+        "fixed": false
+      }
+    }, 
+    {
+      "right": false, 
+      "uid": "connection/0.0.0.0:20005:3", 
+      "highlighted": false, 
+      "source": {
+        "index": 0, 
+        "nodeType": "inter-router", 
+        "name": "R.0", 
+        "weight": 4, 
+        "px": 164.29187931882578, 
+        "py": 175.80207806090868, 
+        "resultIndex": null, 
+        "id": 0, 
+        "routerId": "R.0", 
+        "host": "0.0.0.0:20001", 
+        "highlighted": false, 
+        "key": "amqp:/_topo/0/R.0/$management", 
+        "y": 175.8087056018603, 
+        "x": 164.29388840186058, 
+        "fixed": 0, 
+        "properties": {}, 
+        "cls": ""
+      }, 
+      "left": true, 
+      "cls": "small", 
+      "target": {
+        "weight": 1, 
+        "isEncrypted": false, 
+        "resultIndex": 0, 
+        "id": 3, 
+        "index": 3, 
+        "px": 102.4586287826755, 
+        "py": 125.00260883166828, 
+        "highlighted": false, 
+        "routerId": "R.0", 
+        "cls": "", 
+        "nodeType": "normal", 
+        "connectionId": 3, 
+        "host": "0.0.0.0:20005", 
+        "user": "anonymous", 
+        "key": "amqp:/_topo/0/R.0/$management", 
+        "cdir": "in", 
+        "properties": {}, 
+        "name": "R.0.3", 
+        "normals": [
+          {
+            "name": "R.0.3", 
+            "addr": "addr1"
+          }, 
+          {
+            "name": "R.0.4", 
+            "addr": "addr1"
+          }
+        ], 
+        "y": 124.99076765235854, 
+        "x": 102.4404612736399, 
+        "fixed": false
+      }
+    }, 
+    {
+      "right": true, 
+      "uid": "connection/0.0.0.0:20006:4", 
+      "highlighted": false, 
+      "source": {
+        "index": 0, 
+        "nodeType": "inter-router", 
+        "name": "R.0", 
+        "weight": 4, 
+        "px": 164.29187931882578, 
+        "py": 175.80207806090868, 
+        "resultIndex": null, 
+        "id": 0, 
+        "routerId": "R.0", 
+        "host": "0.0.0.0:20001", 
+        "highlighted": false, 
+        "key": "amqp:/_topo/0/R.0/$management", 
+        "y": 175.8087056018603, 
+        "x": 164.29388840186058, 
+        "fixed": 0, 
+        "properties": {}, 
+        "cls": ""
+      }, 
+      "left": true, 
+      "cls": "small", 
+      "target": {
+        "weight": 1, 
+        "isEncrypted": false, 
+        "resultIndex": 0, 
+        "id": 4, 
+        "index": 4, 
+        "px": 183.762386523301, 
+        "py": 98.37984932621536, 
+        "highlighted": false, 
+        "routerId": "R.0", 
+        "cls": "", 
+        "nodeType": "normal", 
+        "connectionId": 4, 
+        "host": "0.0.0.0:20006", 
+        "user": "anonymous", 
+        "key": "amqp:/_topo/0/R.0/$management", 
+        "cdir": "both", 
+        "properties": {}, 
+        "name": "R.0.7", 
+        "normals": [
+          {
+            "name": "R.0.7", 
+            "addr": "addr1"
+          }
+        ], 
+        "y": 98.36087509657327, 
+        "x": 183.77066774374404, 
+        "fixed": false
+      }
+    }
+  ], 
+  "topology": "config-1"
+}
\ No newline at end of file


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