test/java/rmi/reliability/benchmark/bench/serial/Main.java

Print this page

        

@@ -1,7 +1,7 @@
 /*
- * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.

@@ -20,22 +20,46 @@
  * or visit www.oracle.com if you need additional information or have any
  * questions.
  */
 
 /*
- *
+ * @test
+ * @summary The RMI Serialization benchmark test. This java class is used to run
+ *          the test under JTREG.
+ * @library ../../
+ * @build bench.BenchInfo bench.HtmlReporter bench.Util bench.Benchmark 
+ * @build bench.Reporter bench.XmlReporter bench.ConfigFormatException 
+ * @build bench.Harness bench.TextReporter
+ * @build bench.serial.BooleanArrays bench.serial.Booleans
+ * @build bench.serial.ByteArrays bench.serial.Bytes bench.serial.CharArrays
+ * @build bench.serial.Chars bench.serial.ClassDesc bench.serial.Cons
+ * @build bench.serial.CustomDefaultObjTrees bench.serial.CustomObjTrees
+ * @build bench.serial.DoubleArrays bench.serial.Doubles
+ * @build bench.serial.ExternObjTrees bench.serial.FloatArrays
+ * @build bench.serial.Floats bench.serial.GetPutFieldTrees
+ * @build bench.serial.IntArrays bench.serial.Ints bench.serial.LongArrays
+ * @build bench.serial.Longs bench.serial.Main bench.serial.ObjArrays
+ * @build bench.serial.ObjTrees bench.serial.ProxyArrays
+ * @build bench.serial.ProxyClassDesc bench.serial.RepeatObjs
+ * @build bench.serial.ReplaceTrees bench.serial.ShortArrays
+ * @build bench.serial.Shorts bench.serial.SmallObjTrees
+ * @build bench.serial.StreamBuffer bench.serial.Strings
+ * @run main/othervm/timeout=1800 bench.serial.Main -c jtreg-config
+ * @author Mike Warres, Nigel Daley
  */
 
 package bench.serial;
 
 import bench.ConfigFormatException;
 import bench.Harness;
 import bench.HtmlReporter;
 import bench.Reporter;
 import bench.TextReporter;
 import bench.XmlReporter;
+import java.io.File;
 import java.io.FileInputStream;
+import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.InputStream;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.io.PrintStream;

@@ -45,12 +69,13 @@
 /**
  * Object serialization benchmark mainline.
  */
 public class Main {
 
-    static final String CONFFILE = "/bench/serial/config";
+    static final String CONFFILE = "config";
     static final String VERSION = "1.3";
+    static final String TEST_SRC_PATH = System.getProperty("test.src") + File.separator;
 
     static final int TEXT = 0;
     static final int HTML = 1;
     static final int XML = 2;
 

@@ -82,19 +107,22 @@
         p.println("  -html           format output as html (default is text)");
         p.println("  -xml            format output as xml");
     }
 
     /**
-     * Print error message and exit.
+     * Throw RuntimeException that wrap message.
+     *
+     * @param mesg a message will be wrapped in the RuntimeException.
      */
     static void die(String mesg) {
-        System.err.println(mesg);
-        System.exit(1);
+        throw new RuntimeException(mesg);
     }
 
     /**
      * Mainline parses command line, then hands off to benchmark harness.
+     * 
+     * @param args
      */
     public static void main(String[] args) {
         parseArgs(args);
         setupStreams();
         if (list) {

@@ -102,72 +130,74 @@
         } else {
             setupHarness();
             setupReporter();
             if (exitOnTimer) {
                 setupTimer(testDurationSeconds);
-                while (true) {
+                do {
                     runBenchmarks();
-                    if (exitRequested) {
-                        System.exit(0);
-                    }
-                }
+                } while (!exitRequested);
             } else {
                 runBenchmarks();
-                System.exit(0);
             }
         }
     }
 
     /**
      * Parse command-line arguments.
      */
     static void parseArgs(String[] args) {
         for (int i = 0; i < args.length; i++) {
-            if (args[i].equals("-h")) {
+            switch (args[i]) {
+                case "-h":
                 usage();
                 System.exit(0);
-            } else if (args[i].equals("-v")) {
+                    break;
+                case "-v":
                 verbose = true;
-            } else if (args[i].equals("-l")) {
+                    break;
+                case "-l":
                 list = true;
-            } else if (args[i].equals("-t")) {
+                    break;
+                case "-t":
                 if (++i >= args.length)
                     die("Error: no timeout value specified");
                 try {
                     exitOnTimer = true;
                     testDurationSeconds = Integer.parseInt(args[i]) * 3600;
-                } catch (Exception e) {
+                    } catch (NumberFormatException e) {
                     die("Error: unable to determine timeout value");
-                }
-            } else if (args[i].equals("-o")) {
+                    }   break;
+                case "-o":
                 if (++i >= args.length)
                     die("Error: no output file specified");
                 try {
                     repstr = new FileOutputStream(args[i]);
-                } catch (IOException e) {
+                    } catch (FileNotFoundException e) {
                     die("Error: unable to open \"" + args[i] + "\"");
-                }
-            } else if (args[i].equals("-c")) {
+                    }   break;
+                case "-c":
                 if (++i >= args.length)
                     die("Error: no config file specified");
+                    String confFileName = TEST_SRC_PATH + args[i];
                 try {
-                    confstr = new FileInputStream(args[i]);
-                } catch (IOException e) {
-                    die("Error: unable to open \"" + args[i] + "\"");
-                }
-            } else if (args[i].equals("-html")) {
+                        confstr = new FileInputStream(confFileName);
+                    } catch (FileNotFoundException e) {
+                        die("Error: unable to open \"" + confFileName + "\"");
+                    }   break;
+                case "-html":
                 if (format != TEXT)
                     die("Error: conflicting formats");
                 format = HTML;
-            } else if (args[i].equals("-xml")) {
+                    break;
+                case "-xml":
                 if (format != TEXT)
                     die("Error: conflicting formats");
                 format = XML;
-            } else {
-                System.err.println("Illegal option: \"" + args[i] + "\"");
+                    break;
+                default:
                 usage();
-                System.exit(1);
+                    die("Illegal option: \"" + args[i] + "\"");
             }
         }
     }
 
     /**

@@ -175,11 +205,11 @@
      */
     static void setupStreams() {
         if (repstr == null)
             repstr = System.out;
         if (confstr == null)
-            confstr = (new Main()).getClass().getResourceAsStream(CONFFILE);
+            confstr = Main.class.getResourceAsStream(TEST_SRC_PATH + CONFFILE);
         if (confstr == null)
             die("Error: unable to find default config file");
     }
 
     /**

@@ -204,10 +234,11 @@
      */
     static void setupTimer(int delay) {
         timer = new Timer(true);
         timer.schedule(
             new TimerTask() {
+                @Override
                 public void run() {
                     exitRequested = true;
                 }
             },
             delay * 1000);