undefect. CWE-407 — 63 sites patched across 27 ecosystems
Authors: russell@unturf.com · brackishbert@gmail.com · foxhop.net · TimeHexOn.com Patches, unit tests, benchmarks, whitepaper, and outreach briefs. Public domain — no copyright claimed. Use freely.
This commit is contained in:
commit
0a580b313d
70422 changed files with 17213626 additions and 0 deletions
168
test/jdk/performance/client/SwingMark/src/SwingMarkPanel.java
Normal file
168
test/jdk/performance/client/SwingMark/src/SwingMarkPanel.java
Normal file
|
|
@ -0,0 +1,168 @@
|
|||
/*
|
||||
* Copyright (c) 1998, 2023, Oracle and/or its affiliates. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* - Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* - Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* - Neither the name of Oracle nor the names of its
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
|
||||
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileReader;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.LineNumberReader;
|
||||
import java.util.Date;
|
||||
import java.util.Vector;
|
||||
import javax.swing.JTabbedPane;
|
||||
import javax.swing.SwingUtilities;
|
||||
|
||||
/**
|
||||
* This class is the center point for running the automated
|
||||
* test suite.
|
||||
* It creates a number of instances of AbstractSwingTest. It
|
||||
* gets a component from each test and inserts it into a JTabbedPane.
|
||||
* It then sequentially selects each tab and runs the coresponding test
|
||||
*/
|
||||
|
||||
public class SwingMarkPanel extends JTabbedPane {
|
||||
|
||||
AbstractSwingTest[] tests;
|
||||
|
||||
public SwingMarkPanel() {
|
||||
tests = getTests();
|
||||
for (int i = 0; i < tests.length; i++) {
|
||||
addTab(tests[i].getTestName(), tests[i].getTestComponent() );
|
||||
}
|
||||
setSelectedIndex(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* add new tests to the suite by adding objects
|
||||
* to the array returned by this function
|
||||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
public AbstractSwingTest[] getTests() {
|
||||
|
||||
Vector testVector = new Vector();
|
||||
try {
|
||||
|
||||
String testList = "TestList.txt";
|
||||
|
||||
FileReader file = null;
|
||||
LineNumberReader reader = null;
|
||||
|
||||
try {
|
||||
file = new FileReader(testList);
|
||||
reader = new LineNumberReader(file);
|
||||
} catch (FileNotFoundException e) {
|
||||
InputStream is = getClass().getResourceAsStream("/resources/" + testList);
|
||||
reader = new LineNumberReader(new InputStreamReader(is));
|
||||
}
|
||||
|
||||
String testName = reader.readLine();;
|
||||
|
||||
while (testName != null ) {
|
||||
|
||||
if (testName.indexOf("//") != 0) {
|
||||
|
||||
try {
|
||||
Class testClass = Class.forName(testName);
|
||||
AbstractSwingTest test = (AbstractSwingTest)testClass.newInstance();
|
||||
testVector.addElement(test);
|
||||
} catch (Exception e) {
|
||||
System.out.println("Error instantiating test: " + testName);
|
||||
System.out.println("Test must be subclass of AbstractSwingTest.");
|
||||
e.printStackTrace();
|
||||
}
|
||||
testName = reader.readLine();
|
||||
}
|
||||
}
|
||||
reader.close();
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
AbstractSwingTest[] tests = new AbstractSwingTest[testVector.size()];
|
||||
testVector.copyInto(tests);
|
||||
return tests;
|
||||
}
|
||||
|
||||
/**
|
||||
* run each test and print the elapsed time
|
||||
*/
|
||||
public void runTests(int runNumber) {
|
||||
TabSelecter selecter = new TabSelecter();
|
||||
for (int testNumber = 0; testNumber < tests.length; testNumber++) {
|
||||
selecter.setSelection(testNumber);
|
||||
try {
|
||||
// select the next tab
|
||||
SwingUtilities.invokeAndWait(selecter);
|
||||
AbstractSwingTest.rest();
|
||||
} catch (Exception e) {
|
||||
System.out.println(e);
|
||||
}
|
||||
Date start = new Date(); // mark the start time
|
||||
tests[testNumber].runTest();
|
||||
try {
|
||||
// wait for event queue to clear
|
||||
SwingUtilities.invokeAndWait(NullRunnable.singleton);
|
||||
AbstractSwingTest.syncRam();
|
||||
AbstractSwingTest.rest();
|
||||
} catch (Exception e) {
|
||||
System.out.println(e);
|
||||
}
|
||||
Date end = new Date(); // mark the completion time
|
||||
long elapsedTime = end.getTime() - start.getTime();
|
||||
|
||||
Runtime runtime = Runtime.getRuntime();
|
||||
long heapSize = runtime.totalMemory();
|
||||
long freeMemory = runtime.freeMemory();
|
||||
long usedMemory = heapSize - freeMemory;
|
||||
SwingMark.memoryReport[runNumber][0] = usedMemory;
|
||||
SwingMark.memoryReport[runNumber][1] = heapSize;
|
||||
|
||||
SwingMark.timeReport[runNumber][testNumber] = elapsedTime;
|
||||
|
||||
System.out.println(tests[testNumber].getTestName() +
|
||||
" = " + elapsedTime +
|
||||
" (Paint = " + tests[testNumber].getPaintCount() + ")");
|
||||
}
|
||||
}
|
||||
|
||||
class TabSelecter implements Runnable {
|
||||
int selection;
|
||||
|
||||
void setSelection(int tabToSelect) {
|
||||
selection = tabToSelect;
|
||||
}
|
||||
|
||||
public void run() {
|
||||
SwingMarkPanel.this.setSelectedIndex(selection);
|
||||
SwingMarkPanel.this.repaint();
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue