/* * Copyright 2007 Sun Microsystems, Inc. * * This file is part of jVoiceBridge. * * jVoiceBridge is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation and distributed hereunder * to you. * * jVoiceBridge 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 this program. If not, see <http://www.gnu.org/licenses/>. * * Sun designates this particular file as subject to the "Classpath" * exception as provided by Sun in the License file that accompanied this * code. */ package com.sun.voip; /* * Create a Ticker using the specifed Ticker implementation class. */ public class TickerTest { private String id; private int timePeriod; private int duration; private int statFrequency; private String tickerClassName; private Ticker ticker; public TickerTest() { } private void usage() { System.out.println("Usage: java com.sun.voip.TickerTest " + "\t\t-t <tick period in milliseconds> [-d <duration in seconds>]" + "\t\t[-s <stat frequency in ticker calls>] [-c TickerClassName]"); System.exit(1); } public static void main(String args[]) { TickerTest tickerTest = new TickerTest(); try { tickerTest.initialize(args); } catch (TickerException e) { System.out.println(e.getMessage()); System.exit(1); } tickerTest.runTest(); } private void initialize(String[] args) throws TickerException { for (int i = 0; i < args.length; i++) { if (args[i].equalsIgnoreCase("-t")) { i++; timePeriod = getIntArg(args, i); } else if (args[i].equalsIgnoreCase("-d")) { i++; duration = getIntArg(args, i); } else if (args[i].equalsIgnoreCase("-s")) { i++; statFrequency = getIntArg(args, i); } else if (args[i].equalsIgnoreCase("-c")) { i++; if (i >= args.length) { usage(); } tickerClassName = args[i]; } else { usage(); } } if (timePeriod == 0) { timePeriod = 20; } if (duration == 0) { duration = 10; } if (statFrequency == 0) { statFrequency = 200; } if (tickerClassName == null) { tickerClassName = "com.sun.voip.TickerSleep"; } TickerFactory tickerFactory = TickerFactory.getInstance(); ticker = tickerFactory.createTicker(tickerClassName, "TickerTest"); } private void runTest() { Logger.println("Running ticker test with " + tickerClassName); long start = System.currentTimeMillis(); long elapsed = 0; int n = 0; ticker.arm(timePeriod, timePeriod); while (elapsed < duration * 1000) { try { ticker.tick(); } catch (TickerException e) { Logger.println("tick() failed! " + e.getMessage()); System.exit(1); } elapsed = System.currentTimeMillis() - start; n++; if ((n % statFrequency) == 0) { ticker.printStatistics(); } } ticker.disarm(); } private int getIntArg(String[] args, int i) { if (i >= args.length) { usage(); } int n = 0; try { n = Integer.parseInt(args[i]); if (n <= 0) { Logger.println("Number must be positive: " + args[i]); System.exit(1); } } catch (NumberFormatException e) { Logger.println("Invalid integer " + args[i] + " " + e.getMessage()); System.exit(1); } return n; } }