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