Skip to content

Commit

Permalink
Adding AR tests for JDBC connections
Browse files Browse the repository at this point in the history
New connections:

  jdbcmysql jdbcpostgresql jdbcsqlite3 jdbcderby jdbch2 jdbchsqldb jdbcpostgresql

To test you will need the native database installed (if one is required),
activerecord-jdbc-adapter and the specific activerecord-jdbc<database>-adapter
for the database you are testing.

Run the tests like this:

  jruby -S rake test_jdbcmysql

Signed-off-by: Michael Koziarski <michael@koziarski.com>
[#1685 state:committed]
  • Loading branch information
stepheneb authored and NZKoz committed Jan 26, 2009
1 parent 617ad23 commit 4ef9845
Show file tree
Hide file tree
Showing 7 changed files with 137 additions and 2 deletions.
8 changes: 6 additions & 2 deletions activerecord/Rakefile
Expand Up @@ -32,9 +32,13 @@ task :default => :test
desc 'Run mysql, sqlite, and postgresql tests'
task :test => %w(test_mysql test_sqlite3 test_postgresql)

for adapter in %w( mysql postgresql sqlite sqlite3 firebird db2 oracle sybase openbase frontbase )
for adapter in %w( mysql postgresql sqlite sqlite3 firebird db2 oracle sybase openbase frontbase jdbcmysql jdbcpostgresql jdbcsqlite3 jdbcderby jdbch2 jdbchsqldb )
Rake::TestTask.new("test_#{adapter}") { |t|
t.libs << "test" << "test/connections/native_#{adapter}"
if adapter =~ /jdbc/
t.libs << "test" << "test/connections/jdbc_#{adapter}"
else
t.libs << "test" << "test/connections/native_#{adapter}"
end
adapter_short = adapter == 'db2' ? adapter : adapter[/^[a-z]+/]
t.test_files=Dir.glob( "test/cases/**/*_test{,_#{adapter_short}}.rb" ).sort
t.verbose = true
Expand Down
18 changes: 18 additions & 0 deletions activerecord/test/connections/jdbc_jdbcderby/connection.rb
@@ -0,0 +1,18 @@
print "Using Derby via JRuby, activerecord-jdbc-adapter and activerecord-jdbcderby-adapter\n"
require_dependency 'models/course'
require 'logger'
ActiveRecord::Base.logger = Logger.new("debug.log")

ActiveRecord::Base.configurations = {
'arunit' => {
:adapter => 'jdbcderby',
:database => 'activerecord_unittest'
},
'arunit2' => {
:adapter => 'jdbcderby',
:database => 'activerecord_unittest2'
}
}

ActiveRecord::Base.establish_connection 'arunit'
Course.establish_connection 'arunit2'
18 changes: 18 additions & 0 deletions activerecord/test/connections/jdbc_jdbch2/connection.rb
@@ -0,0 +1,18 @@
print "Using H2 via JRuby, activerecord-jdbc-adapter and activerecord-jdbch2-adapter\n"
require_dependency 'models/course'
require 'logger'
ActiveRecord::Base.logger = Logger.new("debug.log")

ActiveRecord::Base.configurations = {
'arunit' => {
:adapter => 'jdbch2',
:database => 'activerecord_unittest'
},
'arunit2' => {
:adapter => 'jdbch2',
:database => 'activerecord_unittest2'
}
}

ActiveRecord::Base.establish_connection 'arunit'
Course.establish_connection 'arunit2'
18 changes: 18 additions & 0 deletions activerecord/test/connections/jdbc_jdbchsqldb/connection.rb
@@ -0,0 +1,18 @@
print "Using HSQLDB via JRuby, activerecord-jdbc-adapter and activerecord-jdbchsqldb-adapter\n"
require_dependency 'models/course'
require 'logger'
ActiveRecord::Base.logger = Logger.new("debug.log")

ActiveRecord::Base.configurations = {
'arunit' => {
:adapter => 'jdbchsqldb',
:database => 'activerecord_unittest'
},
'arunit2' => {
:adapter => 'jdbchsqldb',
:database => 'activerecord_unittest2'
}
}

ActiveRecord::Base.establish_connection 'arunit'
Course.establish_connection 'arunit2'
26 changes: 26 additions & 0 deletions activerecord/test/connections/jdbc_jdbcmysql/connection.rb
@@ -0,0 +1,26 @@
print "Using MySQL via JRuby, activerecord-jdbc-adapter and activerecord-jdbcmysql-adapter\n"
require_dependency 'models/course'
require 'logger'

ActiveRecord::Base.logger = Logger.new("debug.log")

# GRANT ALL PRIVILEGES ON activerecord_unittest.* to 'rails'@'localhost';
# GRANT ALL PRIVILEGES ON activerecord_unittest2.* to 'rails'@'localhost';

ActiveRecord::Base.configurations = {
'arunit' => {
:adapter => 'jdbcmysql',
:username => 'rails',
:encoding => 'utf8',
:database => 'activerecord_unittest',
},
'arunit2' => {
:adapter => 'jdbcmysql',
:username => 'rails',
:database => 'activerecord_unittest2'
}
}

ActiveRecord::Base.establish_connection 'arunit'
Course.establish_connection 'arunit2'

26 changes: 26 additions & 0 deletions activerecord/test/connections/jdbc_jdbcpostgresql/connection.rb
@@ -0,0 +1,26 @@
print "Using Postgrsql via JRuby, activerecord-jdbc-adapter and activerecord-postgresql-adapter\n"
require_dependency 'models/course'
require 'logger'

ActiveRecord::Base.logger = Logger.new("debug.log")

# createuser rails --createdb --no-superuser --no-createrole
# createdb -O rails activerecord_unittest
# createdb -O rails activerecord_unittest2

ActiveRecord::Base.configurations = {
'arunit' => {
:adapter => 'jdbcpostgresql',
:username => ENV['USER'] || 'rails',
:database => 'activerecord_unittest'
},
'arunit2' => {
:adapter => 'jdbcpostgresql',
:username => ENV['USER'] || 'rails',
:database => 'activerecord_unittest2'
}
}

ActiveRecord::Base.establish_connection 'arunit'
Course.establish_connection 'arunit2'

25 changes: 25 additions & 0 deletions activerecord/test/connections/jdbc_jdbcsqlite3/connection.rb
@@ -0,0 +1,25 @@
print "Using SQLite3 via JRuby, activerecord-jdbc-adapter and activerecord-jdbcsqlite3-adapter\n"
require_dependency 'models/course'
require 'logger'
ActiveRecord::Base.logger = Logger.new("debug.log")

class SqliteError < StandardError
end

BASE_DIR = FIXTURES_ROOT
sqlite_test_db = "#{BASE_DIR}/fixture_database.sqlite3"
sqlite_test_db2 = "#{BASE_DIR}/fixture_database_2.sqlite3"

def make_connection(clazz, db_file)
ActiveRecord::Base.configurations = { clazz.name => { :adapter => 'jdbcsqlite3', :database => db_file, :timeout => 5000 } }
unless File.exist?(db_file)
puts "SQLite3 database not found at #{db_file}. Rebuilding it."
sqlite_command = %Q{sqlite3 "#{db_file}" "create table a (a integer); drop table a;"}
puts "Executing '#{sqlite_command}'"
raise SqliteError.new("Seems that there is no sqlite3 executable available") unless system(sqlite_command)
end
clazz.establish_connection(clazz.name)
end

make_connection(ActiveRecord::Base, sqlite_test_db)
make_connection(Course, sqlite_test_db2)

0 comments on commit 4ef9845

Please sign in to comment.