summaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2009-08-31 14:37:26 +0200
committerRainer Gerhards <rgerhards@adiscon.com>2009-08-31 14:37:26 +0200
commite8d27c8f5a01d3a77ff73cade12008d6411ab52b (patch)
tree6e576533fcada97d4767b2e336a52dc4ff16b8de /java
parent85c654d1ecb3e3705b2004433c01c0735b7642da (diff)
downloadrsyslog-e8d27c8f5a01d3a77ff73cade12008d6411ab52b.tar.gz
rsyslog-e8d27c8f5a01d3a77ff73cade12008d6411ab52b.tar.xz
rsyslog-e8d27c8f5a01d3a77ff73cade12008d6411ab52b.zip
now supports sending UDP messages via multiple threads
Diffstat (limited to 'java')
-rw-r--r--java/Makefile.am1
-rw-r--r--java/com/rsyslog/gui/msggen/MsgGen.java27
-rw-r--r--java/com/rsyslog/lib/SyslogTrafficGenerator.java81
3 files changed, 99 insertions, 10 deletions
diff --git a/java/Makefile.am b/java/Makefile.am
index 5d3cd1b0..67f5eb43 100644
--- a/java/Makefile.am
+++ b/java/Makefile.am
@@ -19,6 +19,7 @@ JAVA_SOURCE_FILES = \
com/rsyslog/lib/DiagSess.java \
com/rsyslog/lib/SyslogMessage.java \
com/rsyslog/lib/SyslogMsgConsumer.java \
+ com/rsyslog/lib/SyslogTrafficGenerator.java \
com/rsyslog/lib/SyslogSender.java \
com/rsyslog/lib/UDPSyslogSender.java \
com/rsyslog/diag/DiagTalker.java \
diff --git a/java/com/rsyslog/gui/msggen/MsgGen.java b/java/com/rsyslog/gui/msggen/MsgGen.java
index 6591d401..0df22c8d 100644
--- a/java/com/rsyslog/gui/msggen/MsgGen.java
+++ b/java/com/rsyslog/gui/msggen/MsgGen.java
@@ -37,6 +37,8 @@ import javax.swing.*;
public class MsgGen extends Frame {
private TextField target;
private TextField message;
+ private TextField nummsgs;
+ private TextField numthrds;
public static void main(String args[]) {
new MsgGen();
@@ -66,15 +68,23 @@ public class MsgGen extends Frame {
/** creates the main GUI */
private void createGUI() {
- target = new TextField("127.0.0.1", 32);
+ //target = new TextField("127.0.0.1", 32);
+ target = new TextField("172.19.3.3", 32);
message = new TextField(80);
- message.setText("<161>Test malformed");
+ //message.setText("<161>Test malformed");
+ message.setText("<5>iaalog[171652]: AIB|dcu|2009/08/12 14:48:43|mfa challenge|NNNNNNN|XX.XX.XX.XX");
+ nummsgs = new TextField("1000", 8);
+ numthrds = new TextField("10", 5);
Panel pCenter = new Panel();
pCenter.setLayout(new FlowLayout());
pCenter.add(new Label("Target Host:"));
pCenter.add(target);
+ pCenter.add(new Label("Number of Msgs:"));
+ pCenter.add(nummsgs);
pCenter.add(new Label("Msg:"));
pCenter.add(message);
+ pCenter.add(new Label("Number of Threads:"));
+ pCenter.add(numthrds);
Button b = new Button("Start Test");
b.addActionListener(new ActionListener() {
@@ -96,14 +106,11 @@ public class MsgGen extends Frame {
/** perform the test, a potentially complex operation */
private void performTest() {
- try {
- UDPSyslogSender sender = new UDPSyslogSender(target.getText());
- for(int i = 0 ; i < 100 ; ++i)
- sender.sendMSG(message.getText());
- }
- catch(Exception e) {
- JOptionPane.showMessageDialog(this, e.toString(), "Error",
- JOptionPane.ERROR_MESSAGE, null);
+ for(short i = 0 ; i < Integer.parseInt(numthrds.getText()) ; ++ i) {
+ SyslogTrafficGenerator gen =
+ new SyslogTrafficGenerator(target.getText(), message.getText(),
+ Long.parseLong(nummsgs.getText()));
+ gen.start();
}
}
diff --git a/java/com/rsyslog/lib/SyslogTrafficGenerator.java b/java/com/rsyslog/lib/SyslogTrafficGenerator.java
new file mode 100644
index 00000000..79a99495
--- /dev/null
+++ b/java/com/rsyslog/lib/SyslogTrafficGenerator.java
@@ -0,0 +1,81 @@
+/**
+ * This class is a syslog traffic generator. It is primarily intended to be used
+ * together with testing tools, but may have some use cases outside that domain.
+ *
+ * @author Rainer Gerhards
+ *
+ * Copyright 2009 Rainer Gerhards and Adiscon GmbH.
+ *
+ * This file is part of rsyslog.
+ *
+ * Rsyslog 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.
+ *
+ * Rsyslog 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 Rsyslog. If not, see http://www.gnu.org/licenses/.
+ *
+ * A copy of the GPL can be found in the file "COPYING" in this distribution.
+ */
+package com.rsyslog.lib;
+
+public class SyslogTrafficGenerator extends Thread {
+
+ /** the target host to receive traffic */
+ private String target;
+
+ /** the message (template) to be sent */
+ private String message;
+
+ /** number of messages to be sent */
+ private long nummsgs;
+
+ /** Constructs Sender, sets target system.
+ * @param target the system to connect to. Syntax of target is depending
+ * on the underlying transport.
+ */
+ public SyslogTrafficGenerator(String target, String message, long nummsgs) {
+ this.target = target;
+ this.message = message;
+ this.nummsgs = nummsgs;
+ }
+
+ /** Generates the traffic. Stops when either called to terminate
+ * or the max number of messages have been sent. Note that all
+ * necessary properties must have been set up before starting the
+ * generator thread!
+ */
+ private void performTest() throws Exception {
+ int doDisp = 0;
+ UDPSyslogSender sender = new UDPSyslogSender(target);
+ for(long i = 0 ; i < nummsgs ; ++i) {
+ sender.sendMSG(message + " " + Long.toString(i) + " " + this.toString() + "\0");
+ if((doDisp++ % 1000) == 0)
+ System.out.println(this.toString() + " send message " + Long.toString(i));
+ sleep(1);
+ }
+ }
+
+
+/** Wrapper around the real traffic generator, catches exceptions.
+ */
+ public void run() {
+ System.out.println("traffic generator " + this.toString() + " thread started");
+ try {
+ performTest();
+ }
+ catch(Exception e) {
+ /* at some time, we may find a more intelligent way to
+ * handle this! ;)
+ */
+ System.out.println(e.toString());
+ }
+ System.out.println("traffic generator " + this.toString() + " thread finished");
+ }
+}