summaryrefslogtreecommitdiff
path: root/qpid/extras/dispatch/tests
diff options
context:
space:
mode:
authorTed Ross <tross@apache.org>2013-04-26 16:34:33 +0000
committerTed Ross <tross@apache.org>2013-04-26 16:34:33 +0000
commit64ab8be9c34528ef71ca5c58ff075ed57a48c9e0 (patch)
tree82c66d38e2d710d780b22c71d5afd6e00297082e /qpid/extras/dispatch/tests
parentcf474845241b0c206710dbd9c87fe2e752c512a0 (diff)
downloadqpid-python-64ab8be9c34528ef71ca5c58ff075ed57a48c9e0.tar.gz
NO-JIRA - Development update to Dispatch Router
- Began refactoring of the routing table to support in-process destinations and multi-hop paths. - Added API for the internal management agent. Began integrating the agent with the router module for communication. - Added field parsing to handle topological addresses. - Added tests. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1476280 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/extras/dispatch/tests')
-rw-r--r--qpid/extras/dispatch/tests/CMakeLists.txt11
-rw-r--r--qpid/extras/dispatch/tests/field_test.c149
-rw-r--r--qpid/extras/dispatch/tests/run_unit_tests.c (renamed from qpid/extras/dispatch/tests/run_tests.c)2
-rw-r--r--qpid/extras/dispatch/tests/server_test.c6
4 files changed, 160 insertions, 8 deletions
diff --git a/qpid/extras/dispatch/tests/CMakeLists.txt b/qpid/extras/dispatch/tests/CMakeLists.txt
index b92f66939f..362aac08e7 100644
--- a/qpid/extras/dispatch/tests/CMakeLists.txt
+++ b/qpid/extras/dispatch/tests/CMakeLists.txt
@@ -22,8 +22,9 @@
##
set(unit_test_SOURCES
alloc_test.c
+ field_test.c
message_test.c
- run_tests.c
+ run_unit_tests.c
server_test.c
timer_test.c
tool_test.c
@@ -32,7 +33,7 @@ set(unit_test_SOURCES
add_executable(unit_tests ${unit_test_SOURCES})
target_link_libraries(unit_tests qpid-dispatch)
-add_test(unit_tests_buf_512 unit_tests 512)
-add_test(unit_tests_buf_10K unit_tests 10000)
-add_test(unit_tests_buf_10 unit_tests 10)
-add_test(unit_tests_buf_1 unit_tests 1)
+add_test(unit_tests_buf_10000 unit_tests 10000)
+add_test(unit_tests_buf_512 unit_tests 512)
+add_test(unit_tests_buf_10 unit_tests 10)
+add_test(unit_tests_buf_1 unit_tests 1)
diff --git a/qpid/extras/dispatch/tests/field_test.c b/qpid/extras/dispatch/tests/field_test.c
new file mode 100644
index 0000000000..59fc3c4cfb
--- /dev/null
+++ b/qpid/extras/dispatch/tests/field_test.c
@@ -0,0 +1,149 @@
+/*
+ * 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 "test_case.h"
+#include <stdio.h>
+#include <string.h>
+#include <qpid/dispatch/iterator.h>
+
+#define FAIL_TEXT_SIZE 10000
+static char fail_text[FAIL_TEXT_SIZE];
+
+static char* test_view_global_dns(void *context)
+{
+ dx_field_iterator_t *iter = dx_field_iterator_string("amqp://host/global/sub", ITER_VIEW_ALL);
+ if (!dx_field_iterator_equal(iter, (unsigned char*) "amqp://host/global/sub"))
+ return "ITER_VIEW_ALL failed";
+
+ dx_field_iterator_reset_view(iter, ITER_VIEW_NO_HOST);
+ if (!dx_field_iterator_equal(iter, (unsigned char*) "global/sub"))
+ return "ITER_VIEW_NO_HOST failed";
+
+ dx_field_iterator_reset_view(iter, ITER_VIEW_NODE_ID);
+ if (!dx_field_iterator_equal(iter, (unsigned char*) "global"))
+ return "ITER_VIEW_NODE_ID failed";
+
+ dx_field_iterator_reset_view(iter, ITER_VIEW_NODE_SPECIFIC);
+ if (!dx_field_iterator_equal(iter, (unsigned char*) "sub"))
+ return "ITER_VIEW_NODE_SPECIFIC failed";
+
+ dx_field_iterator_reset_view(iter, ITER_VIEW_ADDRESS_HASH);
+ if (!dx_field_iterator_equal(iter, (unsigned char*) "Mglobal/sub"))
+ return "ITER_VIEW_ADDRESS_HASH failed";
+
+ return 0;
+}
+
+
+static char* test_view_global_non_dns(void *context)
+{
+ dx_field_iterator_t *iter = dx_field_iterator_string("amqp:/global/sub", ITER_VIEW_ALL);
+ if (!dx_field_iterator_equal(iter, (unsigned char*) "amqp:/global/sub"))
+ return "ITER_VIEW_ALL failed";
+
+ dx_field_iterator_reset_view(iter, ITER_VIEW_NO_HOST);
+ if (!dx_field_iterator_equal(iter, (unsigned char*) "global/sub"))
+ return "ITER_VIEW_NO_HOST failed";
+
+ dx_field_iterator_reset_view(iter, ITER_VIEW_NODE_ID);
+ if (!dx_field_iterator_equal(iter, (unsigned char*) "global"))
+ return "ITER_VIEW_NODE_ID failed";
+
+ dx_field_iterator_reset_view(iter, ITER_VIEW_NODE_SPECIFIC);
+ if (!dx_field_iterator_equal(iter, (unsigned char*) "sub"))
+ return "ITER_VIEW_NODE_SPECIFIC failed";
+
+ dx_field_iterator_reset_view(iter, ITER_VIEW_ADDRESS_HASH);
+ if (!dx_field_iterator_equal(iter, (unsigned char*) "Mglobal/sub"))
+ return "ITER_VIEW_ADDRESS_HASH failed";
+
+ return 0;
+}
+
+
+static char* test_view_global_no_host(void *context)
+{
+ dx_field_iterator_t *iter = dx_field_iterator_string("global/sub", ITER_VIEW_ALL);
+ if (!dx_field_iterator_equal(iter, (unsigned char*) "global/sub"))
+ return "ITER_VIEW_ALL failed";
+
+ dx_field_iterator_reset_view(iter, ITER_VIEW_NO_HOST);
+ if (!dx_field_iterator_equal(iter, (unsigned char*) "global/sub"))
+ return "ITER_VIEW_NO_HOST failed";
+
+ dx_field_iterator_reset_view(iter, ITER_VIEW_NODE_ID);
+ if (!dx_field_iterator_equal(iter, (unsigned char*) "global"))
+ return "ITER_VIEW_NODE_ID failed";
+
+ dx_field_iterator_reset_view(iter, ITER_VIEW_NODE_SPECIFIC);
+ if (!dx_field_iterator_equal(iter, (unsigned char*) "sub"))
+ return "ITER_VIEW_NODE_SPECIFIC failed";
+
+ dx_field_iterator_reset_view(iter, ITER_VIEW_ADDRESS_HASH);
+ if (!dx_field_iterator_equal(iter, (unsigned char*) "Mglobal/sub"))
+ return "ITER_VIEW_ADDRESS_HASH failed";
+
+ return 0;
+}
+
+
+static char* test_view_address_hash(void *context)
+{
+ struct {const char *addr; const char *view;} cases[] = {
+ {"amqp:/_local/my-addr/sub", "Lmy-addr/sub"},
+ {"amqp:/_local/my-addr", "Lmy-addr"},
+ {"amqp:/_topo/area/router/local/sub", "Aarea"},
+ {"amqp:/_topo/my-area/router/local/sub", "Rrouter"},
+ {"amqp:/_topo/my-area/my-router/local/sub", "Llocal/sub"},
+ {"amqp:/_topo/area/all/local/sub", "Aarea"},
+ {"amqp:/_topo/my-area/all/local/sub", "Llocal/sub"},
+ {"amqp:/_topo/all/all/local/sub", "Llocal/sub"},
+ {"amqp://host:port/_local/my-addr", "Lmy-addr"},
+ {0, 0}
+ };
+ int idx;
+
+ for (idx = 0; cases[idx].addr; idx++) {
+ dx_field_iterator_t *iter = dx_field_iterator_string(cases[idx].addr, ITER_VIEW_ADDRESS_HASH);
+ if (!dx_field_iterator_equal(iter, (unsigned char*) cases[idx].view)) {
+ char *got = (char*) dx_field_iterator_copy(iter);
+ snprintf(fail_text, FAIL_TEXT_SIZE, "Addr '%s' failed. Expected '%s', got '%s'",
+ cases[idx].addr, cases[idx].view, got);
+ return fail_text;
+ }
+ }
+
+ return 0;
+}
+
+
+int field_tests(void)
+{
+ int result = 0;
+
+ dx_field_iterator_set_address("my-area", "my-router");
+
+ TEST_CASE(test_view_global_dns, 0);
+ TEST_CASE(test_view_global_non_dns, 0);
+ TEST_CASE(test_view_global_no_host, 0);
+ TEST_CASE(test_view_address_hash, 0);
+
+ return result;
+}
+
diff --git a/qpid/extras/dispatch/tests/run_tests.c b/qpid/extras/dispatch/tests/run_unit_tests.c
index 765dad5c66..01a8ae16b3 100644
--- a/qpid/extras/dispatch/tests/run_tests.c
+++ b/qpid/extras/dispatch/tests/run_unit_tests.c
@@ -24,6 +24,7 @@ int timer_tests();
int alloc_tests();
int server_tests();
int message_tests();
+int field_tests();
int main(int argc, char** argv)
{
@@ -43,6 +44,7 @@ int main(int argc, char** argv)
result += alloc_tests();
result += server_tests();
result += message_tests();
+ result += field_tests();
return result;
}
diff --git a/qpid/extras/dispatch/tests/server_test.c b/qpid/extras/dispatch/tests/server_test.c
index 5cacd47bae..4f68ecb421 100644
--- a/qpid/extras/dispatch/tests/server_test.c
+++ b/qpid/extras/dispatch/tests/server_test.c
@@ -116,7 +116,7 @@ static char* test_start_handler(void *context)
{
int i;
- dx = dx_dispatch(THREAD_COUNT);
+ dx = dx_dispatch(THREAD_COUNT, 0, 0, 0);
expected_context = (void*) 0x00112233;
stored_error[0] = 0x0;
@@ -139,7 +139,7 @@ static char* test_start_handler(void *context)
static char *test_server_start(void *context)
{
- dx = dx_dispatch(THREAD_COUNT);
+ dx = dx_dispatch(THREAD_COUNT, 0, 0, 0);
dx_server_start(dx);
dx_server_stop(dx);
dx_dispatch_free(dx);
@@ -153,7 +153,7 @@ static char* test_user_fd(void *context)
int res;
dx_timer_t *timer;
- dx = dx_dispatch(THREAD_COUNT);
+ dx = dx_dispatch(THREAD_COUNT, 0, 0, 0);
dx_server_set_user_fd_handler(dx, ufd_handler);
timer = dx_timer(dx, fd_test_start, 0);
dx_timer_schedule(timer, 0);