<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/3"/>
<classpathentry kind="var" path="TOMCAT_LIBS_BASE/tomcat6-deps/dbcp/tomcat-dbcp.jar" sourcepath="/TOMCAT_LIBS_BASE/tomcat6-deps/dbcp/src/java"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry kind="lib" path="includes/c3p0-0.9.1.2/lib/c3p0-0.9.1.2.jar"/>
<classpathentry kind="lib" path="includes/mysql-connector-java-5.1.7/mysql-connector-java-5.1.7-bin.jar"/>
+ <classpathentry kind="lib" path="includes/db-derby-10.5.1.1-bin/lib/derby.jar"/>
+ <classpathentry kind="lib" path="includes/h2/bin/h2-1.1.114.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>
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.
+
+
+
+APACHE TOMCAT JDBC POOL TEST COMPONENTS:
+
+Apache Tomcat JDBC Pool includes a number of subcomponents with separate copyright notices
+and license terms only used during the unit and performance. These components are not included in the release,
+but will be downloaded and used if you choose to do so when running unit tests.
+Your use of these subcomponents is subject to the terms and
+conditions of the following licenses.
+
+
+For the h2*.jar component:
+
+
+Eclipse Public License - v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC
+LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM
+CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation
+distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are
+distributed by that particular Contributor. A Contribution 'originates' from a
+Contributor if it was added to the Program by such Contributor itself or anyone
+acting on such Contributor's behalf. Contributions do not include additions to
+the Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents" mean patent claims licensable by a Contributor which are
+necessarily infringed by the use or sale of its Contribution alone or when
+combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement,
+including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants
+Recipient a non-exclusive, worldwide, royalty-free copyright license to
+reproduce, prepare derivative works of, publicly display, publicly perform,
+distribute and sublicense the Contribution of such Contributor, if any, and such
+derivative works, in source code and object code form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants
+Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed
+Patents to make, use, sell, offer to sell, import and otherwise transfer the
+Contribution of such Contributor, if any, in source code and object code form.
+This patent license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor, such
+addition of the Contribution causes such combination to be covered by the
+Licensed Patents. The patent license shall not apply to any other combinations
+which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to
+its Contributions set forth herein, no assurances are provided by any
+Contributor that the Program does not infringe the patent or other intellectual
+property rights of any other entity. Each Contributor disclaims any liability to
+Recipient for claims brought by any other entity based on infringement of
+intellectual property rights or otherwise. As a condition to exercising the
+rights and licenses granted hereunder, each Recipient hereby assumes sole
+responsibility to secure any other intellectual property rights needed, if any.
+For example, if a third party patent license is required to allow Recipient to
+distribute the Program, it is Recipient's responsibility to acquire that license
+before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright
+rights in its Contribution, if any, to grant the copyright license set forth in
+this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its
+own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and
+conditions, express and implied, including warranties or conditions of title and
+non-infringement, and implied warranties or conditions of merchantability and
+fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for
+damages, including direct, indirect, special, incidental and consequential
+damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by
+that Contributor alone and not by any other party; and
+
+iv) states that source code for the Program is available from such Contributor,
+and informs licensees how to obtain it in a reasonable manner on or through a
+medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the
+Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if
+any, in a manner that reasonably allows subsequent Recipients to identify the
+originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with
+respect to end users, business partners and the like. While this license is
+intended to facilitate the commercial use of the Program, the Contributor who
+includes the Program in a commercial product offering should do so in a manner
+which does not create potential liability for other Contributors. Therefore, if
+a Contributor includes the Program in a commercial product offering, such
+Contributor ("Commercial Contributor") hereby agrees to defend and indemnify
+every other Contributor ("Indemnified Contributor") against any losses, damages
+and costs (collectively "Losses") arising from claims, lawsuits and other legal
+actions brought by a third party against the Indemnified Contributor to the
+extent caused by the acts or omissions of such Commercial Contributor in
+connection with its distribution of the Program in a commercial product
+offering. The obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In order
+to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor
+to control, and cooperate with the Commercial Contributor in, the defense and
+any related settlement negotiations. The Indemnified Contributor may
+participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product
+offering, Product X. That Contributor is then a Commercial Contributor. If that
+Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such
+Commercial Contributor's responsibility alone. Under this section, the
+Commercial Contributor would have to defend claims against the other
+Contributors related to those performance claims and warranties, and if a court
+requires any other Contributor to pay any damages as a result, the Commercial
+Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
+IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each
+Recipient is solely responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its exercise of
+rights under this Agreement , including but not limited to the risks and costs
+of program errors, compliance with applicable laws, damage to or loss of data,
+programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY
+CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST
+PROFITS), 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 OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable
+law, it shall not affect the validity or enforceability of the remainder of the
+terms of this Agreement, and without further action by the parties hereto, such
+provision shall be reformed to the minimum extent necessary to make such
+provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a
+cross-claim or counterclaim in a lawsuit) alleging that the Program itself
+(excluding combinations of the Program with other software or hardware)
+infringes such Recipient's patent(s), then such Recipient's rights granted under
+Section 2(b) shall terminate as of the date such litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to
+comply with any of the material terms or conditions of this Agreement and does
+not cure such failure in a reasonable period of time after becoming aware of
+such noncompliance. If all Recipient's rights under this Agreement terminate,
+Recipient agrees to cease use and distribution of the Program as soon as
+reasonably practicable. However, Recipient's obligations under this Agreement
+and any licenses granted by Recipient relating to the Program shall continue and
+survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in
+order to avoid inconsistency the Agreement is copyrighted and may only be
+modified in the following manner. The Agreement Steward reserves the right to
+publish new versions (including revisions) of this Agreement from time to time.
+No one other than the Agreement Steward has the right to modify this Agreement.
+The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation
+may assign the responsibility to serve as the Agreement Steward to a suitable
+separate entity. Each new version of the Agreement will be given a
+distinguishing version number. The Program (including Contributions) may always
+be distributed subject to the version of the Agreement under which it was
+received. In addition, after a new version of the Agreement is published,
+Contributor may elect to distribute the Program (including its Contributions)
+under the new version. Except as expressly stated in Sections 2(a) and 2(b)
+above, Recipient receives no rights or licenses to the intellectual property of
+any Contributor under this Agreement, whether expressly, by implication,
+estoppel or otherwise. All rights in the Program not expressly granted under
+this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the
+intellectual property laws of the United States of America. No party to this
+Agreement will bring a legal action under this Agreement more than one year
+after the cause of action arose. Each party waives its rights to a jury trial in
+any resulting litigation.
+
+For the JUNIT Component:
+
+Common Public License version 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC
+LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM
+CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation
+distributed under this Agreement, and b) in the case of each subsequent
+Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are
+distributed by that particular Contributor. A Contribution 'originates' from a
+Contributor if it was added to the Program by such Contributor itself or anyone
+acting on such Contributor's behalf. Contributions do not include additions to
+the Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are
+necessarily infringed by the use or sale of its Contribution alone or when
+combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement,
+including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants
+Recipient a non-exclusive, worldwide, royalty-free copyright license to
+reproduce, prepare derivative works of, publicly display, publicly perform,
+distribute and sublicense the Contribution of such Contributor, if any, and such
+derivative works, in source code and object code form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants
+Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed
+Patents to make, use, sell, offer to sell, import and otherwise transfer the
+Contribution of such Contributor, if any, in source code and object code form.
+This patent license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor, such
+addition of the Contribution causes such combination to be covered by the
+Licensed Patents. The patent license shall not apply to any other combinations
+which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to
+its Contributions set forth herein, no assurances are provided by any
+Contributor that the Program does not infringe the patent or other intellectual
+property rights of any other entity. Each Contributor disclaims any liability to
+Recipient for claims brought by any other entity based on infringement of
+intellectual property rights or otherwise. As a condition to exercising the
+rights and licenses granted hereunder, each Recipient hereby assumes sole
+responsibility to secure any other intellectual property rights needed, if any.
+For example, if a third party patent license is required to allow Recipient to
+distribute the Program, it is Recipient's responsibility to acquire that license
+before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright
+rights in its Contribution, if any, to grant the copyright license set forth in
+this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its
+own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and
+conditions, express and implied, including warranties or conditions of title and
+non-infringement, and implied warranties or conditions of merchantability and
+fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for
+damages, including direct, indirect, special, incidental and consequential
+damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by
+that Contributor alone and not by any other party; and
+
+iv) states that source code for the Program is available from such Contributor,
+and informs licensees how to obtain it in a reasonable manner on or through a
+medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the
+Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if
+any, in a manner that reasonably allows subsequent Recipients to identify the
+originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with
+respect to end users, business partners and the like. While this license is
+intended to facilitate the commercial use of the Program, the Contributor who
+includes the Program in a commercial product offering should do so in a manner
+which does not create potential liability for other Contributors. Therefore, if
+a Contributor includes the Program in a commercial product offering, such
+Contributor ("Commercial Contributor") hereby agrees to defend and indemnify
+every other Contributor ("Indemnified Contributor") against any losses, damages
+and costs (collectively "Losses") arising from claims, lawsuits and other legal
+actions brought by a third party against the Indemnified Contributor to the
+extent caused by the acts or omissions of such Commercial Contributor in
+connection with its distribution of the Program in a commercial product
+offering. The obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In order
+to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor to
+control, and cooperate with the Commercial Contributor in, the defense and any
+related settlement negotiations. The Indemnified Contributor may participate in
+any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product
+offering, Product X. That Contributor is then a Commercial Contributor. If that
+Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such
+Commercial Contributor's responsibility alone. Under this section, the
+Commercial Contributor would have to defend claims against the other
+Contributors related to those performance claims and warranties, and if a court
+requires any other Contributor to pay any damages as a result, the Commercial
+Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
+IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each
+Recipient is solely responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its exercise of
+rights under this Agreement, including but not limited to the risks and costs of
+program errors, compliance with applicable laws, damage to or loss of data,
+programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY
+CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST
+PROFITS), 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 OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable
+law, it shall not affect the validity or enforceability of the remainder of the
+terms of this Agreement, and without further action by the parties hereto, such
+provision shall be reformed to the minimum extent necessary to make such
+provision valid and enforceable.
+
+If Recipient institutes patent litigation against a Contributor with respect to
+a patent applicable to software (including a cross-claim or counterclaim in a
+lawsuit), then any patent licenses granted by that Contributor to such Recipient
+under this Agreement shall terminate as of the date such litigation is filed. In
+addition, if Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the Program
+itself (excluding combinations of the Program with other software or hardware)
+infringes such Recipient's patent(s), then such Recipient's rights granted under
+Section 2(b) shall terminate as of the date such litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to
+comply with any of the material terms or conditions of this Agreement and does
+not cure such failure in a reasonable period of time after becoming aware of
+such noncompliance. If all Recipient's rights under this Agreement terminate,
+Recipient agrees to cease use and distribution of the Program as soon as
+reasonably practicable. However, Recipient's obligations under this Agreement
+and any licenses granted by Recipient relating to the Program shall continue and
+survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in
+order to avoid inconsistency the Agreement is copyrighted and may only be
+modified in the following manner. The Agreement Steward reserves the right to
+publish new versions (including revisions) of this Agreement from time to time.
+No one other than the Agreement Steward has the right to modify this Agreement.
+IBM is the initial Agreement Steward. IBM may assign the responsibility to serve
+as the Agreement Steward to a suitable separate entity. Each new version of the
+Agreement will be given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the Agreement
+under which it was received. In addition, after a new version of the Agreement
+is published, Contributor may elect to distribute the Program (including its
+Contributions) under the new version. Except as expressly stated in Sections
+2(a) and 2(b) above, Recipient receives no rights or licenses to the
+intellectual property of any Contributor under this Agreement, whether
+expressly, by implication, estoppel or otherwise. All rights in the Program not
+expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the
+intellectual property laws of the United States of America. No party to this
+Agreement will bring a legal action under this Agreement more than one year
+after the cause of action arose. Each party waives its rights to a jury trial in
+any resulting litigation.
# ----- Vesion Control Flags -----
version.major=1
version.minor=0
-version.build=5
+version.build=6
version.patch=
version.suffix=
tomcat.project.dest=${base.path}/project.xml
tomcat.xsl.loc=http://svn.apache.org/repos/asf/tomcat/trunk/webapps/docs/tomcat-docs.xsl
-tomcat.xsl.dest=${base.path}/tomcat-docs.xsl
\ No newline at end of file
+tomcat.xsl.dest=${base.path}/tomcat-docs.xsl
+
+derby.home=${base.path}/db-derby-10.5.1.1-bin
+derby.loc=http://archive.apache.org/dist/db/derby/db-derby-10.5.1.1/db-derby-10.5.1.1-bin.tar.gz
+derby.jar=${derby.home}/lib/derby.jar
+
+h2.home=${base.path}/h2
+h2.loc=http://www.h2database.com/h2-2009-06-01.zip
+h2.jar=${h2.home}/bin/h2-1.1.114.jar
<property name="tomcat.pool" value="${basedir}/./output"/>
<property name="tomcat.build" value="${tomcat.pool}/build"/>
<property name="tomcat.classes" value="${tomcat.pool}/classes"/>
+ <property name="tomcat.api" value="${tomcat.pool}/api"/>
<property name="tomcat.testclasses" value="${tomcat.pool}/testclasses"/>
<!-- JAR Artifacts -->
<property name="tomcat-jdbc-src.jar" value="${tomcat.pool}/tomcat-jdbc-src.jar"/>
<property name="tomcat-jdbc-test.jar" value="${tomcat.pool}/tomcat-jdbc-test.jar"/>
<property name="tomcat-jdbc-test-src.jar" value="${tomcat.pool}/tomcat-jdbc-test-src.jar"/>
-
+ <property name="tomcat-jdbc-api.jar" value="${tomcat.pool}/tomcat-jdbc-api.jar"/>
<!-- Classpath -->
<path id="tomcat.jdbc.classpath">
<pathelement location="${tomcat.classes}"/>
<pathelement location="${dbcp.jar}"/>
<pathelement location="${junit.jar}"/>
<pathelement location="${tomcat.dbcp.jar}"/>
+ <pathelement location="${derby.jar}"/>
+ <pathelement location="${h2.jar}"/>
</path>
<target name="prepare">
</copy>
</target>
- <target name="build" depends="prepare">
+ <target name="build" depends="prepare,download">
<mkdir dir="${tomcat.pool}"/>
<!-- compile org.apache.tomcat.jdbc-->
<javac srcdir="${basedir}/java" destdir="${tomcat.classes}"
<classpath refid="tomcat.jdbc.classpath"/>
<include name="org/apache/tomcat/jdbc/**" />
</javac>
+
+ <javadoc sourcepath="${basedir}/java" destdir="${tomcat.api}" verbose="false"/>
+ <!-- connection pool JAR File -->
+ <jar jarfile="${tomcat-jdbc.jar}" update="true">
+ <fileset dir="${tomcat.classes}">
+ <include name="org/apache/tomcat/jdbc/**" />
+ </fileset>
+ <fileset dir="${basedir}/java">
+ <include name="org/apache/tomcat/jdbc/**/*.xml" />
+ </fileset>
+ </jar>
+
+ <!-- connection pool source file-->
+ <jar jarfile="${tomcat-jdbc-src.jar}" update="true">
+ <fileset dir="${basedir}/java">
+ <include name="org/apache/tomcat/jdbc/**" />
+ </fileset>
+ </jar>
+
+ <!-- connection pool API file-->
+ <jar jarfile="${tomcat-jdbc-api.jar}" update="true">
+ <fileset dir="${tomcat.api}"/>
+ </jar>
+ </target>
+
+ <target name="build-test" depends="prepare, build, download-test">
+ <mkdir dir="${tomcat.pool}"/>
+ <!-- compile org.apache.tomcat.jdbc-->
<javac srcdir="${basedir}/test" destdir="${tomcat.testclasses}"
debug="${compile.debug}"
deprecation="${compile.deprecation}"
<include name="org/apache/tomcat/jdbc/**" />
</javac>
<!-- connection pool JAR File -->
- <jar jarfile="${tomcat-jdbc.jar}" update="true">
- <fileset dir="${tomcat.classes}">
- <include name="org/apache/tomcat/jdbc/**" />
- </fileset>
- <fileset dir="${basedir}/java">
- <include name="org/apache/tomcat/jdbc/**/*.xml" />
- </fileset>
- </jar>
<jar jarfile="${tomcat-jdbc-test.jar}" update="true">
<fileset dir="${tomcat.testclasses}">
<include name="org/apache/tomcat/jdbc/**" />
<include name="org/apache/tomcat/jdbc/**/*.xml" />
</fileset>
</jar>
-
- <!-- connection pool source file-->
- <jar jarfile="${tomcat-jdbc-src.jar}" update="true">
- <fileset dir="${basedir}/java">
- <include name="org/apache/tomcat/jdbc/**" />
- </fileset>
- </jar>
<jar jarfile="${tomcat-jdbc-test-src.jar}" update="true">
<fileset dir="${basedir}/test">
<include name="org/apache/tomcat/jdbc/**" />
</fileset>
</jar>
- <!-- create checksums -->
- <checksum file="${tomcat-jdbc.jar}" forceOverwrite="yes" fileext=".md5" />
- <checksum file="${tomcat-jdbc-src.jar}" forceOverwrite="yes" fileext=".md5" />
- <checksum file="${tomcat-jdbc-test.jar}" forceOverwrite="yes" fileext=".md5" />
- <checksum file="${tomcat-jdbc-test-src.jar}" forceOverwrite="yes" fileext=".md5" />
</target>
+
<target name="clean">
<mkdir dir="${tomcat.pool}"/>
<delete file="${tomcat-jdbc.jar}" />
- <delete file="${tomcat-jdbc.jar}.md5"/>
<delete file="${tomcat-jdbc-src.jar}"/>
- <delete file="${tomcat-jdbc-src.jar}.md5"/>
<delete includeemptydirs="true" failonerror="false">
<fileset dir="${tomcat.classes}">
<include name="org/apache/tomcat/jdbc/**"/>
<delete dir="${tomcat.pool}/doc"/>
<delete dir="${tomcat.classes}"/>
<delete dir="${tomcat.testclasses}"/>
+ <delete file="${tomcat.pool}/build.xml"/>
+ <delete dir="${tomcat.pool}/build"/>
+ <delete dir="${tomcat.api}"/>
</target>
<target name="docs" depends="prepare">
<include name="LICENSE"/>
<include name="NOTICE"/>
<include name="tomcat-jdbc.jar"/>
- <include name="tomcat-jdbc.jar.md5"/>
<include name="tomcat-jdbc-test.jar"/>
- <include name="tomcat-jdbc-test.jar.md5"/>
<include name="tomcat-jdbc-src.jar"/>
- <include name="tomcat-jdbc-src.jar.md5"/>
<include name="tomcat-jdbc-test-src.jar"/>
- <include name="tomcat-jdbc-test-src.jar.md5"/>
</fileset>
<fileset dir="${tomcat.home}/bin">
<include name="tomcat-juli.jar"/>
<include name="LICENSE"/>
<include name="NOTICE"/>
<include name="tomcat-jdbc.jar"/>
- <include name="tomcat-jdbc.jar.md5"/>
<include name="tomcat-jdbc-test.jar"/>
- <include name="tomcat-jdbc-test.jar.md5"/>
<include name="tomcat-jdbc-src.jar"/>
- <include name="tomcat-jdbc-src.jar.md5"/>
<include name="tomcat-jdbc-test-src.jar"/>
- <include name="tomcat-jdbc-test-src.jar.md5"/>
</fileset>
<fileset dir="${tomcat.home}/bin">
<include name="tomcat-juli.jar"/>
<target name="download">
<mkdir dir="${base.path}"/>
<antcall target="downloadzip">
- <param name="sourcefile" value="${c3p0.loc}"/>
- <param name="destfile" value="${c3p0.jar}"/>
- <param name="destdir" value="${base.path}"/>
- </antcall>
- <antcall target="downloadzip">
- <param name="sourcefile" value="${mysql.loc}"/>
- <param name="destfile" value="${mysql.jar}"/>
- <param name="destdir" value="${base.path}"/>
- </antcall>
- <antcall target="downloadzip">
<param name="sourcefile" value="${dbcp.loc}"/>
<param name="destfile" value="${dbcp.jar}"/>
<param name="destdir" value="${base.path}"/>
</antcall>
<antcall target="downloadzip">
- <param name="sourcefile" value="${junit.loc}"/>
- <param name="destfile" value="${junit.jar}"/>
- <param name="destdir" value="${base.path}"/>
- </antcall>
- <antcall target="downloadzip">
<param name="sourcefile" value="${tomcat.loc}"/>
<param name="destfile" value="${tomcat.juli.jar}"/>
<param name="destdir" value="${base.path}"/>
<param name="destfile" value="${tomcat.project.dest}"/>
<param name="destdir" value="${base.path}"/>
</antcall>
+ <!-- Derby database
+ <antcall target="downloadgz">
+ <param name="sourcefile" value="${derby.loc}"/>
+ <param name="destfile" value="${derby.jar}"/>
+ <param name="destdir" value="${base.path}"/>
+ </antcall>
+ -->
+ <antcall target="downloadzip">
+ <param name="sourcefile" value="${h2.loc}"/>
+ <param name="destfile" value="${h2.jar}"/>
+ <param name="destdir" value="${base.path}"/>
+ </antcall>
+ <antcall target="downloadzip">
+ <param name="sourcefile" value="${junit.loc}"/>
+ <param name="destfile" value="${junit.jar}"/>
+ <param name="destdir" value="${base.path}"/>
+ </antcall>
+
+ </target>
+
+ <target name="download-test" depends="prepare">
+ <mkdir dir="${base.path}"/>
+ <!-- Derby database
+ <antcall target="downloadgz">
+ <param name="sourcefile" value="${derby.loc}"/>
+ <param name="destfile" value="${derby.jar}"/>
+ <param name="destdir" value="${base.path}"/>
+ </antcall>
+ -->
+ <antcall target="downloadzip">
+ <param name="sourcefile" value="${h2.loc}"/>
+ <param name="destfile" value="${h2.jar}"/>
+ <param name="destdir" value="${base.path}"/>
+ </antcall>
+ <antcall target="downloadzip">
+ <param name="sourcefile" value="${junit.loc}"/>
+ <param name="destfile" value="${junit.jar}"/>
+ <param name="destdir" value="${base.path}"/>
+ </antcall>
</target>
+
+ <target name="test" depends="build,build-test">
+ <echo/>
+ <echo>Creating test table for test purposes.</echo>
+ <junit printsummary="withOutAndErr" showoutput="on">
+ <classpath refid="tomcat.jdbc.classpath"/>
+ <classpath refid="test.classpath"/>
+ <batchtest fork="yes" todir="${tomcat.testclasses}">
+ <fileset dir="${basedir}/test">
+ <include name="**/CreateTestTable*"/>
+ </fileset>
+ </batchtest>
+ </junit>
- <target name="test" depends="build">
+ <echo/>
+ <echo>Performance and fairness tests.</echo>
<junit printsummary="withOutAndErr" showoutput="on">
<classpath refid="tomcat.jdbc.classpath"/>
<classpath refid="test.classpath"/>
<batchtest fork="yes" todir="${tomcat.testclasses}">
<fileset dir="${basedir}/test">
+ <include name="org/apache/tomcat/jdbc/test/*CheckOutThreadTest*.java"/>
+ <include name="org/apache/tomcat/jdbc/test/FairnessTest*.java"/>
+ <exclude name="**/CreateTestTable*"/>
+ <exclude name="**/DefaultTestCase*"/>
+ </fileset>
+ </batchtest>
+ </junit>
+
+ <echo/>
+ <echo>Functional tests.</echo>
+ <junit printsummary="yes">
+ <formatter type="plain"/>
+ <classpath refid="tomcat.jdbc.classpath"/>
+ <classpath refid="test.classpath"/>
+ <batchtest fork="yes" todir="${tomcat.testclasses}">
+ <fileset dir="${basedir}/test">
<include name="org/apache/tomcat/jdbc/test/*Test*.java"/>
<exclude name="**/CreateTestTable*"/>
<exclude name="**/DefaultTestCase*"/>
+ <exclude name="**/CheckOutThread*"/>
+ <exclude name="**/Fairness*"/>
</fileset>
</batchtest>
</junit>
+
</target>
- <target name="simplebuild" depends="download,build"/>
+ <target name="simplebuild" depends="build">
+ </target>
</project>
# See the License for the specific language governing permissions and
# limitations under the License.
-VERSION=v1.0.5
+VERSION=v1.0.6
for i in $(find output/release/$VERSION -name "*.zip" -o -name "*.tar.gz"); do
echo Signing $i
echo $1|gpg --passphrase-fd 0 -a -b $i
tearDown();
}
- public void testC3P0Threads10Connections10() throws Exception {
- init();
- this.datasource.getPoolProperties().setMaxActive(10);
- this.threadcount = 10;
- this.transferPropertiesToC3P0();
- this.c3p0Datasource.getConnection().close();
- latch = new CountDownLatch(threadcount);
- long start = System.currentTimeMillis();
- for (int i=0; i<threadcount; i++) {
- TestThread t = new TestThread();
- t.setName("tomcat-pool-"+i);
- t.d = this.c3p0Datasource;
- t.start();
- }
- latch.await();
- long delta = System.currentTimeMillis() - start;
- System.out.println("[testC3P0Threads10Connections10]Test complete:"+delta+" ms. Iterations:"+(threadcount*this.iterations));
- tearDown();
- }
+// public void testC3P0Threads10Connections10() throws Exception {
+// init();
+// this.datasource.getPoolProperties().setMaxActive(10);
+// this.threadcount = 10;
+// this.transferPropertiesToC3P0();
+// this.c3p0Datasource.getConnection().close();
+// latch = new CountDownLatch(threadcount);
+// long start = System.currentTimeMillis();
+// for (int i=0; i<threadcount; i++) {
+// TestThread t = new TestThread();
+// t.setName("tomcat-pool-"+i);
+// t.d = this.c3p0Datasource;
+// t.start();
+// }
+// latch.await();
+// long delta = System.currentTimeMillis() - start;
+// System.out.println("[testC3P0Threads10Connections10]Test complete:"+delta+" ms. Iterations:"+(threadcount*this.iterations));
+// tearDown();
+// }
public void testDBCPThreads20Connections10() throws Exception {
init();
tearDown();
}
- public void testC3P0Threads20Connections10() throws Exception {
- init();
- this.datasource.getPoolProperties().setMaxActive(10);
- this.threadcount = 20;
- this.transferPropertiesToC3P0();
- this.c3p0Datasource.getConnection().close();
- latch = new CountDownLatch(threadcount);
- long start = System.currentTimeMillis();
- for (int i=0; i<threadcount; i++) {
- TestThread t = new TestThread();
- t.setName("tomcat-pool-"+i);
- t.d = this.c3p0Datasource;
- t.start();
- }
- latch.await();
- long delta = System.currentTimeMillis() - start;
- System.out.println("[testC3P0Threads20Connections10]Test complete:"+delta+" ms. Iterations:"+(threadcount*this.iterations));
- tearDown();
- }
+// public void testC3P0Threads20Connections10() throws Exception {
+// init();
+// this.datasource.getPoolProperties().setMaxActive(10);
+// this.threadcount = 20;
+// this.transferPropertiesToC3P0();
+// this.c3p0Datasource.getConnection().close();
+// latch = new CountDownLatch(threadcount);
+// long start = System.currentTimeMillis();
+// for (int i=0; i<threadcount; i++) {
+// TestThread t = new TestThread();
+// t.setName("tomcat-pool-"+i);
+// t.d = this.c3p0Datasource;
+// t.start();
+// }
+// latch.await();
+// long delta = System.currentTimeMillis() - start;
+// System.out.println("[testC3P0Threads20Connections10]Test complete:"+delta+" ms. Iterations:"+(threadcount*this.iterations));
+// tearDown();
+// }
public void testDBCPThreads10Connections10Validate() throws Exception {
init();
tearDown();
}
- public void testC3P0Threads10Connections10Validate() throws Exception {
- init();
- this.datasource.getPoolProperties().setMaxActive(10);
- this.datasource.getPoolProperties().setTestOnBorrow(true);
- this.threadcount = 10;
- this.transferPropertiesToC3P0();
- this.c3p0Datasource.getConnection().close();
- latch = new CountDownLatch(threadcount);
- long start = System.currentTimeMillis();
- for (int i=0; i<threadcount; i++) {
- TestThread t = new TestThread();
- t.setName("tomcat-pool-validate-"+i);
- t.d = this.c3p0Datasource;
- t.start();
- }
- latch.await();
- long delta = System.currentTimeMillis() - start;
- System.out.println("[testC3P0Threads10Connections10Validate]Test complete:"+delta+" ms. Iterations:"+(threadcount*this.iterations));
- tearDown();
- }
+// public void testC3P0Threads10Connections10Validate() throws Exception {
+// init();
+// this.datasource.getPoolProperties().setMaxActive(10);
+// this.datasource.getPoolProperties().setTestOnBorrow(true);
+// this.threadcount = 10;
+// this.transferPropertiesToC3P0();
+// this.c3p0Datasource.getConnection().close();
+// latch = new CountDownLatch(threadcount);
+// long start = System.currentTimeMillis();
+// for (int i=0; i<threadcount; i++) {
+// TestThread t = new TestThread();
+// t.setName("tomcat-pool-validate-"+i);
+// t.d = this.c3p0Datasource;
+// t.start();
+// }
+// latch.await();
+// long delta = System.currentTimeMillis() - start;
+// System.out.println("[testC3P0Threads10Connections10Validate]Test complete:"+delta+" ms. Iterations:"+(threadcount*this.iterations));
+// tearDown();
+// }
public void testDBCPThreads20Connections10Validate() throws Exception {
init();
tearDown();
}
- public void testC3P0Threads10Connections20Validate() throws Exception {
- init();
- this.datasource.getPoolProperties().setMaxActive(10);
- this.datasource.getPoolProperties().setTestOnBorrow(true);
- this.threadcount = 20;
- this.transferPropertiesToC3P0();
- this.c3p0Datasource.getConnection().close();
- latch = new CountDownLatch(threadcount);
- long start = System.currentTimeMillis();
- for (int i=0; i<threadcount; i++) {
- TestThread t = new TestThread();
- t.setName("tomcat-pool-validate-"+i);
- t.d = this.c3p0Datasource;
- t.start();
- }
- latch.await();
- long delta = System.currentTimeMillis() - start;
- System.out.println("[testC3P0Threads10Connections20Validate]Test complete:"+delta+" ms. Iterations:"+(threadcount*this.iterations));
- tearDown();
- }
+// public void testC3P0Threads10Connections20Validate() throws Exception {
+// init();
+// this.datasource.getPoolProperties().setMaxActive(10);
+// this.datasource.getPoolProperties().setTestOnBorrow(true);
+// this.threadcount = 20;
+// this.transferPropertiesToC3P0();
+// this.c3p0Datasource.getConnection().close();
+// latch = new CountDownLatch(threadcount);
+// long start = System.currentTimeMillis();
+// for (int i=0; i<threadcount; i++) {
+// TestThread t = new TestThread();
+// t.setName("tomcat-pool-validate-"+i);
+// t.d = this.c3p0Datasource;
+// t.start();
+// }
+// latch.await();
+// long delta = System.currentTimeMillis() - start;
+// System.out.println("[testC3P0Threads10Connections20Validate]Test complete:"+delta+" ms. Iterations:"+(threadcount*this.iterations));
+// tearDown();
+// }
public class TestThread extends Thread {
protected DataSource d;
tearDown();
}
- public void testC3P0Threads20Connections10() throws Exception {
- System.out.println("[testC3P0Threads20Connections10] Starting fairness - C3P0");
- init();
- this.threadcount = 20;
- this.transferPropertiesToC3P0();
- this.datasource.getConnection().close();
- latch = new CountDownLatch(threadcount);
- long start = System.currentTimeMillis();
- TestThread[] threads = new TestThread[threadcount];
- for (int i=0; i<threadcount; i++) {
- threads[i] = new TestThread();
- threads[i].setName("tomcat-pool-"+i);
- threads[i].d = this.c3p0Datasource;
-
- }
- for (int i=0; i<threadcount; i++) {
- threads[i].start();
- }
- if (!latch.await(complete+1000,TimeUnit.MILLISECONDS)) {
- System.out.println("Latch timed out.");
- }
- this.run = false;
- long delta = System.currentTimeMillis() - start;
- printThreadResults(threads,"testC3P0Threads20Connections10",Driver.connectCount.get(),10);
- tearDown();
-
- }
+// public void testC3P0Threads20Connections10() throws Exception {
+// System.out.println("[testC3P0Threads20Connections10] Starting fairness - C3P0");
+// init();
+// this.threadcount = 20;
+// this.transferPropertiesToC3P0();
+// this.datasource.getConnection().close();
+// latch = new CountDownLatch(threadcount);
+// long start = System.currentTimeMillis();
+// TestThread[] threads = new TestThread[threadcount];
+// for (int i=0; i<threadcount; i++) {
+// threads[i] = new TestThread();
+// threads[i].setName("tomcat-pool-"+i);
+// threads[i].d = this.c3p0Datasource;
+//
+// }
+// for (int i=0; i<threadcount; i++) {
+// threads[i].start();
+// }
+// if (!latch.await(complete+1000,TimeUnit.MILLISECONDS)) {
+// System.out.println("Latch timed out.");
+// }
+// this.run = false;
+// long delta = System.currentTimeMillis() - start;
+// printThreadResults(threads,"testC3P0Threads20Connections10",Driver.connectCount.get(),10);
+// tearDown();
+//
+// }
public class TestThread extends Thread {
import java.sql.PreparedStatement;
import java.sql.Statement;
import java.util.Random;
-
-
+import java.sql.ResultSet;
public class CreateTestTable extends DefaultTestCase {
-
+
+ public static final boolean recreate = Boolean.getBoolean("recreate");
+
public CreateTestTable(String name) {
super(name);
}
- public void testPopulateData() throws Exception {
- String insert = "insert into test values (?,?,?,?,?)";
+ public void testCreateTestTable() throws Exception {
this.init();
Connection con = datasource.getConnection();
Statement st = con.createStatement();
try {
- st.execute("drop table test");
+ st.execute("create table test(id int not null, val1 varchar(255), val2 varchar(255), val3 varchar(255), val4 varchar(255))");
}catch (Exception ignore) {}
- st.execute("create table test(id int not null, val1 varchar(255), val2 varchar(255), val3 varchar(255), val4 varchar(255))");
st.close();
+ con.close();
+ }
+
+ public int testCheckData() throws Exception {
+ int count = 0;
+ String check = "select count (*) from test";
+ this.init();
+ Connection con = datasource.getConnection();
+ Statement st = con.createStatement();
+ try {
+ ResultSet rs = st.executeQuery(check);
+
+ if (rs.next())
+ count = rs.getInt(1);
+ System.out.println("Count:"+count);
+ }catch (Exception ignore) {}
+ return count;
+ }
+
+ public void testPopulateData() throws Exception {
+ String insert = "insert into test values (?,?,?,?,?)";
+ this.init();
+ this.datasource.setRemoveAbandoned(false);
+ Connection con = datasource.getConnection();
+ if (recreate) {
+ Statement st = con.createStatement();
+ try {
+ st.execute("drop table test");
+ }catch (Exception ignore) {}
+ st.execute("create table test(id int not null, val1 varchar(255), val2 varchar(255), val3 varchar(255), val4 varchar(255))");
+ st.close();
+ }
PreparedStatement ps = con.prepareStatement(insert);
- for (int i=0; i<10000000; i++) {
+ ps.setQueryTimeout(0);
+ for (int i=testCheckData(); i<1000000; i++) {
ps.setInt(1,i);
String s = getRandom();
ps.setString(2, s);
if ((i+1) % 10000 == 0) {
System.out.print("\n"+(i+1));
ps.executeBatch();
- ps.clearBatch();
+ ps.close();
+ ps = con.prepareStatement(insert);
}
}
public DefaultProperties() {
dbProperties = new Properties();
- url = System.getProperty("url","jdbc:mysql://localhost:3306/mysql?autoReconnect=true");
- driverClassName = System.getProperty("driverClassName","com.mysql.jdbc.Driver");
+ //mysql
+ //url = System.getProperty("url","jdbc:mysql://localhost:3306/mysql?autoReconnect=true");
+ //driverClassName = System.getProperty("driverClassName","com.mysql.jdbc.Driver");
+
+ //derby
+ //url = System.getProperty("url","jdbc:derby:derbyDB;create=true");
+ //driverClassName = System.getProperty("driverClassName","org.apache.derby.jdbc.EmbeddedDriver");
+
+ url = System.getProperty("url","jdbc:h2:~/.h2/test;QUERY_TIMEOUT=0;DB_CLOSE_ON_EXIT=FALSE");
+ driverClassName = System.getProperty("driverClassName","org.h2.Driver");
+ System.setProperty("h2.serverCachedObjects", "10000");
+
password = System.getProperty("password","password");
username = System.getProperty("username","root");
import org.apache.tomcat.jdbc.pool.PoolProperties;
import org.apache.tomcat.jdbc.pool.DataSourceProxy;
-import com.mchange.v2.c3p0.ComboPooledDataSource;
-import com.mchange.v2.log.MLevel;
-import com.mchange.v2.log.MLog;
+//import com.mchange.v2.c3p0.ComboPooledDataSource;
+//import com.mchange.v2.log.MLevel;
+//import com.mchange.v2.log.MLog;
/**
* @author Filip Hanik
public class DefaultTestCase extends TestCase {
protected org.apache.tomcat.jdbc.pool.DataSource datasource;
protected BasicDataSource tDatasource;
- protected ComboPooledDataSource c3p0Datasource;
+// protected ComboPooledDataSource c3p0Datasource;
protected int threadcount = 10;
protected int iterations = 100000;
public DefaultTestCase(String name) {
}
protected void transferPropertiesToC3P0() throws Exception {
- System.setProperty("com.mchange.v2.log.FallbackMLog.DEFAULT_CUTOFF_LEVEL", "WARNING");
- MLog.getLogger().setLevel(MLevel.WARNING);
- MLog.getLogger("com").setLevel(MLevel.WARNING);
- //http://www.mchange.com/projects/c3p0/index.html#automaticTestTable
- ComboPooledDataSource c3p0 = new ComboPooledDataSource();
- c3p0.setAcquireIncrement(1);
- c3p0.setAcquireRetryAttempts(2);
- c3p0.setAcquireRetryDelay(datasource.getPoolProperties().getMaxWait());
- c3p0.setCheckoutTimeout(datasource.getPoolProperties().getMaxWait());
- c3p0.setDebugUnreturnedConnectionStackTraces(datasource.getPoolProperties().isLogAbandoned());
- c3p0.setIdleConnectionTestPeriod(datasource.getPoolProperties().getTimeBetweenEvictionRunsMillis()/1000);
- c3p0.setInitialPoolSize(datasource.getPoolProperties().getInitialSize());
- c3p0.setMaxIdleTime(datasource.getPoolProperties().getMinEvictableIdleTimeMillis()/1000);
- c3p0.setMaxIdleTimeExcessConnections(datasource.getPoolProperties().getMaxIdle());
- c3p0.setMaxPoolSize(datasource.getPoolProperties().getMaxActive());
- c3p0.setMinPoolSize(datasource.getPoolProperties().getMinIdle());
- c3p0.setPassword(datasource.getPoolProperties().getPassword());
- c3p0.setPreferredTestQuery(datasource.getPoolProperties().getValidationQuery());
- c3p0.setTestConnectionOnCheckin(datasource.getPoolProperties().isTestOnReturn());
- c3p0.setTestConnectionOnCheckout(datasource.getPoolProperties().isTestOnBorrow());
- c3p0.setUnreturnedConnectionTimeout(datasource.getPoolProperties().getRemoveAbandonedTimeout());
- c3p0.setUser(datasource.getPoolProperties().getUsername());
- c3p0.setUsesTraditionalReflectiveProxies(true);
- c3p0.setJdbcUrl(datasource.getPoolProperties().getUrl());
- c3p0.setDriverClass(datasource.getPoolProperties().getDriverClassName());
- this.c3p0Datasource = c3p0;
+// System.setProperty("com.mchange.v2.log.FallbackMLog.DEFAULT_CUTOFF_LEVEL", "WARNING");
+// MLog.getLogger().setLevel(MLevel.WARNING);
+// MLog.getLogger("com").setLevel(MLevel.WARNING);
+// //http://www.mchange.com/projects/c3p0/index.html#automaticTestTable
+// ComboPooledDataSource c3p0 = new ComboPooledDataSource();
+// c3p0.setAcquireIncrement(1);
+// c3p0.setAcquireRetryAttempts(2);
+// c3p0.setAcquireRetryDelay(datasource.getPoolProperties().getMaxWait());
+// c3p0.setCheckoutTimeout(datasource.getPoolProperties().getMaxWait());
+// c3p0.setDebugUnreturnedConnectionStackTraces(datasource.getPoolProperties().isLogAbandoned());
+// c3p0.setIdleConnectionTestPeriod(datasource.getPoolProperties().getTimeBetweenEvictionRunsMillis()/1000);
+// c3p0.setInitialPoolSize(datasource.getPoolProperties().getInitialSize());
+// c3p0.setMaxIdleTime(datasource.getPoolProperties().getMinEvictableIdleTimeMillis()/1000);
+// c3p0.setMaxIdleTimeExcessConnections(datasource.getPoolProperties().getMaxIdle());
+// c3p0.setMaxPoolSize(datasource.getPoolProperties().getMaxActive());
+// c3p0.setMinPoolSize(datasource.getPoolProperties().getMinIdle());
+// c3p0.setPassword(datasource.getPoolProperties().getPassword());
+// c3p0.setPreferredTestQuery(datasource.getPoolProperties().getValidationQuery());
+// c3p0.setTestConnectionOnCheckin(datasource.getPoolProperties().isTestOnReturn());
+// c3p0.setTestConnectionOnCheckout(datasource.getPoolProperties().isTestOnBorrow());
+// c3p0.setUnreturnedConnectionTimeout(datasource.getPoolProperties().getRemoveAbandonedTimeout());
+// c3p0.setUser(datasource.getPoolProperties().getUsername());
+// c3p0.setUsesTraditionalReflectiveProxies(true);
+// c3p0.setJdbcUrl(datasource.getPoolProperties().getUrl());
+// c3p0.setDriverClass(datasource.getPoolProperties().getDriverClassName());
+// this.c3p0Datasource = c3p0;
/**
acquireIncrement
protected void tearDown() throws Exception {
try {datasource.close();}catch(Exception ignore){}
try {tDatasource.close();}catch(Exception ignore){}
- try {((ComboPooledDataSource)c3p0Datasource).close(true);}catch(Exception ignore){}
+ //try {((ComboPooledDataSource)c3p0Datasource).close(true);}catch(Exception ignore){}
datasource = null;
tDatasource = null;
- c3p0Datasource = null;
+ //c3p0Datasource = null;
System.gc();
}
tearDown();
}
- public void testC3P0Threads20Connections10() throws Exception {
- System.out.println("[testC3P0Threads20Connections10] Starting fairness - C3P0");
- init();
- this.datasource.getPoolProperties().setMaxActive(10);
- this.datasource.getPoolProperties().setFairQueue(false);
- this.threadcount = 20;
- this.transferPropertiesToC3P0();
- this.datasource.getConnection().close();
- latch = new CountDownLatch(threadcount);
- long start = System.currentTimeMillis();
- TestThread[] threads = new TestThread[threadcount];
- for (int i=0; i<threadcount; i++) {
- threads[i] = new TestThread();
- threads[i].setName("tomcat-pool-"+i);
- threads[i].d = this.c3p0Datasource;
-
- }
- for (int i=0; i<threadcount; i++) {
- threads[i].start();
- }
- if (!latch.await(complete+1000,TimeUnit.MILLISECONDS)) {
- System.out.println("Latch timed out.");
- }
- this.run = false;
- long delta = System.currentTimeMillis() - start;
- printThreadResults(threads,"testC3P0Threads20Connections10",c3p0Datasource.getNumConnectionsAllUsers(),10);
- tearDown();
-
- }
+// public void testC3P0Threads20Connections10() throws Exception {
+// System.out.println("[testC3P0Threads20Connections10] Starting fairness - C3P0");
+// init();
+// this.datasource.getPoolProperties().setMaxActive(10);
+// this.datasource.getPoolProperties().setFairQueue(false);
+// this.threadcount = 20;
+// this.transferPropertiesToC3P0();
+// this.datasource.getConnection().close();
+// latch = new CountDownLatch(threadcount);
+// long start = System.currentTimeMillis();
+// TestThread[] threads = new TestThread[threadcount];
+// for (int i=0; i<threadcount; i++) {
+// threads[i] = new TestThread();
+// threads[i].setName("tomcat-pool-"+i);
+// threads[i].d = this.c3p0Datasource;
+//
+// }
+// for (int i=0; i<threadcount; i++) {
+// threads[i].start();
+// }
+// if (!latch.await(complete+1000,TimeUnit.MILLISECONDS)) {
+// System.out.println("Latch timed out.");
+// }
+// this.run = false;
+// long delta = System.currentTimeMillis() - start;
+// printThreadResults(threads,"testC3P0Threads20Connections10",c3p0Datasource.getNumConnectionsAllUsers(),10);
+// tearDown();
+//
+// }
public class TestThread extends Thread {
datasource.getPoolProperties().setLogAbandoned(true);
}
- public void testDBCPConnectionStarvation() throws Exception {
- init();
- config();
- this.transferProperties();
- this.tDatasource.getConnection().close();
- javax.sql.DataSource datasource = this.tDatasource;
- Connection con1 = datasource.getConnection();
- Connection con2 = null;
- try {
- con2 = datasource.getConnection();
- try {
- con2.setCatalog("mysql");//make sure connection is valid
- }catch (SQLException x) {
- assertFalse("2nd Connection is not valid:"+x.getMessage(),true);
- }
- assertTrue("Connection 1 should be closed.",con1.isClosed()); //first connection should be closed
- }catch (Exception x) {
- assertFalse("Connection got starved:"+x.getMessage(),true);
- }finally {
- if (con2!=null) con2.close();
- }
-
- }
+// public void testDBCPConnectionStarvation() throws Exception {
+// init();
+// config();
+// this.transferProperties();
+// this.tDatasource.getConnection().close();
+// javax.sql.DataSource datasource = this.tDatasource;
+// Connection con1 = datasource.getConnection();
+// Connection con2 = null;
+// try {
+// con2 = datasource.getConnection();
+// try {
+// con2.setCatalog("mysql");//make sure connection is valid
+// }catch (SQLException x) {
+// assertFalse("2nd Connection is not valid:"+x.getMessage(),true);
+// }
+// assertTrue("Connection 1 should be closed.",con1.isClosed()); //first connection should be closed
+// }catch (Exception x) {
+// assertFalse("Connection got starved:"+x.getMessage(),true);
+// }finally {
+// if (con2!=null) con2.close();
+// }
+//
+// }
public void testConnectionStarvation() throws Exception {
init();