You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ch...@apache.org on 2018/09/10 20:30:27 UTC
qpid-dispatch git commit: DISPATCH-1107: Add router connection id
interrouter Opens
Repository: qpid-dispatch
Updated Branches:
refs/heads/master 447937f37 -> df7667e8a
DISPATCH-1107: Add router connection id interrouter Opens
This feature helps disambiguate interrouter connections.
Topology tests generate many connections and resulting logs have the
connection ids. There is nothing topology-specific about this feature.
Project: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/commit/df7667e8
Tree: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/tree/df7667e8
Diff: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/diff/df7667e8
Branch: refs/heads/master
Commit: df7667e8a9fa2ad6a2dd2ca91fe6f4a45b4d4f3c
Parents: 447937f
Author: Chuck Rolke <cr...@redhat.com>
Authored: Mon Sep 10 16:23:48 2018 -0400
Committer: Chuck Rolke <cr...@redhat.com>
Committed: Mon Sep 10 16:23:48 2018 -0400
----------------------------------------------------------------------
include/qpid/dispatch/amqp.h | 1 +
src/amqp.c | 1 +
src/server.c | 5 ++++
tests/system_tests_topology_disposition.py | 37 ++++++++++++++++++++++++-
4 files changed, 43 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/df7667e8/include/qpid/dispatch/amqp.h
----------------------------------------------------------------------
diff --git a/include/qpid/dispatch/amqp.h b/include/qpid/dispatch/amqp.h
index 393cf57..3820726 100644
--- a/include/qpid/dispatch/amqp.h
+++ b/include/qpid/dispatch/amqp.h
@@ -139,6 +139,7 @@ extern const char * const QD_CONNECTION_PROPERTY_PRODUCT_KEY;
extern const char * const QD_CONNECTION_PROPERTY_PRODUCT_VALUE;
extern const char * const QD_CONNECTION_PROPERTY_VERSION_KEY;
extern const char * const QD_CONNECTION_PROPERTY_COST_KEY;
+extern const char * const QD_CONNECTION_PROPERTY_CONN_ID;
extern const char * const QD_CONNECTION_PROPERTY_FAILOVER_LIST_KEY;
extern const char * const QD_CONNECTION_PROPERTY_FAILOVER_NETHOST_KEY;
extern const char * const QD_CONNECTION_PROPERTY_FAILOVER_PORT_KEY;
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/df7667e8/src/amqp.c
----------------------------------------------------------------------
diff --git a/src/amqp.c b/src/amqp.c
index fcad53a..16550a7 100644
--- a/src/amqp.c
+++ b/src/amqp.c
@@ -42,6 +42,7 @@ const char * const QD_CONNECTION_PROPERTY_PRODUCT_KEY = "product";
const char * const QD_CONNECTION_PROPERTY_PRODUCT_VALUE = "qpid-dispatch-router";
const char * const QD_CONNECTION_PROPERTY_VERSION_KEY = "version";
const char * const QD_CONNECTION_PROPERTY_COST_KEY = "qd.inter-router-cost";
+const char * const QD_CONNECTION_PROPERTY_CONN_ID = "qd.conn-id";
const char * const QD_CONNECTION_PROPERTY_FAILOVER_LIST_KEY = "failover-server-list";
const char * const QD_CONNECTION_PROPERTY_FAILOVER_NETHOST_KEY = "network-host";
const char * const QD_CONNECTION_PROPERTY_FAILOVER_PORT_KEY = "port";
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/df7667e8/src/server.c
----------------------------------------------------------------------
diff --git a/src/server.c b/src/server.c
index ab9ca92..a2bb8ea 100644
--- a/src/server.c
+++ b/src/server.c
@@ -447,6 +447,11 @@ static void decorate_connection(qd_server_t *qd_server, pn_connection_t *conn, c
pn_data_put_string(pn_connection_properties(conn),
pn_bytes(strlen(QPID_DISPATCH_VERSION), QPID_DISPATCH_VERSION));
+ pn_data_put_symbol(pn_connection_properties(conn),
+ pn_bytes(strlen(QD_CONNECTION_PROPERTY_CONN_ID), QD_CONNECTION_PROPERTY_CONN_ID));
+ qd_connection_t *qd_conn = pn_connection_get_context(conn);
+ pn_data_put_int(pn_connection_properties(conn), qd_conn->connection_id);
+
if (config && config->inter_router_cost > 1) {
pn_data_put_symbol(pn_connection_properties(conn),
pn_bytes(strlen(QD_CONNECTION_PROPERTY_COST_KEY), QD_CONNECTION_PROPERTY_COST_KEY));
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/df7667e8/tests/system_tests_topology_disposition.py
----------------------------------------------------------------------
diff --git a/tests/system_tests_topology_disposition.py b/tests/system_tests_topology_disposition.py
index 1b0d922..a701c6d 100644
--- a/tests/system_tests_topology_disposition.py
+++ b/tests/system_tests_topology_disposition.py
@@ -370,7 +370,8 @@ class TopologyDispositionTests ( TestCase ):
# 1 means skip that test.
cls.skip = { 'test_01' : 0,
- 'test_02' : 0
+ 'test_02' : 0,
+ 'test_03' : 0
}
@@ -399,6 +400,40 @@ class TopologyDispositionTests ( TestCase ):
self.assertEqual ( None, test.error )
+ def test_03_connection_id_propagation ( self ):
+ name = 'test_03'
+ error = None
+ if self.skip [ name ] :
+ self.skipTest ( "Test skipped during development." )
+ st_key = "SERVER (trace) ["
+ qc_key = "qd.conn-id\"="
+ for letter in ['A', 'B', 'C', 'D']:
+ log_name = ('../setUpClass/%s.log' % letter)
+ with open(log_name, 'r') as router_log:
+ log_lines = router_log.read().split("\n")
+ outbound_opens = [s for s in log_lines if "-> @open" in s]
+ for oopen in outbound_opens:
+ sti = oopen.find(st_key)
+ if sti < 0:
+ error = "Log %s, line '%s' has no SERVER key" % (log_name, oopen)
+ break
+ qci = oopen.find(qc_key)
+ if qci < 0:
+ error = "Log %s, line '%s' has no qd.conn-id key" % (log_name, oopen)
+ break
+ sti += len(st_key)
+ qci += len(qc_key)
+ while not oopen[sti] == "]":
+ if not oopen[sti] == oopen[qci]:
+ error = "log %s, line '%s' server conn_id != published conn-id" % (log_name, oopen)
+ break
+ sti += 1
+ qci += 1
+ if oopen[qci].isdigit():
+ error = "log %s, line '%s' published conn-id is too big" % (log_name, oopen)
+ self.assertEqual(None, error)
+ self.assertEqual ( None, error )
+
#################################################################
# Tests
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org