diff options
Diffstat (limited to 'source4/torture/local/messaging.c')
-rw-r--r-- | source4/torture/local/messaging.c | 143 |
1 files changed, 0 insertions, 143 deletions
diff --git a/source4/torture/local/messaging.c b/source4/torture/local/messaging.c deleted file mode 100644 index bf2b83a0e4..0000000000 --- a/source4/torture/local/messaging.c +++ /dev/null @@ -1,143 +0,0 @@ -/* - Unix SMB/CIFS implementation. - - local test for messaging code - - Copyright (C) Andrew Tridgell 2004 - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#include "includes.h" -#include "lib/events/events.h" -#include "lib/messaging/irpc.h" -#include "torture/torture.h" -#include "cluster/cluster.h" -#include "param/param.h" - - -static uint32_t msg_pong; - -static void ping_message(struct messaging_context *msg, void *private, - uint32_t msg_type, struct server_id src, DATA_BLOB *data) -{ - NTSTATUS status; - status = messaging_send(msg, src, msg_pong, data); - if (!NT_STATUS_IS_OK(status)) { - printf("pong failed - %s\n", nt_errstr(status)); - } -} - -static void pong_message(struct messaging_context *msg, void *private, - uint32_t msg_type, struct server_id src, DATA_BLOB *data) -{ - int *count = private; - (*count)++; -} - -static void exit_message(struct messaging_context *msg, void *private, - uint32_t msg_type, struct server_id src, DATA_BLOB *data) -{ - talloc_free(private); - exit(0); -} - -/* - test ping speed -*/ -static bool test_ping_speed(struct torture_context *tctx) -{ - struct event_context *ev; - struct messaging_context *msg_client_ctx; - struct messaging_context *msg_server_ctx; - int ping_count = 0; - int pong_count = 0; - struct timeval tv; - int timelimit = torture_setting_int(tctx, "timelimit", 10); - uint32_t msg_ping, msg_exit; - TALLOC_CTX *mem_ctx = tctx; - - lp_set_cmdline(global_loadparm, "pid directory", "piddir.tmp"); - - ev = tctx->ev; - - msg_server_ctx = messaging_init(mem_ctx, - lp_messaging_path(tctx, global_loadparm), - cluster_id(1), ev); - - torture_assert(tctx, msg_server_ctx != NULL, "Failed to init ping messaging context"); - - messaging_register_tmp(msg_server_ctx, NULL, ping_message, &msg_ping); - messaging_register_tmp(msg_server_ctx, mem_ctx, exit_message, &msg_exit); - - msg_client_ctx = messaging_init(mem_ctx, - lp_messaging_path(mem_ctx, global_loadparm), - cluster_id(2), ev); - - torture_assert(tctx, msg_client_ctx != NULL, - "msg_client_ctx messaging_init() failed"); - - messaging_register_tmp(msg_client_ctx, &pong_count, pong_message, &msg_pong); - - tv = timeval_current(); - - torture_comment(tctx, "Sending pings for %d seconds\n", timelimit); - while (timeval_elapsed(&tv) < timelimit) { - DATA_BLOB data; - NTSTATUS status1, status2; - - data.data = discard_const_p(uint8_t, "testing"); - data.length = strlen((const char *)data.data); - - status1 = messaging_send(msg_client_ctx, cluster_id(1), msg_ping, &data); - status2 = messaging_send(msg_client_ctx, cluster_id(1), msg_ping, NULL); - - torture_assert_ntstatus_ok(tctx, status1, "msg1 failed"); - ping_count++; - - torture_assert_ntstatus_ok(tctx, status2, "msg2 failed"); - ping_count++; - - while (ping_count > pong_count + 20) { - event_loop_once(ev); - } - } - - torture_comment(tctx, "waiting for %d remaining replies (done %d)\n", - ping_count - pong_count, pong_count); - while (timeval_elapsed(&tv) < 30 && pong_count < ping_count) { - event_loop_once(ev); - } - - torture_comment(tctx, "sending exit\n"); - messaging_send(msg_client_ctx, cluster_id(1), msg_exit, NULL); - - torture_assert_int_equal(tctx, ping_count, pong_count, "ping test failed"); - - torture_comment(tctx, "ping rate of %.0f messages/sec\n", - (ping_count+pong_count)/timeval_elapsed(&tv)); - - talloc_free(msg_client_ctx); - talloc_free(msg_server_ctx); - - talloc_free(ev); - return true; -} - -struct torture_suite *torture_local_messaging(TALLOC_CTX *mem_ctx) -{ - struct torture_suite *s = torture_suite_create(mem_ctx, "MESSAGING"); - torture_suite_add_simple_test(s, "ping_speed", test_ping_speed); - return s; -} |