1 // Copyright (C) 2004-2009 Philip Aston
2 // All rights reserved.
3 //
4 // This file is part of The Grinder software distribution. Refer to
5 // the file LICENSE which is part of The Grinder distribution for
6 // licensing details. The Grinder distribution is available on the
7 // Internet at http://grinder.sourceforge.net/
8 //
9 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
10 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
11 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
12 // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
13 // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
14 // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
15 // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
16 // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
17 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
18 // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
19 // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
20 // OF THE POSSIBILITY OF SUCH DAMAGE.
21
22 package net.grinder.engine.agent;
23
24 import java.io.StringWriter;
25 import java.io.Writer;
26
27
28 /**
29 * Simple process for <code>TestChildProcess</code> to play with.
30 *
31 * @author Philip Aston
32 */
33 public class EchoClass {
34
35 public static final String ECHO_ARGUMENTS = "echo arguments";
36 public static final String ECHO_STREAMS = "echo streams";
37
38 public static void main(String arguments[]) throws Exception {
39
40 final Writer commandWriter = new StringWriter();
41
42 while (true) {
43 final int c = System.in.read();
44
45 if (c == -1) {
46 throw new Exception("Could not read command");
47 }
48 else if (c == '\n') {
49 break;
50 }
51 else {
52 commandWriter.write(c);
53 }
54 }
55
56 final String command = commandWriter.toString();
57
58 if (command.equals(ECHO_ARGUMENTS)) {
59 for (int i=0; i<arguments.length; ++i) {
60 System.out.print(arguments[i]);
61 }
62 }
63 else if (command.equals(ECHO_STREAMS)) {
64 while (true) {
65 final int b = System.in.read();
66
67 if (b == -1) {
68 break;
69 }
70
71 System.out.write(b);
72 System.err.write(b);
73 }
74 }
75
76 // Testing shows that flushing our streams on exit is necessary to
77 // prevent lossage on win32, and maybe elsewhere.
78 System.out.flush();
79 System.err.flush();
80 }
81 }
82
83