diff options
| author | Ted Ross <tross@apache.org> | 2013-04-26 16:34:33 +0000 |
|---|---|---|
| committer | Ted Ross <tross@apache.org> | 2013-04-26 16:34:33 +0000 |
| commit | 64ab8be9c34528ef71ca5c58ff075ed57a48c9e0 (patch) | |
| tree | 82c66d38e2d710d780b22c71d5afd6e00297082e /qpid/extras/dispatch/tests | |
| parent | cf474845241b0c206710dbd9c87fe2e752c512a0 (diff) | |
| download | qpid-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.txt | 11 | ||||
| -rw-r--r-- | qpid/extras/dispatch/tests/field_test.c | 149 | ||||
| -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.c | 6 |
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); |
