You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by ka...@apache.org on 2007/01/02 13:47:48 UTC
svn commit: r491786 - in
/db/derby/code/trunk/java/testing/org/apache/derbyTesting: junit/
perf/basic/ perf/basic/jdbc/
Author: kahatlen
Date: Tue Jan 2 04:47:47 2007
New Revision: 491786
URL: http://svn.apache.org/viewvc?view=rev&rev=491786
Log:
DERBY-2200: Add performance tests to Derby using the junit perf framework
This patch (derby2200.p1.diff.txt) adds
-- few simple performance tests using the junit perf framework.
-- small addition to the reporting in JDBCPerfTestCase to indicate the
framework the test is running in.
Patch contributed by Sunitha Kambhampati.
Added:
db/derby/code/trunk/java/testing/org/apache/derbyTesting/perf/basic/jdbc/BaseLoad100IdxTestSetup.java (with props)
db/derby/code/trunk/java/testing/org/apache/derbyTesting/perf/basic/jdbc/BaseLoad100TestSetup.java (with props)
db/derby/code/trunk/java/testing/org/apache/derbyTesting/perf/basic/jdbc/CountTest.java (with props)
db/derby/code/trunk/java/testing/org/apache/derbyTesting/perf/basic/jdbc/CoveredIdxScan.java (with props)
db/derby/code/trunk/java/testing/org/apache/derbyTesting/perf/basic/jdbc/HeapScan.java (with props)
db/derby/code/trunk/java/testing/org/apache/derbyTesting/perf/basic/jdbc/SortTest.java (with props)
Modified:
db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/JDBCPerfTestCase.java
db/derby/code/trunk/java/testing/org/apache/derbyTesting/perf/basic/_Suite.java
Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/JDBCPerfTestCase.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/JDBCPerfTestCase.java?view=diff&rev=491786&r1=491785&r2=491786
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/JDBCPerfTestCase.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/JDBCPerfTestCase.java Tue Jan 2 04:47:47 2007
@@ -159,7 +159,9 @@
else
total = runs[0];
- System.out.println("Test-" + getName() + ":iterations: " + iterations
+ System.out.println("Test-" + getName() +
+ ": framework:"+ getTestConfiguration().getJDBCClient().getName()+
+ ":iterations: " + iterations
+ " : Avg elapsedTime(ms): " +
total / (repeats > 1 ? (long) (repeats - 1) : (long) repeats));
}
@@ -177,9 +179,10 @@
super.runTest();
endTime = System.currentTimeMillis();
runs[testRunNum] = (endTime-startTime);
- System.out.println("Test-" + getName() + ": run#" + testRunNum
+ System.out.println("Test-" + getName() +
+ ": framework:"+ getTestConfiguration().getJDBCClient().getName()+
+ ": run#" + testRunNum
+ " iterations: " + iterations + " : elapsedTime(ms): "
+ (endTime - startTime));
-
}
}
Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/perf/basic/_Suite.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/perf/basic/_Suite.java?view=diff&rev=491786&r1=491785&r2=491786
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/perf/basic/_Suite.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/perf/basic/_Suite.java Tue Jan 2 04:47:47 2007
@@ -37,6 +37,10 @@
TestSuite suite = new TestSuite("BasicPerf");
suite.addTest(ValuesTest.suite());
+ suite.addTest(CountTest.suite());
+ suite.addTest(HeapScan.suite());
+ suite.addTest(CoveredIdxScan.suite());
+ suite.addTest(SortTest.suite());
return suite;
}
Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/perf/basic/jdbc/BaseLoad100IdxTestSetup.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/perf/basic/jdbc/BaseLoad100IdxTestSetup.java?view=auto&rev=491786
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/perf/basic/jdbc/BaseLoad100IdxTestSetup.java (added)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/perf/basic/jdbc/BaseLoad100IdxTestSetup.java Tue Jan 2 04:47:47 2007
@@ -0,0 +1,87 @@
+/*
+
+Derby - Class org.apache.derbyTesting.perf.basic.jdbc.BaseLoad100IdxTestSetup
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+*/
+package org.apache.derbyTesting.perf.basic.jdbc;
+
+import java.sql.Statement;
+import java.sql.SQLException;
+import junit.framework.Test;
+
+/**
+ * Extend the BaseLoad100TestSetup to add indexes
+ * Base table is similar to BaseLoad100TestSetup and the algorithm to load data is the same
+ * @see BaseLoad100TestSetup
+ */
+public class BaseLoad100IdxTestSetup extends BaseLoad100TestSetup {
+
+ /**
+ * constructor
+ * @param test name of the test
+ */
+ public BaseLoad100IdxTestSetup(Test test) {
+ super(test);
+ }
+
+ /**
+ * @param test name of test
+ * @param rowsToLoad number of rows to insert
+ */
+ public BaseLoad100IdxTestSetup(Test test, int rowsToLoad)
+ {
+ super(test);
+ this.rowsToLoad=rowsToLoad;
+ }
+
+ /**
+ * @param test name of the test
+ * @param tableName name of the table to insert the rows into
+ */
+ public BaseLoad100IdxTestSetup(Test test, String tableName)
+ {
+ super(test);
+ this.tableName = tableName;
+ }
+
+ /**
+ * @param test name of test
+ * @param rowsToLoad number of rows to insert
+ * @param tableName name of the table to insert the rows into
+ */
+ public BaseLoad100IdxTestSetup(Test test,int rowcount, String tableName)
+ {
+ super(test,rowcount,tableName);
+ }
+
+ /**
+ * Override the decorateSQL and create the necessary schema.
+ * @see org.apache.derbyTesting.junit.CleanDatabaseTestSetup#decorateSQL(java.sql.Statement)
+ */
+ protected void decorateSQL(Statement s)
+ throws SQLException
+ {
+ s.execute("CREATE TABLE " +tableName+" ("
+ + "i1 INT, i2 INT, i3 INT, i4 INT, i5 INT, "
+ + "c6 CHAR(20), c7 CHAR(20), c8 CHAR(20), c9 CHAR(20))");
+ s.execute("CREATE UNIQUE INDEX " +tableName +"x on "+ tableName+"(i1,i3)");
+
+ }
+
+
+}
Propchange: db/derby/code/trunk/java/testing/org/apache/derbyTesting/perf/basic/jdbc/BaseLoad100IdxTestSetup.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/perf/basic/jdbc/BaseLoad100TestSetup.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/perf/basic/jdbc/BaseLoad100TestSetup.java?view=auto&rev=491786
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/perf/basic/jdbc/BaseLoad100TestSetup.java (added)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/perf/basic/jdbc/BaseLoad100TestSetup.java Tue Jan 2 04:47:47 2007
@@ -0,0 +1,156 @@
+/*
+
+ Derby - Class org.apache.derbyTesting.perf.basic.jdbc.BaseLoad100TestSetup
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ */
+package org.apache.derbyTesting.perf.basic.jdbc;
+
+import java.sql.Connection;
+import java.sql.Statement;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import junit.framework.Test;
+import org.apache.derbyTesting.junit.CleanDatabaseTestSetup;
+
+/**
+ * TestSetup decorator to load the schema that is used for some of the
+ * performance tests.
+ * Schema includes:
+ * Table: is 9 column table (100bytes) - 5 columns of type int, 4 columns of char(20)")
+ * data distribution - { column 1 has unique values,column 2 is set to 2,
+ * column 3 has 1 % of rows with same value, column 4 is set to 2,
+ * column 5 has unique values, column 6 is set to a constant value,
+ * column 7 has 1% of rows with known pattern,
+ * column 8 has constant value,column 9 has values having the same suffix.
+ * Connection props : autocommit - false, default isolation level- Read Committed.
+ *
+ * If any indexes have to be created or any other schema additions need to be made, then
+ * the decorateSQL() method needs to be overriden.
+ */
+public class BaseLoad100TestSetup extends CleanDatabaseTestSetup {
+
+ protected int rowsToLoad=10000;
+ protected String tableName = "BASELOAD100";
+
+ /**
+ *
+ * @param test
+ */
+ public BaseLoad100TestSetup(Test test) {
+ super(test);
+ }
+
+ /**
+ * @param test name of test
+ * @param rowsToLoad number of rows to insert
+ */
+ public BaseLoad100TestSetup(Test test, int rowsToLoad)
+ {
+ super(test);
+ this.rowsToLoad=rowsToLoad;
+ }
+
+ /**
+ * @param test name of the test
+ * @param tableName name of the table to insert the rows into
+ */
+ public BaseLoad100TestSetup(Test test, String tableName)
+ {
+ super(test);
+ this.tableName = tableName;
+ }
+
+ /**
+ * @param test name of test
+ * @param rowsToLoad number of rows to insert
+ * @param tableName name of the table to insert the rows into
+ */
+ public BaseLoad100TestSetup(Test test,int rowsToLoad, String tableName)
+ {
+ super(test);
+ this.tableName = tableName;
+ this.rowsToLoad = rowsToLoad;
+ }
+
+ /**
+ * Clean the default database using the default connection
+ * and calls the decorateSQL to allow sub-classes to
+ * initialize their schema requirments.
+ */
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ Connection conn = getConnection();
+ conn.setAutoCommit(false);
+ PreparedStatement insert = conn.prepareStatement(
+ "INSERT INTO "+tableName+" VALUES ( ?,?,?,?,?,?,?,?,? )");
+ loadData(insert);
+ insert.close();
+ conn.close();
+ }
+
+
+ /**
+ * Override the decorateSQL and create the necessary schema.
+ * @see org.apache.derbyTesting.junit.CleanDatabaseTestSetup#decorateSQL(java.sql.Statement)
+ */
+ protected void decorateSQL(Statement s)
+ throws SQLException
+ {
+ s.execute("CREATE TABLE " +tableName+" ("
+ + "i1 INT, i2 INT, i3 INT, i4 INT, i5 INT, "
+ + "c6 CHAR(20), c7 CHAR(20), c8 CHAR(20), c9 CHAR(20))");
+
+ }
+
+ /**
+ * Load the data into the table.
+ * @param insert prepared statement to use for inserting data.
+ * @throws Exception
+ */
+ private void loadData(PreparedStatement insert) throws Exception {
+
+ for (int i = 0; i < rowsToLoad; i++) {
+ insert.setInt(1, i);
+ insert.setInt(2, 2);
+
+ // 1% of rows with a known pattern for where etc.
+ if ((i % 100) == 57)
+ insert.setInt(3, 436);
+ else
+ insert.setInt(3, 2);
+
+ insert.setInt(4, 2);
+ insert.setInt(5, i);
+ insert.setString(6, "01234567890123456789");
+
+ // 1% of rows with a known pattern for like etc.
+ if ((i % 100) == 34)
+ insert.setString(7, "012345javaone6789");
+ else
+ insert.setString(7, "01234567890123456789");
+
+ insert.setString(8, "01234567890123456789");
+
+ insert.setString(9, (i + 1000) + "0123456789012");
+ insert.executeUpdate();
+ }
+ insert.getConnection().commit();
+ }
+
+}
Propchange: db/derby/code/trunk/java/testing/org/apache/derbyTesting/perf/basic/jdbc/BaseLoad100TestSetup.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/perf/basic/jdbc/CountTest.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/perf/basic/jdbc/CountTest.java?view=auto&rev=491786
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/perf/basic/jdbc/CountTest.java (added)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/perf/basic/jdbc/CountTest.java Tue Jan 2 04:47:47 2007
@@ -0,0 +1,102 @@
+/*
+
+Derby - Class org.apache.derbyTesting.perf.basic.jdbc.CountTest
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+*/
+package org.apache.derbyTesting.perf.basic.jdbc;
+
+
+import java.sql.*;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import org.apache.derbyTesting.junit.JDBCPerfTestCase;
+
+/**
+ * Add tests to measure performance of count.
+ */
+public class CountTest extends JDBCPerfTestCase {
+
+ PreparedStatement select = null;
+ static String tableName = "COUNTTEST";
+ protected static int rowcount = 10000;
+
+ /**
+ * Suite of tests to return.
+ * @return
+ */
+ public static Test suite()
+ {
+ TestSuite suite = new TestSuite("CountTest");
+ int iterations = 1200, repeats = 4;
+
+ suite.addTest(new CountTest("Count100",iterations,repeats));
+ return new BaseLoad100TestSetup(suite,rowcount,tableName);
+ }
+
+ /**
+ * Constructor -create a CountTest
+ * @param name testname
+ * @param iterations iterations for the test to measure
+ * @param repeats number of times to repeat the test
+ */
+ public CountTest(String name,int iterations, int repeats)
+ {
+ super(name,iterations,repeats);
+ }
+
+ /**
+ * setup for the test.
+ **/
+ public void setUp() throws Exception {
+
+ select = openDefaultConnection().prepareStatement("SELECT COUNT(i1) FROM "+tableName);
+ }
+
+
+ /**
+ * Override initializeConnection to set the autocommit to false
+ */
+ public void initializeConnection(Connection conn)
+ throws SQLException
+ {
+ conn.setAutoCommit(false);
+ }
+
+
+ /**
+ * Execute the count query for the BaseLoad100TestSetup schema.
+ * @throws Exception
+ */
+ public void Count100() throws Exception
+ {
+ ResultSet rs = select.executeQuery();
+ rs.next();
+ assertEquals(rowcount,rs.getInt(1));
+ rs.close();
+ getConnection().commit();
+ }
+
+ /**
+ * Cleanup - close resources opened in this test.
+ **/
+ public void tearDown() throws Exception {
+ select.close();
+ select = null;
+ super.tearDown();
+ }
+}
Propchange: db/derby/code/trunk/java/testing/org/apache/derbyTesting/perf/basic/jdbc/CountTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/perf/basic/jdbc/CoveredIdxScan.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/perf/basic/jdbc/CoveredIdxScan.java?view=auto&rev=491786
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/perf/basic/jdbc/CoveredIdxScan.java (added)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/perf/basic/jdbc/CoveredIdxScan.java Tue Jan 2 04:47:47 2007
@@ -0,0 +1,116 @@
+/*
+
+ Derby - Class org.apache.derbyTesting.perf.basic.jdbc.CoveredIdxScan
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ */
+package org.apache.derbyTesting.perf.basic.jdbc;
+
+
+import java.sql.*;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * Index scan tests.
+ *
+ */
+public class CoveredIdxScan extends HeapScan {
+
+ /**
+ * @return suite of tests
+ */
+ public static Test suite()
+ {
+ TestSuite scan = new TestSuite("CoveredIdxScanTests");
+ int iterations = 700, repeats = 4;
+
+ scan.addTest(new CoveredIdxScan("ScanCoveredIdxInt",iterations,repeats));
+
+ return new BaseLoad100IdxTestSetup(scan,rowcount*2,tableName);
+
+
+ }
+
+ /**
+ * Constructor
+ * @param name testname
+ * @param iterations iterations for the test to measure
+ * @param repeats number of times to repeat the test
+ */
+ public CoveredIdxScan(String name,int iterations, int repeats)
+ {
+ super(name,iterations,repeats);
+ }
+
+ /**
+ * Do the necessary setup for the test ,prepare the statement
+ */
+ public void setUp() throws Exception {
+
+ select = openDefaultConnection().prepareStatement("SELECT i1 FROM "+tableName +
+ " WHERE i1 > ? and i1 <= ?");
+ }
+
+ /**
+ * Override initializeConnection to set the autocommit to false
+ */
+ public void initializeConnection(Connection conn)
+ throws SQLException
+ {
+ conn.setAutoCommit(false);
+ }
+
+
+ /**
+ * This test simply tests a covered index scan and retrieves an int column
+ * Scan starts from 1/4 into the data set and set to end 3/4 into the
+ * dataset
+ * @throws Exception
+ */
+ public void ScanCoveredIdxInt() throws Exception
+ {
+
+ // set begin scan to start 1/4 into the data set.
+ select.setInt(1, ((rowcount * 2) / 4));
+
+ // set end scan to end 3/4 into the data set.
+ select.setInt(2, (((rowcount * 2) / 4) * 3));
+
+ ResultSet rs = select.executeQuery();
+
+ int actualCount = 0;
+ int i = 0;
+ while (rs.next())
+ {
+ i = rs.getInt(1);
+ actualCount++;
+ }
+ assertEquals(rowcount,actualCount);
+ getConnection().commit();
+ rs.close();
+ }
+
+
+ /**
+ * Cleanup - close resources opened in this test.
+ */
+ public void tearDown() throws Exception {
+ super.tearDown();
+ }
+}
Propchange: db/derby/code/trunk/java/testing/org/apache/derbyTesting/perf/basic/jdbc/CoveredIdxScan.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/perf/basic/jdbc/HeapScan.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/perf/basic/jdbc/HeapScan.java?view=auto&rev=491786
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/perf/basic/jdbc/HeapScan.java (added)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/perf/basic/jdbc/HeapScan.java Tue Jan 2 04:47:47 2007
@@ -0,0 +1,141 @@
+/*
+
+Derby - Class org.apache.derbyTesting.perf.basic.jdbc.HeapScan
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+*/
+package org.apache.derbyTesting.perf.basic.jdbc;
+
+
+import java.sql.*;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import org.apache.derbyTesting.junit.JDBCPerfTestCase;
+
+/**
+ * Heap Scan tests
+ *
+ */
+public class HeapScan extends JDBCPerfTestCase {
+
+ PreparedStatement select = null;
+ protected static String tableName = "SCANTEST";
+ protected static int rowcount = 10000;
+
+ /**
+ * @return suite of tests
+ */
+ public static Test suite()
+ {
+ int iterations = 700, repeats = 4;
+
+ TestSuite heapScan = new TestSuite("HeapScanTests");
+ heapScan.addTest(new HeapScan("Scan100",iterations,repeats));
+ heapScan.addTest(new HeapScan("Scan100GetData",iterations,repeats));
+ return new BaseLoad100TestSetup(heapScan,rowcount,tableName);
+ }
+
+ /**
+ * Scan tests.
+ * @param name test name
+ * @param iterations iterations of the test to measure
+ * @param repeats number of times to repeat the test
+ */
+ public HeapScan(String name,int iterations, int repeats)
+ {
+ super(name,iterations,repeats);
+ }
+
+ /**
+ * Do the necessary setup for the test ,prepare the statement
+ */
+ public void setUp() throws Exception {
+
+ select = openDefaultConnection().prepareStatement("SELECT * FROM "+tableName);
+ }
+
+
+ /**
+ * Override initializeConnection to set the autocommit to false
+ */
+ public void initializeConnection(Connection conn)
+ throws SQLException
+ {
+ conn.setAutoCommit(false);
+ }
+
+
+ /**
+ * This test simply tests a heap scan which iterates through all the
+ * rows in the columns. The column data are not retrieved using getXXX
+ * @throws Exception
+ */
+ public void Scan100() throws Exception
+ {
+
+ ResultSet rs = select.executeQuery();
+ int actualCount = 0;
+ while (rs.next()) {
+ actualCount++;
+ }
+
+ assertEquals(actualCount,rowcount);
+ rs.close();
+ getConnection().commit();
+
+ }
+
+ /**
+ * This test simply tests a heap scan which iterates through all the
+ * rows in the columns. The column data are retrieved using getXXX
+ * @throws Exception
+ */
+ public void Scan100GetData() throws Exception
+ {
+ ResultSet rs = select.executeQuery();
+
+ int actualCount = 0;
+ while (rs.next()) {
+
+ int i1 = rs.getInt(1);
+ int i2 = rs.getInt(2);
+ int i3 = rs.getInt(3);
+ int i4 = rs.getInt(4);
+ int i5 = rs.getInt(5);
+
+ String c6 = rs.getString(6);
+ String c7 = rs.getString(7);
+ String c8 = rs.getString(8);
+ String c9 = rs.getString(9);
+
+ actualCount++;
+ }
+ assertEquals(actualCount,rowcount);
+ getConnection().commit();
+ rs.close();
+ }
+
+ /**
+ * Cleanup - close resources opened in this test.
+ **/
+ public void tearDown() throws Exception {
+
+ select.close();
+ select = null;
+ super.tearDown();
+ }
+}
Propchange: db/derby/code/trunk/java/testing/org/apache/derbyTesting/perf/basic/jdbc/HeapScan.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/perf/basic/jdbc/SortTest.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/perf/basic/jdbc/SortTest.java?view=auto&rev=491786
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/perf/basic/jdbc/SortTest.java (added)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/perf/basic/jdbc/SortTest.java Tue Jan 2 04:47:47 2007
@@ -0,0 +1,147 @@
+/*
+
+Derby - Class org.apache.derbyTesting.perf.basic.jdbc.SortTest
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+*/
+package org.apache.derbyTesting.perf.basic.jdbc;
+
+
+import java.sql.*;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import org.apache.derbyTesting.junit.JDBCPerfTestCase;
+
+/**
+ * Sort test
+ *
+ */
+public class SortTest extends JDBCPerfTestCase {
+
+ PreparedStatement select = null;
+ protected static String tableName = "SORTTEST";
+ protected static int rowcount = 10000;
+
+ /**
+ * @return suite of tests
+ */
+ public static Test suite()
+ {
+ int iterations = 350, repeats = 4;
+
+ TestSuite suite = new TestSuite("SortTests");
+ suite.addTest(new SortTest("SortDesc100",iterations,repeats));
+ suite.addTest(new SortTest("SortDesc100GetData",iterations,repeats));
+ return new BaseLoad100TestSetup(suite,rowcount,tableName);
+ }
+
+ /**
+ * Sort tests.
+ * @param name test name
+ * @param iterations iterations of the test to measure
+ * @param repeats number of times to repeat the test
+ */
+ public SortTest(String name,int iterations, int repeats)
+ {
+ super(name,iterations,repeats);
+ }
+
+ /**
+ * Do the necessary setup for the test ,prepare the statement
+ */
+ public void setUp() throws Exception {
+
+ select = openDefaultConnection().prepareStatement("SELECT * FROM "+tableName +" order by i1 desc");
+ }
+
+
+ /**
+ * Override initializeConnection to set the autocommit to false
+ */
+ public void initializeConnection(Connection conn)
+ throws SQLException
+ {
+ conn.setAutoCommit(false);
+ }
+
+
+ /**
+ * Sort test with the schema loaded as part of BaseLoad100TestSetup
+ * The rows are presented to the sorter in reverse order of the
+ * sort. The test loads a table with rowcount keys in order, and
+ * then sorts them in descending order.
+ * The column data are not retrieved using the appropriate getXXX() methods
+ * @throws Exception
+ */
+ public void SortDesc100() throws Exception
+ {
+
+ ResultSet rs = select.executeQuery();
+ int actualCount = 0;
+ while (rs.next()) {
+ actualCount++;
+ }
+
+ assertEquals(actualCount,rowcount);
+ rs.close();
+ getConnection().commit();
+
+ }
+
+ /**
+ * Sort test with the schema loaded as part of BaseLoad100TestSetup
+ * The rows are presented to the sorter in reverse order of the
+ * sort. The test loads a table with rowcount keys in order, and
+ * then sorts them in descending order.
+ * The column data are retrieved using the appropriate getXXX() methods
+ * @throws Exception
+ */
+ public void SortDesc100GetData() throws Exception
+ {
+ ResultSet rs = select.executeQuery();
+
+ int actualCount = 0;
+ while (rs.next()) {
+
+ int i1 = rs.getInt(1);
+ int i2 = rs.getInt(2);
+ int i3 = rs.getInt(3);
+ int i4 = rs.getInt(4);
+ int i5 = rs.getInt(5);
+
+ String c6 = rs.getString(6);
+ String c7 = rs.getString(7);
+ String c8 = rs.getString(8);
+ String c9 = rs.getString(9);
+
+ actualCount++;
+ }
+ assertEquals(actualCount,rowcount);
+ getConnection().commit();
+ rs.close();
+ }
+
+ /**
+ * Cleanup - close resources opened in this test.
+ **/
+ public void tearDown() throws Exception {
+
+ select.close();
+ select = null;
+ super.tearDown();
+ }
+}
Propchange: db/derby/code/trunk/java/testing/org/apache/derbyTesting/perf/basic/jdbc/SortTest.java
------------------------------------------------------------------------------
svn:eol-style = native