diff options
Diffstat (limited to 'FROMCVS/org.eclipse.test.performance/src/org/eclipse/test/internal/performance/tests/DBTests.java')
-rwxr-xr-x | FROMCVS/org.eclipse.test.performance/src/org/eclipse/test/internal/performance/tests/DBTests.java | 247 |
1 files changed, 247 insertions, 0 deletions
diff --git a/FROMCVS/org.eclipse.test.performance/src/org/eclipse/test/internal/performance/tests/DBTests.java b/FROMCVS/org.eclipse.test.performance/src/org/eclipse/test/internal/performance/tests/DBTests.java new file mode 100755 index 000000000..9cf372d21 --- /dev/null +++ b/FROMCVS/org.eclipse.test.performance/src/org/eclipse/test/internal/performance/tests/DBTests.java @@ -0,0 +1,247 @@ +/******************************************************************************* + * Copyright (c) 2004, 2005 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package org.eclipse.test.internal.performance.tests; + +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import org.eclipse.test.internal.performance.InternalDimensions; +import org.eclipse.test.internal.performance.PerformanceTestPlugin; +import org.eclipse.test.internal.performance.data.DataPoint; +import org.eclipse.test.internal.performance.data.Dim; +import org.eclipse.test.internal.performance.data.Scalar; +import org.eclipse.test.internal.performance.db.DB; +import org.eclipse.test.internal.performance.db.Scenario; +import org.eclipse.test.internal.performance.db.SummaryEntry; +import org.eclipse.test.internal.performance.db.Variations; +import org.eclipse.test.performance.Dimension; +import org.eclipse.test.performance.Performance; + +import junit.framework.AssertionFailedError; +import junit.framework.TestCase; + +public class DBTests extends TestCase { + + private static final String CONFIG= "c"; //$NON-NLS-1$ + private static final String BUILD= "b"; //$NON-NLS-1$ + + private static final String SCENARIO_NAME_0= "bar.testScenario0"; //$NON-NLS-1$ + private static final String SCENARIO_NAME_1= "bar.testScenario1"; //$NON-NLS-1$ + private static final String SCENARIO_NAME_2= "bar.testScenario2"; //$NON-NLS-1$ + private static final String SCENARIO_NAME_3= "foo.testScenario3"; //$NON-NLS-1$ + private static final String SCENARIO_NAME_4= "foo.testScenario4"; //$NON-NLS-1$ + private static final String SHORT_NAME_2= "ShortName2"; //$NON-NLS-1$ + private static final String SHORT_NAME_3= "ShortName3"; //$NON-NLS-1$ + private static final String SHORT_NAME_4= "ShortName4"; //$NON-NLS-1$ + + private static final String DBLOC= "testDBs"; //$NON-NLS-1$ + //private static final String DBLOC= "net://localhost"; //$NON-NLS-1$ + private static String DBNAME; + private static final String DBUSER= "testUser"; //$NON-NLS-1$ + private static final String DBPASSWD= "testPassword"; //$NON-NLS-1$ + + + protected void setUp() throws Exception { + super.setUp(); + + // generate a unique DB name + DBNAME= "testDB_" + new Date().getTime(); //$NON-NLS-1$ + + System.setProperty("eclipse.perf.dbloc", DBLOC + ";dbname=" + DBNAME + ";dbuser=" + DBUSER + ";dbpasswd=" + DBPASSWD); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ + System.setProperty("eclipse.perf.config", CONFIG+"=test;"+BUILD+"=b0001;jvm=sun142"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + System.setProperty("eclipse.perf.assertAgainst", BUILD+"=base"); //$NON-NLS-1$ //$NON-NLS-2$ + } + + protected void tearDown() throws Exception { + super.tearDown(); + } + + public void testPropertyGetters() { + assertEquals(DBLOC, PerformanceTestPlugin.getDBLocation()); + assertEquals(DBNAME, PerformanceTestPlugin.getDBName()); + assertEquals(DBUSER, PerformanceTestPlugin.getDBUser()); + assertEquals(DBPASSWD, PerformanceTestPlugin.getDBPassword()); + + assertEquals("|"+BUILD+"=b0001||"+CONFIG+"=test||jvm=sun142|", PerformanceTestPlugin.getVariations().toExactMatchString()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + assertEquals("|"+BUILD+"=base||"+CONFIG+"=test||jvm=sun142|", PerformanceTestPlugin.getAssertAgainst().toExactMatchString()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + } + + public void testAssertPerformance() throws SQLException { + + Performance perf= Performance.getDefault(); + + // set the variation for the reference data + System.setProperty("eclipse.perf.config", CONFIG+"=test;"+BUILD+"=ref"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + + // store a reference value + TestPerformanceMeter pm1= new TestPerformanceMeter(SCENARIO_NAME_0); + pm1.addPair(InternalDimensions.CPU_TIME, 100, 1000); + pm1.addPair(InternalDimensions.WORKING_SET, 1000, 2000); + + pm1.start(); + pm1.stop(); + pm1.commit(); + pm1.dispose(); + + String build= "001"; //$NON-NLS-1$ + // set the variation for the this run + System.setProperty("eclipse.perf.config", CONFIG+"=test;"+BUILD+"="+build); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + // assert that this run's values are compared against reference data + System.setProperty("eclipse.perf.assertAgainst", BUILD+"=ref"); //$NON-NLS-1$ //$NON-NLS-2$ + + // store a reference value + TestPerformanceMeter pm2= new TestPerformanceMeter(SCENARIO_NAME_0); + pm2.addPair(InternalDimensions.CPU_TIME, 100, 1100); + pm2.addPair(InternalDimensions.WORKING_SET, 1000, 2000); + + pm2.start(); + pm2.stop(); + pm2.commit(); + boolean failed= false; + try { + perf.assertPerformanceInRelativeBand(pm2, InternalDimensions.CPU_TIME, -5, +5); + } catch (AssertionFailedError e) { + failed= true; + } + pm2.dispose(); + + if (!failed) { + // check in DB + Variations v= new Variations(); + v.put(CONFIG, "%"); //$NON-NLS-1$ + v.put(BUILD, build); + Scenario[] scenarios= DB.queryScenarios(v, SCENARIO_NAME_0, CONFIG, null); + if (scenarios != null && scenarios.length > 0) { + Scenario s= scenarios[0]; + String[] failureMessages= s.getFailureMessages(); + if (failureMessages.length == 1) { + String mesg= failureMessages[0]; + if (mesg != null && mesg.equals("Performance criteria not met when compared to '{b=ref, c=test}':\nCPU Time: 1 s is not within [95%, 105%] of 900 ms")) //$NON-NLS-1$ + failed= true; + } + } + } + assertTrue(failed); + } + + public void testBasicDBFunctionality() { + + Performance perf= Performance.getDefault(); + + TestPerformanceMeter pm1= new TestPerformanceMeter(SCENARIO_NAME_1); + pm1.addPair(InternalDimensions.CPU_TIME, 100, 1000); + pm1.addPair(InternalDimensions.WORKING_SET, 1000, 2000); + pm1.start(); + pm1.stop(); + pm1.commit(); + pm1.dispose(); + + TestPerformanceMeter pm2= new TestPerformanceMeter(SCENARIO_NAME_2); + pm2.addPair(InternalDimensions.CPU_TIME, 100, 1000); + pm2.addPair(InternalDimensions.WORKING_SET, 1000, 2000); + perf.tagAsGlobalSummary(pm2, SHORT_NAME_2, new Dimension[] { Dimension.CPU_TIME, Dimension.USED_JAVA_HEAP } ); + pm2.start(); + pm2.stop(); + pm2.commit(); + pm2.dispose(); + + TestPerformanceMeter pm3= new TestPerformanceMeter(SCENARIO_NAME_3); + pm3.addPair(InternalDimensions.CPU_TIME, 100, 1000); + pm3.addPair(InternalDimensions.WORKING_SET, 1000, 2000); + perf.tagAsGlobalSummary(pm3, SHORT_NAME_3, Dimension.CPU_TIME); + pm3.start(); + pm3.stop(); + pm3.commit(); + pm3.dispose(); + + TestPerformanceMeter pm4= new TestPerformanceMeter(SCENARIO_NAME_4); + pm4.addPair(InternalDimensions.CPU_TIME, 100, 1000); + pm4.addPair(InternalDimensions.WORKING_SET, 1000, 2000); + perf.tagAsSummary(pm4, SHORT_NAME_4, Dimension.USED_JAVA_HEAP); + pm4.start(); + pm4.stop(); + pm4.commit(); + pm4.dispose(); + + // + + Variations v= new Variations(); + v.put(CONFIG, "test"); //$NON-NLS-1$ + v.put(BUILD, "b0001"); //$NON-NLS-1$ + v.put("jvm", "sun142"); //$NON-NLS-1$ //$NON-NLS-2$ + DataPoint[] points= DB.queryDataPoints(v, SCENARIO_NAME_1, null); + assertEquals(1, points.length); + + DataPoint dp= points[0]; + Dim[] dimensions= dp.getDimensions(); + assertEquals(2, dimensions.length); + + Scalar s1= dp.getScalar(InternalDimensions.CPU_TIME); + assertNotNull(s1); + assertEquals(900, s1.getMagnitude()); + + Scalar s2= dp.getScalar(InternalDimensions.WORKING_SET); + assertNotNull(s2); + assertEquals(1000, s2.getMagnitude()); + + // + Set dims= new HashSet(); + dims.add(InternalDimensions.WORKING_SET); + points= DB.queryDataPoints(v, SCENARIO_NAME_1, dims); + assertEquals(1, points.length); + dimensions= points[0].getDimensions(); + assertEquals(1, dimensions.length); + Scalar s= points[0].getScalar(InternalDimensions.WORKING_SET); + assertNotNull(s); + assertEquals(1000, s.getMagnitude()); + + // + List buildNames= new ArrayList(); + Variations v2= new Variations(); + v2.put(CONFIG, "%"); //$NON-NLS-1$ + v2.put(BUILD, "b%"); //$NON-NLS-1$ + DB.queryDistinctValues(buildNames, BUILD, v2, "%"); //$NON-NLS-1$ + assertEquals(1, buildNames.size()); + assertEquals("b0001", buildNames.get(0)); //$NON-NLS-1$ + + SummaryEntry[] fps= DB.querySummaries(PerformanceTestPlugin.getVariations(), null); + assertEquals(3, fps.length); + + assertEquals(SCENARIO_NAME_2, fps[0].scenarioName); + assertEquals(SHORT_NAME_2, fps[0].shortName); + assertEquals(Dimension.USED_JAVA_HEAP, fps[0].dimension); + + assertEquals(SCENARIO_NAME_2, fps[1].scenarioName); + assertEquals(SHORT_NAME_2, fps[1].shortName); + assertEquals(Dimension.CPU_TIME, fps[1].dimension); + + assertEquals(SCENARIO_NAME_3, fps[2].scenarioName); + assertEquals(SHORT_NAME_3, fps[2].shortName); + assertEquals(Dimension.CPU_TIME, fps[2].dimension); + + + SummaryEntry[] fps2= DB.querySummaries(PerformanceTestPlugin.getVariations(), "foo.%"); //$NON-NLS-1$ + assertEquals(2, fps2.length); + + assertEquals(SCENARIO_NAME_3, fps2[0].scenarioName); + assertEquals(SHORT_NAME_3, fps2[0].shortName); + assertEquals(Dimension.CPU_TIME, fps2[0].dimension); + + assertEquals(SCENARIO_NAME_4, fps2[1].scenarioName); + assertEquals(SHORT_NAME_4, fps2[1].shortName); + assertEquals(Dimension.USED_JAVA_HEAP, fps2[1].dimension); + } + +} |