You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by tr...@apache.org on 2017/01/03 14:30:53 UTC
[1/3] qpid-dispatch git commit: DISPATCH-557 - Fixed broken tests
Repository: qpid-dispatch
Updated Branches:
refs/heads/master 75492de7a -> 427836291
DISPATCH-557 - Fixed broken tests
Project: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/commit/42783629
Tree: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/tree/42783629
Diff: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/diff/42783629
Branch: refs/heads/master
Commit: 427836291cf9f2faa77fd43fd39c49f6c0bfebd9
Parents: d1b0ea3
Author: Ted Ross <tr...@redhat.com>
Authored: Tue Jan 3 09:30:02 2017 -0500
Committer: Ted Ross <tr...@redhat.com>
Committed: Tue Jan 3 09:30:24 2017 -0500
----------------------------------------------------------------------
src/router_core/agent_connection.c | 6 +++---
tests/system_tests_deprecated.py | 6 +++---
tests/system_tests_sasl_plain.py | 28 ++++++++++++++--------------
3 files changed, 20 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/42783629/src/router_core/agent_connection.c
----------------------------------------------------------------------
diff --git a/src/router_core/agent_connection.c b/src/router_core/agent_connection.c
index f302e56..ad5bff2 100644
--- a/src/router_core/agent_connection.c
+++ b/src/router_core/agent_connection.c
@@ -340,11 +340,11 @@ static qdr_connection_t *qdr_connection_find_by_identity_CT(qdr_core_t *core, qd
}
-void qdra_connection_get_CT(qdr_core_t *core,
+void qdra_connection_get_CT(qdr_core_t *core,
qd_iterator_t *name,
qd_iterator_t *identity,
- qdr_query_t *query,
- const char *qdr_connection_columns[])
+ qdr_query_t *query,
+ const char *qdr_connection_columns[])
{
qdr_connection_t *conn = 0;
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/42783629/tests/system_tests_deprecated.py
----------------------------------------------------------------------
diff --git a/tests/system_tests_deprecated.py b/tests/system_tests_deprecated.py
index da7c19a..73c5f46 100644
--- a/tests/system_tests_deprecated.py
+++ b/tests/system_tests_deprecated.py
@@ -100,13 +100,13 @@ class RouterTestDeprecated(RouterTestPlainSaslCommon):
# ContainerEntity has been deprecated.
# role should be inter-router
- self.assertEqual(u'inter-router', local_node.query(type='org.apache.qpid.dispatch.connection').results[0][2])
+ self.assertEqual(u'inter-router', local_node.query(type='org.apache.qpid.dispatch.connection').results[0][3])
# sasl must be plain
- self.assertEqual(u'PLAIN', local_node.query(type='org.apache.qpid.dispatch.connection').results[0][5])
+ self.assertEqual(u'PLAIN', local_node.query(type='org.apache.qpid.dispatch.connection').results[0][6])
# user must be test@domain.com
- self.assertEqual(u'test@domain.com', local_node.query(type='org.apache.qpid.dispatch.connection').results[0][7])
+ self.assertEqual(u'test@domain.com', local_node.query(type='org.apache.qpid.dispatch.connection').results[0][8])
# Make sure that the deprecated linkRoutePattern is set up correctly
query_response = local_node.query(type='org.apache.qpid.dispatch.router.config.linkRoute')
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/42783629/tests/system_tests_sasl_plain.py
----------------------------------------------------------------------
diff --git a/tests/system_tests_sasl_plain.py b/tests/system_tests_sasl_plain.py
index 4de567d..0e11dab 100644
--- a/tests/system_tests_sasl_plain.py
+++ b/tests/system_tests_sasl_plain.py
@@ -283,16 +283,16 @@ class RouterTestPlainSaslOverSsl(RouterTestPlainSaslCommon):
local_node = Node.connect(self.routers[0].addresses[1], timeout=TIMEOUT)
# sslProto should be TLSv1/SSLv3
- self.assertEqual(u'TLSv1/SSLv3', local_node.query(type='org.apache.qpid.dispatch.connection').results[0][9])
+ self.assertEqual(u'TLSv1/SSLv3', local_node.query(type='org.apache.qpid.dispatch.connection').results[0][10])
# role should be inter-router
- self.assertEqual(u'inter-router', local_node.query(type='org.apache.qpid.dispatch.connection').results[0][2])
+ self.assertEqual(u'inter-router', local_node.query(type='org.apache.qpid.dispatch.connection').results[0][3])
# sasl must be plain
- self.assertEqual(u'PLAIN', local_node.query(type='org.apache.qpid.dispatch.connection').results[0][5])
+ self.assertEqual(u'PLAIN', local_node.query(type='org.apache.qpid.dispatch.connection').results[0][6])
# user must be test@domain.com
- self.assertEqual(u'test@domain.com', local_node.query(type='org.apache.qpid.dispatch.connection').results[0][7])
+ self.assertEqual(u'test@domain.com', local_node.query(type='org.apache.qpid.dispatch.connection').results[0][8])
class RouterTestVerifyHostNameYes(RouterTestPlainSaslCommon):
@@ -373,11 +373,11 @@ class RouterTestVerifyHostNameYes(RouterTestPlainSaslCommon):
# There should be only two connections.
# There will be no inter-router connection
self.assertEqual(2, len(local_node.query(type='org.apache.qpid.dispatch.connection').results))
- self.assertEqual('in', local_node.query(type='org.apache.qpid.dispatch.connection').results[0][3])
- self.assertEqual('normal', local_node.query(type='org.apache.qpid.dispatch.connection').results[0][2])
- self.assertEqual('anonymous', local_node.query(type='org.apache.qpid.dispatch.connection').results[0][7])
- self.assertEqual('normal', local_node.query(type='org.apache.qpid.dispatch.connection').results[1][2])
- self.assertEqual('anonymous', local_node.query(type='org.apache.qpid.dispatch.connection').results[1][7])
+ self.assertEqual('in', local_node.query(type='org.apache.qpid.dispatch.connection').results[0][4])
+ self.assertEqual('normal', local_node.query(type='org.apache.qpid.dispatch.connection').results[0][3])
+ self.assertEqual('anonymous', local_node.query(type='org.apache.qpid.dispatch.connection').results[0][8])
+ self.assertEqual('normal', local_node.query(type='org.apache.qpid.dispatch.connection').results[1][3])
+ self.assertEqual('anonymous', local_node.query(type='org.apache.qpid.dispatch.connection').results[1][8])
class RouterTestVerifyHostNameNo(RouterTestPlainSaslCommon):
@@ -470,23 +470,23 @@ class RouterTestVerifyHostNameNo(RouterTestPlainSaslCommon):
found = False
for N in range(0, len(results)):
- if results[N][4] == search:
+ if results[N][5] == search:
found = True
break
self.assertTrue(found, "Connection to %s not found" % search)
# sslProto should be TLSv1/SSLv3
- self.assertEqual(u'TLSv1/SSLv3', results[N][9])
+ self.assertEqual(u'TLSv1/SSLv3', results[N][10])
# role should be inter-router
- self.assertEqual(u'inter-router', results[N][2])
+ self.assertEqual(u'inter-router', results[N][3])
# sasl must be plain
- self.assertEqual(u'PLAIN', results[N][5])
+ self.assertEqual(u'PLAIN', results[N][6])
# user must be test@domain.com
- self.assertEqual(u'test@domain.com', results[N][7])
+ self.assertEqual(u'test@domain.com', results[N][8])
def test_inter_router_plain_over_ssl_exists(self):
"""
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org
[2/3] qpid-dispatch git commit: DISPATCH-557 - Added name and tenant
to the connection entity.
Posted by tr...@apache.org.
DISPATCH-557 - Added name and tenant to the connection entity.
Project: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/commit/d1b0ea36
Tree: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/tree/d1b0ea36
Diff: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/diff/d1b0ea36
Branch: refs/heads/master
Commit: d1b0ea36a3b0a080e763313cb25b132ccc1b13e1
Parents: a38673a
Author: Ted Ross <tr...@redhat.com>
Authored: Thu Dec 22 15:37:14 2016 -0500
Committer: Ted Ross <tr...@redhat.com>
Committed: Tue Jan 3 09:30:24 2017 -0500
----------------------------------------------------------------------
include/qpid/dispatch/compose.h | 1 +
python/qpid_dispatch/management/qdrouter.json | 4 ++
src/compose.c | 19 +++++++++
src/router_core/agent_connection.c | 45 +++++++++++++++-------
src/router_core/agent_connection.h | 2 +-
5 files changed, 56 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/d1b0ea36/include/qpid/dispatch/compose.h
----------------------------------------------------------------------
diff --git a/include/qpid/dispatch/compose.h b/include/qpid/dispatch/compose.h
index 00d505e..761aa49 100644
--- a/include/qpid/dispatch/compose.h
+++ b/include/qpid/dispatch/compose.h
@@ -182,6 +182,7 @@ void qd_compose_insert_binary_buffers(qd_composed_field_t *field, qd_buffer_list
* @param value A pointer to a null-terminated string.
*/
void qd_compose_insert_string(qd_composed_field_t *field, const char *value);
+void qd_compose_insert_string2(qd_composed_field_t *field, const char *value1, const char *value2);
/**
* Insert a utf8-encoded string into the field from an iterator
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/d1b0ea36/python/qpid_dispatch/management/qdrouter.json
----------------------------------------------------------------------
diff --git a/python/qpid_dispatch/management/qdrouter.json b/python/qpid_dispatch/management/qdrouter.json
index 0edec2f..3c6bb88 100644
--- a/python/qpid_dispatch/management/qdrouter.json
+++ b/python/qpid_dispatch/management/qdrouter.json
@@ -1310,6 +1310,10 @@
"description": "SSL strength factor in effect",
"type": "integer"
},
+ "tenant": {
+ "description": "If multi-tenancy is on for this connection, the tenant space in effect",
+ "type": "string"
+ },
"properties": {
"description": "Connection properties supplied by the peer.",
"type": "map"
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/d1b0ea36/src/compose.c
----------------------------------------------------------------------
diff --git a/src/compose.c b/src/compose.c
index 77b705d..fada2d6 100644
--- a/src/compose.c
+++ b/src/compose.c
@@ -432,6 +432,25 @@ void qd_compose_insert_string(qd_composed_field_t *field, const char *value)
}
+void qd_compose_insert_string2(qd_composed_field_t *field, const char *value1, const char *value2)
+{
+ uint32_t len1 = strlen(value1);
+ uint32_t len2 = strlen(value2);
+ uint32_t len = len1 + len2;
+
+ if (len < 256) {
+ qd_insert_8(field, QD_AMQP_STR8_UTF8);
+ qd_insert_8(field, (uint8_t) len);
+ } else {
+ qd_insert_8(field, QD_AMQP_STR32_UTF8);
+ qd_insert_32(field, len);
+ }
+ qd_insert(field, (const uint8_t*) value1, len1);
+ qd_insert(field, (const uint8_t*) value2, len2);
+ bump_count(field);
+}
+
+
void qd_compose_insert_string_iterator(qd_composed_field_t *field, qd_iterator_t *iter)
{
uint32_t len = 0;
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/d1b0ea36/src/router_core/agent_connection.c
----------------------------------------------------------------------
diff --git a/src/router_core/agent_connection.c b/src/router_core/agent_connection.c
index a2570f5..f302e56 100644
--- a/src/router_core/agent_connection.c
+++ b/src/router_core/agent_connection.c
@@ -22,19 +22,21 @@
#include <inttypes.h>
#include <stdio.h>
-#define QDR_CONNECTION_IDENTITY 0
-#define QDR_CONNECTION_HOST 1
-#define QDR_CONNECTION_ROLE 2
-#define QDR_CONNECTION_DIR 3
-#define QDR_CONNECTION_CONTAINER_ID 4
-#define QDR_CONNECTION_SASL_MECHANISMS 5
-#define QDR_CONNECTION_IS_AUTHENTICATED 6
-#define QDR_CONNECTION_USER 7
-#define QDR_CONNECTION_IS_ENCRYPTED 8
-#define QDR_CONNECTION_SSLPROTO 9
-#define QDR_CONNECTION_SSLCIPHER 10
-#define QDR_CONNECTION_PROPERTIES 11
-#define QDR_CONNECTION_SSLSSF 12
+#define QDR_CONNECTION_NAME 0
+#define QDR_CONNECTION_IDENTITY 1
+#define QDR_CONNECTION_HOST 2
+#define QDR_CONNECTION_ROLE 3
+#define QDR_CONNECTION_DIR 4
+#define QDR_CONNECTION_CONTAINER_ID 5
+#define QDR_CONNECTION_SASL_MECHANISMS 6
+#define QDR_CONNECTION_IS_AUTHENTICATED 7
+#define QDR_CONNECTION_USER 8
+#define QDR_CONNECTION_IS_ENCRYPTED 9
+#define QDR_CONNECTION_SSLPROTO 10
+#define QDR_CONNECTION_SSLCIPHER 11
+#define QDR_CONNECTION_PROPERTIES 12
+#define QDR_CONNECTION_SSLSSF 13
+#define QDR_CONNECTION_TENANT 14
const char * const QDR_CONNECTION_DIR_IN = "in";
const char * const QDR_CONNECTION_DIR_OUT = "out";
@@ -47,7 +49,8 @@ const char *qdr_connection_roles[] =
0};
const char *qdr_connection_columns[] =
- {"identity",
+ {"name",
+ "identity",
"host",
"role",
"dir",
@@ -60,6 +63,7 @@ const char *qdr_connection_columns[] =
"sslCipher",
"properties",
"sslSsf",
+ "tenant",
0};
const char *CONFIG_CONNECTION_TYPE = "org.apache.qpid.dispatch.connection";
@@ -92,6 +96,10 @@ static void qdr_connection_insert_column_CT(qdr_connection_t *conn, int col, qd_
qd_compose_insert_string(body, qdr_connection_columns[col]);
switch(col) {
+ case QDR_CONNECTION_NAME:
+ qd_compose_insert_string2(body, "connection/", conn->connection_info->host);
+ break;
+
case QDR_CONNECTION_IDENTITY: {
snprintf(id_str, 100, "%"PRId64, conn->identity);
qd_compose_insert_string(body, id_str);
@@ -152,9 +160,18 @@ static void qdr_connection_insert_column_CT(qdr_connection_t *conn, int col, qd_
else
qd_compose_insert_null(body);
break;
+
case QDR_CONNECTION_SSLSSF:
qd_compose_insert_long(body, conn->connection_info->ssl_ssf);
break;
+
+ case QDR_CONNECTION_TENANT:
+ if (conn->tenant_space)
+ qd_compose_insert_string(body, conn->tenant_space);
+ else
+ qd_compose_insert_null(body);
+ break;
+
case QDR_CONNECTION_PROPERTIES: {
pn_data_t *data = conn->connection_info->connection_properties;
qd_compose_start_map(body);
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/d1b0ea36/src/router_core/agent_connection.h
----------------------------------------------------------------------
diff --git a/src/router_core/agent_connection.h b/src/router_core/agent_connection.h
index 72c15af..230149b 100644
--- a/src/router_core/agent_connection.h
+++ b/src/router_core/agent_connection.h
@@ -30,7 +30,7 @@ void qdra_connection_get_CT(qdr_core_t *core,
const char *qdr_connection_columns[]);
-#define QDR_CONNECTION_COLUMN_COUNT 13
+#define QDR_CONNECTION_COLUMN_COUNT 15
const char *qdr_connection_columns[QDR_CONNECTION_COLUMN_COUNT + 1];
#endif
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org
[3/3] qpid-dispatch git commit: DISPATCH-557 - Moved management of
connections from python agent to router core
Posted by tr...@apache.org.
DISPATCH-557 - Moved management of connections from python agent to router core
Project: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/commit/a38673a6
Tree: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/tree/a38673a6
Diff: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/diff/a38673a6
Branch: refs/heads/master
Commit: a38673a69f5d7dd2a206a71e9d1bef38711feb53
Parents: 75492de
Author: Ganesh Murthy <gm...@redhat.com>
Authored: Mon Dec 12 16:30:38 2016 -0500
Committer: Ted Ross <tr...@redhat.com>
Committed: Tue Jan 3 09:30:24 2017 -0500
----------------------------------------------------------------------
include/qpid/dispatch/router.h | 1 +
include/qpid/dispatch/router_core.h | 32 ++-
src/CMakeLists.txt | 1 +
src/router_core/agent.c | 17 +-
src/router_core/agent_connection.c | 359 +++++++++++++++++++++++++++++
src/router_core/agent_connection.h | 36 +++
src/router_core/connections.c | 84 ++++++-
src/router_core/management_agent.c | 7 +-
src/router_core/router_core.c | 1 +
src/router_core/router_core_private.h | 19 ++
src/router_node.c | 72 +++++-
src/server.c | 134 -----------
tests/system_test.py | 8 +-
tests/system_tests_deprecated.py | 6 +-
tests/system_tests_management.py | 2 +-
tests/system_tests_one_router.py | 6 +-
tests/system_tests_qdmanage.py | 24 +-
tests/system_tests_sasl_plain.py | 29 ++-
tests/system_tests_user_id.py | 28 +--
19 files changed, 653 insertions(+), 213 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/a38673a6/include/qpid/dispatch/router.h
----------------------------------------------------------------------
diff --git a/include/qpid/dispatch/router.h b/include/qpid/dispatch/router.h
index 86e6e6d..78a7599 100644
--- a/include/qpid/dispatch/router.h
+++ b/include/qpid/dispatch/router.h
@@ -32,6 +32,7 @@
#include <qpid/dispatch/iterator.h>
#include <stdbool.h>
+typedef struct qdr_core_t qdr_core_t;
typedef struct qd_router_t qd_router_t;
typedef struct qd_address_t qd_address_t;
typedef struct qd_router_delivery_t qd_router_delivery_t;
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/a38673a6/include/qpid/dispatch/router_core.h
----------------------------------------------------------------------
diff --git a/include/qpid/dispatch/router_core.h b/include/qpid/dispatch/router_core.h
index 3530e14..b7cb224 100644
--- a/include/qpid/dispatch/router_core.h
+++ b/include/qpid/dispatch/router_core.h
@@ -32,13 +32,14 @@
* exclusive access to that connection.
*/
-typedef struct qdr_core_t qdr_core_t;
-typedef struct qdr_subscription_t qdr_subscription_t;
-typedef struct qdr_connection_t qdr_connection_t;
-typedef struct qdr_link_t qdr_link_t;
-typedef struct qdr_delivery_t qdr_delivery_t;
-typedef struct qdr_terminus_t qdr_terminus_t;
-typedef struct qdr_error_t qdr_error_t;
+typedef struct qdr_core_t qdr_core_t;
+typedef struct qdr_subscription_t qdr_subscription_t;
+typedef struct qdr_connection_t qdr_connection_t;
+typedef struct qdr_link_t qdr_link_t;
+typedef struct qdr_delivery_t qdr_delivery_t;
+typedef struct qdr_terminus_t qdr_terminus_t;
+typedef struct qdr_error_t qdr_error_t;
+typedef struct qdr_connection_info_t qdr_connection_info_t;
typedef enum {
QD_ROUTER_MODE_STANDALONE, ///< Standalone router. No routing protocol participation
@@ -140,7 +141,6 @@ typedef enum {
QDR_ROLE_ON_DEMAND
} qdr_connection_role_t;
-
/**
* qdr_connection_opened
*
@@ -170,7 +170,8 @@ qdr_connection_t *qdr_connection_opened(qdr_core_t *core,
bool strip_annotations_in,
bool strip_annotations_out,
int link_capacity,
- const char *vhost);
+ const char *vhost,
+ qdr_connection_info_t *connection_info);
/**
* qdr_connection_closed
@@ -694,4 +695,17 @@ void qdr_query_free(qdr_query_t *query);
typedef void (*qdr_manage_response_t) (void *context, const qd_amqp_error_t *status, bool more);
void qdr_manage_handler(qdr_core_t *core, qdr_manage_response_t response_handler);
+qdr_connection_info_t *qdr_connection_info(bool is_encrypted,
+ bool is_authenticated,
+ bool opened,
+ char *sasl_mechanisms,
+ qd_direction_t dir,
+ char *host,
+ char *ssl_proto,
+ char *ssl_cipher,
+ char *user,
+ const char *container,
+ pn_data_t *connection_properties,
+ int ssl_ssf);
+
#endif
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/a38673a6/src/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index b9c2221..5bafcab 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -70,6 +70,7 @@ set(qpid_dispatch_SOURCES
router_core/agent_address.c
router_core/agent_config_address.c
router_core/agent_config_auto_link.c
+ router_core/agent_connection.c
router_core/agent_config_link_route.c
router_core/agent_link.c
router_core/agent_router.c
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/a38673a6/src/router_core/agent.c
----------------------------------------------------------------------
diff --git a/src/router_core/agent.c b/src/router_core/agent.c
index d61d478..a150667 100644
--- a/src/router_core/agent.c
+++ b/src/router_core/agent.c
@@ -24,6 +24,7 @@
#include "agent_address.h"
#include "agent_link.h"
#include "agent_router.h"
+#include "agent_connection.h"
#include "router_core_private.h"
#include <stdio.h>
@@ -139,8 +140,8 @@ void qdr_manage_delete(qdr_core_t *core,
}
-void qdr_manage_read(qdr_core_t *core,
- void *context,
+void qdr_manage_read(qdr_core_t *core,
+ void *context,
qd_router_entity_type_t entity_type,
qd_iterator_t *name,
qd_iterator_t *identity,
@@ -188,8 +189,8 @@ qdr_query_t *qdr_manage_query(qdr_core_t *core,
case QD_ROUTER_CONFIG_ADDRESS: qdr_agent_set_columns(query, attribute_names, qdr_config_address_columns, QDR_CONFIG_ADDRESS_COLUMN_COUNT); break;
case QD_ROUTER_CONFIG_LINK_ROUTE: qdr_agent_set_columns(query, attribute_names, qdr_config_link_route_columns, QDR_CONFIG_LINK_ROUTE_COLUMN_COUNT); break;
case QD_ROUTER_CONFIG_AUTO_LINK: qdr_agent_set_columns(query, attribute_names, qdr_config_auto_link_columns, QDR_CONFIG_AUTO_LINK_COLUMN_COUNT); break;
- case QD_ROUTER_CONNECTION: break;
case QD_ROUTER_ROUTER: qdr_agent_set_columns(query, attribute_names, qdr_router_columns, QDR_ROUTER_COLUMN_COUNT); break;
+ case QD_ROUTER_CONNECTION: qdr_agent_set_columns(query, attribute_names, qdr_connection_columns, QDR_CONNECTION_COLUMN_COUNT); break;
case QD_ROUTER_LINK: qdr_agent_set_columns(query, attribute_names, qdr_link_columns, QDR_LINK_COLUMN_COUNT); break;
case QD_ROUTER_ADDRESS: qdr_agent_set_columns(query, attribute_names, qdr_address_columns, QDR_ADDRESS_COLUMN_COUNT); break;
case QD_ROUTER_FORBIDDEN: break;
@@ -207,8 +208,8 @@ void qdr_query_add_attribute_names(qdr_query_t *query)
case QD_ROUTER_CONFIG_ADDRESS: qdr_agent_emit_columns(query, qdr_config_address_columns, QDR_CONFIG_ADDRESS_COLUMN_COUNT); break;
case QD_ROUTER_CONFIG_LINK_ROUTE: qdr_agent_emit_columns(query, qdr_config_link_route_columns, QDR_CONFIG_LINK_ROUTE_COLUMN_COUNT); break;
case QD_ROUTER_CONFIG_AUTO_LINK: qdr_agent_emit_columns(query, qdr_config_auto_link_columns, QDR_CONFIG_AUTO_LINK_COLUMN_COUNT); break;
- case QD_ROUTER_CONNECTION: break;
case QD_ROUTER_ROUTER: qdr_agent_emit_columns(query, qdr_router_columns, QDR_ROUTER_COLUMN_COUNT); break;
+ case QD_ROUTER_CONNECTION: qdr_agent_emit_columns(query, qdr_connection_columns, QDR_CONNECTION_COLUMN_COUNT); break;
case QD_ROUTER_LINK: qdr_agent_emit_columns(query, qdr_link_columns, QDR_LINK_COLUMN_COUNT); break;
case QD_ROUTER_ADDRESS: qdr_agent_emit_columns(query, qdr_address_columns, QDR_ADDRESS_COLUMN_COUNT); break;
case QD_ROUTER_FORBIDDEN: qd_compose_empty_list(query->body); break;
@@ -302,11 +303,11 @@ static void qdr_agent_set_columns(qdr_query_t *query,
}
}
}
+
if (count == 1 && idx == 1)
query->columns[idx] = -1;
else
query->columns[idx+1] = -1;
-
}
@@ -348,8 +349,8 @@ static void qdr_manage_read_CT(qdr_core_t *core, qdr_action_t *action, bool disc
case QD_ROUTER_CONFIG_ADDRESS: qdra_config_address_get_CT(core, name, identity, query, qdr_config_address_columns); break;
case QD_ROUTER_CONFIG_LINK_ROUTE: qdra_config_link_route_get_CT(core, name, identity, query, qdr_config_link_route_columns); break;
case QD_ROUTER_CONFIG_AUTO_LINK: qdra_config_auto_link_get_CT(core, name, identity, query, qdr_config_auto_link_columns); break;
- case QD_ROUTER_CONNECTION: break;
case QD_ROUTER_ROUTER: qdr_agent_forbidden(core, query, false); break;
+ case QD_ROUTER_CONNECTION: qdra_connection_get_CT(core, name, identity, query, qdr_connection_columns); break;
case QD_ROUTER_LINK: break;
case QD_ROUTER_ADDRESS: qdra_address_get_CT(core, name, identity, query, qdr_address_columns); break;
case QD_ROUTER_FORBIDDEN: qdr_agent_forbidden(core, query, false); break;
@@ -450,8 +451,8 @@ static void qdrh_query_get_first_CT(qdr_core_t *core, qdr_action_t *action, bool
case QD_ROUTER_CONFIG_ADDRESS: qdra_config_address_get_first_CT(core, query, offset); break;
case QD_ROUTER_CONFIG_LINK_ROUTE: qdra_config_link_route_get_first_CT(core, query, offset); break;
case QD_ROUTER_CONFIG_AUTO_LINK: qdra_config_auto_link_get_first_CT(core, query, offset); break;
- case QD_ROUTER_CONNECTION: break;
case QD_ROUTER_ROUTER: qdra_router_get_first_CT(core, query, offset); break;
+ case QD_ROUTER_CONNECTION: qdra_connection_get_first_CT(core, query, offset); break;
case QD_ROUTER_LINK: qdra_link_get_first_CT(core, query, offset); break;
case QD_ROUTER_ADDRESS: qdra_address_get_first_CT(core, query, offset); break;
case QD_ROUTER_FORBIDDEN: qdr_agent_forbidden(core, query, true); break;
@@ -471,8 +472,8 @@ static void qdrh_query_get_next_CT(qdr_core_t *core, qdr_action_t *action, bool
case QD_ROUTER_CONFIG_ADDRESS: qdra_config_address_get_next_CT(core, query); break;
case QD_ROUTER_CONFIG_LINK_ROUTE: qdra_config_link_route_get_next_CT(core, query); break;
case QD_ROUTER_CONFIG_AUTO_LINK: qdra_config_auto_link_get_next_CT(core, query); break;
- case QD_ROUTER_CONNECTION: break;
case QD_ROUTER_ROUTER: qdra_router_get_next_CT(core, query); break;
+ case QD_ROUTER_CONNECTION: qdra_connection_get_next_CT(core, query); break;
case QD_ROUTER_LINK: qdra_link_get_next_CT(core, query); break;
case QD_ROUTER_ADDRESS: qdra_address_get_next_CT(core, query); break;
case QD_ROUTER_FORBIDDEN: break;
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/a38673a6/src/router_core/agent_connection.c
----------------------------------------------------------------------
diff --git a/src/router_core/agent_connection.c b/src/router_core/agent_connection.c
new file mode 100644
index 0000000..a2570f5
--- /dev/null
+++ b/src/router_core/agent_connection.c
@@ -0,0 +1,359 @@
+/*
+ * 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.
+ */
+
+#include <qpid/dispatch/ctools.h>
+#include "agent_connection.h"
+#include <inttypes.h>
+#include <stdio.h>
+
+#define QDR_CONNECTION_IDENTITY 0
+#define QDR_CONNECTION_HOST 1
+#define QDR_CONNECTION_ROLE 2
+#define QDR_CONNECTION_DIR 3
+#define QDR_CONNECTION_CONTAINER_ID 4
+#define QDR_CONNECTION_SASL_MECHANISMS 5
+#define QDR_CONNECTION_IS_AUTHENTICATED 6
+#define QDR_CONNECTION_USER 7
+#define QDR_CONNECTION_IS_ENCRYPTED 8
+#define QDR_CONNECTION_SSLPROTO 9
+#define QDR_CONNECTION_SSLCIPHER 10
+#define QDR_CONNECTION_PROPERTIES 11
+#define QDR_CONNECTION_SSLSSF 12
+
+const char * const QDR_CONNECTION_DIR_IN = "in";
+const char * const QDR_CONNECTION_DIR_OUT = "out";
+
+const char *qdr_connection_roles[] =
+ {"normal",
+ "inter-router",
+ "route-container",
+ "on-demand",
+ 0};
+
+const char *qdr_connection_columns[] =
+ {"identity",
+ "host",
+ "role",
+ "dir",
+ "container",
+ "sasl",
+ "isAuthenticated",
+ "user",
+ "isEncrypted",
+ "sslProto",
+ "sslCipher",
+ "properties",
+ "sslSsf",
+ 0};
+
+const char *CONFIG_CONNECTION_TYPE = "org.apache.qpid.dispatch.connection";
+
+static void qd_get_next_pn_data(pn_data_t **data, const char **d, int *d1)
+{
+ if (pn_data_next(*data)) {
+ switch (pn_data_type(*data)) {
+ case PN_STRING:
+ *d = pn_data_get_string(*data).start;
+ break;
+ case PN_SYMBOL:
+ *d = pn_data_get_symbol(*data).start;
+ break;
+ case PN_INT:
+ *d1 = pn_data_get_int(*data);
+ break;
+ default:
+ break;
+ }
+ }
+ }
+
+
+static void qdr_connection_insert_column_CT(qdr_connection_t *conn, int col, qd_composed_field_t *body, bool as_map)
+{
+ char id_str[100];
+
+ if (as_map)
+ qd_compose_insert_string(body, qdr_connection_columns[col]);
+
+ switch(col) {
+ case QDR_CONNECTION_IDENTITY: {
+ snprintf(id_str, 100, "%"PRId64, conn->identity);
+ qd_compose_insert_string(body, id_str);
+ break;
+ }
+
+ case QDR_CONNECTION_HOST:
+ qd_compose_insert_string(body, conn->connection_info->host);
+ break;
+
+ case QDR_CONNECTION_ROLE:
+ qd_compose_insert_string(body, qdr_connection_roles[conn->connection_info->role]);
+ break;
+
+ case QDR_CONNECTION_DIR:
+ if (conn->connection_info->dir == QD_INCOMING)
+ qd_compose_insert_string(body, QDR_CONNECTION_DIR_IN);
+ else
+ qd_compose_insert_string(body, QDR_CONNECTION_DIR_OUT);
+ break;
+
+ case QDR_CONNECTION_CONTAINER_ID:
+ if (conn->connection_info->container)
+ qd_compose_insert_string(body, conn->connection_info->container);
+ else
+ qd_compose_insert_null(body);
+ break;
+
+ case QDR_CONNECTION_SASL_MECHANISMS:
+ if (conn->connection_info->sasl_mechanisms)
+ qd_compose_insert_string(body, conn->connection_info->sasl_mechanisms);
+ else
+ qd_compose_insert_null(body);
+ break;
+
+ case QDR_CONNECTION_IS_AUTHENTICATED:
+ qd_compose_insert_bool(body, conn->connection_info->is_authenticated);
+ break;
+
+ case QDR_CONNECTION_USER:
+ qd_compose_insert_string(body, conn->connection_info->user);
+ break;
+
+ case QDR_CONNECTION_IS_ENCRYPTED:
+ qd_compose_insert_bool(body, conn->connection_info->is_encrypted);
+ break;
+
+ case QDR_CONNECTION_SSLPROTO:
+ if (conn->connection_info->ssl_proto[0] != '\0')
+ qd_compose_insert_string(body, conn->connection_info->ssl_proto);
+ else
+ qd_compose_insert_null(body);
+ break;
+
+ case QDR_CONNECTION_SSLCIPHER:
+ if (conn->connection_info->ssl_cipher[0] != '\0')
+ qd_compose_insert_string(body, conn->connection_info->ssl_cipher);
+ else
+ qd_compose_insert_null(body);
+ break;
+ case QDR_CONNECTION_SSLSSF:
+ qd_compose_insert_long(body, conn->connection_info->ssl_ssf);
+ break;
+ case QDR_CONNECTION_PROPERTIES: {
+ pn_data_t *data = conn->connection_info->connection_properties;
+ qd_compose_start_map(body);
+ if (data) {
+ pn_data_next(data);
+ size_t count = pn_data_get_map(data);
+ pn_data_enter(data);
+
+ if (count > 0) {
+
+ for (size_t i = 0; i < count/2; i++) {
+ const char *key = 0;
+ // We are assuming for now that all keys are strings
+ qd_get_next_pn_data(&data, &key, 0);
+
+ const char *value_string = 0;
+ int value_int = 0;
+ // We are assuming for now that all values are either strings or integers
+ qd_get_next_pn_data(&data, &value_string, &value_int);
+
+ qd_compose_insert_string(body, key);
+
+ if (value_string)
+ qd_compose_insert_string(body, value_string);
+ else if (value_int)
+ qd_compose_insert_int(body, value_int);
+
+ }
+ }
+
+ pn_data_exit(data);
+
+ }
+ qd_compose_end_map(body);
+ }
+ break;
+ }
+}
+
+
+static void qdr_agent_write_connection_CT(qdr_query_t *query, qdr_connection_t *conn)
+{
+ qd_composed_field_t *body = query->body;
+
+ qd_compose_start_list(body);
+ int i = 0;
+ while (query->columns[i] >= 0) {
+ qdr_connection_insert_column_CT(conn, query->columns[i], body, false);
+ i++;
+ }
+ qd_compose_end_list(body);
+}
+
+
+static void qdr_manage_advance_connection_CT(qdr_query_t *query, qdr_connection_t *conn)
+{
+ query->next_offset++;
+ conn = DEQ_NEXT(conn);
+ query->more = !!conn;
+}
+
+
+void qdra_connection_get_first_CT(qdr_core_t *core, qdr_query_t *query, int offset)
+{
+ //
+ // Queries that get this far will always succeed.
+ //
+ query->status = QD_AMQP_OK;
+
+ //
+ // If the offset goes beyond the set of objects, end the query now.
+ //
+ if (offset >= DEQ_SIZE(core->open_connections)) {
+ query->more = false;
+ qdr_agent_enqueue_response_CT(core, query);
+ return;
+ }
+
+ //
+ // Run to the object at the offset.
+ //
+ qdr_connection_t *conn = DEQ_HEAD(core->open_connections);
+ for (int i = 0; i < offset && conn; i++)
+ conn = DEQ_NEXT(conn);
+ assert(conn);
+
+ //
+ // Write the columns of the object into the response body.
+ //
+ qdr_agent_write_connection_CT(query, conn);
+
+ //
+ // Advance to the next connection
+ //
+ query->next_offset = offset;
+ qdr_manage_advance_connection_CT(query, conn);
+
+ //
+ // Enqueue the response.
+ //
+ qdr_agent_enqueue_response_CT(core, query);
+}
+
+void qdra_connection_get_next_CT(qdr_core_t *core, qdr_query_t *query)
+{
+ qdr_connection_t *conn = 0;
+
+ if (query->next_offset < DEQ_SIZE(core->open_connections)) {
+ conn = DEQ_HEAD(core->open_connections);
+ for (int i = 0; i < query->next_offset && conn; i++)
+ conn = DEQ_NEXT(conn);
+ }
+
+ if (conn) {
+ //
+ // Write the columns of the connection entity into the response body.
+ //
+ qdr_agent_write_connection_CT(query, conn);
+
+ //
+ // Advance to the next object
+ //
+ qdr_manage_advance_connection_CT(query, conn);
+ } else
+ query->more = false;
+
+ //
+ // Enqueue the response.
+ //
+ qdr_agent_enqueue_response_CT(core, query);
+}
+
+static void qdr_manage_write_connection_map_CT(qdr_core_t *core,
+ qdr_connection_t *conn,
+ qd_composed_field_t *body,
+ const char *qdr_connection_columns[])
+{
+ qd_compose_start_map(body);
+
+ for(int i = 0; i < QDR_CONNECTION_COLUMN_COUNT; i++) {
+ qd_compose_insert_string(body, qdr_connection_columns[i]);
+ qdr_connection_insert_column_CT(conn, i, body, false);
+ }
+
+ qd_compose_end_map(body);
+}
+
+
+static qdr_connection_t *qdr_connection_find_by_identity_CT(qdr_core_t *core, qd_iterator_t *identity)
+{
+ if (!identity)
+ return 0;
+
+ qdr_connection_t *conn = DEQ_HEAD(core->open_connections);
+ while (conn) {
+ // Convert the passed in identity to a char*
+ char id[100];
+ snprintf(id, 100, "%"PRId64, conn->identity);
+ if (qd_iterator_equal(identity, (const unsigned char*) id))
+ break;
+ conn = DEQ_NEXT(conn);
+ }
+
+ return conn;
+
+}
+
+
+void qdra_connection_get_CT(qdr_core_t *core,
+ qd_iterator_t *name,
+ qd_iterator_t *identity,
+ qdr_query_t *query,
+ const char *qdr_connection_columns[])
+{
+ qdr_connection_t *conn = 0;
+
+ if (!identity) {
+ query->status = QD_AMQP_BAD_REQUEST;
+ query->status.description = "Name not supported. Identity required";
+ qd_log(core->agent_log, QD_LOG_ERROR, "Error performing READ of %s: %s", CONFIG_CONNECTION_TYPE, query->status.description);
+ }
+ else {
+ conn = qdr_connection_find_by_identity_CT(core, identity);
+
+ if (conn == 0) {
+ // Send back a 404
+ query->status = QD_AMQP_NOT_FOUND;
+ }
+ else {
+ //
+ // Write the columns of the connection entity into the response body.
+ //
+ qdr_manage_write_connection_map_CT(core, conn, query->body, qdr_connection_columns);
+ query->status = QD_AMQP_OK;
+ }
+ }
+
+ //
+ // Enqueue the response.
+ //
+ qdr_agent_enqueue_response_CT(core, query);
+}
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/a38673a6/src/router_core/agent_connection.h
----------------------------------------------------------------------
diff --git a/src/router_core/agent_connection.h b/src/router_core/agent_connection.h
new file mode 100644
index 0000000..72c15af
--- /dev/null
+++ b/src/router_core/agent_connection.h
@@ -0,0 +1,36 @@
+#ifndef qdr_agent_connection
+#define qdr_agent_connection 1
+/*
+ * 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.
+ */
+
+#include "router_core_private.h"
+
+void qdra_connection_get_first_CT(qdr_core_t *core, qdr_query_t *query, int offset);
+void qdra_connection_get_next_CT(qdr_core_t *core, qdr_query_t *query);
+void qdra_connection_get_CT(qdr_core_t *core,
+ qd_iterator_t *name,
+ qd_iterator_t *identity,
+ qdr_query_t *query,
+ const char *qdr_connection_columns[]);
+
+
+#define QDR_CONNECTION_COLUMN_COUNT 13
+const char *qdr_connection_columns[QDR_CONNECTION_COLUMN_COUNT + 1];
+
+#endif
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/a38673a6/src/router_core/connections.c
----------------------------------------------------------------------
diff --git a/src/router_core/connections.c b/src/router_core/connections.c
index 00e9eb3..6175b85 100644
--- a/src/router_core/connections.c
+++ b/src/router_core/connections.c
@@ -17,10 +17,11 @@
* under the License.
*/
-#include "router_core_private.h"
+#include <qpid/dispatch/router_core.h>
#include "route_control.h"
#include <qpid/dispatch/amqp.h>
#include <stdio.h>
+#include "router_core_private.h"
static void qdr_connection_opened_CT(qdr_core_t *core, qdr_action_t *action, bool discard);
static void qdr_connection_closed_CT(qdr_core_t *core, qdr_action_t *action, bool discard);
@@ -65,12 +66,15 @@ qdr_connection_t *qdr_connection_opened(qdr_core_t *core,
bool strip_annotations_in,
bool strip_annotations_out,
int link_capacity,
- const char *vhost)
+ const char *vhost,
+ qdr_connection_info_t *connection_info)
{
qdr_action_t *action = qdr_action(qdr_connection_opened_CT, "connection_opened");
qdr_connection_t *conn = new_qdr_connection_t();
ZERO(conn);
+ conn->identity = qdr_identifier(core);
+ conn->connection_info = connection_info;
conn->core = core;
conn->user_context = 0;
conn->incoming = incoming;
@@ -83,6 +87,7 @@ qdr_connection_t *qdr_connection_opened(qdr_core_t *core,
conn->mask_bit = -1;
DEQ_INIT(conn->links);
DEQ_INIT(conn->work_list);
+ conn->connection_info->role = conn->role;
conn->work_lock = sys_mutex();
if (vhost) {
@@ -115,6 +120,61 @@ void qdr_connection_set_context(qdr_connection_t *conn, void *context)
conn->user_context = context;
}
+qdr_connection_info_t *qdr_connection_info(bool is_encrypted,
+ bool is_authenticated,
+ bool opened,
+ char *sasl_mechanisms,
+ qd_direction_t dir,
+ char *host,
+ char *ssl_proto,
+ char *ssl_cipher,
+ char *user,
+ const char *container,
+ pn_data_t *connection_properties,
+ int ssl_ssf)
+{
+ qdr_connection_info_t *connection_info = new_qdr_connection_info_t();
+ connection_info->is_encrypted = is_encrypted;
+ connection_info->is_authenticated = is_authenticated;
+ connection_info->opened = opened;
+ connection_info->container = container;
+
+ if (sasl_mechanisms)
+ connection_info->sasl_mechanisms = strdup(sasl_mechanisms);
+ else
+ connection_info->sasl_mechanisms = 0;
+
+ connection_info->dir = dir;
+
+ if (host)
+ connection_info->host = strdup(host);
+ else
+ connection_info->host = 0;
+
+ if (ssl_proto)
+ connection_info->ssl_proto = strdup(ssl_proto);
+ else
+ connection_info->ssl_proto = 0;
+
+ if (ssl_cipher)
+ connection_info->ssl_cipher = strdup(ssl_cipher);
+ else
+ connection_info->ssl_cipher = 0;
+
+ if (user)
+ connection_info->user = strdup(user);
+ else
+ connection_info->user = 0;
+
+ pn_data_t *qdr_conn_properties = pn_data(0);
+ pn_data_copy(qdr_conn_properties, connection_properties);
+
+ connection_info->connection_properties = qdr_conn_properties;
+ connection_info->ssl_ssf = ssl_ssf;
+
+ return connection_info;
+}
+
void *qdr_connection_get_context(const qdr_connection_t *conn)
{
@@ -1012,6 +1072,23 @@ static void qdr_connection_opened_CT(qdr_core_t *core, qdr_action_t *action, boo
qdr_field_free(action->args.connection.container_id);
}
+static void qdr_connection_free(qdr_connection_t *conn)
+{
+ if (conn->connection_info) {
+ free(conn->connection_info->sasl_mechanisms);
+ free(conn->connection_info->host);
+ free(conn->connection_info->ssl_proto);
+ free(conn->connection_info->ssl_cipher);
+ free(conn->connection_info->user);
+ pn_data_free(conn->connection_info->connection_properties);
+ }
+
+ free(conn->tenant_space);
+
+ free_qdr_connection_info_t(conn->connection_info);
+ free_qdr_connection_t(conn);
+}
+
static void qdr_connection_closed_CT(qdr_core_t *core, qdr_action_t *action, bool discard)
{
@@ -1071,8 +1148,7 @@ static void qdr_connection_closed_CT(qdr_core_t *core, qdr_action_t *action, boo
DEQ_REMOVE(core->open_connections, conn);
sys_mutex_free(conn->work_lock);
- free(conn->tenant_space);
- free_qdr_connection_t(conn);
+ qdr_connection_free(conn);
}
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/a38673a6/src/router_core/management_agent.c
----------------------------------------------------------------------
diff --git a/src/router_core/management_agent.c b/src/router_core/management_agent.c
index 455337b..52da6a2 100644
--- a/src/router_core/management_agent.c
+++ b/src/router_core/management_agent.c
@@ -47,6 +47,7 @@ const unsigned char *address_entity_type = (unsigned char*) "org.apache.q
const unsigned char *link_entity_type = (unsigned char*) "org.apache.qpid.dispatch.router.link";
const unsigned char *console_entity_type = (unsigned char*) "org.apache.qpid.dispatch.console";
const unsigned char *router_entity_type = (unsigned char*) "org.apache.qpid.dispatch.router";
+const unsigned char *connection_entity_type = (unsigned char*) "org.apache.qpid.dispatch.connection";
const char * const status_description = "statusDescription";
const char * const correlation_id = "correlation-id";
@@ -121,13 +122,10 @@ static void qd_set_response_status(const qd_amqp_error_t *error, qd_composed_fie
//
*field = qd_compose(QD_PERFORMATIVE_APPLICATION_PROPERTIES, *field);
qd_compose_start_map(*field);
-
qd_compose_insert_string(*field, status_description);
qd_compose_insert_string(*field, error->description);
-
qd_compose_insert_string(*field, status_code);
qd_compose_insert_uint(*field, error->status);
-
qd_compose_end_map(*field);
}
@@ -197,6 +195,7 @@ static void qd_manage_response_handler(void *context, const qd_amqp_error_t *sta
// Finally, compose and send the message.
qd_message_compose_3(ctx->msg, fld, ctx->field);
+
qdr_send_to1(ctx->core, ctx->msg, reply_to, true, false);
// We have come to the very end. Free the appropriate memory.
@@ -410,6 +409,8 @@ static bool qd_can_handle_request(qd_parsed_field_t *properties_fld,
*entity_type = QD_ROUTER_ROUTER;
else if (qd_iterator_equal(qd_parse_raw(parsed_field), console_entity_type))
*entity_type = QD_ROUTER_FORBIDDEN;
+ else if (qd_iterator_equal(qd_parse_raw(parsed_field), connection_entity_type))
+ *entity_type = QD_ROUTER_CONNECTION;
else
return false;
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/a38673a6/src/router_core/router_core.c
----------------------------------------------------------------------
diff --git a/src/router_core/router_core.c b/src/router_core/router_core.c
index 635d85c..2227cfb 100644
--- a/src/router_core/router_core.c
+++ b/src/router_core/router_core.c
@@ -30,6 +30,7 @@ ALLOC_DEFINE(qdr_router_ref_t);
ALLOC_DEFINE(qdr_link_ref_t);
ALLOC_DEFINE(qdr_general_work_t);
ALLOC_DEFINE(qdr_connection_ref_t);
+ALLOC_DEFINE(qdr_connection_info_t);
static void qdr_general_handler(void *context);
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/a38673a6/src/router_core/router_core_private.h
----------------------------------------------------------------------
diff --git a/src/router_core/router_core_private.h b/src/router_core/router_core_private.h
index 39cf6d1..00f4ff3 100644
--- a/src/router_core/router_core_private.h
+++ b/src/router_core/router_core_private.h
@@ -441,10 +441,28 @@ typedef struct qdr_connection_work_t {
ALLOC_DECLARE(qdr_connection_work_t);
DEQ_DECLARE(qdr_connection_work_t, qdr_connection_work_list_t);
+struct qdr_connection_info_t {
+ const char *container;
+ char *sasl_mechanisms;
+ char *host;
+ bool is_encrypted;
+ char *ssl_proto;
+ char *ssl_cipher;
+ char *user;
+ bool is_authenticated;
+ bool opened;
+ qd_direction_t dir;
+ qdr_connection_role_t role;
+ pn_data_t *connection_properties;
+ int ssl_ssf; //ssl strength factor
+};
+
+ALLOC_DECLARE(qdr_connection_info_t);
struct qdr_connection_t {
DEQ_LINKS(qdr_connection_t);
DEQ_LINKS_N(ACTIVATE, qdr_connection_t);
+ uint64_t identity;
qdr_core_t *core;
void *user_context;
bool incoming;
@@ -464,6 +482,7 @@ struct qdr_connection_t {
qdr_link_ref_list_t links_with_credit;
char *tenant_space;
int tenant_space_len;
+ qdr_connection_info_t *connection_info;
};
ALLOC_DECLARE(qdr_connection_t);
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/a38673a6/src/router_node.c
----------------------------------------------------------------------
diff --git a/src/router_node.c b/src/router_node.c
index d027388..75d2101 100644
--- a/src/router_node.c
+++ b/src/router_node.c
@@ -26,6 +26,7 @@
#include "dispatch_private.h"
#include "entity_cache.h"
#include "router_private.h"
+#include <qpid/dispatch/router_core.h>
const char *QD_ROUTER_NODE_TYPE = "router.node";
const char *QD_ROUTER_ADDRESS_TYPE = "router.address";
@@ -595,15 +596,50 @@ static void AMQP_opened_handler(qd_router_t *router, qd_connection_t *conn, bool
const char *vhost = 0;
uint64_t connection_id = qd_connection_connection_id(conn);
pn_connection_t *pn_conn = qd_connection_pn(conn);
+ pn_transport_t *tport = 0;
+ pn_sasl_t *sasl = 0;
+ pn_ssl_t *ssl = 0;
+ const char *mech = 0;
+ const char *user = 0;
+ const char *container = conn->pn_conn ? pn_connection_remote_container(conn->pn_conn) : 0;
+ if (conn->pn_conn) {
+ tport = pn_connection_transport(conn->pn_conn);
+ ssl = conn->ssl;
+ }
+ if (tport) {
+ sasl = pn_sasl(tport);
+ if(conn->user_id)
+ user = conn->user_id;
+ else
+ user = pn_transport_get_user(tport);
+ }
+
+ if (sasl)
+ mech = pn_sasl_get_mech(sasl);
+
+ char *host = 0;
+
+ const qd_server_config_t *config;
+ if (conn->connector) {
+ char host_local[255];
+ config = conn->connector->config;
+ snprintf(host_local, strlen(config->host)+strlen(config->port)+2, "%s:%s", config->host, config->port);
+ host = &host_local[0];
+ }
+ else
+ host = (char *)qdpn_connector_name(conn->pn_cxtr);
+
qd_router_connection_get_config(conn, &role, &cost, &name, &multi_tenant,
&strip_annotations_in, &strip_annotations_out, &link_capacity);
+ pn_data_t *props = pn_conn ? pn_connection_remote_properties(pn_conn) : 0;
+
if (role == QDR_ROLE_INTER_ROUTER) {
//
// Check the remote properties for an inter-router cost value.
//
- pn_data_t *props = pn_conn ? pn_connection_remote_properties(pn_conn) : 0;
+
if (props) {
pn_data_rewind(props);
pn_data_next(props);
@@ -634,10 +670,40 @@ static void AMQP_opened_handler(qd_router_t *router, qd_connection_t *conn, bool
if (multi_tenant)
vhost = pn_connection_remote_hostname(pn_conn);
+ char proto[50];
+ memset(proto, 0, 50);
+ char cipher[50];
+ memset(cipher, 0, 50);
+
+ int ssl_ssf = 0;
+
+ if (ssl) {
+ pn_ssl_get_protocol_name(ssl, proto, 50);
+ pn_ssl_get_cipher_name(ssl, cipher, 50);
+ ssl_ssf = pn_ssl_get_ssf(ssl);
+ }
+
+
+ qdr_connection_info_t *connection_info = qdr_connection_info(tport && pn_transport_is_encrypted(tport),
+ tport && pn_transport_is_authenticated(tport),
+ conn->opened,
+ (char *)mech,
+ conn->connector ? QD_OUTGOING : QD_INCOMING,
+ host,
+ proto,
+ cipher,
+ (char *)user,
+ container,
+ props,
+ ssl_ssf);
+
qdr_connection_t *qdrc = qdr_connection_opened(router->router_core, inbound, role, cost, connection_id, name,
pn_connection_remote_container(pn_conn),
- strip_annotations_in, strip_annotations_out, link_capacity,
- vhost);
+ strip_annotations_in,
+ strip_annotations_out,
+ link_capacity,
+ vhost,
+ connection_info);
qd_connection_set_context(conn, qdrc);
qdr_connection_set_context(qdrc, conn);
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/a38673a6/src/server.c
----------------------------------------------------------------------
diff --git a/src/server.c b/src/server.c
index 91338a0..4a937cd 100644
--- a/src/server.c
+++ b/src/server.c
@@ -121,19 +121,6 @@ static void qd_transport_tracer(pn_transport_t *transport, const char *message)
qd_log(ctx->server->log_source, QD_LOG_TRACE, "[%"PRIu64"]:%s", ctx->connection_id, message);
}
-static qd_error_t connection_entity_update_host(qd_entity_t* entity, qd_connection_t *conn)
-{
- const qd_server_config_t *config;
- if (conn->connector) {
- config = conn->connector->config;
- char host[strlen(config->host)+strlen(config->port)+2];
- snprintf(host, sizeof(host), "%s:%s", config->host, config->port);
- return qd_entity_set_string(entity, "host", host);
- }
- else
- return qd_entity_set_string(entity, "host", qdpn_connector_name(conn->pn_cxtr));
-}
-
/**
* Save displayNameService object instance and ImportModule address
@@ -390,131 +377,12 @@ void qd_connection_set_user(qd_connection_t *conn)
}
-static void qd_get_next_pn_data(pn_data_t *data, const char **d, int *d1)
-{
- if (pn_data_next(data)) {
- switch (pn_data_type(data)) {
- case PN_STRING:
- *d = pn_data_get_string(data).start;
- break;
- case PN_SYMBOL:
- *d = pn_data_get_symbol(data).start;
- break;
- case PN_INT:
- *d1 = pn_data_get_int(data);
- break;
- default:
- break;
- }
- }
-}
-
-
-/**
- * Obtains the remote connection properties and sets it as a map on the passed in entity.
- * @param
- */
-static qd_error_t qd_set_connection_properties(qd_entity_t* entity, qd_connection_t *conn)
-{
- // Get the connection properties and stick it into the entity as a map
- pn_data_t *data = pn_connection_remote_properties(conn->pn_conn);
- const char *props = "properties";
- if (data) {
- size_t count = pn_data_get_map(data);
- pn_data_enter(data);
-
- // Create a new map.
- qd_error_t error_t = qd_entity_set_map(entity, props);
-
- if (error_t != QD_ERROR_NONE)
- return error_t;
-
- for (size_t i = 0; i < count/2; i++) {
- const char *key = 0;
- // We are assuming for now that all keys are strings
- qd_get_next_pn_data(data, &key, 0);
- const char *value_string = 0;
- int value_int = 0;
- // We are assuming for now that all values are either strings or integers
- qd_get_next_pn_data(data, &value_string, &value_int);
-
- if (value_string)
- error_t = qd_entity_set_map_key_value_string(entity, props, key, value_string);
- else if (value_int)
- error_t = qd_entity_set_map_key_value_int(entity, props, key, value_int);
-
- if (error_t != QD_ERROR_NONE)
- return error_t;
- }
- pn_data_exit(data);
- }
-
- return QD_ERROR_NONE;
-}
-
-
qd_error_t qd_entity_refresh_sslProfile(qd_entity_t* entity, void *impl)
{
return QD_ERROR_NONE;
}
-qd_error_t qd_entity_refresh_connection(qd_entity_t* entity, void *impl)
-{
- qd_connection_t *conn = (qd_connection_t*)impl;
- pn_transport_t *tport = 0;
- pn_sasl_t *sasl = 0;
- pn_ssl_t *ssl = 0;
- const char *mech = 0;
- const char *user = 0;
-
- if (conn->pn_conn) {
- tport = pn_connection_transport(conn->pn_conn);
- ssl = conn->ssl;
- }
- if (tport) {
- sasl = pn_sasl(tport);
- if(conn->user_id)
- user = conn->user_id;
- else
- user = pn_transport_get_user(tport);
- }
- if (sasl)
- mech = pn_sasl_get_mech(sasl);
-
- if (qd_entity_set_bool(entity, "opened", conn->opened) == 0 &&
- qd_entity_set_string(entity, "container",
- conn->pn_conn ? pn_connection_remote_container(conn->pn_conn) : 0) == 0 &&
- connection_entity_update_host(entity, conn) == 0 &&
- qd_entity_set_string(entity, "sasl", mech) == 0 &&
- qd_entity_set_string(entity, "role", conn->role) == 0 &&
- qd_entity_set_string(entity, "dir", conn->connector ? "out" : "in") == 0 &&
- qd_entity_set_string(entity, "user", user) == 0 &&
- qd_set_connection_properties(entity, conn) == 0 &&
- qd_entity_set_long(entity, "identity", conn->connection_id) == 0 &&
- qd_entity_set_bool(entity, "isAuthenticated", tport && pn_transport_is_authenticated(tport)) == 0 &&
- qd_entity_set_bool(entity, "isEncrypted", tport && pn_transport_is_encrypted(tport)) == 0 &&
- qd_entity_set_bool(entity, "ssl", ssl != 0) == 0) {
-
- if (ssl) {
- #define SSL_ATTR_SIZE 50
- char proto[SSL_ATTR_SIZE];
- char cipher[SSL_ATTR_SIZE];
- pn_ssl_get_protocol_name(ssl, proto, SSL_ATTR_SIZE);
- pn_ssl_get_cipher_name(ssl, cipher, SSL_ATTR_SIZE);
- if (qd_entity_set_string(entity, "sslProto", proto) == 0 &&
- qd_entity_set_string(entity, "sslCipher", cipher) == 0 &&
- qd_entity_set_long(entity, "sslSsf", pn_ssl_get_ssf(ssl)) == 0) {
- return QD_ERROR_NONE;
- }
- }
- else
- return QD_ERROR_NONE;
- }
-
- return qd_error_code();
-}
-
static qd_error_t listener_setup_ssl(qd_connection_t *ctx, const qd_server_config_t *config, pn_transport_t *tport)
{
pn_ssl_domain_t *domain = pn_ssl_domain(PN_SSL_MODE_SERVER);
@@ -662,7 +530,6 @@ static void thread_process_listeners_LH(qd_server_t *qd_server)
// qd_server->lock is already locked
DEQ_INSERT_TAIL(qd_server->connections, ctx);
- qd_entity_cache_add(QD_CONNECTION_TYPE, ctx);
qd_log(qd_server->log_source, QD_LOG_TRACE, "Accepting %s with connection id [%"PRIu64"]",
log_incoming(logbuf, sizeof(logbuf), cxtr), ctx->connection_id);
@@ -1214,7 +1081,6 @@ static void cxtr_try_open(void *context)
ctx->pn_cxtr = qdpn_connector(ct->server->driver, ct->config->host, ct->config->port, ct->config->protocol_family, (void*) ctx);
if (ctx->pn_cxtr) {
DEQ_INSERT_TAIL(ct->server->connections, ctx);
- qd_entity_cache_add(QD_CONNECTION_TYPE, ctx);
}
sys_mutex_unlock(ct->server->lock);
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/a38673a6/tests/system_test.py
----------------------------------------------------------------------
diff --git a/tests/system_test.py b/tests/system_test.py
index 7d8c95d..0c67a6e 100755
--- a/tests/system_test.py
+++ b/tests/system_test.py
@@ -341,7 +341,6 @@ class Qdrouterd(Process):
if wait:
self.wait_ready()
-
@property
def management(self):
"""Return a management agent proxy for this router"""
@@ -414,11 +413,10 @@ class Qdrouterd(Process):
try:
ret_val = False
response = self.management.query(type="org.apache.qpid.dispatch.connection")
- index_name = response.attribute_names.index('name')
- index_identity = response.attribute_names.index('identity')
+ index_host = response.attribute_names.index('host')
for result in response.results:
- outs = 'connection/%s:%s:%s' % (host, port, str(result[index_identity]))
- if result[index_name] == outs:
+ outs = '%s:%s' % (host, port)
+ if result[index_host] == outs:
ret_val = True
return ret_val
except:
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/a38673a6/tests/system_tests_deprecated.py
----------------------------------------------------------------------
diff --git a/tests/system_tests_deprecated.py b/tests/system_tests_deprecated.py
index f66e14a..da7c19a 100644
--- a/tests/system_tests_deprecated.py
+++ b/tests/system_tests_deprecated.py
@@ -100,13 +100,13 @@ class RouterTestDeprecated(RouterTestPlainSaslCommon):
# ContainerEntity has been deprecated.
# role should be inter-router
- self.assertEqual(u'inter-router', local_node.query(type='org.apache.qpid.dispatch.connection').results[0][9])
+ self.assertEqual(u'inter-router', local_node.query(type='org.apache.qpid.dispatch.connection').results[0][2])
# sasl must be plain
- self.assertEqual(u'PLAIN', local_node.query(type='org.apache.qpid.dispatch.connection').results[0][12])
+ self.assertEqual(u'PLAIN', local_node.query(type='org.apache.qpid.dispatch.connection').results[0][5])
# user must be test@domain.com
- self.assertEqual(u'test@domain.com', local_node.query(type='org.apache.qpid.dispatch.connection').results[0][16])
+ self.assertEqual(u'test@domain.com', local_node.query(type='org.apache.qpid.dispatch.connection').results[0][7])
# Make sure that the deprecated linkRoutePattern is set up correctly
query_response = local_node.query(type='org.apache.qpid.dispatch.router.config.linkRoute')
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/a38673a6/tests/system_tests_management.py
----------------------------------------------------------------------
diff --git a/tests/system_tests_management.py b/tests/system_tests_management.py
index 129e70f..19f69fc 100644
--- a/tests/system_tests_management.py
+++ b/tests/system_tests_management.py
@@ -325,7 +325,7 @@ class ManagementTest(system_test.TestCase):
def test_connection(self):
"""Verify there is at least one connection"""
- response = self.node.query(type='connection')
+ response = self.node.query(type='org.apache.qpid.dispatch.connection')
self.assertTrue(response.results)
def test_router(self):
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/a38673a6/tests/system_tests_one_router.py
----------------------------------------------------------------------
diff --git a/tests/system_tests_one_router.py b/tests/system_tests_one_router.py
index 0ac4f72..2c0dce9 100644
--- a/tests/system_tests_one_router.py
+++ b/tests/system_tests_one_router.py
@@ -1128,10 +1128,10 @@ class RouterTest(TestCase):
node = Node.connect(self.router.addresses[0])
- results = [[{u'connection': u'properties', u'int_property': 6451}], [{}]]
+ results = node.query(type='org.apache.qpid.dispatch.connection', attribute_names=[u'properties']).results
- self.assertEqual(node.query(type='org.apache.qpid.dispatch.connection', attribute_names=['properties']).results,
- results)
+ self.assertEqual(results[0][0][u'connection'], u'properties')
+ self.assertEqual(results[0][0][u'int_property'], 6451)
client.connection.close()
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/a38673a6/tests/system_tests_qdmanage.py
----------------------------------------------------------------------
diff --git a/tests/system_tests_qdmanage.py b/tests/system_tests_qdmanage.py
index 395d874..dde5df2 100644
--- a/tests/system_tests_qdmanage.py
+++ b/tests/system_tests_qdmanage.py
@@ -284,14 +284,15 @@ class QdmanageTest(TestCase):
# Re-create the connector and then try wait_connectors
self.create(long_type, name, str(QdmanageTest.inter_router_port))
- results = json.loads(self.run_qdmanage('QUERY --type=org.apache.qpid.dispatch.connection'))
-
+ outputs = json.loads(self.run_qdmanage(query_command))
created = False
- for result in results:
- name = result['name']
- conn_name = 'connection/0.0.0.0:%s:' % QdmanageTest.inter_router_port
- if conn_name in name:
+ for output in outputs:
+ conn_name = 'connector/127.0.0.1:%s' % QdmanageTest.inter_router_port
+ conn_name_1 = 'connector/0.0.0.0:%s' % QdmanageTest.inter_router_port
+ if conn_name == output['name'] or conn_name_1 == output['name']:
created = True
+ break
+
self.assertTrue(created)
def test_zzz_add_connector(self):
@@ -424,14 +425,15 @@ class QdmanageTestSsl(QdmanageTest):
# Re-create the connector and then try wait_connectors
self.create(long_type, name, str(QdmanageTestSsl.inter_router_port))
- results = json.loads(self.run_qdmanage('QUERY --type=org.apache.qpid.dispatch.connection'))
+ outputs = json.loads(self.run_qdmanage(query_command))
created = False
- for result in results:
- name = result['name']
- conn_name = 'connection/0.0.0.0:%s:' % QdmanageTestSsl.inter_router_port
- if conn_name in name:
+ for output in outputs:
+ conn_name = 'connector/127.0.0.1:%s' % QdmanageTestSsl.inter_router_port
+ conn_name_1 = 'connector/0.0.0.0:%s' % QdmanageTestSsl.inter_router_port
+ if conn_name == output['name'] or conn_name_1 == output['name']:
created = True
+ break
self.assertTrue(created)
def test_create_delete_ssl_profile(self):
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/a38673a6/tests/system_tests_sasl_plain.py
----------------------------------------------------------------------
diff --git a/tests/system_tests_sasl_plain.py b/tests/system_tests_sasl_plain.py
index 17ca86b..4de567d 100644
--- a/tests/system_tests_sasl_plain.py
+++ b/tests/system_tests_sasl_plain.py
@@ -283,16 +283,16 @@ class RouterTestPlainSaslOverSsl(RouterTestPlainSaslCommon):
local_node = Node.connect(self.routers[0].addresses[1], timeout=TIMEOUT)
# sslProto should be TLSv1/SSLv3
- self.assertEqual(u'TLSv1/SSLv3', local_node.query(type='org.apache.qpid.dispatch.connection').results[0][4])
+ self.assertEqual(u'TLSv1/SSLv3', local_node.query(type='org.apache.qpid.dispatch.connection').results[0][9])
# role should be inter-router
- self.assertEqual(u'inter-router', local_node.query(type='org.apache.qpid.dispatch.connection').results[0][9])
+ self.assertEqual(u'inter-router', local_node.query(type='org.apache.qpid.dispatch.connection').results[0][2])
# sasl must be plain
- self.assertEqual(u'PLAIN', local_node.query(type='org.apache.qpid.dispatch.connection').results[0][12])
+ self.assertEqual(u'PLAIN', local_node.query(type='org.apache.qpid.dispatch.connection').results[0][5])
# user must be test@domain.com
- self.assertEqual(u'test@domain.com', local_node.query(type='org.apache.qpid.dispatch.connection').results[0][16])
+ self.assertEqual(u'test@domain.com', local_node.query(type='org.apache.qpid.dispatch.connection').results[0][7])
class RouterTestVerifyHostNameYes(RouterTestPlainSaslCommon):
@@ -373,12 +373,11 @@ class RouterTestVerifyHostNameYes(RouterTestPlainSaslCommon):
# There should be only two connections.
# There will be no inter-router connection
self.assertEqual(2, len(local_node.query(type='org.apache.qpid.dispatch.connection').results))
- self.assertEqual('in', local_node.query(type='org.apache.qpid.dispatch.connection').results[0][15])
- self.assertEqual('normal', local_node.query(type='org.apache.qpid.dispatch.connection').results[0][9])
- self.assertEqual('anonymous', local_node.query(type='org.apache.qpid.dispatch.connection').results[0][16])
-
- self.assertEqual('normal', local_node.query(type='org.apache.qpid.dispatch.connection').results[1][9])
- self.assertEqual('anonymous', local_node.query(type='org.apache.qpid.dispatch.connection').results[1][16])
+ self.assertEqual('in', local_node.query(type='org.apache.qpid.dispatch.connection').results[0][3])
+ self.assertEqual('normal', local_node.query(type='org.apache.qpid.dispatch.connection').results[0][2])
+ self.assertEqual('anonymous', local_node.query(type='org.apache.qpid.dispatch.connection').results[0][7])
+ self.assertEqual('normal', local_node.query(type='org.apache.qpid.dispatch.connection').results[1][2])
+ self.assertEqual('anonymous', local_node.query(type='org.apache.qpid.dispatch.connection').results[1][7])
class RouterTestVerifyHostNameNo(RouterTestPlainSaslCommon):
@@ -471,23 +470,23 @@ class RouterTestVerifyHostNameNo(RouterTestPlainSaslCommon):
found = False
for N in range(0, len(results)):
- if results[N][0] == search:
+ if results[N][4] == search:
found = True
break
self.assertTrue(found, "Connection to %s not found" % search)
# sslProto should be TLSv1/SSLv3
- self.assertEqual(u'TLSv1/SSLv3', results[N][4])
+ self.assertEqual(u'TLSv1/SSLv3', results[N][9])
# role should be inter-router
- self.assertEqual(u'inter-router', results[N][9])
+ self.assertEqual(u'inter-router', results[N][2])
# sasl must be plain
- self.assertEqual(u'PLAIN', results[N][12])
+ self.assertEqual(u'PLAIN', results[N][5])
# user must be test@domain.com
- self.assertEqual(u'test@domain.com', results[N][16])
+ self.assertEqual(u'test@domain.com', results[N][7])
def test_inter_router_plain_over_ssl_exists(self):
"""
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/a38673a6/tests/system_tests_user_id.py
----------------------------------------------------------------------
diff --git a/tests/system_tests_user_id.py b/tests/system_tests_user_id.py
index 1d1d07d..7c71e6a 100644
--- a/tests/system_tests_user_id.py
+++ b/tests/system_tests_user_id.py
@@ -240,72 +240,72 @@ class QdSSLUseridTest(TestCase):
addr = self.address(0).replace("amqp", "amqps")
node = Node.connect(addr, ssl_domain=domain)
- user_id = node.query(type='org.apache.qpid.dispatch.connection', attribute_names=['user']).results[0][0]
+ user_id = node.query(type='org.apache.qpid.dispatch.connection', attribute_names=[u'user']).results[0][0]
self.assertEqual("3eccbf1a2f3e46da823c63a9da9158983cb495a3", user_id)
addr = self.address(1).replace("amqp", "amqps")
node = Node.connect(addr, ssl_domain=domain)
self.assertEqual("72d543690cb0a8fc2d0f4c704c65411b9ee8ad53839fced4c720d73e58e4f0d7",
- node.query(type='org.apache.qpid.dispatch.connection', attribute_names=['user']).results[1][0])
+ node.query(type='org.apache.qpid.dispatch.connection', attribute_names=[u'user']).results[1][0])
addr = self.address(2).replace("amqp", "amqps")
node = Node.connect(addr, ssl_domain=domain)
self.assertEqual("c6de3a340014b0f8a1d2b41d22e414fc5756494ffa3c8760bbff56f3aa9f179a5a6eae09413fd7a6afbf36b5fb4bad8795c2836774acfe00a701797cc2a3a9ab",
- node.query(type='org.apache.qpid.dispatch.connection', attribute_names=['user']).results[2][0])
+ node.query(type='org.apache.qpid.dispatch.connection', attribute_names=[u'user']).results[2][0])
addr = self.address(3).replace("amqp", "amqps")
node = Node.connect(addr, ssl_domain=domain)
self.assertEqual("72d543690cb0a8fc2d0f4c704c65411b9ee8ad53839fced4c720d73e58e4f0d7;127.0.0.1;Client;Dev;US;NC",
- node.query(type='org.apache.qpid.dispatch.connection', attribute_names=['user']).results[3][0])
+ node.query(type='org.apache.qpid.dispatch.connection', attribute_names=[u'user']).results[3][0])
addr = self.address(4).replace("amqp", "amqps")
node = Node.connect(addr, ssl_domain=domain)
self.assertEqual("3eccbf1a2f3e46da823c63a9da9158983cb495a3;US;NC",
- node.query(type='org.apache.qpid.dispatch.connection', attribute_names=['user']).results[4][0])
+ node.query(type='org.apache.qpid.dispatch.connection', attribute_names=[u'user']).results[4][0])
addr = self.address(5).replace("amqp", "amqps")
node = Node.connect(addr, ssl_domain=domain)
self.assertEqual("US;NC;c6de3a340014b0f8a1d2b41d22e414fc5756494ffa3c8760bbff56f3aa9f179a5a6eae09413fd7a6afbf36b5fb4bad8795c2836774acfe00a701797cc2a3a9ab",
- node.query(type='org.apache.qpid.dispatch.connection', attribute_names=['user']).results[5][0])
+ node.query(type='org.apache.qpid.dispatch.connection', attribute_names=[u'user']).results[5][0])
addr = self.address(6).replace("amqp", "amqps")
node = Node.connect(addr, ssl_domain=domain)
self.assertEqual("127.0.0.1;NC;Dev;US;Client",
- node.query(type='org.apache.qpid.dispatch.connection', attribute_names=['user']).results[6][0])
+ node.query(type='org.apache.qpid.dispatch.connection', attribute_names=[u'user']).results[6][0])
addr = self.address(7).replace("amqp", "amqps")
node = Node.connect(addr, ssl_domain=domain)
self.assertEqual("NC;US;Client;Dev;127.0.0.1;Raleigh",
- node.query(type='org.apache.qpid.dispatch.connection', attribute_names=['user']).results[7][0])
+ node.query(type='org.apache.qpid.dispatch.connection', attribute_names=[u'user']).results[7][0])
addr = self.address(8).replace("amqp", "amqps")
node = Node.connect(addr, ssl_domain=domain)
self.assertEqual("C=US,ST=NC,L=Raleigh,OU=Dev,O=Client,CN=127.0.0.1",
- node.query(type='org.apache.qpid.dispatch.connection', attribute_names=['user']).results[8][0])
+ node.query(type='org.apache.qpid.dispatch.connection', attribute_names=[u'user']).results[8][0])
addr = self.address(9).replace("amqp", "amqps")
node = Node.connect(addr, ssl_domain=domain)
self.assertEqual("C=US,ST=NC,L=Raleigh,OU=Dev,O=Client,CN=127.0.0.1",
- node.query(type='org.apache.qpid.dispatch.connection', attribute_names=['user']).results[9][0])
+ node.query(type='org.apache.qpid.dispatch.connection', attribute_names=[u'user']).results[9][0])
addr = self.address(10).replace("amqp", "amqps")
node = Node.connect(addr, ssl_domain=domain)
- user = node.query(type='org.apache.qpid.dispatch.connection', attribute_names=['user']).results[10][0]
+ user = node.query(type='org.apache.qpid.dispatch.connection', attribute_names=[u'user']).results[10][0]
self.assertEqual("C=US,ST=NC,L=Raleigh,OU=Dev,O=Client,CN=127.0.0.1", str(user))
addr = self.address(11).replace("amqp", "amqps")
node = Node.connect(addr)
- user = node.query(type='org.apache.qpid.dispatch.connection', attribute_names=['user']).results[11][0]
+ user = node.query(type='org.apache.qpid.dispatch.connection', attribute_names=[u'user']).results[11][0]
self.assertEqual("anonymous", user)
addr = self.address(12).replace("amqp", "amqps")
node = Node.connect(addr, ssl_domain=domain)
- user = node.query(type='org.apache.qpid.dispatch.connection', attribute_names=['user']).results[12][0]
+ user = node.query(type='org.apache.qpid.dispatch.connection', attribute_names=[u'user']).results[12][0]
self.assertEqual("user12", str(user))
addr = self.address(13).replace("amqp", "amqps")
node = Node.connect(addr, ssl_domain=domain)
- user_id = node.query(type='org.apache.qpid.dispatch.connection', attribute_names=['user']).results[13][0]
+ user_id = node.query(type='org.apache.qpid.dispatch.connection', attribute_names=[u'user']).results[13][0]
self.assertEqual("user13", user_id)
node.close()
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org