summaryrefslogtreecommitdiff
path: root/src/interfaces/jdbc/org/postgresql/test/README
diff options
context:
space:
mode:
Diffstat (limited to 'src/interfaces/jdbc/org/postgresql/test/README')
-rw-r--r--src/interfaces/jdbc/org/postgresql/test/README323
1 files changed, 0 insertions, 323 deletions
diff --git a/src/interfaces/jdbc/org/postgresql/test/README b/src/interfaces/jdbc/org/postgresql/test/README
deleted file mode 100644
index b65c2a9800..0000000000
--- a/src/interfaces/jdbc/org/postgresql/test/README
+++ /dev/null
@@ -1,323 +0,0 @@
-PostgreSQL/JDBC Test Suite Howto
-================================
-1 Introduction
-2 Installation
-3 Configuration
-4 Running the test suite
-5 Extending the test suite with new tests
-6 Guidelines for developing new tests
-7 Example
-8 Running the JDBC 2 test suite from Sun against PostgreSQL
-9 Credits, feedback
-
-
-1 Introduction
---------------
-The PostgreSQL source tree contains an automated test suite for
-the JDBC driver. This document explains how to install,
-configure and run this test suite. Furthermore, it offers
-guidelines and an example for developers to add new test cases.
-
-Sun provides two standard JDBC test suites that you may also
-find useful.
-http://java.sun.com/products/jdbc/download2.html (JDBC 1)
-http://java.sun.com/products/jdbc/jdbctestsuite-1_2_1.html (JDBC
-2, including J2EE requirements)
-The JDBC 2 test suite is covered in section 8 below. The JDBC 1
-test suite is not currently covered in this document.
-
-2 Installation
---------------
-Of course, you need to have a Java 2 JDK or JRE installed. The
-standard JDK from Sun is OK. You can download it from
-http://java.sun.com/.
-
-You need to install the Ant build utility. You can download it
-from http://jakarta.apache.org/ant/.
-
-You also need to install the JUnit testing framework. You can
-download it from http://www.junit.org/. Add junit.jar to your
-CLASSPATH before you perform the following steps. Ant will
-dynamically detect that JUnit is present and then build the JDBC
-test suite.
-
-You need to install and build the PostgreSQL source tree. You
-can download it from http://www.postgresql.org/devel-corner/.
-See README and INSTALL in the top of the tree for more
-information.
-
-You should run ./configure with the command line option
---with-java. You may also want to use --with-pgport to compile a
-non-standard default port number (e.g. 5433) into all
-components. This will cause the server to listen on this
-non-standard port and it will cause the JDBC driver to connect
-to this port by default. In this way your testing environment is
-easily separated from other PostgreSQL applications on the same
-system.
-
-In this Howto we'll use $JDBC_SRC to refer to the directory
-src/interfaces/jdbc of the PostgreSQL source tree in your
-environment. The test suite is located in the subdirectory
-$JDBC_SRC/org/postgresql/test.
-
-3 Configuration
----------------
-The test suite requires a PostgreSQL database to run the tests
-against and a user to login as. For a full regression test of
-the entire PostgreSQL system, you should run the test against a
-server built from the same source tree as the driver you're
-testing. The tests will create and drop many objects in this
-database, so it should not contain production tables to avoid
-loss of data. We recommend you assign the following names:
-
- database: test
- username: test
- password: password
-
-These names correspond with the default names set for the test
-suite in $JDBC_SRC/build.xml. If you have chosen other names you
-need to edit this file and change the properties "database",
-"username" and "password" accordingly.
-
-4 Running the test suite
-------------------------
-%cd $JDBC_SRC
-%make
-%make check
-
-This will run the command line version of JUnit. If you'd like
-to see an animated coloured progress bar as the tests are
-executed, you may want to use one of the GUI versions of the
-test runner. See the JUnit documentation for more information.
-
-If the test suite reports errors or failures that you cannot
-explain, please post the relevant parts of the output to the
-mailing list pgsql-jdbc@postgresql.org.
-
-5 Extending the test suite with new tests
------------------------------------------
-If you're not familiar with JUnit, we recommend that you
-first read the introductory article "JUnit Test Infected:
-Programmers Love Writing Tests" on
-http://junit.sourceforge.net/doc/testinfected/testing.htm.
-Before continuing, you should ensure you understand the
-following concepts: test suite, test case, test, fixture,
-assertion, failure.
-
-The test suite consists of test cases, which consist of tests.
-A test case is a collection of tests that test a particular
-feature. The test suite is a collection of test cases that
-together test the driver - and to an extent the PostgreSQL
-backend - as a whole.
-
-If you decide to add a test to an existing test case, all you
-need to do is add a method with a name that begins with "test"
-and which takes no arguments. JUnit will dynamically find this
-method using reflection and run it when it runs the test case.
-In your test method you can use the fixture that is setup for it
-by the test case.
-
-If you decide to add a new test case, you should do two things:
-1) Add a class that extends junit.framework.TestCase. It should
-contain setUp() and tearDown() methods that create and destroy
-the fixture respectively.
-2) Edit $JDBC_SRC/org/postgresql/test/JDBC2Tests.java and add a
-suite.addTestSuite() call for your class. This will make the
-test case part of the test suite.
-
-6 Guidelines for developing new tests
--------------------------------------
-Every test should create and drop its own tables. We suggest to
-consider database objects (e.g. tables) part of the fixture for
-the tests in the test case. The test should also succeed when a
-table by the same name already exists in the test database, e.g.
-by dropping the table before running the test (ignoring errors).
-The recommended pattern for creating and dropping tables can be
-found in the example in section 7 below.
-
-Please note that JUnit provides several convenience methods to
-check for conditions. See the TestCase class in the Javadoc
-documentation of JUnit, which is installed on your system. For
-example, you can compare two integers using
-TestCase.assertEquals(int expected, int actual). This method
-will print both values in case of a failure.
-
-To simply report a failure use TestCase.fail().
-
-The JUnit FAQ explains how to test for a thrown exception.
-
-Avoid the use of the deprecated TestCase.assert(), since it will
-collide with the new assert keyword in the Java 2 platform
-version 1.4.
-
-As a rule, the test suite should succeed. Any errors or failures
-- which may be caused by bugs in the JDBC driver, the backend or
-the test suite - should be fixed ASAP. Don't let a test fail
-just to make it clear that something needs to be fixed somewhere.
-That's what the TODO lists are for.
-
-Add some comments to your tests to explain to others what it is
-you're testing. A long sequence of JDBC method calls and JUnit
-assertions can be hard to comprehend.
-
-For example, in the comments you can explain where a certain test
-condition originates from. Is it a JDBC requirement, PostgreSQL
-behaviour or the intended implementation of a feature?
-
-7 Example (incomplete)
-----------------------
-package org.postgresql.test.jdbc2;
-
-import org.postgresql.test.TestUtil;
-import junit.framework.TestCase;
-import java.sql.*;
-
-/*
- * Test case for ...
- */
-public class FooTest extends TestCase {
-
- private Connection con;
- private Statement stmt;
-
- public FooTest(String name) {
- super(name);
- }
-
- protected void setUp() throws Exception {
- con = TestUtil.openDB();
- stmt = con.createStatement();
-
- // Drop the test table if it already exists for some
- // reason. It is not an error if it doesn't exist.
- try {
- stmt.executeUpdate("DROP TABLE testfoo");
- } catch (SQLException e) {
- // Intentionally ignore. We cannot distinguish
- // "table does not exist" from other errors, since
- // PostgreSQL doesn't support error codes yet.
- }
-
- stmt.executeUpdate(
- "CREATE TABLE testfoo(pk INTEGER, col1 INTEGER)");
- stmt.executeUpdate("INSERT INTO testfoo VALUES(1, 0)");
-
- // You may want to call con.setAutoCommit(false) at
- // this point, if most tests in this test case require
- // the use of transactions.
- }
-
- protected void tearDown() throws Exception {
- con.setAutoCommit(true);
- if (stmt != null) {
- stmt.executeUpdate("DROP TABLE testfoo");
- stmt.close();
- }
- if (con != null) {
- TestUtil.closeDB(con);
- }
- }
-
- public void testFoo() {
- // Use the assert methods in junit.framework.TestCase
- // for the actual tests
-
- // Just some silly examples
- assertNotNull(con);
- if (stmt == null) {
- fail("Where is my statement?");
- }
- }
-
- public void testBar() {
- // Another test.
- }
-}
-
-8. Running the JDBC 2 test suite from Sun against PostgreSQL
-------------------------------------------------------------
-Download the test suite from
-http://java.sun.com/products/jdbc/jdbctestsuite-1_2_1.html
-This is the JDBC 2 test suite that includes J2EE requirements.
-
-1. Configure PostgreSQL so that it accepts TCP/IP connections and
- start the server. Prepare PostgreSQL by creating two users (cts1
- and cts2) and two databases (DB1 and DB2) in the cluster that is
- going to be used for JDBC testing.
-
-2. Download the latest release versions of the J2EE, J2SE, and JDBC
- test suite from Sun's Java site (http://java.sun.com), and install
- according to Sun's documentation.
-
-3. The following environment variables should be set:
-
- CTS_HOME=<path where JDBC test suite installed (eg: /usr/local/jdbccts)>
- J2EE_HOME=<path where J2EE installed (eg: /usr/local/j2sdkee1.2.1)>
- JAVA_HOME=<path where J2SE installed (eg: /usr/local/jdk1.3.1)>
- NO_JAVATEST=Y
- LOCAL_CLASSES=<path to PostgreSQL JDBC driver jar>
-
-4. In $J2EE_HOME/config/default.properties:
-
- jdbc.drivers=org.postgresql.Driver
- jdbc.datasources=jdbc/DB1|jdbc:postgresql://localhost:5432/DB1|jdbc/DB2|jdbc:postgresq://localhost:5432/DB2
-
- Of course, if PostgreSQL is running on a computer different from
- the one running the application server, localhost should be changed
- to the proper host. Also, 5432 should be changed to whatever port
- PostgreSQL is listening on (5432 is the default).
-
- In $J2EE_HOME/bin/userconfig.sh:
-
- Add $CTS_HOME/lib/harness.jar, $CTS_HOME/lib/moo.jar,
- $CTS_HOME/lib/util.jar to J2EE_CLASSPATH. Also add the path to
- the PostgreSQL JDBC jar to J2EE_CLASSPATH. Set the JAVA_HOME
- variable to where you installed the J2SE. You should end up with
- something like this:
-
- CTS_HOME=/home/liams/linux/java/jdbccts
- J2EE_CLASSPATH=/home/liams/work/inst/postgresql-7.1.2/share/java/postgresql.jar:$CTS_HOME/lib/harness.jar:$CTS_HOME/lib/moo.jar:$CTS_HOME/lib/util.jar
- export J2EE_CLASSPATH
-
- JAVA_HOME=/home/liams/linux/java/jdk1.3.1
- export JAVA_HOME
-
- In $CTS_HOME/bin/cts.jte:
-
- webServerHost=localhost
- webServerPort=8000
- servletServerHost=localhost
- servletServerPort=8000
-
-5. Start the application server (j2ee):
-
- $ cd $J2EE_HOME
- $ bin/j2ee -verbose
-
- The server can be stopped after the tests have finished:
-
- $ cd $J2EE_HOME
- $ bin/j2ee -stop
-
-6. Run the JDBC tests:
-
- $ cd $CTS_HOME/tests/jdbc/ee
- $ make jdbc-tests
-
-At the time of writing of this document, a great number of tests
-in this test suite fail.
-
-9 Credits, feedback
--------------------
-The parts of this document describing the PostgreSQL test suite
-were originally written by Rene Pijlman. Liam Stewart contributed
-the section on the Sun JDBC 2 test suite.
-
-Please send your questions about the JDBC test suites or suggestions
-for improvement to the pgsql-jdbc@postgresql.org mailing list.
-
-The source of this document is maintained in
-src/interfaces/jdbc/org/postgresql/test/README in CVS. Patches for
-improvement can be send to the mailing list
-pgsql-patches@postgresql.org.
-