Difference between revisions of "Run Junit Tests For Non Default SQL Adapter"
m (moved NexJ Express/Development/Debug SQL Adapter to Run Junit Tests For Non Default SQL Adapter: Made title more meaning full) |
|||
Line 1: | Line 1: | ||
[[category: Debugging]][[category: NexJ Express Development]][[category: NexJ Express]] | [[category: Debugging]][[category: NexJ Express Development]][[category: NexJ Express]] | ||
− | |||
− | + | == Summary == | |
By default, NexJ Express Unit tests are configured to test the MySQL Adapter.<br> | By default, NexJ Express Unit tests are configured to test the MySQL Adapter.<br> | ||
Line 8: | Line 7: | ||
''For this manual, reference will be made to the PostgreSQL Adapter but it will work the same for other adapters''<br> | ''For this manual, reference will be made to the PostgreSQL Adapter but it will work the same for other adapters''<br> | ||
− | + | == Prerequisites == | |
#The following files must exist for the new SQL Adapter:<br> | #The following files must exist for the new SQL Adapter:<br> | ||
##'''src''' folder | ##'''src''' folder | ||
Line 23: | Line 22: | ||
#:<code>nexj.core.util.JDBCInfo.java</code> | #:<code>nexj.core.util.JDBCInfo.java</code> | ||
− | + | == Configurations == | |
The following will configure the unit tests to run for [DbName]SQLAdapter and [DbName]SQLSchemaManager | The following will configure the unit tests to run for [DbName]SQLAdapter and [DbName]SQLSchemaManager | ||
− | + | === Environment/Connection Files === | |
These files are located in the ''test'' source folder in the package <code>nexj</code> | These files are located in the ''test'' source folder in the package <code>nexj</code> | ||
Line 36: | Line 35: | ||
## Change all occurrences of <code>port="3306"</code> to the port on which the new DbName is configured to accept connections | ## Change all occurrences of <code>port="3306"</code> to the port on which the new DbName is configured to accept connections | ||
##: For the PostgreSQL Adapter, the following configuration is used | ##: For the PostgreSQL Adapter, the following configuration is used | ||
− | |||
<source lang="xml"> | <source lang="xml"> | ||
<DataSourceConnections> | <DataSourceConnections> | ||
Line 46: | Line 44: | ||
</DataSourceConnections> | </DataSourceConnections> | ||
</source> | </source> | ||
− | |||
#Create a connections file for the new adapter | #Create a connections file for the new adapter | ||
## Create the file '''[DbName].connections''' in the <code>nexj</code> package in the ''test'' source folder | ## Create the file '''[DbName].connections''' in the <code>nexj</code> package in the ''test'' source folder | ||
Line 54: | Line 51: | ||
## Change all occurrences of <code>port="3306"</code> to the port on which the new DbName is configured to accept connections | ## Change all occurrences of <code>port="3306"</code> to the port on which the new DbName is configured to accept connections | ||
##: For the PostgreSQL Adapter, the following configuration is used | ##: For the PostgreSQL Adapter, the following configuration is used | ||
− | |||
<source lang="xml"> | <source lang="xml"> | ||
<DataSourceConnections> | <DataSourceConnections> | ||
Line 64: | Line 60: | ||
</source> | </source> | ||
− | + | === SQL Scripts === | |
These scripts are used to: | These scripts are used to: | ||
Line 91: | Line 87: | ||
#### (*Optional) Schema Name: test | #### (*Optional) Schema Name: test | ||
− | + | === SQL Test Suite === | |
The following will add the new unittests to the SQL test suite | The following will add the new unittests to the SQL test suite | ||
#Edit the file <code>nexj.core.persistence.sql.AllTests.java</code> and add an entry for the new SQL adapter | #Edit the file <code>nexj.core.persistence.sql.AllTests.java</code> and add an entry for the new SQL adapter | ||
Line 107: | Line 103: | ||
</source> | </source> | ||
− | + | === Run Unit Tests=== | |
# '''Create the test database''' | # '''Create the test database''' | ||
#: Run the <code>dbname_setup.sql</code> script that was created above to create the test database and user | #: Run the <code>dbname_setup.sql</code> script that was created above to create the test database and user | ||
# Run the unit tests using Eclipse's junit test runner | # Run the unit tests using Eclipse's junit test runner |
Revision as of 14:47, 26 February 2011
Contents
Summary
By default, NexJ Express Unit tests are configured to test the MySQL Adapter.
The instructions that follow outline instructions for configuring Unit tests to be run for other SQL Adapters.
For this manual, reference will be made to the PostgreSQL Adapter but it will work the same for other adapters
Prerequisites
- The following files must exist for the new SQL Adapter:
- src folder
nexj.core.persistence.sql.[DbName]SQLAdapter.java
extendingnexj.core.persistence.sql.SQLAdapter
nexj.core.persistence.sql.[DbName]SQLSchemaManager.java
extendingnexj.core.persistence.sql.SQLSchemaManager
- test folder
nexj.core.persistence.sql.[DbName]SQLAdapterTest.java
extendingnexj.core.persistence.sql.SQLAdapterTest
nexj.core.persistence.sql.[DbName]SQLSchemaManagerTest.java
extendingnexj.core.persistence.sql.SQLSchemaManagerTest
- src folder
- The following files should be edited and entries for the new SQL Adapter added:
nexj.core.meta.persistence.sql.RelationalDatabase.java
nexj.core.meta.peristence.sql.RelationalDatabaseFragment.java
nexj.core.meta.sys.system.dstypes
nexj.core.persistence.sql.SQLSchemaManagerFactory.java
nexj.core.util.JDBCInfo.java
Configurations
The following will configure the unit tests to run for [DbName]SQLAdapter and [DbName]SQLSchemaManager
Environment/Connection Files
These files are located in the test source folder in the package nexj
- Edit the files: default.config, filestorage.connections, filestoragefragment.connections
- In the
DataSourceConnections
elemement - Change all occurrences of
adapter="MySQL"
toadapter="DbName"
- Change all occurrences of
port="3306"
to the port on which the new DbName is configured to accept connections- For the PostgreSQL Adapter, the following configuration is used
- In the
<DataSourceConnections>
<RelationalDatabaseConnection adapter="PostgreSQL" dataSource="DefaultRelationalDatabase" database="test"
host="localhost" password="test" port="5432" unicode="true" user="test"/>
<RelationalDatabaseConnection adapter="PostgreSQL" dataSource="ExternalRelationalDatabase" database="test"
host="localhost" password="test" port="5432" unicode="true" user="test"/>
...
</DataSourceConnections>
- Create a connections file for the new adapter
- Create the file [DbName].connections in the
nexj
package in the test source folder - Copy and paste the contents of mysql.connections into the new connections file
- In the
DataSourceConnections
elemement - Change all occurrences of
adapter="MySQL"
toadapter="DbName"
- Change all occurrences of
port="3306"
to the port on which the new DbName is configured to accept connections- For the PostgreSQL Adapter, the following configuration is used
- Create the file [DbName].connections in the
<DataSourceConnections>
<RelationalDatabaseConnection adapter="PostgreSQL" dataSource="DefaultRelationalDatabase" database="test"
host="localhost" password="test" port="5432" unicode="true" user="test"/>
<RelationalDatabaseConnection adapter="PostgreSQL" dataSource="ExternalRelationalDatabase" database="test"
host="localhost" password="test" port="5432" unicode="true" user="test"/>
</DataSourceConnections>
SQL Scripts
These scripts are used to:
- Initialize the database with test data before a unittest is run
- Drop test tables that the unit tests create
Create the files in the package nexj.core.persistence.sql.script
under the test source folder
- dbname_drop.sql
- Copy and paste the contents of
mysql_drop.sql
into the new file
- Copy and paste the contents of
- dbname_insert.sql
- Copy and paste the contents of
mysql_insert.sql
into the new file - Modify the sql script to conform to the sql syntax for the new database
- For exampe, for the PostgreSQL Adapter (9.0), modify the values for binary literals into postgresql's binary literal by changing
-
0x00000000000000000000000000000001
toE'\\x00000000000000000000000000000001'
- Copy and paste the contents of
- dbname_setup.sql
- This script is used to:
- Create the
test
user with the following permissions:- Username: test
- Password: test
- Full privileges for the test database
- Remote Login permission
- Create the
test
database with the follow specifications:- Database name: test
- Encoding: utf-8 / unicode
- (*Optional) Schema Name: test
- dbname_drop.sql
SQL Test Suite
The following will add the new unittests to the SQL test suite
- Edit the file
nexj.core.persistence.sql.AllTests.java
and add an entry for the new SQL adapter- For the PostgreSQL Adapter the following is added
public static Test suite()
{
SQLTestSuite suite = new SQLTestSuite("Test for nexj.core.persistence.sql");
suite.addTestSuite(SQLWriterConnectionTest.class);
...
suite.addSQLTests("nexj.core.persistence.sql.PostgreSQLAdapterTest", "nexj.core.persistence.sql.PostgreSQLSchemaManagerTest");
return suite;
}
Run Unit Tests
- Create the test database
- Run the
dbname_setup.sql
script that was created above to create the test database and user
- Run the
- Run the unit tests using Eclipse's junit test runner