You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@deltacloud.apache.org by lu...@redhat.com on 2013/03/07 03:18:52 UTC
[PATCH 7/8] Pull all DB setup logic into the database initializer
From: David Lutterkort <lu...@redhat.com>
This ensures in particular that our tests always run under the same
environment.
---
server/bin/deltacloud-db-upgrade | 11 +----------
server/lib/initializers/database_initialize.rb | 27 ++++++++++++++++++--------
server/tests/cimi/db/db_helper.rb | 16 +--------------
server/tests/deltacloud/common.rb | 3 ---
4 files changed, 21 insertions(+), 36 deletions(-)
diff --git a/server/bin/deltacloud-db-upgrade b/server/bin/deltacloud-db-upgrade
index 290dc77..ce6631e 100755
--- a/server/bin/deltacloud-db-upgrade
+++ b/server/bin/deltacloud-db-upgrade
@@ -17,17 +17,8 @@
require 'rubygems'
require 'require_relative' if RUBY_VERSION < '1.9'
-# Fix loading of SQLite3 driver in JDBC
-#
-if RUBY_PLATFORM == 'java'
- require 'jdbc/sqlite3'
- Jdbc::SQLite3.load_driver
-end
-
-# Do not exit
+# Force DB upgrade
ENV['DB_UPGRADE'] = 'true'
require_relative './../lib/initializers/mock_initialize'
require_relative './../lib/initializers/database_initialize'
-
-Sequel::Migrator.apply(DATABASE, DATABASE_MIGRATIONS_DIR)
diff --git a/server/lib/initializers/database_initialize.rb b/server/lib/initializers/database_initialize.rb
index f7637ca..7ec68aa 100644
--- a/server/lib/initializers/database_initialize.rb
+++ b/server/lib/initializers/database_initialize.rb
@@ -30,18 +30,27 @@ Sequel::Model.plugin :validation_class_methods
# Enable Sequel migrations extension
Sequel.extension :migration
-# For JRuby we need to different Sequel driver
-#
-sequel_driver = (RUBY_PLATFORM=='java') ? 'jdbc:sqlite:' : 'sqlite://'
-
-# The default sqlite3 database could be override by 'DATABASE_LOCATION'
+# The default sqlite3 database can be overridden with the 'DATABASE_LOCATION'
# environment variable.
#
# For more details about possible values see:
# http://sequel.rubyforge.org/rdoc/files/doc/opening_databases_rdoc.html
#
-DATABASE_LOCATION = ENV['DATABASE_LOCATION'] ||
- "#{sequel_driver}#{File.join(BASE_STORAGE_DIR, 'db.sqlite')}"
+if ENV['DATABASE_LOCATION']
+ DATABASE_LOCATION = ENV['DATABASE_LOCATION']
+else
+ if ENV['RACK_ENV'] == 'test'
+ if RUBY_PLATFORM=='java'
+ DATABASE_LOCATION = 'jdbc:sqlite::memory'
+ else
+ DATABASE_LOCATION = 'sqlite:/'
+ end
+ else
+ sequel_driver = (RUBY_PLATFORM=='java') ? 'jdbc:sqlite:' : 'sqlite://'
+ DATABASE_LOCATION =
+ "#{sequel_driver}#{File.join(BASE_STORAGE_DIR, 'db.sqlite')}"
+ end
+end
if RUBY_PLATFORM == 'java'
require 'jdbc/sqlite3'
@@ -61,7 +70,9 @@ unless Sequel::Migrator.is_current?(DATABASE, DATABASE_MIGRATIONS_DIR)
# Do not exit when this intitializer is included from deltacloud-db-upgrade
# script
#
- unless ENV['DB_UPGRADE']
+ if ENV['RACK_ENV'] == 'test' || ENV['DB_UPGRADE']
+ Sequel::Migrator.apply(DATABASE, DATABASE_MIGRATIONS_DIR)
+ else
warn "WARNING: The database needs to be upgraded. Run: 'deltacloud-db-upgrade' command."
exit(1)
end
diff --git a/server/tests/cimi/db/db_helper.rb b/server/tests/cimi/db/db_helper.rb
index 65cca7b..ac44118 100644
--- a/server/tests/cimi/db/db_helper.rb
+++ b/server/tests/cimi/db/db_helper.rb
@@ -1,18 +1,4 @@
-# Memory database
-if RUBY_PLATFORM == 'java'
- require 'jdbc/sqlite3'
- Jdbc::SQLite3.load_driver
- ENV['DATABASE_LOCATION'] = 'jdbc:sqlite::memory:'
-else
- ENV['DATABASE_LOCATION'] = 'sqlite:/'
-end
-
-ENV['DB_UPGRADE'] = 'true'
-
-require_relative '../../../lib/initializers/database_initialize'
-
-# Apply database migrations:
-Sequel::Migrator.apply(DATABASE, DATABASE_MIGRATIONS_DIR)
+require_relative '../../test_helper'
module Deltacloud
module DatabaseTestHelper
diff --git a/server/tests/deltacloud/common.rb b/server/tests/deltacloud/common.rb
index cded956..c31655e 100644
--- a/server/tests/deltacloud/common.rb
+++ b/server/tests/deltacloud/common.rb
@@ -1,8 +1,5 @@
require_relative '../test_helper.rb'
-require_relative File.join('..', '..', 'lib', 'initializers', 'mock_initialize')
-require_relative File.join('..', '..', 'lib', 'initializers', 'frontend_initialize')
-
Deltacloud.require_frontend! :deltacloud
def check_json_serialization_for(model, sample_id, optional_attrs=[])
--
1.8.1.4