1/* 2 Unix SMB/CIFS implementation. 3 Copyright (C) Andrew Tridgell 2000 4 5 This program is free software; you can redistribute it and/or modify 6 it under the terms of the GNU General Public License as published by 7 the Free Software Foundation; either version 2 of the License, or 8 (at your option) any later version. 9 10 This program is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 GNU General Public License for more details. 14 15 You should have received a copy of the GNU General Public License 16 along with this program; if not, write to the Free Software 17 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 18*/ 19 20/* 21 test code for internal messaging 22 */ 23 24#define NO_SYSLOG 25 26#include "includes.h" 27 28static int pong_count; 29 30/**************************************************************************** 31a useful function for testing the message system 32****************************************************************************/ 33void pong_message(int msg_type, pid_t src, void *buf, size_t len) 34{ 35 pong_count++; 36} 37 38 int main(int argc, char *argv[]) 39{ 40 pid_t pid; 41 int i, n; 42 char buf[12]; 43 44 setup_logging(argv[0],True); 45 46 lp_load(dyn_CONFIGFILE,False,False,False); 47 48 message_init(); 49 50 if (argc != 3) { 51 fprintf(stderr, "%s: Usage - %s pid count\n", argv[0], argv[0]); 52 exit(1); 53 } 54 55 pid = atoi(argv[1]); 56 n = atoi(argv[2]); 57 58 message_register(MSG_PONG, pong_message); 59 60 for (i=0;i<n;i++) { 61 message_send_pid(pid, MSG_PING, NULL, 0, True); 62 } 63 64 while (pong_count < i) { 65 message_dispatch(); 66 msleep(1); 67 } 68 69 /* Now test that the duplicate filtering code works. */ 70 pong_count = 0; 71 72 safe_strcpy(buf, "1234567890", sizeof(buf)-1); 73 74 for (i=0;i<n;i++) { 75 message_send_pid(getpid(), MSG_PING, NULL, 0, False); 76 message_send_pid(getpid(), MSG_PING, buf, 11, False); 77 } 78 79 for (i=0;i<n;i++) { 80 message_dispatch(); 81 msleep(1); 82 } 83 84 if (pong_count != 2) { 85 fprintf(stderr, "Duplicate filter failed (%d).\n", pong_count); 86 exit(1); 87 } 88 89 return (0); 90} 91 92