From c03689abd20e0b408131f0ff20fa2da84469785b Mon Sep 17 00:00:00 2001 From: Stephen Bannasch Date: Sat, 27 Dec 2008 15:37:47 -0500 Subject: [PATCH] Adding AR tests for JDBC connections 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-adapter for the database you are testing. Run the tests like this: jruby -S rake test_jdbcmysql --- activerecord/Rakefile | 8 ++++- .../test/connections/jdbc_jdbcderby/connection.rb | 18 +++++++++++++ .../test/connections/jdbc_jdbch2/connection.rb | 18 +++++++++++++ .../test/connections/jdbc_jdbchsqldb/connection.rb | 18 +++++++++++++ .../test/connections/jdbc_jdbcmysql/connection.rb | 26 ++++++++++++++++++++ .../connections/jdbc_jdbcpostgresql/connection.rb | 26 ++++++++++++++++++++ .../connections/jdbc_jdbcsqlite3/connection.rb | 25 +++++++++++++++++++ 7 files changed, 137 insertions(+), 2 deletions(-) create mode 100644 activerecord/test/connections/jdbc_jdbcderby/connection.rb create mode 100644 activerecord/test/connections/jdbc_jdbch2/connection.rb create mode 100644 activerecord/test/connections/jdbc_jdbchsqldb/connection.rb create mode 100644 activerecord/test/connections/jdbc_jdbcmysql/connection.rb create mode 100644 activerecord/test/connections/jdbc_jdbcpostgresql/connection.rb create mode 100644 activerecord/test/connections/jdbc_jdbcsqlite3/connection.rb diff --git a/activerecord/Rakefile b/activerecord/Rakefile index f47674d..1c7e260 100644 --- a/activerecord/Rakefile +++ b/activerecord/Rakefile @@ -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 diff --git a/activerecord/test/connections/jdbc_jdbcderby/connection.rb b/activerecord/test/connections/jdbc_jdbcderby/connection.rb new file mode 100644 index 0000000..222ef5d --- /dev/null +++ b/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' diff --git a/activerecord/test/connections/jdbc_jdbch2/connection.rb b/activerecord/test/connections/jdbc_jdbch2/connection.rb new file mode 100644 index 0000000..9d2875e --- /dev/null +++ b/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' diff --git a/activerecord/test/connections/jdbc_jdbchsqldb/connection.rb b/activerecord/test/connections/jdbc_jdbchsqldb/connection.rb new file mode 100644 index 0000000..fa943c2 --- /dev/null +++ b/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' diff --git a/activerecord/test/connections/jdbc_jdbcmysql/connection.rb b/activerecord/test/connections/jdbc_jdbcmysql/connection.rb new file mode 100644 index 0000000..e2517a5 --- /dev/null +++ b/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' + diff --git a/activerecord/test/connections/jdbc_jdbcpostgresql/connection.rb b/activerecord/test/connections/jdbc_jdbcpostgresql/connection.rb new file mode 100644 index 0000000..9da3f70 --- /dev/null +++ b/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 => 'rails', + :database => 'activerecord_unittest' + }, + 'arunit2' => { + :adapter => 'jdbcpostgresql', + :username => 'rails', + :database => 'activerecord_unittest2' + } +} + +ActiveRecord::Base.establish_connection 'arunit' +Course.establish_connection 'arunit2' + diff --git a/activerecord/test/connections/jdbc_jdbcsqlite3/connection.rb b/activerecord/test/connections/jdbc_jdbcsqlite3/connection.rb new file mode 100644 index 0000000..26d4676 --- /dev/null +++ b/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) -- 1.6.0.1