001 package com.khubla.pragmatach.contrib.controllertester;
002
003 import java.io.FileInputStream;
004 import java.util.List;
005
006 import org.apache.commons.cli.CommandLine;
007 import org.apache.commons.cli.CommandLineParser;
008 import org.apache.commons.cli.HelpFormatter;
009 import org.apache.commons.cli.Option;
010 import org.apache.commons.cli.OptionBuilder;
011 import org.apache.commons.cli.Options;
012 import org.apache.commons.cli.PosixParser;
013
014 /**
015 * @author tome
016 */
017 public class ControllerTester {
018 /**
019 * controllers file option
020 */
021 private static final String FILE_OPTION = "file";
022 /**
023 * target option
024 */
025 private static final String URL_OPTION = "url";
026
027 /**
028 * the usual
029 */
030 @SuppressWarnings("static-access")
031 public static void main(String[] args) {
032 try {
033 /*
034 * options for commons-cli
035 */
036 final Options options = new Options();
037 final Option fo = OptionBuilder.withArgName(FILE_OPTION).isRequired(true).withType(String.class).hasArg().withDescription("controllers file").create(FILE_OPTION);
038 options.addOption(fo);
039 final Option uo = OptionBuilder.withArgName(URL_OPTION).isRequired(true).withType(String.class).hasArg().withDescription("application url").create(URL_OPTION);
040 options.addOption(uo);
041 /*
042 * parse
043 */
044 final CommandLineParser parser = new PosixParser();
045 CommandLine cmd = null;
046 try {
047 cmd = parser.parse(options, args);
048 } catch (final Exception e) {
049 e.printStackTrace();
050 final HelpFormatter formatter = new HelpFormatter();
051 formatter.printHelp("posix", options);
052 System.exit(0);
053 }
054 /*
055 * vars
056 */
057 final String url = cmd.getOptionValue(URL_OPTION);
058 final String file = cmd.getOptionValue(FILE_OPTION);
059 /*
060 * read
061 */
062 final List<RouteUrl> controllerUrls = RouteUrl.readRoutes(new FileInputStream(file));
063 /*
064 * test
065 */
066 testUrls(controllerUrls, url);
067 } catch (final Exception e) {
068 e.printStackTrace();
069 }
070 }
071
072 /**
073 * test the routes
074 */
075 private static void testUrls(List<RouteUrl> controllerUrls, String url) throws Exception {
076 try {
077 for (final RouteUrl routeUrl : controllerUrls) {
078 RouteTester.testRoute(url, routeUrl, 1);
079 }
080 } catch (final Exception e) {
081 throw new Exception("Exception in testUrls", e);
082 }
083 }
084 }