23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee/*
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee * CDDL HEADER START
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee *
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee * The contents of this file are subject to the terms of the
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee * Common Development and Distribution License (the "License").
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee * You may not use this file except in compliance with the License.
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee *
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee * or http://www.opensolaris.org/os/licensing.
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee * See the License for the specific language governing permissions
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee * and limitations under the License.
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee *
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee * When distributing Covered Code, include this CDDL HEADER in each
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee * If applicable, add the following below this CDDL HEADER, with the
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee * fields enclosed by brackets "[]" replaced with your own identifying
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee * information: Portions Copyright [yyyy] [name of copyright owner]
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee *
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee * CDDL HEADER END
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee */
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee/*
e77b06d21580f630e0a7c437495ab283d3672828tomee * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee * Use is subject to license terms.
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee */
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomeeimport org.opensolaris.os.dtrace.*;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomeeimport java.util.*;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomeeimport java.io.*;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomeeimport java.beans.*;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomeeimport java.lang.reflect.*;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee/**
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee * Regression test for serialization and XML encoding/decoding. Tests
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee * every Serializable class in the Java DTrace API by creating a dummy
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee * instance, writing it to a file, then reading it back in and comparing
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee * the string values of the object before and after, as well as
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee * verifying object equality before and after if the class overrides the
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee * equals() method.
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee */
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomeepublic class TestBean {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee public static final String[] TESTS = new String[] {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee "ExitRecord",
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee "AggregationRecord",
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee "Aggregation",
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee "Tuple",
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee "ScalarRecord",
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee "KernelStackRecord",
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee "LogDistribution",
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee "LinearDistribution",
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe "LogLinearDistribution",
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee "Option",
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee "ProcessState",
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee "ProbeDescription",
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee "PrintaRecord",
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee "PrintfRecord",
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee "ProbeData",
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee "Aggregate",
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee "UserStackRecord",
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee "AvgValue",
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee "CountValue",
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee "SumValue",
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee "MinValue",
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee "MaxValue",
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee "Error",
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee "Drop",
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee "InterfaceAttributes",
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee "ProgramInfo",
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee "ProbeInfo",
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee "Probe",
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee "Flow",
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee "KernelSymbolRecord",
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee "UserSymbolRecord",
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee "UserSymbolRecord$Value",
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee "Program",
e77b06d21580f630e0a7c437495ab283d3672828tomee "Program$File",
e77b06d21580f630e0a7c437495ab283d3672828tomee "StddevValue"
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee };
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee static File file;
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee static void
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(int status)
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.flush();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.err.flush();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.exit(status);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee public static XMLEncoder
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee getXMLEncoder(File file)
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee XMLEncoder encoder = null;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee OutputStream out = new BufferedOutputStream
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee (new FileOutputStream(file));
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee encoder = new XMLEncoder(out);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee return encoder;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee public static XMLDecoder
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee getXMLDecoder(File file)
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee return getXMLDecoder(file, null);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee public static XMLDecoder
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee getXMLDecoder(File file, ExceptionListener exceptionListener)
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee XMLDecoder decoder = null;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee InputStream in = new BufferedInputStream
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee (new FileInputStream(file));
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee decoder = new XMLDecoder(in, null, exceptionListener);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee return decoder;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee public static ExitRecord
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee getExitRecord()
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee ExitRecord r = new ExitRecord(1);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee return r;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee public static AggregationRecord
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee getAggregationRecord()
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee Tuple tuple = getTuple();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee AggregationValue value = new CountValue(7);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee AggregationRecord r = new AggregationRecord(tuple, value);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee return r;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee public static Aggregation
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee getAggregation()
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee List < AggregationRecord > list =
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee new ArrayList < AggregationRecord > ();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee AggregationRecord r;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee r = getAggregationRecord();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee list.add(r);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee ValueRecord v1 = new ScalarRecord(new byte[] {(byte)1, (byte)2,
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee (byte)3}, 3);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee ValueRecord v2 = new ScalarRecord("shebang!", 256);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee Tuple tuple = new Tuple(v1, v2);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee AggregationValue value = getLinearDistribution();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee r = new AggregationRecord(tuple, value);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee list.add(r);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee Aggregation a = new Aggregation("counts", 2, list);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee return a;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee public static Tuple
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee getTuple()
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee ValueRecord r1 = new ScalarRecord("cat", 256);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee ValueRecord r2 = new ScalarRecord(new Integer(9), 2);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee ValueRecord r3 = new KernelStackRecord(
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee new StackFrame[] {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee new StackFrame("has"),
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee new StackFrame("nine"),
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee new StackFrame("lives")},
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee new byte[] { (byte)0, (byte)1, (byte)2 });
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee ValueRecord r4 = new ScalarRecord(new byte[] {(byte)1, (byte)2,
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee (byte)3}, 3);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee Tuple tuple = new Tuple(r1, r2, r3, r4);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee return tuple;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee public static ScalarRecord
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee getScalarRecord()
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee Object v = new byte[] {(byte)1, (byte)2, (byte)3};
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee ScalarRecord r = new ScalarRecord(v, 3);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee return r;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee public static KernelStackRecord
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee getKernelStackRecord()
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee StackFrame[] stackFrames = new StackFrame[] {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee new StackFrame("Frame 1"),
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee new StackFrame("Frame 2"),
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee new StackFrame("Frame 3")
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee };
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee KernelStackRecord r = new KernelStackRecord(stackFrames,
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee new byte[] { (byte)0, (byte)1, (byte)2 });
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee return r;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee public static LogDistribution
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee getLogDistribution()
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee List < Distribution.Bucket > buckets =
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee new ArrayList < Distribution.Bucket > ();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee Distribution.Bucket bucket;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee int n = 0;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee long base = 0;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee long i;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee long sign;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee long nextSign;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee long power;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee long nextPower;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee long lowerBound;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee long upperBound;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee for (i = -62; i <= 62; ++i) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee if (i == 0) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee bucket = new Distribution.Bucket(-1, -1, n++);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee buckets.add(bucket);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee bucket = new Distribution.Bucket(0, 0, n++);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee buckets.add(bucket);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee bucket = new Distribution.Bucket(1, 1, n++);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee buckets.add(bucket);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee continue;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee sign = ((i < 0) ? -1L : 1L);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee power = (sign * i);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee nextSign = (((i + 1) < 0) ? -1L : 1L);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee nextPower = (nextSign * (i + 1));
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee lowerBound = sign * ((long) Math.pow(2L, power));
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee upperBound = (nextPower == 0 ? -2L :
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee (nextSign * ((long) Math.pow(2L, nextPower))) - 1);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee if ((upperBound > 0) && ((upperBound * 2L) < 0)) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee upperBound = Long.MAX_VALUE;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee bucket = new Distribution.Bucket(lowerBound, upperBound, n++);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee buckets.add(bucket);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee LogDistribution d = new LogDistribution(buckets);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee return d;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee public static LinearDistribution
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee getLinearDistribution()
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee List < Distribution.Bucket > buckets =
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee new ArrayList < Distribution.Bucket > ();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee Distribution.Bucket bucket;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee int n = 10; // number of buckets
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee int base = 1;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee int step = 10;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee bucket = new Distribution.Bucket(Long.MIN_VALUE, (base - 1), 0);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee buckets.add(bucket);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee for (int i = base; i < (n * step); i += step) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee bucket = new Distribution.Bucket(i, (i + (step - 1)),
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee ((i - 1) / step));
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee buckets.add(bucket);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee bucket = new Distribution.Bucket((n * step) + 1, Long.MAX_VALUE, 0);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee buckets.add(bucket);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee LinearDistribution d = new LinearDistribution(base, step, buckets);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee return d;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe public static LogLinearDistribution
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe getLogLinearDistribution()
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe {
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe Distribution.Bucket bucket;
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe long next, step;
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe long low = 0;
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe long high = 6;
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe long factor = 2;
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe long nsteps = 2;
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe int value = 1;
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe int order;
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe List < Distribution.Bucket > buckets =
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe new ArrayList < Distribution.Bucket > ();
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe for (order = 0; order < low; order++)
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe value *= factor;
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe bucket = new Distribution.Bucket(Long.MIN_VALUE, (value - 1), 0);
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe buckets.add(bucket);
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe next = value * factor;
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe step = (next > nsteps) ? (next / nsteps) : 1;
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe while (order <= high) {
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe bucket = new Distribution.Bucket(value, value + step - 1, 5);
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe buckets.add(bucket);
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe if ((value += step) != next)
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe continue;
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe next = value * factor;
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe step = (next > nsteps) ? (next / nsteps) : 1;
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe order++;
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe }
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe bucket = new Distribution.Bucket(value, Long.MAX_VALUE, 0);
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe buckets.add(bucket);
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe LogLinearDistribution d = new LogLinearDistribution(factor, low, high,
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe nsteps, 0, buckets);
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe return d;
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe }
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee public static Option
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee getOption()
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee Option option = new Option("aggrate", "1s");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee return option;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee public static ProcessState
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee getProcessState()
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee ProcessState p = new ProcessState(123456, "UNDEAD",
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee 3, "SIGSTOP",
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee -2, "Process stopped on dime");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee return p;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee public static ProbeDescription
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee getProbeDescription()
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee ProbeDescription d = new ProbeDescription(256, "syscall", null,
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee "malloc", "entry");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee return d;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee public static PrintaRecord
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee getPrintaRecord()
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee List < Aggregation > aggregations = new ArrayList < Aggregation > ();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee Aggregation a = getAggregation();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee aggregations.add(a);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee aggregations.add(a);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee Map < Tuple, String > formattedOutput =
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee new HashMap < Tuple, String > ();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee for (Tuple t : a.asMap().keySet()) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee formattedOutput.put(t, "cat");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee List < Tuple > tuples = new ArrayList < Tuple > ();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee for (Tuple t : a.asMap().keySet()) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee tuples.add(t);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee Collections.sort(tuples);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee PrintaRecord r = new PrintaRecord(1234567890L,
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee aggregations, formattedOutput, tuples,
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee "Yes, this is the formatted printa() output");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee return r;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee public static PrintfRecord
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee getPrintfRecord()
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee List < ValueRecord > list = new ArrayList < ValueRecord > ();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee ValueRecord v1 = getScalarRecord();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee ValueRecord v2 = new ScalarRecord(new Integer(7), 4);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee list.add(v1);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee list.add(v2);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee PrintfRecord r = new PrintfRecord(list,
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee "long formatted string");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee return r;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee public static ProbeData
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee getProbeData()
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee List < Record > list = new ArrayList < Record > ();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee list.add(getPrintaRecord());
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee list.add(getPrintfRecord());
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee list.add(getScalarRecord());
e77b06d21580f630e0a7c437495ab283d3672828tomee list.add(getUserSymbolRecord());
e77b06d21580f630e0a7c437495ab283d3672828tomee list.add(getUserStackRecord());
e77b06d21580f630e0a7c437495ab283d3672828tomee list.add(getExitRecord());
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee ProbeData d = new ProbeData(7, 1, getProbeDescription(),
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee getFlow(), list);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee return d;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee public static Aggregate
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee getAggregate()
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee List < Aggregation > list = new ArrayList < Aggregation > ();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee list.add(getAggregation());
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee List < AggregationRecord > reclist =
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee new ArrayList < AggregationRecord > ();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee AggregationRecord r;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee ValueRecord v1 = new ScalarRecord("cat", 256);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee ValueRecord v2 = new ScalarRecord("dog", 256);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee ValueRecord v3 = new ScalarRecord("mouse", 256);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee ValueRecord v4 = new ScalarRecord("mouse", 256);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee ValueRecord v5 = new ScalarRecord(new Byte((byte) 'C'), 1);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee ValueRecord v6 = new ScalarRecord(new Short((short) 7), 2);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee Tuple tuple = new Tuple(v1, v2, v3, v4, v5, v6);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee AggregationValue value = getCountValue();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee r = new AggregationRecord(tuple, value);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee reclist.add(r);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee list.add(new Aggregation("times", 1, reclist));
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee Aggregate a = new Aggregate(1234567890L, list);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee return a;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee public static UserStackRecord
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee getUserStackRecord()
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee StackFrame[] frames = new StackFrame[] {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee new StackFrame("User Stack Frame 1"),
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee new StackFrame("User Stack Frame 2"),
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee new StackFrame("User Stack Frame 3")
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee };
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee UserStackRecord r = new UserStackRecord(123456, frames,
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee new byte[] { (byte)0, (byte)1, (byte)2 });
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee return r;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee public static AvgValue
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee getAvgValue()
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee AvgValue v = new AvgValue(5, 20, 4);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee return v;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee public static CountValue
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee getCountValue()
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee CountValue v = new CountValue(9);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee return v;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee public static MinValue
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee getMinValue()
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee MinValue v = new MinValue(101);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee return v;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee public static MaxValue
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee getMaxValue()
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee MaxValue v = new MaxValue(101);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee return v;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee public static SumValue
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee getSumValue()
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee SumValue v = new SumValue(25);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee return v;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee public static org.opensolaris.os.dtrace.Error
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee getError()
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee ProbeDescription probe = getProbeDescription();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee org.opensolaris.os.dtrace.Error e =
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee new org.opensolaris.os.dtrace.Error(probe, 8, 3,
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee 1, 20, "DTRACEFLT_BADALIGN", -1, "error on enabled probe ID 8 " +
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee "(ID " + probe.getID() + ": " + probe + "): Bad alignment " +
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee "(0x33ef) in action #1 at DIF offset 20");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee return e;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee public static Drop
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee getDrop()
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee Drop drop = new Drop(2, "SPECBUSY", 72, 1041,
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee "Guess we dropped stuff all over the place.");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee return drop;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee public static InterfaceAttributes
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee getInterfaceAttributes()
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee InterfaceAttributes a = new InterfaceAttributes(
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee InterfaceAttributes.Stability.UNSTABLE,
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee InterfaceAttributes.Stability.EVOLVING,
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee InterfaceAttributes.DependencyClass.ISA);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee return a;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee public static ProgramInfo
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee getProgramInfo()
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee ProgramInfo info = new ProgramInfo(getInterfaceAttributes(),
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee getInterfaceAttributes(), 256);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee return info;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee public static ProbeInfo
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee getProbeInfo()
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee ProbeInfo info = new ProbeInfo(getInterfaceAttributes(),
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee getInterfaceAttributes());
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee return info;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee public static Probe
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee getProbe()
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee Probe p = new Probe(getProbeDescription(), getProbeInfo());
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee return p;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee public static Flow
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee getFlow()
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee Flow f = new Flow(Flow.Kind.RETURN.name(), 3);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee return f;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee public static KernelSymbolRecord
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee getKernelSymbolRecord()
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee KernelSymbolRecord r = new KernelSymbolRecord("mod`func+0x4", -1L);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee return r;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee public static UserSymbolRecord
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee getUserSymbolRecord()
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee UserSymbolRecord r = new UserSymbolRecord(7, "mod`func+0x4", -1L);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee return r;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee public static UserSymbolRecord.Value
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee getUserSymbolRecord$Value()
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee UserSymbolRecord.Value v = new UserSymbolRecord.Value(7, -1L);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee return v;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee public static Program
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee getProgram()
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee {
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee final String PROGRAM = "syscall:::entry { @[execname] = count(); }";
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee Consumer consumer = new LocalConsumer();
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee Program p;
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee try {
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee consumer.open();
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee p = consumer.compile(PROGRAM);
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee consumer.close();
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee } catch (DTraceException e) {
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee e.printStackTrace();
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee p = null;
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee }
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee return p;
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee }
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee public static Program.File
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee getProgram$File()
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee {
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee final String PROGRAM = "syscall:::entry { @[execname] = count(); }";
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee Consumer consumer = new LocalConsumer();
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee Program p;
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee try {
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee OutputStream out = new FileOutputStream(file);
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee out.write(PROGRAM.getBytes(), 0, PROGRAM.length());
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee out.flush();
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee out.close();
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee consumer.open();
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee p = consumer.compile(file);
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee consumer.close();
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee } catch (Exception e) {
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee e.printStackTrace();
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee p = null;
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee }
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee return Program.File.class.cast(p);
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee }
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee
e77b06d21580f630e0a7c437495ab283d3672828tomee public static StddevValue
e77b06d21580f630e0a7c437495ab283d3672828tomee getStddevValue()
e77b06d21580f630e0a7c437495ab283d3672828tomee {
e77b06d21580f630e0a7c437495ab283d3672828tomee StddevValue v = new StddevValue(37, 114, 5, Integer.toString(9544));
e77b06d21580f630e0a7c437495ab283d3672828tomee return v;
e77b06d21580f630e0a7c437495ab283d3672828tomee }
e77b06d21580f630e0a7c437495ab283d3672828tomee
e77b06d21580f630e0a7c437495ab283d3672828tomee @SuppressWarnings("unchecked")
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee static String
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee getString(Object o)
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee String s;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee if (o instanceof ScalarRecord) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee o = ((ScalarRecord)o).getValue();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee if (o instanceof byte[]) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee s = Arrays.toString((byte[])o);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } else if (o instanceof Object[]) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee s = Arrays.toString((Object[])o);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } else {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee Class c = o.getClass();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee Method m = c.getDeclaredMethod("toLogString");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee s = (String)m.invoke(o);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee s = o.toString();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee return s;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee static void
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee checkEquality(Object obj, Object newobj)
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee // If the class overrides equals(), make sure the re-created
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee // object still equals the original object
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee Method eq = obj.getClass().getDeclaredMethod("equals",
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee Object.class);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee Boolean ret = (Boolean) eq.invoke(obj, newobj);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee if (ret != true) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.err.println("serialization failed: " +
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee obj.getClass().getName());
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee // Does not override equals(), although a super-class might.
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee // A better test would check for any superclass other than
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee // Object.class.
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee static void
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee performSerializationTest(File file, String classname)
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee throws IOException, ClassNotFoundException
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee String methodName = "get" + classname;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee Object obj = null;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee Object newobj = null;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee Method method = TestBean.class.getDeclaredMethod(methodName);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee obj = method.invoke(null);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println(classname + ":");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee String serialized = getString(obj);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println(" serialized: " + serialized);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee FileOutputStream fos = new FileOutputStream(file);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee ObjectOutputStream out = new ObjectOutputStream(fos);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee out.writeObject(obj);
e77b06d21580f630e0a7c437495ab283d3672828tomee out.close();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee FileInputStream fis = new FileInputStream(file);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee ObjectInputStream in = new ObjectInputStream(fis);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee newobj = in.readObject();
e77b06d21580f630e0a7c437495ab283d3672828tomee in.close();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee String deserialized = getString(newobj);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println(" deserialized: " + deserialized);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee if (!serialized.equals(deserialized)) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.err.println("serialization failed: " + classname);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee checkEquality(obj, newobj);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee static void
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee performBeanTest(File file, String classname)
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee String methodName = "get" + classname;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee Object obj = null;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee Object newobj = null;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee Method method = TestBean.class.getDeclaredMethod(methodName);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee obj = method.invoke(null);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee Class c = obj.getClass();
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee if (c.getConstructors().length == 0) {
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee return;
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee }
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println(classname + ":");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee XMLEncoder encoder = getXMLEncoder(file);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee String encoded = getString(obj);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println(" encoded: " + encoded);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee encoder.writeObject(obj);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee encoder.close();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee XMLDecoder decoder = getXMLDecoder(file);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee newobj = decoder.readObject();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee String decoded = getString(newobj);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println(" decoded: " + decoded);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee decoder.close();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee if (!encoded.equals(decoded)) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.err.println("bean persistence failed: " + classname);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee checkEquality(obj, newobj);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee public static void
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee main(String[] args)
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee if ((args.length != 1) && (args.length != 2)) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.err.println("usage: java TestBean < filename > " +
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee "[ < classname > ]");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee String filename = args[0];
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee String classname = null;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee if (args.length >= 2) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee classname = args[1];
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
91cfa10a8e55050a5103c4b2e83b0bf8d783a7cbtomee file = new File(filename);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee if (!file.canRead()) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee file.createNewFile();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.err.println("failed to create " + filename);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (SecurityException e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.err.println("failed to open " + filename);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee String[] tests = (classname == null ? TESTS:
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee new String[] { classname });
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee for (int i = 0; i < tests.length; ++i) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee performSerializationTest(file, tests[i]);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee performBeanTest(file, tests[i]);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (IOException e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (ClassNotFoundException e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee}