1 /***
2 * Redistribution and use of this software and associated documentation
3 * ("Software"), with or without modification, are permitted provided
4 * that the following conditions are met:
5 *
6 * 1. Redistributions of source code must retain copyright
7 * statements and notices. Redistributions must also contain a
8 * copy of this document.
9 *
10 * 2. Redistributions in binary form must reproduce the
11 * above copyright notice, this list of conditions and the
12 * following disclaimer in the documentation and/or other
13 * materials provided with the distribution.
14 *
15 * 3. The name "Exolab" must not be used to endorse or promote
16 * products derived from this Software without prior written
17 * permission of Exoffice Technologies. For written permission,
18 * please contact tma@netspace.net.au.
19 *
20 * 4. Products derived from this Software may not be called "Exolab"
21 * nor may "Exolab" appear in their names without prior written
22 * permission of Exoffice Technologies. Exolab is a registered
23 * trademark of Exoffice Technologies.
24 *
25 * 5. Due credit should be given to the Exolab Project
26 * (http://www.exolab.org/).
27 *
28 * THIS SOFTWARE IS PROVIDED BY EXOFFICE TECHNOLOGIES AND CONTRIBUTORS
29 * ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
30 * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
31 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
32 * EXOFFICE TECHNOLOGIES OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
33 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
34 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
35 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
36 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
37 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
38 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
39 * OF THE POSSIBILITY OF SUCH DAMAGE.
40 *
41 * Copyright 2001-2004 (C) Exoffice Technologies Inc. All Rights Reserved.
42 *
43 * $Id: Admin.java,v 1.3 2004/01/31 13:44:24 tanderson Exp $
44 */
45 package org.exolab.jmscts.core;
46
47 import java.rmi.Naming;
48
49 import org.apache.commons.cli.CommandLine;
50 import org.apache.commons.cli.CommandLineParser;
51 import org.apache.commons.cli.Options;
52 import org.apache.commons.cli.GnuParser;
53
54 import org.exolab.jmscts.core.service.RemoteService;
55 import org.exolab.jmscts.core.service.Snapshot;
56
57
58 /***
59 * This class enables the state of a running compliance suite to be captured,
60 * and the suite to be terminated.
61 *
62 * @version $Revision: 1.3 $ $Date: 2004/01/31 13:44:24 $
63 * @author <a href="mailto:tma@netspace.net.au">Tim Anderson</a>
64 */
65 public final class Admin {
66
67 /***
68 * The snapshot file argument
69 */
70 private static final String SNAPSHOT = "snapshot";
71
72 /***
73 * The port argument
74 */
75 private static final String PORT = "port";
76
77 /***
78 * The stop option
79 */
80 private static final String STOP = "stop";
81
82 /***
83 * The abort option
84 */
85 private static final String ABORT = "abort";
86
87
88 /***
89 * Prevent construction of utility class
90 */
91 private Admin() {
92 }
93
94 /***
95 * Main line for the admin tool
96 *
97 * @param args command line arguments
98 * @throws Exception for any error
99 */
100 public static void main(String[] args) throws Exception {
101 Options options = new Options();
102 options.addOption(SNAPSHOT, true, "snapshot the current test state");
103 options.addOption(STOP, false, "stop a running compliance test");
104 options.addOption(ABORT, false, "abort a running compliance test");
105 options.addOption(
106 PORT, true, "use port to connect to the compliance test");
107
108 CommandLineParser parser = new GnuParser();
109 CommandLine commands = parser.parse(options, args);
110
111 String path = commands.getOptionValue(SNAPSHOT);
112 String port = commands.getOptionValue(
113 PORT, JMSTestRunner.DEFAULT_PORT);
114
115 if (path != null) {
116 String name = getName(port, "Snapshot");
117 Snapshot server = (Snapshot) Naming.lookup(name);
118 server.snapshot(path);
119 } else if (commands.hasOption(STOP)) {
120 String name = getName(port, "Terminator");
121 RemoteService server = (RemoteService) Naming.lookup(name);
122 server.stop();
123 } else if (commands.hasOption(ABORT)) {
124 String name = getName(port, "Terminator");
125 RemoteService server = (RemoteService) Naming.lookup(name);
126 server.abort();
127 } else {
128 usage();
129 }
130 }
131
132 /***
133 * Prints usage for the tool
134 */
135 private static void usage() {
136 System.err.println(
137 "usage: " + Admin.class.getName() + " <arguments> [options]\n"
138 + "arguments:\n"
139 + " -snapshot <path> snapshot the current test state\n"
140 + " -stop stop a running compliance test\n"
141 + " -abort abort a running compliance test\n"
142 + "options:\n"
143 + " -port <port> use port to connect to the compliance test"
144 + "\n");
145 }
146
147 /***
148 * Helper to return a service URL
149 *
150 * @param port the port the service is running on
151 * @param name the name of the service
152 * @return the service URL
153 */
154 private static String getName(String port, String name) {
155 return "//localhost:" + port + "/" + name;
156 }
157
158 }
This page was automatically generated by Maven