You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

RunWeaveTests.java 10KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301
  1. /* *******************************************************************
  2. * Copyright (c) 2004 IBM Corporation
  3. * All rights reserved.
  4. * This program and the accompanying materials are made available
  5. * under the terms of the Common Public License v1.0
  6. * which accompanies this distribution and is available at
  7. * http://www.eclipse.org/legal/cpl-v10.html
  8. *
  9. * Contributors:
  10. * Noel Markham, Matthew Webster initial implementation
  11. * ******************************************************************/
  12. import java.io.BufferedOutputStream;
  13. import java.io.FileOutputStream;
  14. import java.io.IOException;
  15. import java.util.ArrayList;
  16. import java.util.Calendar;
  17. import java.util.List;
  18. import java.util.StringTokenizer;
  19. /**
  20. * FIXME: who is using this class ?
  21. *
  22. * @author Noel Markham
  23. */
  24. public class RunWeaveTests {
  25. private static boolean RUN_SMALL = true;
  26. private static boolean RUN_MED = true;
  27. private static boolean RUN_LARGE = true;
  28. private static final String SMALL_PROGRAM_ARGS = "-c 8 -m 100 -l 10 "; // must end on a space in case any more arguments are added later in the script
  29. private static final String MEDIUM_PROGRAM_ARGS = "-c 64 -m 100 -l 10 ";
  30. private static final String LARGE_PROGRAM_ARGS = "-c 512 -m 100 -l 10 ";
  31. private static final String WARMUP_ARGS = "-c 3 -m 100 -l 10 ";
  32. private static final int ITERATIONS = 3;
  33. private static String filename;
  34. private static long[][] times = new long[7][3 * ITERATIONS];
  35. public static void main(String[] args) throws IOException {
  36. parseArgs(args);
  37. // Purely as a warm-up...
  38. System.out.println("Warming up...");
  39. WeaveTests.main(split(WARMUP_ARGS + "-i " + ITERATIONS));
  40. if (RUN_SMALL) {
  41. WeaveTests.main(
  42. split(SMALL_PROGRAM_ARGS + "-echo -i " + ITERATIONS));
  43. for (int i = 0; i < ITERATIONS; i++)
  44. times[0][i] = WeaveTests.compileTimes[i];
  45. for (int i = 0; i < ITERATIONS; i++)
  46. times[1][i] = WeaveTests.executionFastTimes[i];
  47. for (int i = 0; i < ITERATIONS; i++)
  48. times[2][i] = WeaveTests.executionMedTimes[i];
  49. for (int i = 0; i < ITERATIONS; i++)
  50. times[3][i] = WeaveTests.executionSlowTimes[i];
  51. for (int i = 0; i < ITERATIONS; i++)
  52. times[4][i] = WeaveTests.getFastTimes[i];
  53. for (int i = 0; i < ITERATIONS; i++)
  54. times[5][i] = WeaveTests.getMedTimes[i];
  55. for (int i = 0; i < ITERATIONS; i++)
  56. times[6][i] = WeaveTests.getSlowTimes[i];
  57. }
  58. if (RUN_MED) {
  59. WeaveTests.main(
  60. split(MEDIUM_PROGRAM_ARGS + "-echo -i " + ITERATIONS));
  61. for (int i = ITERATIONS; i < (2 * ITERATIONS); i++)
  62. times[0][i] = WeaveTests.compileTimes[i - ITERATIONS];
  63. for (int i = ITERATIONS; i < (2 * ITERATIONS); i++)
  64. times[1][i] = WeaveTests.executionFastTimes[i - ITERATIONS];
  65. for (int i = ITERATIONS; i < (2 * ITERATIONS); i++)
  66. times[2][i] = WeaveTests.executionMedTimes[i - ITERATIONS];
  67. for (int i = ITERATIONS; i < (2 * ITERATIONS); i++)
  68. times[3][i] = WeaveTests.executionSlowTimes[i - ITERATIONS];
  69. for (int i = ITERATIONS; i < (2 * ITERATIONS); i++)
  70. times[4][i] = WeaveTests.getFastTimes[i - ITERATIONS];
  71. for (int i = ITERATIONS; i < (2 * ITERATIONS); i++)
  72. times[5][i] = WeaveTests.getMedTimes[i - ITERATIONS];
  73. for (int i = ITERATIONS; i < (2 * ITERATIONS); i++)
  74. times[6][i] = WeaveTests.getSlowTimes[i - ITERATIONS];
  75. }
  76. if (RUN_LARGE) {
  77. WeaveTests.main(
  78. split(LARGE_PROGRAM_ARGS + "-echo -i " + ITERATIONS));
  79. for (int i = (2 * ITERATIONS); i < (3 * ITERATIONS); i++)
  80. times[0][i] = WeaveTests.compileTimes[i - (2 * ITERATIONS)];
  81. for (int i = (2 * ITERATIONS); i < (3 * ITERATIONS); i++)
  82. times[1][i] =
  83. WeaveTests.executionFastTimes[i - (2 * ITERATIONS)];
  84. for (int i = (2 * ITERATIONS); i < (3 * ITERATIONS); i++)
  85. times[2][i] =
  86. WeaveTests.executionMedTimes[i - (2 * ITERATIONS)];
  87. for (int i = (2 * ITERATIONS); i < (3 * ITERATIONS); i++)
  88. times[3][i] =
  89. WeaveTests.executionSlowTimes[i - (2 * ITERATIONS)];
  90. for (int i = (2 * ITERATIONS); i < (3 * ITERATIONS); i++)
  91. times[4][i] = WeaveTests.getFastTimes[i - (2 * ITERATIONS)];
  92. for (int i = (2 * ITERATIONS); i < (3 * ITERATIONS); i++)
  93. times[5][i] = WeaveTests.getMedTimes[i - (2 * ITERATIONS)];
  94. for (int i = (2 * ITERATIONS); i < (3 * ITERATIONS); i++)
  95. times[6][i] = WeaveTests.getSlowTimes[i - (2 * ITERATIONS)];
  96. }
  97. createCSV();
  98. }
  99. /* Compatibility with JDK 1.3.1 */
  100. public static String[] split (String s) {
  101. List list = new ArrayList();
  102. StringTokenizer st = new StringTokenizer(s," ");
  103. while (st.hasMoreTokens()) {
  104. list.add(st.nextToken());
  105. }
  106. String[] result = new String[list.size()];
  107. list.toArray(result);
  108. return result;
  109. }
  110. private static void parseArgs(String args[]) {
  111. if(args == null || args.length <= 0) {
  112. System.out.println("Running all program tests");
  113. return;
  114. }
  115. if(args[0].equals("-small")) {
  116. System.out.println("Running small-sized program test only");
  117. RUN_SMALL = true;
  118. RUN_MED = false;
  119. RUN_LARGE = false;
  120. }
  121. else if(args[0].equals("-medium")) {
  122. System.out.println("Running small- and medium -sized program tests");
  123. RUN_SMALL = true;
  124. RUN_MED = true;
  125. RUN_LARGE = false;
  126. }
  127. else if(args[0].equals("-large")) {
  128. System.out.println("Running all program tests");
  129. RUN_SMALL = true;
  130. RUN_MED = true;
  131. RUN_LARGE = true;
  132. }
  133. else usage();
  134. }
  135. private static void usage() {
  136. System.err.println("Usage:");
  137. System.err.println("\tjava RunWeaveTests [-small|-medium|-large]");
  138. System.exit(-1);
  139. }
  140. private static void createCSV() {
  141. String NL = System.getProperty("line.separator", "\n");
  142. StringBuffer csv = new StringBuffer(1000);
  143. csv.append("Test Results");
  144. if(RUN_SMALL) for(int i = 0; i < ITERATIONS; i++) csv.append("," + SMALL_PROGRAM_ARGS);
  145. if(RUN_MED) for(int i = 0; i < ITERATIONS; i++) csv.append("," + MEDIUM_PROGRAM_ARGS);
  146. if(RUN_LARGE) for(int i = 0; i < ITERATIONS; i++) csv.append("," + LARGE_PROGRAM_ARGS);
  147. csv.append(NL);
  148. csv.append("Compile");
  149. if(RUN_SMALL) for(int i = 0; i < ITERATIONS; i++) csv.append("," + times[0][i]);
  150. if(RUN_MED) for(int i = ITERATIONS; i < (2 * ITERATIONS); i++) csv.append("," + times[0][i]);
  151. if(RUN_LARGE) for(int i = (2 * ITERATIONS); i < (3 * ITERATIONS); i++) csv.append("," + times[0][i]);
  152. csv.append(NL);
  153. csv.append(WeaveTests.EXECUTION_FAST);
  154. if(RUN_SMALL) for(int i = 0; i < ITERATIONS; i++) csv.append("," + times[1][i]);
  155. if(RUN_MED) for(int i = ITERATIONS; i < (2 * ITERATIONS); i++) csv.append("," + times[1][i]);
  156. if(RUN_LARGE) for(int i = (2 * ITERATIONS); i < (3 * ITERATIONS); i++) csv.append("," + times[1][i]);
  157. csv.append(NL);
  158. csv.append(WeaveTests.EXECUTION_MED);
  159. if(RUN_SMALL) for(int i = 0; i < ITERATIONS; i++) csv.append("," + times[2][i]);
  160. if(RUN_MED) for(int i = ITERATIONS; i < (2 * ITERATIONS); i++) csv.append("," + times[2][i]);
  161. if(RUN_LARGE) for(int i = (2 * ITERATIONS); i < (3 * ITERATIONS); i++) csv.append("," + times[2][i]);
  162. csv.append(NL);
  163. csv.append(WeaveTests.EXECUTION_SLOW);
  164. if(RUN_SMALL) for(int i = 0; i < ITERATIONS; i++) csv.append("," + times[3][i]);
  165. if(RUN_MED) for(int i = ITERATIONS; i < (2 * ITERATIONS); i++) csv.append("," + times[3][i]);
  166. if(RUN_LARGE) for(int i = (2 * ITERATIONS); i < (3 * ITERATIONS); i++) csv.append("," + times[3][i]);
  167. csv.append(NL);
  168. csv.append(WeaveTests.GET_FAST);
  169. if(RUN_SMALL) for(int i = 0; i < ITERATIONS; i++) csv.append("," + times[4][i]);
  170. if(RUN_MED) for(int i = ITERATIONS; i < (2 * ITERATIONS); i++) csv.append("," + times[4][i]);
  171. if(RUN_LARGE) for(int i = (2 * ITERATIONS); i < (3 * ITERATIONS); i++) csv.append("," + times[4][i]);
  172. csv.append(NL);
  173. csv.append(WeaveTests.GET_MED);
  174. if(RUN_SMALL) for(int i = 0; i < ITERATIONS; i++) csv.append("," + times[5][i]);
  175. if(RUN_MED) for(int i = ITERATIONS; i < (2 * ITERATIONS); i++) csv.append("," + times[5][i]);
  176. if(RUN_LARGE) for(int i = (2 * ITERATIONS); i < (3 * ITERATIONS); i++) csv.append("," + times[5][i]);
  177. csv.append(NL);
  178. csv.append(WeaveTests.GET_SLOW);
  179. if(RUN_SMALL) for(int i = 0; i < ITERATIONS; i++) csv.append("," + times[6][i]);
  180. if(RUN_MED) for(int i = ITERATIONS; i < (2 * ITERATIONS); i++) csv.append("," + times[6][i]);
  181. if(RUN_LARGE) for(int i = (2 * ITERATIONS); i < (3 * ITERATIONS); i++) csv.append("," + times[6][i]);
  182. csv.append(NL);
  183. filename = createFilename();
  184. try {
  185. FileOutputStream fos = new FileOutputStream(filename);
  186. BufferedOutputStream bos = new BufferedOutputStream(fos);
  187. bos.write(new String(csv).getBytes());
  188. bos.close();
  189. fos.close();
  190. } catch (IOException e) {
  191. System.err.println("Could not print to file " + filename);
  192. System.err.println(csv);
  193. }
  194. System.out.println("Written: " + filename);
  195. }
  196. private static String createFilename() {
  197. return (getVMInfo() + "_" + getDateAndTime()).replace('.', '_') + ".csv";
  198. }
  199. private static StringBuffer getDateAndTime() {
  200. Calendar c = Calendar.getInstance();
  201. StringBuffer sb = new StringBuffer(15);
  202. sb.append(c.get(Calendar.YEAR));
  203. int month = (c.get(Calendar.MONTH)) + 1;
  204. if(month < 10) sb.append(0);
  205. sb.append(month);
  206. int date = c.get(Calendar.DAY_OF_MONTH);
  207. if(date < 10) sb.append(0);
  208. sb.append(date);
  209. sb.append("_");
  210. int hour = c.get(Calendar.HOUR_OF_DAY);
  211. if(hour < 10) sb.append(0);
  212. sb.append(hour);
  213. int minute = c.get(Calendar.MINUTE);
  214. if(minute < 10) sb.append(0);
  215. sb.append(minute);
  216. int second = c.get(Calendar.SECOND);
  217. if(second < 10) sb.append(0);
  218. sb.append(second);
  219. return sb;
  220. }
  221. private static StringBuffer getVMInfo() {
  222. StringBuffer sb = new StringBuffer(40);
  223. String vm = System.getProperty("java.vm.vendor");
  224. if(vm.equals("IBM Corporation")) {
  225. String vminfo = System.getProperty("java.vm.info");
  226. String[] vminfoComponents = split(vminfo);
  227. sb.append(vminfoComponents[2] + ("_"));
  228. sb.append(vminfoComponents[3] + ("_"));
  229. sb.append(vminfoComponents[4] + ("_"));
  230. sb.append(vminfoComponents[6]);
  231. }
  232. else if(vm.equals("Sun Microsystems Inc.")) {
  233. String vminfo = System.getProperty("java.vm.name");
  234. String[] vminfoComponents = split(vminfo);
  235. sb.append("Sun_");
  236. sb.append(System.getProperty("java.vm.version") + "_");
  237. sb.append(vminfoComponents[2]);
  238. }
  239. return sb;
  240. }
  241. }