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 2018/10/11 11:54:07 UTC
qpid-dispatch git commit: DISPATCH-1130 Expose link priority
Repository: qpid-dispatch
Updated Branches:
refs/heads/master 5cae5b93d -> 122648a7e
DISPATCH-1130 Expose link priority
Project: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/commit/122648a7
Tree: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/tree/122648a7
Diff: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/diff/122648a7
Branch: refs/heads/master
Commit: 122648a7e83b44247fefd733909e970fbb99cc66
Parents: 5cae5b9
Author: Ernest Allen <ea...@redhat.com>
Authored: Thu Oct 11 07:53:49 2018 -0400
Committer: Ernest Allen <ea...@redhat.com>
Committed: Thu Oct 11 07:53:49 2018 -0400
----------------------------------------------------------------------
python/qpid_dispatch/management/qdrouter.json | 4 ++
src/router_core/agent_link.c | 6 ++
src/router_core/agent_link.h | 2 +-
tests/system_tests_qdstat.py | 65 +++++++++++++++++++++-
tools/qdstat.in | 4 +-
5 files changed, 78 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/122648a7/python/qpid_dispatch/management/qdrouter.json
----------------------------------------------------------------------
diff --git a/python/qpid_dispatch/management/qdrouter.json b/python/qpid_dispatch/management/qdrouter.json
index 4b38092..e31f54c 100644
--- a/python/qpid_dispatch/management/qdrouter.json
+++ b/python/qpid_dispatch/management/qdrouter.json
@@ -1423,6 +1423,10 @@
"ingressHistogram": {
"type": "list",
"description": "For outgoing links on connections with 'normal' role. This histogram shows the number of settled deliveries on the link that ingressed the network at each interior router node."
+ },
+ "priority": {
+ "type": "integer",
+ "description": "For inter-router links, this is the message priority being handled."
}
}
},
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/122648a7/src/router_core/agent_link.c
----------------------------------------------------------------------
diff --git a/src/router_core/agent_link.c b/src/router_core/agent_link.c
index b2d7dbf..5ca0f25 100644
--- a/src/router_core/agent_link.c
+++ b/src/router_core/agent_link.c
@@ -43,6 +43,7 @@
#define QDR_LINK_RELEASED_COUNT 19
#define QDR_LINK_MODIFIED_COUNT 20
#define QDR_LINK_INGRESS_HISTOGRAM 21
+#define QDR_LINK_PRIORITY 22
const char *qdr_link_columns[] =
{"name",
@@ -67,6 +68,7 @@ const char *qdr_link_columns[] =
"releasedCount",
"modifiedCount",
"ingressHistogram",
+ "priority",
0};
static const char *qd_link_type_name(qd_link_type_t lt)
@@ -220,6 +222,10 @@ static void qdr_agent_write_column_CT(qd_composed_field_t *body, int col, qdr_li
qd_compose_insert_null(body);
break;
+ case QDR_LINK_PRIORITY:
+ qd_compose_insert_uint(body, link->priority);
+ break;
+
default:
qd_compose_insert_null(body);
break;
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/122648a7/src/router_core/agent_link.h
----------------------------------------------------------------------
diff --git a/src/router_core/agent_link.h b/src/router_core/agent_link.h
index 6402949..cd92c1b 100644
--- a/src/router_core/agent_link.h
+++ b/src/router_core/agent_link.h
@@ -29,7 +29,7 @@ void qdra_link_update_CT(qdr_core_t *core,
qdr_query_t *query,
qd_parsed_field_t *in_body);
-#define QDR_LINK_COLUMN_COUNT 22
+#define QDR_LINK_COLUMN_COUNT 23
const char *qdr_link_columns[QDR_LINK_COLUMN_COUNT + 1];
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/122648a7/tests/system_tests_qdstat.py
----------------------------------------------------------------------
diff --git a/tests/system_tests_qdstat.py b/tests/system_tests_qdstat.py
index 45040f0..2bd89d7 100644
--- a/tests/system_tests_qdstat.py
+++ b/tests/system_tests_qdstat.py
@@ -30,7 +30,6 @@ from subprocess import PIPE
from proton import Url, SSLDomain, SSLUnavailable, SASL
from system_test import main_module, SkipIfNeeded
-
class QdstatTest(system_test.TestCase):
"""Test qdstat tool output"""
@classmethod
@@ -104,6 +103,70 @@ class QdstatTest(system_test.TestCase):
def test_log(self):
self.run_qdstat(['--log', '--limit=5'], r'AGENT \(debug\).*GET-LOG')
+class QdstatLinkPriorityTest(system_test.TestCase):
+ """Need 2 routers to get inter-router links for the link priority test"""
+ @classmethod
+ def setUpClass(cls):
+ super(QdstatLinkPriorityTest, cls).setUpClass()
+ cls.inter_router_port = cls.tester.get_port()
+ config_1 = system_test.Qdrouterd.Config([
+ ('router', {'mode': 'interior', 'id': 'R1'}),
+ ('listener', {'port': cls.tester.get_port()}),
+ ('connector', {'role': 'inter-router', 'port': cls.inter_router_port})
+ ])
+
+ config_2 = system_test.Qdrouterd.Config([
+ ('router', {'mode': 'interior', 'id': 'R2'}),
+ ('listener', {'role': 'inter-router', 'port': cls.inter_router_port}),
+ ])
+ cls.router_2 = cls.tester.qdrouterd('test_router_2', config_2, wait=True)
+ cls.router_1 = cls.tester.qdrouterd('test_router_1', config_1, wait=True)
+ cls.router_1.wait_router_connected('R2')
+
+ def address(self):
+ return self.router_1.addresses[0]
+
+ def run_qdstat(self, args):
+ p = self.popen(
+ ['qdstat', '--bus', str(self.address()), '--timeout', str(system_test.TIMEOUT) ] + args,
+ name='qdstat-'+self.id(), stdout=PIPE, expect=None,
+ universal_newlines=True)
+
+ out = p.communicate()[0]
+ assert p.returncode == 0, \
+ "qdstat exit status %s, output:\n%s" % (p.returncode, out)
+ return out
+
+ def test_link_priority(self):
+ out = self.run_qdstat(['--links'])
+ lines = out.split("\n")
+
+ # make sure the output contains a header line
+ self.assertGreaterEqual(len(lines), 2)
+
+ # see if the header line has the word priority in it
+ priorityregexp = r'priority'
+ priority_column = re.search(priorityregexp, lines[1]).start()
+ self.assertGreater(priority_column, -1)
+
+ # extract the number in the priority column of every inter-router link
+ priorities = {}
+ for i in range(3, len(lines) - 1):
+ if re.search(r'inter-router', lines[i]):
+ pri = re.findall('\d+', lines[i][priority_column:])
+ # make sure the priority found is a number
+ self.assertGreater(len(pri), 0, "Can not find numeric priority in '%s'" % lines[i])
+ priority = int(pri[0])
+ # make sure the priority is from 0 to 9
+ self.assertGreaterEqual(priority, 0, "Priority was less than 0")
+ self.assertLessEqual(priority, 9, "Priority was greater than 9")
+
+ # mark this priority as present
+ priorities[priority] = True
+
+ # make sure that all priorities are present in the list (currently 0-9)
+ self.assertEqual(len(priorities.keys()), 10, "Not all priorities are present")
+
try:
SSLDomain(SSLDomain.MODE_CLIENT)
class QdstatSslTest(system_test.TestCase):
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/122648a7/tools/qdstat.in
----------------------------------------------------------------------
diff --git a/tools/qdstat.in b/tools/qdstat.in
index 2086310..471b3c1 100755
--- a/tools/qdstat.in
+++ b/tools/qdstat.in
@@ -293,7 +293,7 @@ class BusManager(Node):
cols = ('linkType', 'linkDir', 'connectionId', 'identity', 'peer', 'owningAddr',
'capacity', 'undeliveredCount', 'unsettledCount', 'deliveryCount',
'presettledCount', 'droppedPresettledCount', 'acceptedCount', 'rejectedCount', 'releasedCount',
- 'modifiedCount', 'adminStatus', 'operStatus', 'linkName')
+ 'modifiedCount', 'adminStatus', 'operStatus', 'linkName', 'priority')
objects = self.query('org.apache.qpid.dispatch.router.link', cols, limit=self.opts.limit)
@@ -314,6 +314,7 @@ class BusManager(Node):
heads.append(Header("mod"))
heads.append(Header("admin"))
heads.append(Header("oper"))
+ heads.append(Header("priority"))
if self.opts.verbose:
heads.append(Header("name"))
@@ -340,6 +341,7 @@ class BusManager(Node):
row.append(link.modifiedCount)
row.append(link.adminStatus)
row.append(link.operStatus)
+ row.append(link.priority)
if self.opts.verbose:
row.append(link.linkName)
rows.append(row)
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org