[P-unit-devel] SF.net SVN: p-unit: [58] trunk/punit
Status: Beta
Brought to you by:
zhanghuangzhu
|
From: <zha...@us...> - 2007-05-14 07:48:30
|
Revision: 58
http://p-unit.svn.sourceforge.net/p-unit/?rev=58&view=rev
Author: zhanghuangzhu
Date: 2007-05-14 00:48:30 -0700 (Mon, 14 May 2007)
Log Message:
-----------
Andrew Zhang: first implmentation for image reporter.
Modified Paths:
--------------
trunk/punit/src/org/punit/events/WatcherEventListener.java
trunk/punit/src/org/punit/reporter/stream/StreamLoggerListener.java
trunk/punit/src/org/punit/runner/PUnitAbstractRunner.java
trunk/punit/src/org/punit/runner/Runner.java
trunk/punit/src/org/punit/runner/method/AbstractTestMethodRunner.java
trunk/punit/src/org/punit/runner/method/TestMethodRunner.java
trunk/punit/src/org/punit/watcher/MemoryWatcher.java
trunk/punit/src/org/punit/watcher/TimeWatcher.java
trunk/punit/src/org/punit/watcher/Watcher.java
trunk/punit/src/punit.properties
trunk/punit.extension/.classpath
trunk/punit.extension/src/org/punit/reporter/chart/image/OverviewImageReporter.java
trunk/punit.test/.classpath
trunk/punit.test/src/tests/api/org/punit/all/AllTests.java
trunk/punit.test/src/tests/api/org/punit/watcher/MemoryWatcherTest.java
trunk/punit.test/src/tests/api/org/punit/watcher/TimeWatcherTest.java
trunk/punit.test/src/tests/sample/testcase/JUnitTestSample.java
Added Paths:
-----------
trunk/punit/src/org/punit/watcher/AbstractWatcher.java
trunk/punit.extension/lib/jcommon-1.0.9.jar
trunk/punit.extension/src/org/punit/reporter/chart/image/ChartConstants.java
Modified: trunk/punit/src/org/punit/events/WatcherEventListener.java
===================================================================
--- trunk/punit/src/org/punit/events/WatcherEventListener.java 2007-05-14 06:10:20 UTC (rev 57)
+++ trunk/punit/src/org/punit/events/WatcherEventListener.java 2007-05-14 07:48:30 UTC (rev 58)
@@ -5,12 +5,12 @@
import org.punit.watcher.*;
public interface WatcherEventListener extends EventListener {
- public void onWatchersStart(Watcher[] watches);
+ public void onWatchersStart(Watcher[] watchers);
- public void onWatcherStart(Watcher watch);
+ public void onWatcherStart(Watcher watcher);
- public void onWatcherEnd(Watcher watch);
+ public void onWatcherEnd(Watcher watcher);
- public void onWatchersEnd(Watcher[] watches);
+ public void onWatchersEnd(Watcher[] watchers);
}
Modified: trunk/punit/src/org/punit/reporter/stream/StreamLoggerListener.java
===================================================================
--- trunk/punit/src/org/punit/reporter/stream/StreamLoggerListener.java 2007-05-14 06:10:20 UTC (rev 57)
+++ trunk/punit/src/org/punit/reporter/stream/StreamLoggerListener.java 2007-05-14 07:48:30 UTC (rev 58)
@@ -63,19 +63,19 @@
_watchersStart = true;
}
- public void onWatcherStart(Watcher watch) {
+ public void onWatcherStart(Watcher watcher) {
}
public void onWatchersEnd(Watcher[] watchers) {
log("]", Level.FINE); //$NON-NLS-1$
}
- public void onWatcherEnd(Watcher watch) {
- String watchValue = watch.stringValue();
+ public void onWatcherEnd(Watcher watcher) {
+ String watchValue = watcher.stringValue();
if (_watchersStart) {
log(" - [" + watchValue, Level.FINE); //$NON-NLS-1$
} else {
- log("," + watch.stringValue(), Level.FINE); //$NON-NLS-1$
+ log("," + watcher.stringValue(), Level.FINE); //$NON-NLS-1$
}
_watchersStart = false;
}
Modified: trunk/punit/src/org/punit/runner/PUnitAbstractRunner.java
===================================================================
--- trunk/punit/src/org/punit/runner/PUnitAbstractRunner.java 2007-05-14 06:10:20 UTC (rev 57)
+++ trunk/punit/src/org/punit/runner/PUnitAbstractRunner.java 2007-05-14 07:48:30 UTC (rev 58)
@@ -5,7 +5,6 @@
import org.punit.builder.*;
import org.punit.events.*;
-import org.punit.reporter.stream.*;
import org.punit.reporter.stream.console.*;
import org.punit.reporter.stream.file.*;
import org.punit.result.*;
@@ -158,26 +157,26 @@
}
private void registerLoggerListeners() {
- registerStreamLoggerListener(_consoleLogger);
- registerStreamLoggerListener(_fileLogger);
+ addPUnitEventListener(_consoleLogger);
+ addPUnitEventListener(_fileLogger);
}
- private void registerStreamLoggerListener(StreamLoggerListener logger) {
- addRunnerEventListener(logger);
- addClassEventListener(logger);
- _testMethodRunner.addMethodEventListener(logger);
- _testMethodRunner.addWatcherEventListener(logger);
+ public void addPUnitEventListener(PUnitEvent listener) {
+ addRunnerEventListener(listener);
+ addClassEventListener(listener);
+ _testMethodRunner.addMethodEventListener(listener);
+ _testMethodRunner.addWatcherEventListener(listener);
}
public void removeConsoleLogger() {
- removeStreamLoggerListener(_consoleLogger);
+ removePUnitEventListener(_consoleLogger);
}
public void removeFileLogger() {
- removeStreamLoggerListener(_fileLogger);
+ removePUnitEventListener(_fileLogger);
}
- private void removeStreamLoggerListener(StreamLoggerListener logger) {
+ public void removePUnitEventListener(PUnitEvent logger) {
removeRunnerEventListener(logger);
removeClassEventListener(logger);
_testMethodRunner.removeMethodEventListener(logger);
Modified: trunk/punit/src/org/punit/runner/Runner.java
===================================================================
--- trunk/punit/src/org/punit/runner/Runner.java 2007-05-14 06:10:20 UTC (rev 57)
+++ trunk/punit/src/org/punit/runner/Runner.java 2007-05-14 07:48:30 UTC (rev 58)
@@ -1,8 +1,28 @@
package org.punit.runner;
+import org.punit.builder.*;
import org.punit.events.*;
import org.punit.result.*;
+import org.punit.runner.method.*;
public interface Runner extends RunnerEvent, ClassEvent {
public Result run(Class clazz);
+
+ public TestMethodBuilder testMethodBuilder();
+
+ public TestMethodRunner testMethodRunner();
+
+ public TestSuiteBuilder testSuiteBuiler();
+
+ public void addRunnerEventListener(RunnerEventListener listener);
+
+ public void removeRunnerEventListener(RunnerEventListener listener);
+
+ public void addPUnitEventListener(PUnitEvent listener);
+
+ public void removePUnitEventListener(PUnitEvent listener);
+
+ public void addClassEventListener(ClassEventListener listener);
+
+ public void removeClassEventListener(ClassEventListener listener);
}
Modified: trunk/punit/src/org/punit/runner/method/AbstractTestMethodRunner.java
===================================================================
--- trunk/punit/src/org/punit/runner/method/AbstractTestMethodRunner.java 2007-05-14 06:10:20 UTC (rev 57)
+++ trunk/punit/src/org/punit/runner/method/AbstractTestMethodRunner.java 2007-05-14 07:48:30 UTC (rev 58)
@@ -198,14 +198,18 @@
});
}
- protected final Object[] watchersValues() {
- Object[] values = new Object[_watchers.length];
- for (int i = 0; i < _watchers.length; ++i) {
- values[i] = _watchers[i].value();
- }
- return values;
+// protected final double[] watchersValues() {
+// double[] values = new double[_watchers.length];
+// for (int i = 0; i < _watchers.length; ++i) {
+// values[i] = _watchers[i].value();
+// }
+// return values;
+// }
+
+ public Watcher[] watchers() {
+ return _watchers;
}
-
+
private boolean isPUnitTest() {
return PUnitTest.class.isAssignableFrom(_class);
}
Modified: trunk/punit/src/org/punit/runner/method/TestMethodRunner.java
===================================================================
--- trunk/punit/src/org/punit/runner/method/TestMethodRunner.java 2007-05-14 06:10:20 UTC (rev 57)
+++ trunk/punit/src/org/punit/runner/method/TestMethodRunner.java 2007-05-14 07:48:30 UTC (rev 58)
@@ -3,15 +3,21 @@
import java.lang.reflect.*;
import org.punit.events.*;
+import org.punit.watcher.*;
public interface TestMethodRunner extends MethodEvent, WatcherEvent {
/**
* Runs the test method, and returns the watcher values.
+ *
* @param clazz
* @param method
* @return
*/
public void run(Object testInstance, Method method, Object[] params);
-
+ /**
+ * returns the watchers associated with this method runner.
+ * @return
+ */
+ public Watcher[] watchers();
}
Added: trunk/punit/src/org/punit/watcher/AbstractWatcher.java
===================================================================
--- trunk/punit/src/org/punit/watcher/AbstractWatcher.java (rev 0)
+++ trunk/punit/src/org/punit/watcher/AbstractWatcher.java 2007-05-14 07:48:30 UTC (rev 58)
@@ -0,0 +1,5 @@
+package org.punit.watcher;
+
+public abstract class AbstractWatcher implements Watcher {
+ public abstract String toString();
+}
Modified: trunk/punit/src/org/punit/watcher/MemoryWatcher.java
===================================================================
--- trunk/punit/src/org/punit/watcher/MemoryWatcher.java 2007-05-14 06:10:20 UTC (rev 57)
+++ trunk/punit/src/org/punit/watcher/MemoryWatcher.java 2007-05-14 07:48:30 UTC (rev 58)
@@ -3,7 +3,7 @@
import org.punit.message.*;
import org.punit.util.*;
-public class MemoryWatcher implements Watcher {
+public class MemoryWatcher extends AbstractWatcher {
private long _startUsedMemory;
@@ -23,8 +23,8 @@
monitorMemory();
}
- public Object value() {
- return new Long(_maxUsedMemory - _startUsedMemory);
+ public double value() {
+ return _maxUsedMemory - _startUsedMemory;
}
private void monitorMemory() {
@@ -46,4 +46,8 @@
public String stringValue() {
return value() + Messages.getString("watcher.01"); //$NON-NLS-1$
}
+
+ public String toString() {
+ return Messages.getString("watcher.03"); //$NON-NLS-1$
+ }
}
Modified: trunk/punit/src/org/punit/watcher/TimeWatcher.java
===================================================================
--- trunk/punit/src/org/punit/watcher/TimeWatcher.java 2007-05-14 06:10:20 UTC (rev 57)
+++ trunk/punit/src/org/punit/watcher/TimeWatcher.java 2007-05-14 07:48:30 UTC (rev 58)
@@ -21,7 +21,7 @@
import org.punit.message.*;
-public class TimeWatcher implements Watcher {
+public class TimeWatcher extends AbstractWatcher {
private long _startTime;
@@ -35,11 +35,15 @@
_endTime = System.nanoTime();
}
- public Object value() {
- return new Long((_endTime - _startTime)/1000000);
+ public double value() {
+ return (_endTime - _startTime)/1000000;
}
public String stringValue() {
return value() + Messages.getString("watcher.02"); //$NON-NLS-1$
}
+
+ public String toString() {
+ return Messages.getString("watcher.04"); //$NON-NLS-1$
+ }
}
Modified: trunk/punit/src/org/punit/watcher/Watcher.java
===================================================================
--- trunk/punit/src/org/punit/watcher/Watcher.java 2007-05-14 06:10:20 UTC (rev 57)
+++ trunk/punit/src/org/punit/watcher/Watcher.java 2007-05-14 07:48:30 UTC (rev 58)
@@ -6,7 +6,7 @@
public void stop();
- public Object value();
+ public double value();
public String stringValue();
Modified: trunk/punit/src/punit.properties
===================================================================
--- trunk/punit/src/punit.properties 2007-05-14 06:10:20 UTC (rev 57)
+++ trunk/punit/src/punit.properties 2007-05-14 07:48:30 UTC (rev 58)
@@ -10,3 +10,5 @@
runner.04=concurrent_parameterizable
watcher.01=bytes
watcher.02=ms
+watcher.03=memory
+watcher.04=time
\ No newline at end of file
Modified: trunk/punit.extension/.classpath
===================================================================
--- trunk/punit.extension/.classpath 2007-05-14 06:10:20 UTC (rev 57)
+++ trunk/punit.extension/.classpath 2007-05-14 07:48:30 UTC (rev 58)
@@ -3,5 +3,7 @@
<classpathentry path="src" kind="src"/>
<classpathentry path="org.eclipse.jdt.launching.JRE_CONTAINER" kind="con"/>
<classpathentry path="/punit" combineaccessrules="false" kind="src"/>
+ <classpathentry path="lib/jfreechart-1.0.5.jar" kind="lib"/>
+ <classpathentry path="lib/jcommon-1.0.9.jar" kind="lib"/>
<classpathentry path="bin" kind="output"/>
</classpath>
Added: trunk/punit.extension/lib/jcommon-1.0.9.jar
===================================================================
(Binary files differ)
Property changes on: trunk/punit.extension/lib/jcommon-1.0.9.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/punit.extension/src/org/punit/reporter/chart/image/ChartConstants.java
===================================================================
--- trunk/punit.extension/src/org/punit/reporter/chart/image/ChartConstants.java (rev 0)
+++ trunk/punit.extension/src/org/punit/reporter/chart/image/ChartConstants.java 2007-05-14 07:48:30 UTC (rev 58)
@@ -0,0 +1,12 @@
+package org.punit.reporter.chart.image;
+
+import java.awt.*;
+
+public class ChartConstants {
+ public static final Font TITLE_FONT = new Font("SansSerif", Font.BOLD, 14); //$NON-NLS-1$
+ public static final Font LEGEND_FONT = new Font("SansSerif", Font.PLAIN, 12); //$NON-NLS-1$
+ public static final Font VALUE_LABEL_FONT = new Font("SansSerif", Font.ITALIC, 12); //$NON-NLS-1$
+ public static final Font VALUE_TICKLABEL_FONT = new Font("SansSerif", Font.PLAIN, 10); //$NON-NLS-1$
+ public static final Font CATEGORY_LABEL_FONT = new Font("SansSerif", Font.ITALIC, 12); //$NON-NLS-1$
+ public static final Font CATEGORY_TICKLABEL_FONT = new Font("SansSerif", Font.PLAIN, 10); //$NON-NLS-1$
+}
Modified: trunk/punit.extension/src/org/punit/reporter/chart/image/OverviewImageReporter.java
===================================================================
--- trunk/punit.extension/src/org/punit/reporter/chart/image/OverviewImageReporter.java 2007-05-14 06:10:20 UTC (rev 57)
+++ trunk/punit.extension/src/org/punit/reporter/chart/image/OverviewImageReporter.java 2007-05-14 07:48:30 UTC (rev 58)
@@ -1,51 +1,142 @@
package org.punit.reporter.chart.image;
+import java.awt.image.*;
+import java.io.*;
import java.lang.reflect.*;
+import java.util.*;
+import java.util.Map.*;
+import javax.imageio.*;
+
+import org.jfree.chart.*;
+import org.jfree.chart.axis.*;
+import org.jfree.chart.plot.*;
+import org.jfree.chart.renderer.category.*;
+import org.jfree.data.category.*;
import org.punit.events.*;
import org.punit.runner.*;
+import org.punit.util.*;
import org.punit.watcher.*;
public class OverviewImageReporter implements PUnitEvent {
- public void onRunnerEnd(Class clazz, Runner runner) {
- throw new UnsupportedOperationException();
+ private static int DEFAULT_HEIGHT = 750;
+
+ private static int DEFAULT_WIDTH = 750;
+
+ private static String DEFAULT_FORMAT = "png"; //$NON-NLS-1$
+
+ private Hashtable _overviewDatasets; // <Watcher,DefaultCategoryDataset>
+
+ private Class _currentClass;
+
+ private Method _currentMethod;
+
+ private int _height;
+
+ private int _width;
+
+ private String _format;
+
+ public OverviewImageReporter() {
+ this(DEFAULT_HEIGHT, DEFAULT_WIDTH, DEFAULT_FORMAT);
}
+ public OverviewImageReporter(int height, int width, String format) {
+ _height = height;
+ _width = width;
+ _format = format;
+ }
+
public void onRunnerStart(Class clazz, Runner runner) {
- throw new UnsupportedOperationException();
+ Watcher[] watchers = runner.testMethodRunner().watchers();
+ _overviewDatasets = new Hashtable(watchers.length);
+ for (int i = 0; i < watchers.length; ++i) {
+ _overviewDatasets.put(watchers[i], new DefaultCategoryDataset());
+ }
}
- public void onClassEnd(Class clazz) {
- throw new UnsupportedOperationException();
+ public void onRunnerEnd(Class clazz, Runner runner) {
+ Set entrySet = _overviewDatasets.entrySet();
+ VisitorUtil.traverse(entrySet.iterator(), new Visitor() {
+ public void visit(Object obj) {
+ Entry entry = (Entry) obj;
+ Watcher watcher = (Watcher) entry.getKey();
+ CategoryDataset dataset = (CategoryDataset) entry.getValue();
+ JFreeChart chart = renderChart(watcher, dataset);
+ String fileName = "result/overview_" + watcher + ".png";
+ saveChartAsPNG(chart, new File(fileName));
+ }
+
+ });
}
+ protected JFreeChart renderChart(Watcher watcher, CategoryDataset dataset) {
+ CategoryAxis categoryAxis = new CategoryAxis(""); //$NON-NLS-1$
+ categoryAxis.setLabelFont(ChartConstants.CATEGORY_LABEL_FONT);
+ categoryAxis.setTickLabelFont(ChartConstants.CATEGORY_TICKLABEL_FONT);
+
+ // configure y axis
+ String yLegendText = watcher.toString();
+ ValueAxis valueAxis = new NumberAxis(yLegendText);
+ valueAxis.setLabelFont(ChartConstants.VALUE_LABEL_FONT);
+ valueAxis.setTickLabelFont(ChartConstants.VALUE_TICKLABEL_FONT);
+ LineAndShapeRenderer renderer = new LineAndShapeRenderer(true, false);
+ CategoryPlot plot = new CategoryPlot(dataset, categoryAxis, valueAxis,
+ renderer);
+ plot.setOrientation(PlotOrientation.VERTICAL);
+
+ JFreeChart chart = new JFreeChart("Overview", ChartConstants.TITLE_FONT, plot, false);
+ return chart;
+ }
+
+ protected void saveChartAsPNG(JFreeChart chart, File file) {
+ BufferedImage chartImage = chart.createBufferedImage(_height, _width);
+ try {
+ ImageIO.write(chartImage, _format, file);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ public void onWatchersStart(Watcher[] watchers) {
+ // nothing needs to do
+ }
+
+ public void onWatchersEnd(Watcher[] watchers) {
+ // nothing needs to do
+ }
+
public void onClassStart(Class clazz) {
- throw new UnsupportedOperationException();
+ _currentClass = clazz;
}
- public void onMethodEnd(Method method, Throwable t) {
- throw new UnsupportedOperationException();
+ public void onClassEnd(Class clazz) {
+ // nothing needs to do
}
public void onMethodStart(Method method) {
- throw new UnsupportedOperationException();
+ _currentMethod = method;
}
- public void onWatcherEnd(Watcher watch) {
- throw new UnsupportedOperationException();
+ public void onMethodEnd(Method method, Throwable t) {
+ // nothing needs to do
}
- public void onWatcherStart(Watcher watch) {
- throw new UnsupportedOperationException();
+ public void onWatcherStart(Watcher watcher) {
+ // nothing needs to do
}
- public void onWatchersEnd() {
- throw new UnsupportedOperationException();
+ public void onWatcherEnd(Watcher watcher) {
+ DefaultCategoryDataset dataset = getDefaultCategoryDataset(watcher);
+ double value = watcher.value();
+ dataset.addValue(value, _currentClass.getName(), _currentMethod
+ .getName()); // value, y, x
}
- public void onWatchersStart() {
- throw new UnsupportedOperationException();
+ protected final DefaultCategoryDataset getDefaultCategoryDataset(
+ Watcher watcher) {
+ return (DefaultCategoryDataset) _overviewDatasets.get(watcher);
}
}
Modified: trunk/punit.test/.classpath
===================================================================
--- trunk/punit.test/.classpath 2007-05-14 06:10:20 UTC (rev 57)
+++ trunk/punit.test/.classpath 2007-05-14 07:48:30 UTC (rev 58)
@@ -4,5 +4,6 @@
<classpathentry path="org.eclipse.jdt.launching.JRE_CONTAINER" kind="con"/>
<classpathentry path="/punit" combineaccessrules="false" kind="src"/>
<classpathentry path="org.eclipse.jdt.junit.JUNIT_CONTAINER/3.8.1" kind="con"/>
+ <classpathentry path="/punit.extension" combineaccessrules="false" kind="src"/>
<classpathentry path="bin" kind="output"/>
</classpath>
Modified: trunk/punit.test/src/tests/api/org/punit/all/AllTests.java
===================================================================
--- trunk/punit.test/src/tests/api/org/punit/all/AllTests.java 2007-05-14 06:10:20 UTC (rev 57)
+++ trunk/punit.test/src/tests/api/org/punit/all/AllTests.java 2007-05-14 07:48:30 UTC (rev 58)
@@ -11,7 +11,7 @@
public class AllTests {
public static Test suite() {
- TestSuite suite = new TestSuite("Test for tests.api.org.punit");
+ TestSuite suite = new TestSuite("Test for tests.api.org.punit"); //$NON-NLS-1$
//$JUnit-BEGIN$
suite.addTestSuite(ConcurrentExceptionTest.class);
suite.addTestSuite(LoggerUtilTest.class);
Modified: trunk/punit.test/src/tests/api/org/punit/watcher/MemoryWatcherTest.java
===================================================================
--- trunk/punit.test/src/tests/api/org/punit/watcher/MemoryWatcherTest.java 2007-05-14 06:10:20 UTC (rev 57)
+++ trunk/punit.test/src/tests/api/org/punit/watcher/MemoryWatcherTest.java 2007-05-14 07:48:30 UTC (rev 58)
@@ -21,8 +21,7 @@
data[i] = 42;
}
_watcher.stop();
- Long value = (Long) _watcher.value();
- long memoryConsumed = value.longValue();
+ double memoryConsumed = _watcher.value();
// The following assertions are not safe in theory, but it works
// practically.
assertTrue(memoryConsumed < data.length * 1.5);
Modified: trunk/punit.test/src/tests/api/org/punit/watcher/TimeWatcherTest.java
===================================================================
--- trunk/punit.test/src/tests/api/org/punit/watcher/TimeWatcherTest.java 2007-05-14 06:10:20 UTC (rev 57)
+++ trunk/punit.test/src/tests/api/org/punit/watcher/TimeWatcherTest.java 2007-05-14 07:48:30 UTC (rev 58)
@@ -16,8 +16,7 @@
_watcher.start();
Thread.sleep(SLEEP_TIME);
_watcher.stop();
- Long value = (Long) _watcher.value();
- long timeElapsed = value.longValue();
+ double timeElapsed = _watcher.value();
// The following assertions are not safe in theory, but it works
// practically.
assertTrue(timeElapsed < SLEEP_TIME * 1.2);
Modified: trunk/punit.test/src/tests/sample/testcase/JUnitTestSample.java
===================================================================
--- trunk/punit.test/src/tests/sample/testcase/JUnitTestSample.java 2007-05-14 06:10:20 UTC (rev 57)
+++ trunk/punit.test/src/tests/sample/testcase/JUnitTestSample.java 2007-05-14 07:48:30 UTC (rev 58)
@@ -2,12 +2,17 @@
import junit.framework.*;
+import org.punit.reporter.chart.image.*;
import org.punit.runner.*;
+import org.punit.util.*;
public class JUnitTestSample extends TestCase {
public static void main(String[] args) {
- new PUnitSoloRunner().run(JUnitTestSample.class);
+ PUnitSoloRunner runner = new PUnitSoloRunner();
+ OverviewImageReporter reporter = new OverviewImageReporter();
+ runner.addPUnitEventListener(reporter);
+ runner.run(JUnitTestSample.class);
}
public void setUp() {
@@ -19,9 +24,23 @@
}
public void test1() {
+ ThreadUtil.sleepIgnoreInterruption(20);
+ int length = new int[100].length;
+ ++length;
}
public void test2() {
+ ThreadUtil.sleepIgnoreInterruption(10);
+ int length = new int[30000].length;
+ ++length;
}
+ public void test3() {
+ ThreadUtil.sleepIgnoreInterruption(30);
+ int length = 200;
+ for(int i = 0, j = 0; i < length; ++i) {
+ j += new int[i].length;
+ }
+ }
+
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|