You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by gm...@apache.org on 2016/09/14 18:37:24 UTC

qpid-dispatch git commit: DISPATCH-500 - Fixed code to use qdr_field_t to pass around the name and identity of management objects

Repository: qpid-dispatch
Updated Branches:
  refs/heads/master 62899c0b4 -> 91837164d


DISPATCH-500 - Fixed code to use qdr_field_t to pass around the name and identity of management objects

(cherry picked from commit 52b5a19aca807b4b3abe8b9e81a9b4819e2d8773)


Project: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/commit/91837164
Tree: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/tree/91837164
Diff: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/diff/91837164

Branch: refs/heads/master
Commit: 91837164df71f9155fd50a962fa1d6e151213529
Parents: 62899c0
Author: Ganesh Murthy <gm...@redhat.com>
Authored: Wed Sep 14 14:10:32 2016 -0400
Committer: Ganesh Murthy <gm...@redhat.com>
Committed: Wed Sep 14 14:34:52 2016 -0400

----------------------------------------------------------------------
 src/router_config.c                   | 27 ++++++++++++++++++---
 src/router_core/agent.c               | 39 ++++++++++++++++++------------
 src/router_core/router_core.c         | 11 +++++++++
 src/router_core/router_core_private.h |  5 ++--
 tests/system_tests_qdmanage.py        | 27 +++++++++++++++++++++
 5 files changed, 89 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/91837164/src/router_config.c
----------------------------------------------------------------------
diff --git a/src/router_config.c b/src/router_config.c
index 1c37851..a100bbf 100644
--- a/src/router_config.c
+++ b/src/router_config.c
@@ -280,7 +280,14 @@ qd_error_t qd_router_configure_address(qd_router_t *router, qd_entity_t *entity)
         qd_parsed_field_t   *in_body = qd_parse(iter);
         qd_field_iterator_free(iter);
 
-        qdr_manage_create(router->router_core, 0, QD_ROUTER_CONFIG_ADDRESS, 0, in_body, 0);
+        qd_field_iterator_t *name_iter = 0;
+
+        if (name)
+            name_iter = qd_field_iterator_string(name);
+
+        qdr_manage_create(router->router_core, 0, QD_ROUTER_CONFIG_ADDRESS, name_iter, in_body, 0);
+
+        qd_field_iterator_free(name_iter);
 
 
     } while(0);
@@ -365,7 +372,14 @@ qd_error_t qd_router_configure_link_route(qd_router_t *router, qd_entity_t *enti
         qd_parsed_field_t   *in_body = qd_parse(iter);
         qd_field_iterator_free(iter);
 
-        qdr_manage_create(router->router_core, 0, QD_ROUTER_CONFIG_LINK_ROUTE, 0, in_body, 0);
+        qd_field_iterator_t *name_iter = 0;
+
+        if (name)
+            name_iter = qd_field_iterator_string(name);
+
+        qdr_manage_create(router->router_core, 0, QD_ROUTER_CONFIG_LINK_ROUTE, name_iter, in_body, 0);
+
+        qd_field_iterator_free(name_iter);
 
     } while(0);
 
@@ -450,7 +464,14 @@ qd_error_t qd_router_configure_auto_link(qd_router_t *router, qd_entity_t *entit
         qd_parsed_field_t   *in_body = qd_parse(iter);
         qd_field_iterator_free(iter);
 
-        qdr_manage_create(router->router_core, 0, QD_ROUTER_CONFIG_AUTO_LINK, 0, in_body, 0);
+        qd_field_iterator_t *name_iter = 0;
+
+        if (name)
+            name_iter = qd_field_iterator_string(name);
+
+        qdr_manage_create(router->router_core, 0, QD_ROUTER_CONFIG_AUTO_LINK, name_iter, in_body, 0);
+
+        qd_field_iterator_free(name_iter);
 
     } while (0);
 

http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/91837164/src/router_core/agent.c
----------------------------------------------------------------------
diff --git a/src/router_core/agent.c b/src/router_core/agent.c
index 272b75c..16dd30b 100644
--- a/src/router_core/agent.c
+++ b/src/router_core/agent.c
@@ -112,7 +112,7 @@ void qdr_manage_create(qdr_core_t              *core,
 
     // Create a query object here
     action->args.agent.query = qdr_query(core, context, type, out_body);
-    action->args.agent.name = name;
+    action->args.agent.name = qdr_field_from_iter(name);
     action->args.agent.in_body = in_body;
 
     qdr_action_enqueue(core, action);
@@ -129,8 +129,8 @@ void qdr_manage_delete(qdr_core_t *core,
 
     // Create a query object here
     action->args.agent.query = qdr_query(core, context, type, 0);
-    action->args.agent.name = name;
-    action->args.agent.identity = identity;
+    action->args.agent.name = qdr_field_from_iter(name);
+    action->args.agent.identity = qdr_field_from_iter(identity);
 
     qdr_action_enqueue(core, action);
 }
@@ -147,8 +147,8 @@ void qdr_manage_read(qdr_core_t *core,
 
     // Create a query object here
     action->args.agent.query = qdr_query(core, context, entity_type, body);
-    action->args.agent.identity  = identity;
-    action->args.agent.name = name;
+    action->args.agent.identity  = qdr_field_from_iter(identity);
+    action->args.agent.name = qdr_field_from_iter(name);
 
     qdr_action_enqueue(core, action);
 }
@@ -164,8 +164,8 @@ void qdr_manage_update(qdr_core_t              *core,
 {
     qdr_action_t *action = qdr_action(qdr_manage_update_CT, "manage_update");
     action->args.agent.query = qdr_query(core, context, type, out_body);
-    action->args.agent.name = name;
-    action->args.agent.identity = identity;
+    action->args.agent.name = qdr_field_from_iter(name);
+    action->args.agent.identity = qdr_field_from_iter(identity);
     action->args.agent.in_body = in_body;
 
     qdr_action_enqueue(core, action);
@@ -330,8 +330,8 @@ static void qdr_agent_forbidden(qdr_core_t *core, qdr_query_t *query, bool op_qu
 
 static void qdr_manage_read_CT(qdr_core_t *core, qdr_action_t *action, bool discard)
 {
-    qd_field_iterator_t     *identity   = action->args.agent.identity;
-    qd_field_iterator_t     *name       = action->args.agent.name;
+    qd_field_iterator_t     *identity   = qdr_field_iterator(action->args.agent.identity);
+    qd_field_iterator_t     *name       = qdr_field_iterator(action->args.agent.name);
     qdr_query_t             *query      = action->args.agent.query;
 
     switch (query->entity_type) {
@@ -345,12 +345,15 @@ static void qdr_manage_read_CT(qdr_core_t *core, qdr_action_t *action, bool disc
     case QD_ROUTER_EXCHANGE:          break;
     case QD_ROUTER_BINDING:           break;
    }
+
+    qdr_field_free(action->args.agent.name);
+    qdr_field_free(action->args.agent.identity);
 }
 
 
 static void qdr_manage_create_CT(qdr_core_t *core, qdr_action_t *action, bool discard)
 {
-    qd_field_iterator_t     *name       = action->args.agent.name;
+    qd_field_iterator_t     *name       = qdr_field_iterator(action->args.agent.name);
     qdr_query_t             *query      = action->args.agent.query;
     qd_parsed_field_t       *in_body    = action->args.agent.in_body;
 
@@ -367,14 +370,15 @@ static void qdr_manage_create_CT(qdr_core_t *core, qdr_action_t *action, bool di
 
    }
 
+   qdr_field_free(action->args.agent.name);
    qd_parse_free(in_body);
 }
 
 
 static void qdr_manage_delete_CT(qdr_core_t *core, qdr_action_t *action, bool discard)
 {
-    qd_field_iterator_t     *name       = action->args.agent.name;
-    qd_field_iterator_t     *identity   = action->args.agent.identity;
+    qd_field_iterator_t     *name       = qdr_field_iterator(action->args.agent.name);
+    qd_field_iterator_t     *identity   = qdr_field_iterator(action->args.agent.identity);
     qdr_query_t             *query      = action->args.agent.query;
 
     switch (query->entity_type) {
@@ -388,12 +392,15 @@ static void qdr_manage_delete_CT(qdr_core_t *core, qdr_action_t *action, bool di
     case QD_ROUTER_EXCHANGE:          break;
     case QD_ROUTER_BINDING:           break;
    }
+
+   qdr_field_free(action->args.agent.name);
+   qdr_field_free(action->args.agent.identity);
 }
 
 static void qdr_manage_update_CT(qdr_core_t *core, qdr_action_t *action, bool discard)
 {
-    qd_field_iterator_t     *identity   = action->args.agent.identity;
-    qd_field_iterator_t     *name       = action->args.agent.name;
+    qd_field_iterator_t     *identity   = qdr_field_iterator(action->args.agent.identity);
+    qd_field_iterator_t     *name       = qdr_field_iterator(action->args.agent.name);
     qdr_query_t             *query      = action->args.agent.query;
     qd_parsed_field_t       *in_body    = action->args.agent.in_body;
 
@@ -409,7 +416,9 @@ static void qdr_manage_update_CT(qdr_core_t *core, qdr_action_t *action, bool di
     case QD_ROUTER_BINDING:           break;
    }
 
-    qd_parse_free(in_body);
+   qdr_field_free(action->args.agent.name);
+   qdr_field_free(action->args.agent.identity);
+   qd_parse_free(in_body);
 }
 
 

http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/91837164/src/router_core/router_core.c
----------------------------------------------------------------------
diff --git a/src/router_core/router_core.c b/src/router_core/router_core.c
index 937e112..07b7035 100644
--- a/src/router_core/router_core.c
+++ b/src/router_core/router_core.c
@@ -144,6 +144,9 @@ qdr_field_t *qdr_field(const char *text)
 
 qdr_field_t *qdr_field_from_iter(qd_field_iterator_t *iter)
 {
+    if (!iter)
+        return 0;
+
     qdr_field_t *field = new_qdr_field_t();
     qd_buffer_t *buf;
     int          remaining;
@@ -167,6 +170,14 @@ qdr_field_t *qdr_field_from_iter(qd_field_iterator_t *iter)
     return field;
 }
 
+qd_field_iterator_t *qdr_field_iterator(qdr_field_t *field)
+{
+    if (!field)
+        return 0;
+
+    return field->iterator;
+}
+
 
 void qdr_field_free(qdr_field_t *field)
 {

http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/91837164/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 fc0673b..594e200 100644
--- a/src/router_core/router_core_private.h
+++ b/src/router_core/router_core_private.h
@@ -61,6 +61,7 @@ typedef struct {
 
 qdr_field_t *qdr_field(const char *string);
 qdr_field_t *qdr_field_from_iter(qd_field_iterator_t *iter);
+qd_field_iterator_t *qdr_field_iterator(qdr_field_t *field);
 void qdr_field_free(qdr_field_t *field);
 char *qdr_field_copy(qdr_field_t *field);
 
@@ -137,8 +138,8 @@ struct qdr_action_t {
         struct {
             qdr_query_t             *query;
             int                      offset;
-            qd_field_iterator_t     *identity;
-            qd_field_iterator_t     *name;
+            qdr_field_t             *identity;
+            qdr_field_t             *name;
             qd_parsed_field_t       *in_body;
         } agent;
 

http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/91837164/tests/system_tests_qdmanage.py
----------------------------------------------------------------------
diff --git a/tests/system_tests_qdmanage.py b/tests/system_tests_qdmanage.py
index 262e16a..346bd72 100644
--- a/tests/system_tests_qdmanage.py
+++ b/tests/system_tests_qdmanage.py
@@ -47,6 +47,9 @@ class QdmanageTest(TestCase):
                              'password': 'server-password'}),
             ('listener', {'port': cls.tester.get_port()}),
             ('connector', {'role': 'inter-router', 'port': cls.inter_router_port}),
+            ('address', {'name': 'test-address', 'prefix': 'abcd', 'distribution': 'multicast'}),
+            ('linkRoute', {'name': 'test-link-route', 'prefix': 'xyz', 'dir': 'in'}),
+            ('autoLink', {'name': 'test-auto-link', 'addr': 'mnop', 'dir': 'out'}),
             ('listener', {'port': cls.tester.get_port(), 'sslProfile': 'server-ssl'})
         ])
 
@@ -210,6 +213,30 @@ class QdmanageTest(TestCase):
         connector = json.loads(self.run_qdmanage(create_command))
         return connector
 
+    def test_check_address_name(self):
+        long_type = 'org.apache.qpid.dispatch.router.config.address'
+        query_command = 'QUERY --type=' + long_type
+        output = json.loads(self.run_qdmanage(query_command))
+        self.assertEqual(output[0]['name'], "test-address")
+        self.assertEqual(output[0]['distribution'], "multicast")
+        self.assertEqual(output[0]['prefix'], "abcd")
+
+    def test_check_link_route_name(self):
+        long_type = 'org.apache.qpid.dispatch.router.config.linkRoute'
+        query_command = 'QUERY --type=' + long_type
+        output = json.loads(self.run_qdmanage(query_command))
+        self.assertEqual(output[0]['name'], "test-link-route")
+        self.assertEqual(output[0]['dir'], "in")
+        self.assertEqual(output[0]['prefix'], "xyz")
+
+    def test_check_auto_link_name(self):
+        long_type = 'org.apache.qpid.dispatch.router.config.autoLink'
+        query_command = 'QUERY --type=' + long_type
+        output = json.loads(self.run_qdmanage(query_command))
+        self.assertEqual(output[0]['name'], "test-auto-link")
+        self.assertEqual(output[0]['dir'], "out")
+        self.assertEqual(output[0]['addr'], "mnop")
+
     def test_create_delete_connector(self):
         long_type = 'org.apache.qpid.dispatch.connector'
         query_command = 'QUERY --type=' + long_type


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