[Title] check all db connection error
authorHyoun Jiil <jiil.hyoun@samsung.com>
Wed, 14 Aug 2013 08:02:08 +0000 (17:02 +0900)
committerHyoun Jiil <jiil.hyoun@samsung.com>
Wed, 14 Aug 2013 08:02:08 +0000 (17:02 +0900)
[Type] Enhancement
[Module] Toolchain /
[Priority] Minor
[Jira#]
[Redmine#]
[Problem]
[Cause]
[Solution]
[TestCase]

Change-Id: Iebf66713e1d53f27925b00c43f85412bb7e7df03

14 files changed:
src/build_server/BuildServer.rb
src/build_server/BuildServerController.rb
src/build_server/BuildServerException.rb
src/build_server/CommonJob.rb
src/build_server/CommonProject.rb
src/build_server/DistributionManager.rb
src/build_server/JobManager.rb
src/build_server/MultiBuildJob.rb
src/build_server/ProjectManager.rb
src/build_server/RegisterPackageJob.rb
src/build_server/RemoteBuildServer.rb
src/build_server/SocketJobRequestListener.rb
test/upgrade/buildsvr1.init
test/upgrade/buildsvr2.init

index d7b30bb39a17bfe884e1879e0ddf490b021decd4..e0da5b434b371fdfdcf4859ac5d4e8921b5c5fe1 100644 (file)
@@ -122,74 +122,189 @@ class BuildServer
                @job_id_mutex = Mutex.new
        end
 
+       #name send_mail
+       #return "YES" when send_mail setted
+       #return "NO" (default or DB conncetion error)
        def send_mail
                result = nil
-               get_db_connection() do |db|
-                       result = db.select_one("SELECT value FROM server_configs WHERE property = 'send_mail'")[0]
+               begin
+                       get_db_connection() do |db|
+                               result = db.select_one("SELECT value FROM server_configs WHERE property = 'send_mail'")[0]
+                       end
+               rescue BuildServerException => e
+                       if not @log.nil? then
+                               @log.error e.message
+                       end
+               rescue => e
+                       if not @log.nil? then
+                               @log.error e.errstr
+                       end
                end
                return (result.nil?) ? "NO" : result
        end
 
        def send_mail=(mail)
-               get_db_connection() do |db|
-                       db.do "UPDATE server_configs SET value = '#{mail.strip}' WHERE property = 'send_mail'"
+               begin
+                       get_db_connection() do |db|
+                               db.do "UPDATE server_configs SET value = '#{mail.strip}' WHERE property = 'send_mail'"
+                       end
+               rescue BuildServerException => e
+                       if not @log.nil? then
+                               @log.error e.message
+                       end
+               rescue => e
+                       if not @log.nil? then
+                               @log.error e.errstr
+                       end
                end
        end
 
+       #name keep_time
+       #return keep_time 
+       #return 86400 (default or DB conncetion error)
        def keep_time
                result = nil
-               get_db_connection() do |db|
-                       result = db.select_one("SELECT value FROM server_configs WHERE property = 'keep_time'")[0]
+               begin
+                       get_db_connection() do |db|
+                               result = db.select_one("SELECT value FROM server_configs WHERE property = 'keep_time'")[0]
+                       end
+               rescue BuildServerException => e
+                       if not @log.nil? then
+                               @log.error e.message
+                       end
+               rescue => e
+                       if not @log.nil? then
+                               @log.error e.errstr
+                       end
                end
                return (result.nil?) ? 86400 : result.to_i
        end
 
        def keep_time=(second)
-               get_db_connection() do |db|
-                       db.do "UPDATE server_configs SET value = '#{second}' WHERE property = 'keep_time'"
+               begin
+                       get_db_connection() do |db|
+                               db.do "UPDATE server_configs SET value = '#{second}' WHERE property = 'keep_time'"
+                       end
+               rescue BuildServerException => e
+                       if not @log.nil? then
+                               @log.error e.message
+                       end
+               rescue => e
+                       if not @log.nil? then
+                               @log.error e.errstr
+                       end
                end
        end
 
+       #name pkg_sync_period
+       #return pkg_sync_period
+       #return 600 (default or DB conncetion error)
        def pkg_sync_period
                result = nil
-               get_db_connection() do |db|
-                       result = db.select_one("SELECT value FROM server_configs WHERE property = 'pkg_sync_period'")[0]
+               begin
+                       get_db_connection() do |db|
+                               result = db.select_one("SELECT value FROM server_configs WHERE property = 'pkg_sync_period'")[0]
+                       end
+               rescue BuildServerException => e
+                       if not @log.nil? then
+                               @log.error e.message
+                       end
+               rescue => e
+                       if not @log.nil? then
+                               @log.error e.errstr
+                       end
                end
                return (result.nil?) ? 600 : result.to_i
        end
 
        def pkg_sync_period=(second)
-               get_db_connection() do |db|
-                       db.do "UPDATE server_configs SET value = '#{second}' WHERE property = 'pkg_sync_period'"
+               begin
+                       get_db_connection() do |db|
+                               db.do "UPDATE server_configs SET value = '#{second}' WHERE property = 'pkg_sync_period'"
+                       end
+               rescue BuildServerException => e
+                       if not @log.nil? then
+                               @log.error e.message
+                       end
+               rescue => e
+                       if not @log.nil? then
+                               @log.error e.errstr
+                       end
                end
        end
 
+       #name changelog_check
+       #return chengelog_check flag
+       #return false (default or DB conncetion error)
        def changelog_check
                result = nil
-               get_db_connection() do |db|
-                       result = db.select_one("SELECT value FROM server_configs WHERE property = 'changelog_check'")[0]
+               begin
+                       get_db_connection() do |db|
+                               result = db.select_one("SELECT value FROM server_configs WHERE property = 'changelog_check'")[0]
+                       end
+               rescue BuildServerException => e
+                       if not @log.nil? then
+                               @log.error e.message
+                       end
+               rescue => e
+                       if not @log.nil? then
+                               @log.error e.errstr
+                       end
                end
                return (result.nil?) ? false : result =~ /true/i
        end
 
        def changelog_check=(check)
                t = check =~ /true/i
-               get_db_connection() do |db|
-                       db.do "UPDATE server_configs SET value = '#{t.to_s}' WHERE property = 'changelog_check'"
+               begin
+                       get_db_connection() do |db|
+                               db.do "UPDATE server_configs SET value = '#{t.to_s}' WHERE property = 'changelog_check'"
+                       end
+               rescue BuildServerException => e
+                       if not @log.nil? then
+                               @log.error e.message
+                       end
+               rescue => e
+                       if not @log.nil? then
+                               @log.error e.errstr
+                       end
                end
        end
 
+       #name job_log_url
+       #return job_log_url
+       #return "" (default or DB conncetion error)
        def job_log_url
                result = nil
-               get_db_connection() do |db|
-                       result = db.select_one("SELECT value FROM server_configs WHERE property = 'job_log_url'")[0]
+               begin
+                       get_db_connection() do |db|
+                               result = db.select_one("SELECT value FROM server_configs WHERE property = 'job_log_url'")[0]
+                       end
+               rescue BuildServerException => e
+                       if not @log.nil? then
+                               @log.error e.message
+                       end
+               rescue => e
+                       if not @log.nil? then
+                               @log.error e.errstr
+                       end
                end
                return (result.nil?) ? "" : result
        end
 
        def job_log_url=(url)
-               get_db_connection() do |db|
-                       db.do "UPDATE server_configs SET value = '#{url.strip}' WHERE property = 'job_log_url'"
+               begin
+                       get_db_connection() do |db|
+                               db.do "UPDATE server_configs SET value = '#{url.strip}' WHERE property = 'job_log_url'"
+                       end
+               rescue BuildServerException => e
+                       if not @log.nil? then
+                               @log.error e.message
+                       end
+               rescue => e
+                       if not @log.nil? then
+                               @log.error e.errstr
+                       end
                end
        end
 
@@ -202,21 +317,51 @@ class BuildServer
        def port=(svr_port)
                @running_port = svr_port
                if has_db? then
-                       get_db_connection() do |db|
-                               db.do "UPDATE server_configs SET value = '#{svr_port}' WHERE property = 'port'"
+                       begin
+                               get_db_connection() do |db|
+                                       db.do "UPDATE server_configs SET value = '#{svr_port}' WHERE property = 'port'"
+                               end
+                       rescue BuildServerException => e
+                               if not @log.nil? then
+                                       @log.error e.message
+                               end
+                       rescue => e
+                               if not @log.nil? then
+                                       @log.error e.errstr
+                               end
                        end
                end
        end
 
        def save_id_to_db(id)
-               get_db_connection() do |db|
-                       db.do "UPDATE server_configs SET value = '#{id.strip}' WHERE property = 'id'"
+               begin
+                       get_db_connection() do |db|
+                               db.do "UPDATE server_configs SET value = '#{id.strip}' WHERE property = 'id'"
+                       end
+               rescue BuildServerException => e
+                       if not @log.nil? then
+                               @log.error e.message
+                       end
+               rescue => e
+                       if not @log.nil? then
+                               @log.error e.errstr
+                       end
                end
        end
 
        def save_path_to_db(path)
-               get_db_connection() do |db|
-                       db.do "UPDATE server_configs SET value = '#{path.strip}' WHERE property = 'path'"
+               begin
+                       get_db_connection() do |db|
+                               db.do "UPDATE server_configs SET value = '#{path.strip}' WHERE property = 'path'"
+                       end
+               rescue BuildServerException => e
+                       if not @log.nil? then
+                               @log.error e.message
+                       end
+               rescue => e
+                       if not @log.nil? then
+                               @log.error e.errstr
+                       end
                end
        end
 
@@ -366,49 +511,109 @@ class BuildServer
        end
 
 
+       # name get_remote_servers
+       # return RemoteBuildServer array
+       # return [] (default or DB conncetion error)
        def get_remote_servers()
-               get_db_connection() do |db|
-                       return RemoteBuildServer.load_all(db, self)
+               result = []
+               begin
+                       get_db_connection() do |db|
+                               result =  RemoteBuildServer.load_all(db, self)
+                       end
+               rescue BuildServerException => e
+                       if not @log.nil? then
+                               @log.error e.message
+                       end
+               rescue => e
+                       if not @log.nil? then
+                               @log.error e.errstr
+                       end
                end
-               return []
+               return result
        end
 
 
        # add new remote friend server
+       # name add_remote_server
+       # return true when remote server add success
+       # return false when remote server already exist or build server is running or DB conncetion error
        def add_remote_server( ip, port )
+               result = false
                if @status == "RUNNING" then return false end
                newsvr = nil
-               get_db_connection() do |db|
-                       rs = RemoteBuildServer.load(ip, port, db, self)
-                       if not rs.nil? then return false end
-                       newsvr = RemoteBuildServer.new(ip, port, "", self)
-                       newsvr.save(db)
+
+               begin
+                       get_db_connection() do |db|
+                               rs = RemoteBuildServer.load(ip, port, db, self)
+                               if rs.nil? then
+                                       newsvr = RemoteBuildServer.new(ip, port, "", self)
+                                       newsvr.save(db)
+                                       @remote_servers.push newsvr
+                                       result = true
+                               end
+                       end
+               rescue BuildServerException => e
+                       if not @log.nil? then
+                               @log.error e.message
+                       end
+               rescue => e
+                       if not @log.nil? then
+                               @log.error e.errstr
+                       end
                end
-               @remote_servers.push newsvr
 
-               return true
+               return result
        end
 
 
        # remove remote friend server
+       # name remove_remote_server
+       # return true when remote server remove success
+       # return false when remote server not exist or build server is running or DB connection error 
        def remove_remote_server( ip, port )
+               result = false
                if @status == "RUNNING" then return false end
 
-               get_db_connection() do |db|
-                       rs = RemoteBuildServer.load(ip, port, db)
-                       if rs.nil? then return false end
-                       rs.unload(db)
+               begin
+                       get_db_connection() do |db|
+                               rs = RemoteBuildServer.load(ip, port, db)
+                               if not rs.nil? then
+                                       rs.unload(db)
+                                       result = true
+                               end
+                       end
+               rescue BuildServerException => e
+                       if not @log.nil? then
+                               @log.error e.message
+                       end
+               rescue => e
+                       if not @log.nil? then
+                               @log.error e.errstr
+                       end
                end
 
-               return true
+               return result
        end
 
 
+       # name get_sync_package_servers
+       # return array of {pkgsvr_url => <package server url>, name => <distribution name>}
+       # return [] when package server not exist or DB error occurred
        def get_sync_package_servers()
                result = []
-               get_db_connection() do |db|
-                       db.select_all("SELECT sync_pkg_servers.pkgsvr_url, distributions.name FROM sync_pkg_servers,distributions WHERE sync_pkg_servers.distribution_id = distributions.id") do |row |
-                               result.push [row['pkgsvr_url'], row['name']]
+               begin
+                       get_db_connection() do |db|
+                               db.select_all("SELECT sync_pkg_servers.pkgsvr_url, distributions.name FROM sync_pkg_servers,distributions WHERE sync_pkg_servers.distribution_id = distributions.id") do |row |
+                                       result.push [row['pkgsvr_url'], row['name']]
+                               end
+                       end
+               rescue BuildServerException => e
+                       if not @log.nil? then
+                               @log.error e.message
+                       end
+               rescue => e
+                       if not @log.nil? then
+                               @log.error e.errstr
                        end
                end
 
@@ -417,37 +622,80 @@ class BuildServer
 
 
        # add new remote pkg server
+       # name add_sync_package_server
+       # return true when add sync package server successed
+       # return false when sync package server already exist or distribution name not matched or DB conncetion error
        def add_sync_package_server( url, dist )
-               get_db_connection() do |db|
-                       row = db.select_one("SELECT distributions.id FROM sync_pkg_servers,distributions WHERE sync_pkg_servers.pkgsvr_url='#{url}' and distributions.name='#{dist}' and sync_pkg_servers.distribution_id = distributions.id")
-                       if not row.nil? then return false end
-                       row = db.select_one("SELECT id FROM distributions WHERE name='#{dist}'")
-                       dist_id = row['id']
-                       db.do "INSERT INTO sync_pkg_servers (pkgsvr_url,period,distribution_id) VALUES('#{url}',600,#{dist_id})"
+               result = false
+               begin
+                       get_db_connection() do |db|
+                               row = db.select_one("SELECT distributions.id FROM sync_pkg_servers,distributions WHERE sync_pkg_servers.pkgsvr_url='#{url}' and distributions.name='#{dist}' and sync_pkg_servers.distribution_id = distributions.id")
+                               if not row.nil? then return false end
+                               row = db.select_one("SELECT id FROM distributions WHERE name='#{dist}'")
+                               dist_id = row['id']
+                               db.do "INSERT INTO sync_pkg_servers (pkgsvr_url,period,distribution_id) VALUES('#{url}',600,#{dist_id})"
+                       end
+                       result = true
+               rescue BuildServerException => e
+                       if not @log.nil? then
+                               @log.error e.message
+                       end
+               rescue => e
+                       if not @log.nil? then
+                               @log.error e.errstr
+                       end
                end
 
-               return true
+               return result
        end
 
 
        # remove remote pkg server
+       # name remove_sync_package_server
+       # return true when remove sync package server successed
+       # return false when sync package server not exist when DB conncetion error 
        def remove_sync_package_server( url, dist )
-               get_db_connection() do |db|
-                       row = db.select_one("SELECT distributions.id FROM sync_pkg_servers,distributions WHERE sync_pkg_servers.pkgsvr_url='#{url}' and distributions.name='#{dist}' and sync_pkg_servers.distribution_id = distributions.id")
-                       if row.nil? then return false end
-                       dist_id = row['id']
-                       db.do("DELETE FROM sync_pkg_servers WHERE pkgsvr_url='#{url}' and distribution_id=#{dist_id}")
+               result = false
+               begin
+                       get_db_connection() do |db|
+                               row = db.select_one("SELECT distributions.id FROM sync_pkg_servers,distributions WHERE sync_pkg_servers.pkgsvr_url='#{url}' and distributions.name='#{dist}' and sync_pkg_servers.distribution_id = distributions.id")
+                               if row.nil? then return false end
+                               dist_id = row['id']
+                               db.do("DELETE FROM sync_pkg_servers WHERE pkgsvr_url='#{url}' and distribution_id=#{dist_id}")
+                       end
+                       result = true
+               rescue BuildServerException => e
+                       if not @log.nil? then
+                               @log.error e.message
+                       end
+               rescue => e
+                       if not @log.nil? then
+                               @log.error e.errstr
+                       end
                end
 
-               return true
+               return result
        end
 
 
+       # name supported_os_list
+       # return array of os name [<os name>, ... ]
+       # return [] when DB error occurred
        def supported_os_list
                result = []
-               get_db_connection() do |db|
-                       db.select_all("SELECT * FROM supported_os") do |row |
-                               result.push row['name']
+               begin
+                       get_db_connection() do |db|
+                               db.select_all("SELECT * FROM supported_os") do |row |
+                                       result.push row['name']
+                               end
+                       end
+               rescue BuildServerException => e
+                       if not @log.nil? then
+                               @log.error e.message
+                       end
+               rescue => e
+                       if not @log.nil? then
+                               @log.error e.errstr
                        end
                end
 
@@ -456,31 +704,59 @@ class BuildServer
 
 
        # add new target OS.
-       # If already exist, return false , otherwise true
+       # name add_supported_os
+       # return true when add supported os successed
+       # return false when supported os already exist or DB connection error 
        def add_supported_os( os_name )
+               result = false
                os_category = Utils.get_os_category( os_name )
                if os_category.nil? then return false end
 
-               get_db_connection() do |db|
-                       row = db.select_one("SELECT * FROM supported_os WHERE name='#{os_name}'")
-                       if not row.nil? then return false end
-                       db.do "INSERT INTO supported_os(os_category_id, name) SELECT os_category.id, '#{os_name}' FROM os_category WHERE os_category.name='#{os_category}'"
+               begin
+                       get_db_connection() do |db|
+                               row = db.select_one("SELECT * FROM supported_os WHERE name='#{os_name}'")
+                               if not row.nil? then return false end
+                               db.do "INSERT INTO supported_os(os_category_id, name) SELECT os_category.id, '#{os_name}' FROM os_category WHERE os_category.name='#{os_category}'"
+                       end
+                       result = true
+               rescue BuildServerException => e
+                       if not @log.nil? then
+                               @log.error e.message
+                       end
+               rescue => e
+                       if not @log.nil? then
+                               @log.error e.errstr
+                       end
                end
 
-               return true
-               
+               return result
        end
 
 
        # remove target OS.
+       #name remove_supported_os( os_name )
+       #return true when supported_os removed
+       #return false when supported_os not exist or DB connection error 
        def remove_supported_os( os_name )
-               get_db_connection() do |db|
-                       row = db.select_one("SELECT * FROM supported_os WHERE name='#{os_name}'")
-                       if row.nil? then return false end
-                       db.do("DELETE FROM supported_os WHERE name='#{os_name}'")
+               result = false
+               begin
+                       get_db_connection() do |db|
+                               row = db.select_one("SELECT * FROM supported_os WHERE name='#{os_name}'")
+                               if row.nil? then return false end
+                               db.do("DELETE FROM supported_os WHERE name='#{os_name}'")
+                       end
+                       result = true
+               rescue BuildServerException => e
+                       if not @log.nil? then
+                               @log.error e.message
+                       end
+               rescue => e
+                       if not @log.nil? then
+                               @log.error e.errstr
+                       end
                end
 
-               return true
+               return result
        end
 
 
@@ -618,7 +894,7 @@ class BuildServer
                                end
                                db.do("UPDATE server_configs SET value = '#{@db_version}' WHERE property = 'db_version'")
                        end
-               rescue DBI::DatabaseError => e
+               rescue => e
                        puts e.errstr
                        result = false
                ensure
@@ -678,86 +954,97 @@ class BuildServer
 
        def create_db()
                gen_db()
-               result = get_db_connection() do |db|
-                       inc = db_inc
-                       post_fix = db_post_fix
-                       now = db_now
-
-                       # remove table
-                       db.tables.each do |table|
-                               db.do "DROP TABLE #{table}"
-                       end
-
-                       # create table
-                       db.do "CREATE TABLE server_configs ( id INTEGER PRIMARY KEY #{inc}, property VARCHAR(64) NOT NULL, value VARCHAR(256) )#{post_fix}"
-                       db.do "INSERT INTO server_configs (property,value) VALUES ('id','#{@id}')"
-                       db.do "INSERT INTO server_configs (property,value) VALUES ('path','#{@path}')"
-                       db.do "INSERT INTO server_configs (property,value) VALUES ('db_version','#{@db_version}')"
-                       db.do "INSERT INTO server_configs (property,value) VALUES ('port','2222')"
-                       db.do "INSERT INTO server_configs (property,value) VALUES ('max_working_jobs','2')"
-                       db.do "INSERT INTO server_configs (property,value) VALUES ('max_jobs','4')"
-                       db.do "INSERT INTO server_configs (property,value) VALUES ('send_mail','NO')"
-                       db.do "INSERT INTO server_configs (property,value) VALUES ('keep_time','86400')"
-                       db.do "INSERT INTO server_configs (property,value) VALUES ('pkg_sync_period','600')"
-                       db.do "INSERT INTO server_configs (property,value) VALUES ('changelog_check','false')"
-                       db.do "INSERT INTO server_configs (property,value) VALUES ('job_log_url','')"
-                       db.do "CREATE TABLE os_category ( id INTEGER PRIMARY KEY #{inc}, name VARCHAR(32) NOT NULL UNIQUE ) #{post_fix}"
-                       db.do "INSERT INTO os_category (name) VALUES ( 'linux' )"
-                       db.do "INSERT INTO os_category (name) VALUES ( 'windows' )"
-                       db.do "INSERT INTO os_category (name) VALUES ( 'macos' )"
-
-                       PackageDistribution.create_table(db, inc, post_fix)
-
-                       # sync package server
-            db.do "CREATE TABLE sync_pkg_servers ( 
-                               id INTEGER PRIMARY KEY #{inc}, 
-                               distribution_id INTEGER NOT NULL, 
-                               pkgsvr_url VARCHAR(256), 
-                               period INTEGER, 
-                               description VARCHAR(255),
-                CONSTRAINT fk_sync_pkg_servers_distributions1 FOREIGN KEY ( distribution_id ) REFERENCES distributions ( id ) ) #{post_fix}"
-
-                       db.do "CREATE TABLE supported_os ( 
-                               id INTEGER PRIMARY KEY #{inc}, 
-                               os_category_id INTEGER NOT NULL, 
-                               name VARCHAR(32) NOT NULL UNIQUE,
-                               CONSTRAINT fk_supported_os_os_category1 FOREIGN KEY ( os_category_id ) REFERENCES os_category ( id ) ) #{post_fix}"
-
-                       RemoteBuildServer.create_table(db, inc, post_fix)
-
-                       # USERS/GROUPS
-                       # users
-                       db.do "CREATE TABLE users ( id INTEGER PRIMARY KEY #{inc}, name VARCHAR(32) NOT NULL UNIQUE, email VARCHAR(256), password_hash VARCHAR(256), password_salt VARCHAR(256) ) #{post_fix}"
-                       # groups
-                       db.do "CREATE TABLE groups ( id INTEGER PRIMARY KEY #{inc}, name VARCHAR(32) NOT NULL UNIQUE, admin VARCHAR(32) NOT NULL DEFAULT 'FALSE', description VARCHAR(256) )#{post_fix}"
-                       # user groups  (users -- groups)
-                       db.do "CREATE  TABLE user_groups ( user_id INTEGER NOT NULL, group_id INTEGER NOT NULL, status VARCHAR(32) NOT NULL DEFAULT 'ACTIVE', PRIMARY KEY ( user_id, group_id ),
-                                       CONSTRAINT fk_users_has_groups_users1 FOREIGN KEY ( user_id ) REFERENCES users ( id ),
-                                       CONSTRAINT fk_users_has_groups_groups1 FOREIGN KEY ( group_id ) REFERENCES groups ( id )) #{post_fix}"
-
-                       db.do "INSERT INTO users (name,email,password_hash,password_salt) VALUES ('administrators','admin@user','$2a$10$H.w3ssI9KfuvNEXXp1qxD.b3Wm8alJG.HXviUofe4nErDn.TKUAka','$2a$10$H.w3ssI9KfuvNEXXp1qxD.')"
-                       db.do "INSERT INTO users (name,email,password_hash,password_salt) VALUES ('sync-mananger','sync-manager@user','$2a$10$H.w3ssI9KfuvNEXXp1qxD.b3Wm8alJG.HXviUofe4nErDn.TKUAka','$2a$10$H.w3ssI9KfuvNEXXp1qxD.')"
-                       db.do "INSERT INTO groups (name, admin, description) VALUES ('admin','TRUE','')"
-                       db.do "INSERT INTO user_groups (user_id, group_id) SELECT users.id,groups.id FROM users,groups WHERE users.email = 'admin@user' and groups.name = 'admin'"
-                       db.do "INSERT INTO user_groups (user_id, group_id) SELECT users.id,groups.id FROM users,groups WHERE users.email = 'sync-manager@user' and groups.name = 'admin'"
-
-                       # PROJECTS
-                       CommonProject.create_table(db, inc, post_fix)
-                       GitBuildProject.create_table(db, post_fix)
-                       BinaryUploadProject.create_table(db, post_fix)
-                       db.do "CREATE TABLE group_project_accesses( 
-                               group_id INTEGER NOT NULL, 
-                               project_id INTEGER NOT NULL, 
-                               build VARCHAR(32) NOT NULL DEFAULT 'TRUE', 
-                               PRIMARY KEY ( group_id,project_id ),
-                               CONSTRAINT fk_groups_has_projects_groups1 FOREIGN KEY ( group_id ) REFERENCES groups ( id ),
-                               CONSTRAINT fk_groups_has_projects_projects1 FOREIGN KEY ( project_id ) REFERENCES projects ( id ) )#{post_fix}"
-
-                       # JOBS
-                       CommonJob.create_table(db, inc, post_fix)
+               begin
+                       get_db_connection() do |db|
+                               inc = db_inc
+                               post_fix = db_post_fix
+                               now = db_now
+
+                               # remove table
+                               db.tables.each do |table|
+                                       db.do "DROP TABLE #{table}"
+                               end
+       
+                               # create table
+                               db.do "CREATE TABLE server_configs ( id INTEGER PRIMARY KEY #{inc}, property VARCHAR(64) NOT NULL, value VARCHAR(256) )#{post_fix}"
+                               db.do "INSERT INTO server_configs (property,value) VALUES ('id','#{@id}')"
+                               db.do "INSERT INTO server_configs (property,value) VALUES ('path','#{@path}')"
+                               db.do "INSERT INTO server_configs (property,value) VALUES ('db_version','#{@db_version}')"
+                               db.do "INSERT INTO server_configs (property,value) VALUES ('port','2222')"
+                               db.do "INSERT INTO server_configs (property,value) VALUES ('max_working_jobs','2')"
+                               db.do "INSERT INTO server_configs (property,value) VALUES ('max_jobs','4')"
+                               db.do "INSERT INTO server_configs (property,value) VALUES ('send_mail','NO')"
+                               db.do "INSERT INTO server_configs (property,value) VALUES ('keep_time','86400')"
+                               db.do "INSERT INTO server_configs (property,value) VALUES ('pkg_sync_period','600')"
+                               db.do "INSERT INTO server_configs (property,value) VALUES ('changelog_check','false')"
+                               db.do "INSERT INTO server_configs (property,value) VALUES ('job_log_url','')"
+                               db.do "CREATE TABLE os_category ( id INTEGER PRIMARY KEY #{inc}, name VARCHAR(32) NOT NULL UNIQUE ) #{post_fix}"
+                               db.do "INSERT INTO os_category (name) VALUES ( 'linux' )"
+                               db.do "INSERT INTO os_category (name) VALUES ( 'windows' )"
+                               db.do "INSERT INTO os_category (name) VALUES ( 'macos' )"
+
+                               PackageDistribution.create_table(db, inc, post_fix)
+
+                               # sync package server
+                               db.do "CREATE TABLE sync_pkg_servers ( 
+                                       id INTEGER PRIMARY KEY #{inc}, 
+                                       distribution_id INTEGER NOT NULL, 
+                                       pkgsvr_url VARCHAR(256), 
+                                       period INTEGER, 
+                                       description VARCHAR(255),
+                                       CONSTRAINT fk_sync_pkg_servers_distributions1 FOREIGN KEY ( distribution_id ) REFERENCES distributions ( id ) ) #{post_fix}"
+
+                               db.do "CREATE TABLE supported_os ( 
+                                       id INTEGER PRIMARY KEY #{inc}, 
+                                       os_category_id INTEGER NOT NULL, 
+                                       name VARCHAR(32) NOT NULL UNIQUE,
+                                       CONSTRAINT fk_supported_os_os_category1 FOREIGN KEY ( os_category_id ) REFERENCES os_category ( id ) ) #{post_fix}"
+       
+                               RemoteBuildServer.create_table(db, inc, post_fix)
+       
+                               # USERS/GROUPS
+                               # users
+                               db.do "CREATE TABLE users ( id INTEGER PRIMARY KEY #{inc}, name VARCHAR(32) NOT NULL UNIQUE, email VARCHAR(256), password_hash VARCHAR(256), password_salt VARCHAR(256) ) #{post_fix}"
+                               # groups
+                               db.do "CREATE TABLE groups ( id INTEGER PRIMARY KEY #{inc}, name VARCHAR(32) NOT NULL UNIQUE, admin VARCHAR(32) NOT NULL DEFAULT 'FALSE', description VARCHAR(256) )#{post_fix}"
+                               # user groups  (users -- groups)
+                               db.do "CREATE  TABLE user_groups ( user_id INTEGER NOT NULL, group_id INTEGER NOT NULL, status VARCHAR(32) NOT NULL DEFAULT 'ACTIVE', PRIMARY KEY ( user_id, group_id ),
+                                               CONSTRAINT fk_users_has_groups_users1 FOREIGN KEY ( user_id ) REFERENCES users ( id ),
+                                               CONSTRAINT fk_users_has_groups_groups1 FOREIGN KEY ( group_id ) REFERENCES groups ( id )) #{post_fix}"
+       
+                               db.do "INSERT INTO users (name,email,password_hash,password_salt) VALUES ('administrators','admin@user','$2a$10$H.w3ssI9KfuvNEXXp1qxD.b3Wm8alJG.HXviUofe4nErDn.TKUAka','$2a$10$H.w3ssI9KfuvNEXXp1qxD.')"
+                               db.do "INSERT INTO users (name,email,password_hash,password_salt) VALUES ('sync-mananger','sync-manager@user','$2a$10$H.w3ssI9KfuvNEXXp1qxD.b3Wm8alJG.HXviUofe4nErDn.TKUAka','$2a$10$H.w3ssI9KfuvNEXXp1qxD.')"
+                               db.do "INSERT INTO groups (name, admin, description) VALUES ('admin','TRUE','')"
+                               db.do "INSERT INTO user_groups (user_id, group_id) SELECT users.id,groups.id FROM users,groups WHERE users.email = 'admin@user' and groups.name = 'admin'"
+                               db.do "INSERT INTO user_groups (user_id, group_id) SELECT users.id,groups.id FROM users,groups WHERE users.email = 'sync-manager@user' and groups.name = 'admin'"
+       
+                               # PROJECTS
+                               CommonProject.create_table(db, inc, post_fix)
+                               GitBuildProject.create_table(db, post_fix)
+                               BinaryUploadProject.create_table(db, post_fix)
+                               db.do "CREATE TABLE group_project_accesses( 
+                                       group_id INTEGER NOT NULL, 
+                                       project_id INTEGER NOT NULL, 
+                                       build VARCHAR(32) NOT NULL DEFAULT 'TRUE', 
+                                       PRIMARY KEY ( group_id,project_id ),
+                                       CONSTRAINT fk_groups_has_projects_groups1 FOREIGN KEY ( group_id ) REFERENCES groups ( id ),
+                                       CONSTRAINT fk_groups_has_projects_projects1 FOREIGN KEY ( project_id ) REFERENCES projects ( id ) )#{post_fix}"
+
+                               # JOBS
+                               CommonJob.create_table(db, inc, post_fix)
+                       end
+                       return true
+               rescue BuildServerException => e
+                       if not @log.nil? then
+                               @log.error e.message
+                       end
+               rescue => e
+                       if not @log.nil? then
+                               @log.error e.errstr
+                       end
                end
 
-               return result
+               return false
        end
 
 
@@ -779,10 +1066,9 @@ class BuildServer
                        return true
 
                rescue DBI::DatabaseError => e
-                       @log.error "DB loading failed!" if not @log.nil?
-                       @log.error e.errstr if not @log.nil?
-                       @log.error e.backtrace.inspect if not @log.nil?
-
+                       raise BuildServerException.new("ERR950"), e.errstr
+               rescue DBI::InterfaceError => e
+                       raise BuildServerException.new("ERR950"), e.errstr
                rescue => e
                        @log.error e.errstr if not @log.nil?
                        @log.error e.backtrace.inspect if not @log.nil?
@@ -791,49 +1077,85 @@ class BuildServer
                return false
        end
 
-
+       # name check_user_id_from_email( user_email )
+       # return id string
+       # return -1 when id of email is not exist or DB conncetion error 
        def check_user_id_from_email(user_email)
-               get_db_connection() do |db|
-                       row = db.select_one("SELECT * FROM users WHERE email='#{user_email}'")
-                       if not row.nil?  then
-                               return row['id']
-                       else
-                               return -1
+               result = -1
+               begin
+                       get_db_connection() do |db|
+                               row = db.select_one("SELECT * FROM users WHERE email='#{user_email}'")
+                               if not row.nil?  then
+                                       result = row['id']
+                               end
+                       end
+               rescue BuildServerException => e
+                       if not @log.nil? then
+                               @log.error e.message
+                       end
+               rescue => e
+                       if not @log.nil? then
+                               @log.error e.errstr
                        end
                end
 
-               return -1
+               return result
        end
 
 
+       # name get_email_using_user_id( user_id )
+       # return email string
+       # return -1 when email of id is not exist or DB connection error
        def get_email_using_user_id(user_id)
-               get_db_connection() do |db|
-                       row = db.select_one("SELECT * FROM users WHERE id='#{user_id}'")
-                       if not row.nil?  then
-                               return row['email']
-                       else
-                               return -1
+               result = -1
+               begin
+                       get_db_connection() do |db|
+                               row = db.select_one("SELECT * FROM users WHERE id='#{user_id}'")
+                               if not row.nil?  then
+                                       result = row['email']
+                               end
+                       end
+               rescue BuildServerException => e
+                       if not @log.nil? then
+                               @log.error e.message
+                       end
+               rescue => e
+                       if not @log.nil? then
+                               @log.error e.errstr
                        end
                end
-               return -1
+               return result
        end
 
+       #name check_user_password( user_id , passwd )
+       #return 1 when passwd matched
+       #return -1 when passwd unmatched or DB conncetion error
        def check_user_password(user_id, passwd)
-               get_db_connection() do |db|
-                       row = db.select_one("SELECT * FROM users WHERE id='#{user_id}'")
-                       if not row.nil?  then
-                               if row['password_hash'].eql? passwd
-                                       # if passwd is encript and that value equal password_hash then return true
-                                       return 1
-                               else
-                                       return row['password_hash'] == BCrypt::Engine.hash_secret(passwd, row['password_salt'])
-                               end
-                       else
-                               return -1
+               row = nil
+               begin
+                       get_db_connection() do |db|
+                               row = db.select_one("SELECT * FROM users WHERE id='#{user_id}'")
+                       end
+               rescue BuildServerException => e
+                       if not @log.nil? then
+                               @log.error e.message
+                       end
+               rescue => e
+                       if not @log.nil? then
+                               @log.error e.errstr
                        end
                end
 
-               return -1
+               if not row.nil?  then
+                       if row['password_hash'].eql? passwd
+                               # if passwd is encript and that value equal password_hash then return true
+                               return 1
+                       else
+                               return row['password_hash'] == BCrypt::Engine.hash_secret(passwd, row['password_salt'])
+                       end
+               else
+                       return -1
+               end
        end
 
 
@@ -919,8 +1241,18 @@ class BuildServer
                        end
 
                        if job.nil? then 
-                               get_db_connection() do |db|
-                                       job_status = db.select_one("SELECT status FROM jobs WHERE id = #{job_number}")[0]
+                               begin
+                                       get_db_connection() do |db|
+                                               job_status = db.select_one("SELECT status FROM jobs WHERE id = #{job_number}")[0]
+                                       end
+                               rescue BuildServerException => e
+                                       if not @log.nil? then
+                                               @log.error e.message
+                                       end
+                               rescue => e
+                                       if not @log.nil? then
+                                               @log.error e.errstr
+                                       end
                                end
                                BuildCommServer.send(conn, "=JOB_STATUS,#{job_status}")
                        end
@@ -942,32 +1274,45 @@ class BuildServer
                        return @latest_job_id
                end
        end
-       
-  #If the 'run' file is already locked, server is already running. 
-  #in this case return false 
-  private
-  def lockServer
-    return FileUtil.exclusiveLock(@run_file_path) 
-  end
-    
-  private 
-  def printErrorMessage(errMsg)
-    @log.info "Server creation failed"
-    @log.error errMsg
-    
-    puts "Server creation failed"
-    puts errMsg
-  end
+
+       #If the 'run' file is already locked, server is already running. 
+       #in this case return false 
+       private
+       def lockServer
+               return FileUtil.exclusiveLock(@run_file_path) 
+       end
+
+       private
+       def printErrorMessage(errMsg)
+               @log.info "Server creation failed"
+               @log.error errMsg
+
+               puts "Server creation failed"
+               puts errMsg
+       end
 
 
        # get latest id from DB
+       # name get_latest_job_id_from_db
+       # return max id string
+       # return 0 when job id is not exist or DB connection error
        private
        def get_latest_job_id_from_db()
                job_id = nil
-               get_db_connection() do |db|
-                       row = db.select_one("SELECT MAX(id) as id FROM jobs")   
-                       job_id = row['id']
-               end 
+               begin
+                       get_db_connection() do |db|
+                               row = db.select_one("SELECT MAX(id) as id FROM jobs")
+                               job_id = row['id']
+                       end
+               rescue BuildServerException => e
+                       if not @log.nil? then
+                               @log.error e.message
+                       end
+               rescue => e
+                       if not @log.nil? then
+                               @log.error e.errstr
+                       end
+               end
 
                if not job_id.nil? then
                        return job_id.to_s
index 488487d46156748160f1d249d37d8bf65ebbd887..e1a132fa8dd7df8ca1b63bfd2e83d3fb49f8c0f9 100644 (file)
@@ -517,19 +517,20 @@ class BuildServerController
                end
                migrate_db(server)
 
+               supported_os_list = server.supported_os_list
                # get supported os for project.
                # if not specified, all supported os of the server will be used
                if os_string.nil? or os_string.empty? then
-                       os_list = server.supported_os_list
+                       os_list = supported_os_list
                else
                        os_list = os_string.strip.split(",")
 
                        # check OS name
                        os_list.each do |os|
-                               if not server.supported_os_list.include? os then
+                               if not supported_os_list.include? os then
                                        puts "Unsupported OS name \"#{os}\" is used!"
                                        puts "Check the following supported OS list:"
-                                       server.supported_os_list.each do |s_os|
+                                       supported_os_list.each do |s_os|
                                                puts " * #{s_os}"
                                        end
 
@@ -569,18 +570,19 @@ class BuildServerController
                end
                migrate_db(server)
 
+               supported_os_list = server.supported_os_list
                # get supported os for project.
                # if not specified, all supported os of the server will be used
                if os_string.nil? or os_string == "default" then
-                       os_list = server.supported_os_list
+                       os_list = supported_os_list
                else
                        os_list = os_string.strip.split(",")
                        # check OS name
                        os_list.each do |os|
-                               if not server.supported_os_list.include? os then
+                               if not supported_os_list.include? os then
                                        puts "Unsupported OS name \"#{os}\" is used!"
                                        puts "Check the following supported OS list:"
-                                       server.supported_os_list.each do |s_os|
+                                       supported_os_list.each do |s_os|
                                                puts " * #{s_os}"
                                        end
 
index 2433e92a5a9083d3e29edaa1e28ee31bea8b02b4..d18143f273b66d670b728753ba1851328b975052 100644 (file)
@@ -50,7 +50,9 @@ class BuildServerException < Exception
                "ERR205" => "Job stopped by failure of its sub job!",
 
                "ERR900" => "Cancel event received!",
-               "ERR901" => "Job already upload status. Cancel failed!"
+               "ERR901" => "Job already upload status. Cancel failed!",
+
+               "ERR950" => "DB connection failed!!!"
        }
 
        def initialize(code)
index 7d6376e1e68bedcf70922f4001bb0751f442bd3d..1fde13f46a5cd38f747a1a81eea4484eb0672d6b 100644 (file)
@@ -324,9 +324,20 @@ class CommonJob
                if not @server.has_db? then return end
 
                now = @server.db_now()
-               @server.get_db_connection() do |db|
-                       db.do "INSERT INTO job_timestamps(job_id,stamp_name,stamp_time)
+               begin
+                       @server.get_db_connection() do |db|
+                               db.do "INSERT INTO job_timestamps(job_id,stamp_name,stamp_time)
                                VALUES (#{@id},'#{name}',#{now})"
+                       end
+               rescue BuildServerException => e
+                       if not @server.log.nil? then
+                               @server.log.error e.message
+                       end
+               rescue => e
+                       if not @server.log.nil? then
+                               @server.log.error e.errstr
+                       end
+
                end
        end
 
index 12a6b0b27f32fda40fbc9dafc4bc633409a295f7..f8928df102134bce55279d444608f8408024e872 100644 (file)
@@ -81,8 +81,18 @@ class CommonProject
                @source_info[ver] = info
 
                # save to db
-               @server.get_db_connection() do |db|
-                       save_source_info_internal(ver, info, db)
+               begin
+                       @server.get_db_connection() do |db|
+                               save_source_info_internal(ver, info, db)
+                       end
+               rescue BuildServerException => e
+                       if not @server.log.nil? then
+                               @server.log.error e.message
+                       end
+               rescue => e
+                       if not @server.log.nil? then
+                               @server.log.error e.errstr
+                       end
                end
        end
 
@@ -104,8 +114,18 @@ class CommonProject
                @package_info[ver].push [pkg_name, pkg_os]
 
                # save to db
-               @server.get_db_connection() do |db|
-                       save_package_info_internal(ver, pkg_name, pkg_os, db)
+               begin
+                       @server.get_db_connection() do |db|
+                               save_package_info_internal(ver, pkg_name, pkg_os, db)
+                       end
+               rescue BuildServerException => e
+                       if not @server.log.nil? then
+                               @server.log.error e.message
+                       end
+               rescue => e
+                       if not @server.log.nil? then
+                               @server.log.error e.errstr
+                       end
                end
        end
 
index a4ed3e812bc9452e2b4678b5dde89f1f6b717096..3b15bbe375e53c0f0257e141d6abac72fad9c72f 100644 (file)
@@ -141,12 +141,26 @@ class DistributionManager
 
 
        # get distribution
+       #name get_distribution(name)
+       #return PackageDistribution
+       #return nil when package distribution not exit or DB connection error
        def get_distribution(name)
                # conntect DB
-               @server.get_db_connection() do |db|
-                       return get_distribution_internal(name, db)
+               result = nil
+               begin
+                       @server.get_db_connection() do |db|
+                               result = get_distribution_internal(name, db)
+                       end
+               rescue BuildServerException => e
+                       if not @server.log.nil? then
+                               @server.log.error e.message
+                       end
+               rescue => e
+                       if not @server.log.nil? then
+                               @server.log.error e.errstr
+                       end
                end
-               return nil
+               return result
        end
 
 
@@ -156,74 +170,144 @@ class DistributionManager
 
 
        # add
+       #name add_distribution(name, pkgsvr_url, pkgsvr_ip, pkgsvr_port, pkgsvr_password)
+       #return true when add distribution successed
+       #return false when distribution already exist or DB connection error
        def add_distribution(name, pkgsvr_url, pkgsvr_ip, pkgsvr_port, pkgsvr_password)
-               @server.get_db_connection() do |db|
-                       if not get_distribution_internal(name, db).nil? then
-                               @server.log.info "The distribution \"#{name}\" already exists on server"
-                               @server.log.error "Adding distribution failed!"
-                               return false
-                       end
-                       new_dist = PackageDistribution.new(name, pkgsvr_url, pkgsvr_ip, pkgsvr_port, pkgsvr_password, "OPEN")
-                       new_dist.save(db)
+               result = false
+               begin
+                       @server.get_db_connection() do |db|
+                               if not get_distribution_internal(name, db).nil? then
+                                       @server.log.info "The distribution \"#{name}\" already exists on server"
+                                       @server.log.error "Adding distribution failed!"
+                               else
+                                       new_dist = PackageDistribution.new(name, pkgsvr_url, pkgsvr_ip, pkgsvr_port, pkgsvr_password, "OPEN")
+                                       new_dist.save(db)
+                                       result = true
+                                       @server.log.info "Added a new distribution \"#{name}\""
+                               end
+                       end
+               rescue BuildServerException => e
+                       if not @server.log.nil? then
+                               @server.log.error e.message
+                       end
+               rescue => e
+                       if not @server.log.nil? then
+                               @server.log.error e.errstr
+                       end
                end
-               @server.log.info "Added a new distribution \"#{name}\""
-               return true
+               return result
        end
 
 
        # remove
+       #name remove_distribution(name)
+       #return ture when remove distribution successed
+       #return false when distribution not exist or DB connection error or DB conncetion error
        def remove_distribution(name)
-
-               result = @server.get_db_connection() do |db|
-                       dist = get_distribution_internal(name, db)
-                       if dist.nil? then
-                               @server.log.error "The distribution \"#{name}\" does not exists on server"
-                               @server.log.error "Removing distribution failed!"
-                               return false
+               result = false
+               begin
+                       @server.get_db_connection() do |db|
+                               dist = get_distribution_internal(name, db)
+                               if dist.nil? then
+                                       @server.log.error "The distribution \"#{name}\" does not exists on server"
+                                       @server.log.error "Removing distribution failed!"
+                               else
+                                       dist.unload(db)
+                                       result = true
+                                       @server.log.info "Removed the distribution \"#{name}\""
+                               end
+                       end
+               rescue BuildServerException => e
+                       if not @server.log.nil? then
+                               @server.log.error e.message
+                       end
+               rescue => e
+                       if not @server.log.nil? then
+                               @server.log.error e.errstr
                        end
-                       dist.unload(db)
                end
 
-               @server.log.info "Removed the distribution \"#{name}\""
                return result
        end
 
 
+       #name get_first_distribution()
+       #return PackageDistribution
+       #return nil when no distribution exist or DB connection error 
        def get_first_distribution()
-               @server.get_db_connection() do |db|
-                       return PackageDistribution.load_first(db)
+               result = nil
+               begin
+                       @server.get_db_connection() do |db|
+                               result = PackageDistribution.load_first(db)
+                       end
+               rescue BuildServerException => e
+                       if not @server.log.nil? then
+                               @server.log.error e.message
+                       end
+               rescue => e
+                       if not @server.log.nil? then
+                               @server.log.error e.errstr
+                       end
                end
 
-               return nil
+               return result
        end
 
 
+       #name get_all_distributions()
+       #return PackageDistribution list
+       #return [] when no PackageDistribution exist or DB connection error
        def get_all_distributions()
-               @server.get_db_connection() do |db|
-                       return PackageDistribution.load_all(db)
+               result = []
+               begin
+                       @server.get_db_connection() do |db|
+                               result = PackageDistribution.load_all(db)
+                       end
+               rescue BuildServerException => e
+                       if not @server.log.nil? then
+                               @server.log.error e.message
+                       end
+               rescue => e
+                       if not @server.log.nil? then
+                               @server.log.error e.errstr
+                       end
                end
 
-               return []
+               return result
        end
 
 
+       #name set_distribution_lock(name, value=true)
+       #return true when distribution lock setted
+       #return false when distribution lock not exist or DB connection error
        def set_distribution_lock(name, value=true)
-               result = @server.get_db_connection() do |db|
-                       # check already exist
-                       dist = get_distribution_internal(name, db)
-                       if dist.nil? then return false end
-
-                       dist.status = (value)? "CLOSE" : "OPEN"
-                       dist.save(db)
-               end
-               if result then
+               result = false
+               begin
+                       @server.get_db_connection() do |db|
+                               # check already exist
+                               dist = get_distribution_internal(name, db)
+                               if dist.nil? then return false end
+
+                               dist.status = (value)? "CLOSE" : "OPEN"
+                               dist.save(db)
+                       end
                        if value then
                                @server.log.info "The distribution \"#{name}\" is locked!"
                        else
                                @server.log.info "The distribution \"#{name}\" is unlocked!"
                        end
+                       result = true
+               rescue BuildServerException => e
+                       if not @server.log.nil? then
+                               @server.log.error e.message
+                       end
+               rescue => e
+                       if not @server.log.nil? then
+                               @server.log.error e.errstr
+                       end
                end
-
+               
                return result
        end
 
index cc21616c29c7d7b49c6d9fabc4852b81891bf10f..a134040d1d71b26ad6de6a944188911a89c590d2 100644 (file)
@@ -53,16 +53,37 @@ class JobManager
        end
 
        def cancel_broken_status
-               @server.get_db_connection() do |db|
-                       db.do "UPDATE jobs SET status = 'CANCELED' WHERE status != 'FINISHED' and status != 'ERROR' and status != 'CANCELED'"
+               begin
+                       @server.get_db_connection() do |db|
+                               db.do "UPDATE jobs SET status = 'CANCELED' WHERE status != 'FINISHED' and status != 'ERROR' and status != 'CANCELED'"
+                       end
+               rescue BuildServerException => e
+                       if not @server.log.nil? then
+                               @server.log.error e.message
+                       end
+               rescue => e
+                       if not @server.log.nil? then
+                               @server.log.error e.errstr
+                       end
                end
        end
 
        def max_working_jobs
+               result = nil
                if @server.has_db? then
                        result = nil
-                       @server.get_db_connection() do |db|
-                               result = db.select_one("SELECT value FROM server_configs WHERE property = 'max_working_jobs'")[0]
+                       begin
+                               @server.get_db_connection() do |db|
+                                       result = db.select_one("SELECT value FROM server_configs WHERE property = 'max_working_jobs'")[0]
+                               end
+                       rescue BuildServerException => e
+                               if not @server.log.nil? then
+                                       @server.log.error e.message
+                               end
+                       rescue => e
+                               if not @server.log.nil? then
+                                       @server.log.error e.errstr
+                               end
                        end
                        @max_build_jobs = result.to_i if not result.nil?
                end
@@ -77,9 +98,19 @@ class JobManager
                end
 
                if @server.has_db? then
-                       @server.get_db_connection() do |db|
-                               db.do "UPDATE server_configs SET value = '#{@max_build_jobs}' WHERE property = 'max_working_jobs'"
-                               db.do "UPDATE server_configs SET value = '#{@max_jobs}' WHERE property = 'max_jobs'"
+                       begin
+                               @server.get_db_connection() do |db|
+                                       db.do "UPDATE server_configs SET value = '#{@max_build_jobs}' WHERE property = 'max_working_jobs'"
+                                       db.do "UPDATE server_configs SET value = '#{@max_jobs}' WHERE property = 'max_jobs'"
+                               end
+                       rescue BuildServerException => e
+                               if not @server.log.nil? then
+                                       @server.log.error e.message
+                               end
+                       rescue => e
+                               if not @server.log.nil? then
+                                       @server.log.error e.errstr
+                               end
                        end
                end
        end
@@ -88,8 +119,18 @@ class JobManager
        def get_max_jobs()
                if @server.has_db? then
                        result = nil
-                       @server.get_db_connection() do |db|
-                               result = db.select_one("SELECT value FROM server_configs WHERE property = 'max_jobs'")[0]
+                       begin
+                               @server.get_db_connection() do |db|
+                                       result = db.select_one("SELECT value FROM server_configs WHERE property = 'max_jobs'")[0]
+                               end
+                       rescue BuildServerException => e
+                               if not @server.log.nil? then
+                                       @server.log.error e.message
+                               end
+                       rescue => e
+                               if not @server.log.nil? then
+                                       @server.log.error e.errstr
+                               end
                        end
                        @max_jobs = result.to_i if not result.nil?
                end
@@ -110,8 +151,18 @@ class JobManager
                end
 
                if @server.has_db? then
-                       @server.get_db_connection() do |db|
-                               db.do "UPDATE server_configs SET value = '#{@max_jobs}' WHERE property = 'max_jobs'"
+                       begin
+                               @server.get_db_connection() do |db|
+                                       db.do "UPDATE server_configs SET value = '#{@max_jobs}' WHERE property = 'max_jobs'"
+                               end
+                       rescue BuildServerException => e
+                               if not @server.log.nil? then
+                                       @server.log.error e.message
+                               end
+                       rescue => e
+                               if not @server.log.nil? then
+                                       @server.log.error e.errstr
+                               end
                        end
                end
        end
@@ -137,6 +188,9 @@ class JobManager
        end
 
 
+       #name is_user_accessable(job,user_id)
+       #return true when all including job is accessable
+       #return false when denyed or DB connection error
        def is_user_accessable(job,user_id)
                if job.type == "MULTIBUILD" then
                        job.get_sub_jobs().each do |subjob|
@@ -146,11 +200,21 @@ class JobManager
                        end
                else
                        result = nil
-                       @server.get_db_connection() do |db|
-                               result = db.select_one "SELECT user_groups.group_id FROM user_groups,group_project_accesses
+                       begin
+                               @server.get_db_connection() do |db|
+                                       result = db.select_one "SELECT user_groups.group_id FROM user_groups,group_project_accesses
                                        WHERE user_groups.group_id = group_project_accesses.group_id and
                                        group_project_accesses.project_id = #{job.get_project.get_project_id} and
                                        user_groups.user_id = #{user_id}"
+                               end
+                       rescue BuildServerException => e
+                               if not @server.log.nil? then
+                                       @server.log.error e.message
+                               end
+                       rescue => e
+                               if not @server.log.nil? then
+                                       @server.log.error e.errstr
+                               end
                        end
                        return (not result.nil?)
                end
@@ -163,8 +227,18 @@ class JobManager
 
        def set_remote(job, rserver)
                job.set_remote_job(rserver)
-               @server.get_db_connection() do |db|
-                       db.do "UPDATE jobs SET remote_build_server_id = '#{rserver.id}' WHERE id = '#{job.id}'"
+               begin
+                       @server.get_db_connection() do |db|
+                               db.do "UPDATE jobs SET remote_build_server_id = '#{rserver.id}' WHERE id = '#{job.id}'"
+                       end
+               rescue BuildServerException => e
+                       if not @server.log.nil? then
+                               @server.log.error e.message
+                       end
+               rescue => e
+                       if not @server.log.nil? then
+                               @server.log.error e.errstr
+                       end
                end
        end
 
@@ -566,14 +640,29 @@ class JobManager
        end
 
 
+       #name save_job_status(job)
+       #return true when save successed or transferred
+       #return false when DB error occurred
        def save_job_status(job)
                # if transferred job, no need to save
                if job.is_transferred? then return true end
 
-               result = @server.get_db_connection() do |db|
-                       job.save(db)
-                       job.sub_jobs.each do |j|
-                               j.save(db)
+               result = false
+               begin
+                       @server.get_db_connection() do |db|
+                               job.save(db)
+                               job.sub_jobs.each do |j|
+                                       j.save(db)
+                               end
+                       end
+                       result = true
+               rescue BuildServerException => e
+                       if not @server.log.nil? then
+                               @server.log.error e.message
+                       end
+               rescue => e
+                       if not @server.log.nil? then
+                               @server.log.error e.errstr
                        end
                end
 
@@ -585,9 +674,9 @@ class JobManager
                        if job.id == job_id then
                                return job
                        end
-                       job.sub_jobs.each do |job|
-                               if job.id == job_id then
-                                       return job
+                       job.sub_jobs.each do |sjob|
+                               if sjob.id == job_id then
+                                       return sjob
                                end
                        end
                end
index da32078b3539eb31159e629f61a073523416fda6..44a8bba453de0e2430fe82a5530e98194bed2bb4 100644 (file)
@@ -175,10 +175,11 @@ class MultiBuildJob < CommonJob
 
                # set up pkgsvr_client
                first_project = @sub_jobs[0].get_project()
-               @pkgsvr_url = @server.distmgr.get_distribution(first_project.dist_name).pkgsvr_url
-               @pkgsvr_ip = @server.distmgr.get_distribution(first_project.dist_name).pkgsvr_ip
-               @pkgsvr_port = @server.distmgr.get_distribution(first_project.dist_name).pkgsvr_port
-               @pkgsvr_password = @server.distmgr.get_distribution(first_project.dist_name).pkgsvr_password
+               dist = @server.distmgr.get_distribution(first_project.dist_name)
+               @pkgsvr_url = dist.pkgsvr_url
+               @pkgsvr_ip = dist.pkgsvr_ip
+               @pkgsvr_port = dist.pkgsvr_port
+               @pkgsvr_password = dist.pkgsvr_password
                @pkgsvr_client =  Client.create(@pkgsvr_url, @job_working_dir, @log)
                if @pkgsvr_client.nil? then
                        raise BuildServerException.new("ERR023")
index 27fbb8565c1969ce5908a29299f1d12aae5f647c..aab83f40abedd4c98aef3734ff4e1e674fa45900 100644 (file)
@@ -54,144 +54,248 @@ class ProjectManager
 
 
        # get_project of the name
+       # return GitBuildProject or BinaryUploadProject
+       # return nil when project not exist or DB connection error
        def get_project(name, dist_name)
+               begin
                @server.get_db_connection() do |db|
                        return get_project_internal(name, dist_name, db)
                end
+               rescue BuildServerException => e
+                       if not @server.log.nil? then
+                               @server.log.error e.message
+                       end
+               rescue => e
+                       if not @server.log.nil? then
+                               @server.log.error e.errstr
+                       end
+               end
 
                return nil
        end
 
 
+       #name get_all_projects_summary
+       #return project hash list
+       #return [] when project not exists or DB connection error 
        def get_all_projects_summary()
-               @server.get_db_connection() do |db|
-                       return CommonProject.get_all_project_rows(db)
+               result = []
+               begin
+                       @server.get_db_connection() do |db|
+                               result =  CommonProject.get_all_project_rows(db)
+                       end
+               rescue BuildServerException => e
+                       if not @server.log.nil? then
+                               @server.log.error e.message
+                       end
+               rescue => e
+                       if not @server.log.nil? then
+                               @server.log.error e.errstr
+                       end
                end
-               return []
+               return result
        end
 
+       #name get_all_project
+       #return project list
+       #return [] when DB error occurred
        def get_all_projects()
                result = []
-
-               @server.get_db_connection() do |db|
-                       rows = CommonProject.get_all_project_rows(db)
-                       rows.each do |row|
-                               if row['ptype'] == "GIT" then
-                                       prj = GitBuildProject.load(row['name'], row['dist_name'], @server, db)
-                               else
-                                       prj = BinaryUploadProject.load(row['name'], row['dist_name'], @server, db)
+               begin
+                       @server.get_db_connection() do |db|
+                               rows = CommonProject.get_all_project_rows(db)
+                               rows.each do |row|
+                                       if row['ptype'] == "GIT" then
+                                               prj = GitBuildProject.load(row['name'], row['dist_name'], @server, db)
+                                       else
+                                               prj = BinaryUploadProject.load(row['name'], row['dist_name'], @server, db)
+                                       end
+                                       if not prj.nil? then result.push prj end
                                end
-                               if not prj.nil? then result.push prj end
                        end
-                       return result
+               rescue BuildServerException => e
+                       if not @server.log.nil? then
+                               @server.log.error e.message
+                       end
+               rescue => e
+                       if not @server.log.nil? then
+                               @server.log.error e.errstr
+                       end
                end
 
                return result
        end
 
 
+       # name add_git_project( name, repos, branch, os_list, dist_name)
+       # return true when add git project successed
+       # return false when git project already exist or DB connection error
        def add_git_project(name, repos, branch, os_list, dist_name)
                new_prj = nil
-               result = @server.get_db_connection() do |db|
-                       prj = get_project_internal(name, dist_name, db)
-                       if not prj.nil? then
-                               @server.log.error "Adding project failed!: the project \"#{name}\"(#{dist_name}) already exists"
-                               return false
+               result = false
+               begin
+                       @server.get_db_connection() do |db|
+                               prj = get_project_internal(name, dist_name, db)
+                               if prj.nil? then
+                                       # create new object
+                                       new_prj = GitBuildProject.new(name, @server, os_list, dist_name, repos, branch)
+
+                                       # save to db
+                                       new_prj.save(db)
+                                       result = true
+
+                                       # authorize admin to access
+                                       @server.qualify_admin_to_access(new_prj.get_project_id())
+                                       @server.log.info "Added new GIT project \"#{name}\"(#{dist_name})"
+                               else
+                                       @server.log.error "Adding project failed!: the project \"#{name}\"(#{dist_name}) already exists"
+                               end
+                       end
+               rescue BuildServerException => e
+                       if not @server.log.nil? then
+                               @server.log.error e.message
+                       end
+               rescue => e
+                       if not @server.log.nil? then
+                               @server.log.error e.errstr
                        end
-                               
-                       # create new object
-                       new_prj = GitBuildProject.new(name, @server, os_list, dist_name, repos, branch)
-
-                       # save to db
-                       new_prj.save(db)
-               end
-
-               if result then 
-                       # authorize admin to access
-                       @server.qualify_admin_to_access(new_prj.get_project_id())
-                       @server.log.info "Added new GIT project \"#{name}\"(#{dist_name})"
                end
 
                return result
        end
 
 
+       #name add_binary_project(name, pkg_name, os_list, dist_name)
+       #return true when add binary project successed
+       #return false when project already exist ro DB connection error
        def add_binary_project(name, pkg_name, os_list, dist_name)
                new_prj = nil
-               result = @server.get_db_connection() do |db|
-                       prj = get_project_internal(name, dist_name, db)
-                       if not prj.nil? then
-                               @server.log.error "Adding project failed!: the project \"#{name}\"(#{dist_name}) already exists"
-                               return false
+               result = false
+               begin
+                       result = @server.get_db_connection() do |db|
+                               prj = get_project_internal(name, dist_name, db)
+                               if prj.nil? then
+                                       # create new object
+                                       new_prj = BinaryUploadProject.new(name, @server, os_list, dist_name, pkg_name)
+
+                                       # save to db
+                                       new_prj.save(db)
+
+                                       # init
+                                       new_prj.init()
+
+                                       # authorize admin to access
+                                       @server.qualify_admin_to_access(new_prj.get_project_id())
+                                       @server.log.info "Added new BINARY project \"#{name}\"(#{dist_name})"
+                                       result  = true
+                               else
+                                       @server.log.error "Adding project failed!: the project \"#{name}\"(#{dist_name}) already exists"
+                               end
+                       end
+               rescue BuildServerException => e
+                       if not @server.log.nil? then
+                               @server.log.error e.message
+                       end
+               rescue => e
+                       if not @server.log.nil? then
+                               @server.log.error e.errstr
                        end
-                       
-                       # create new object
-                       new_prj = BinaryUploadProject.new(name, @server, os_list, dist_name, pkg_name)
-
-                       # save to db
-                       new_prj.save(db)
-
-                       # init
-                       new_prj.init()
-               end
-
-               if result then
-                       # authorize admin to access
-                       @server.qualify_admin_to_access(new_prj.get_project_id())
-                       @server.log.info "Added new BINARY project \"#{name}\"(#{dist_name})"
                end
 
                return result
        end
 
 
+       #name remove_project( name, dist_name )
+       #return true when add binary project successed
+       #return false when project not exist or DB connection error
        def remove_project( name, dist_name )
+               result = false
+               begin
+                       @server.get_db_connection() do |db|
+                               prj = get_project_internal(name, dist_name, db)
+                               if prj.nil? then
+                                       @server.log.error "The project \"#{name}\"(#{dist_name}) does not exists on server"
+                                       @server.log.error "Removing project failed!"
+                               else
+                                       # unload from DB
+                                       prj.unload(db)
 
-               result = @server.get_db_connection() do |db|
-                       prj = get_project_internal(name, dist_name, db)
-                       if prj.nil? then
-                               @server.log.error "The project \"#{name}\"(#{dist_name}) does not exists on server"
-                               @server.log.error "Removing project failed!"
-                               return false
-                       end
-                       # unload from DB
-                       prj.unload(db)
+                                       # remove project directory
+                                       FileUtils.rm_rf prj.path
 
-                       # remove project directory
-                       FileUtils.rm_rf prj.path
+                                       @server.log.info "Removed the project \"#{name}\"(#{dist_name})"
+                                       result = true
+                               end
+                       end
+               rescue BuildServerException => e
+                       if not @server.log.nil? then
+                               @server.log.error e.message
+                       end
+               rescue => e
+                       if not @server.log.nil? then
+                               @server.log.error e.errstr
+                       end
                end
 
-               if result then
-                       @server.log.info "Removed the project \"#{name}\"(#{dist_name})"
-               end
                return result
        end
 
        public
+       #name get_project_accessable(project_name, dist_name, user_id)
+       #return true when project accessable
+       #return false when project not accessable or DB connection error 
        def get_project_accessable(project_name, dist_name, user_id)
                prj = get_project(project_name, dist_name)
-               result = nil
-               @server.get_db_connection() do |db|
-                       result = db.select_one "SELECT user_groups.group_id FROM user_groups,group_project_accesses 
+               result = false
+               begin
+                       data = nil
+                       @server.get_db_connection() do |db|
+                               data = db.select_one "SELECT user_groups.group_id FROM user_groups,group_project_accesses 
                                                        WHERE user_groups.user_id = #{user_id} and 
                                                        user_groups.group_id = group_project_accesses.group_id and
                                                        group_project_accesses.project_id = #{prj.get_project_id} and
                                                        group_project_accesses.build = 'TRUE'"
+                       end
+                       result = (not data.nil?)
+               rescue BuildServerException => e
+                       if not @server.log.nil? then
+                               @server.log.error e.message
+                       end
+               rescue => e
+                       if not @server.log.nil? then
+                               @server.log.error e.errstr
+                       end
                end
-               return (not result.nil?)
+               return result
        end
 
+       #name get_project_pkg_name_accessable(pkg_name, dist_name, user_id)
+       #return true when project accessable
+       #return false when project not accessable or DB connection error 
        def get_project_pkg_name_accessable(pkg_name, dist_name, user_id)
-               result = nil
+               result = false
                prj = get_project_from_package_name(pkg_name, dist_name)
-               @server.get_db_connection() do |db|
-                       result = db.select_one "SELECT user_groups.group_id FROM user_groups,group_project_accesses 
+               begin
+                       data = nil
+                       @server.get_db_connection() do |db|
+                               data = db.select_one "SELECT user_groups.group_id FROM user_groups,group_project_accesses 
                                                        WHERE user_groups.user_id = #{user_id} and 
                                                        user_groups.group_id = group_project_accesses.group_id and
                                                        group_project_accesses.project_id = #{prj.get_project_id} and
                                                        group_project_accesses.build = 'TRUE'"
+                       end
+                       result = (not data.nil?)
+               rescue BuildServerException => e
+                       if not @server.log.nil? then
+                               @server.log.error e.message
+                       end
+               rescue => e
+                       if not @server.log.nil? then
+                               @server.log.error e.errstr
+                       end
                end
-               return (not result.nil?)
+               return result
        end
 
        # create new job for project
@@ -243,11 +347,26 @@ class ProjectManager
        end
 
 
+       #name get_project_from_package_name(pkg_name, dist_name)
+       #result project
+       #result nil when project not exist or DB connection error
        def get_project_from_package_name(pkg_name, dist_name)
-               @server.get_db_connection() do |db|
-                       return get_project_from_pkg_name_internal(pkg_name,dist_name,db)
+               result = nil
+               begin
+                       @server.get_db_connection() do |db|
+                               result = get_project_from_pkg_name_internal(pkg_name,dist_name,db)
+                       end
+               rescue BuildServerException => e
+                       if not @server.log.nil? then
+                               @server.log.error e.message
+                       end
+               rescue => e
+                       if not @server.log.nil? then
+                               @server.log.error e.errstr
+                       end
                end
-               return nil
+
+               return result
        end
 
 
index 77ac1aa01b9a80865ac0f4e3f7ec15e029c74cec..e0b0a41d72d6383963f48621d724380dec3a774b 100644 (file)
@@ -58,16 +58,14 @@ class RegisterPackageJob < CommonJob
 
                @host_os = Utils::HOST_OS
                if not project.nil? then
-                       @pkgsvr_url = @server.distmgr.get_distribution(project.dist_name).pkgsvr_url
-                       @pkgsvr_ip = @server.distmgr.get_distribution(project.dist_name).pkgsvr_ip
-                       @pkgsvr_port = @server.distmgr.get_distribution(project.dist_name).pkgsvr_port
-                       @pkgsvr_password = @server.distmgr.get_distribution(project.dist_name).pkgsvr_password
+                       dist = @server.distmgr.get_distribution(project.dist_name)
                else
-                       @pkgsvr_url = @server.distmgr.get_distribution(dist_name).pkgsvr_url
-                       @pkgsvr_ip = @server.distmgr.get_distribution(dist_name).pkgsvr_ip
-                       @pkgsvr_port = @server.distmgr.get_distribution(dist_name).pkgsvr_port
-                       @pkgsvr_password = @server.distmgr.get_distribution(dist_name).pkgsvr_password
+                       dist = @server.distmgr.get_distribution(dist_name)
                end
+               @pkgsvr_url = dist.pkgsvr_url
+               @pkgsvr_ip = dist.pkgsvr_ip
+               @pkgsvr_port = dist.pkgsvr_port
+               @pkgsvr_password = dist.pkgsvr_password
 
                @local_path=local_path
                @file_path = nil
index df8ccbbef6baaa9accd57c985066a27b7581c24d..908ec6edcde5dea681b15565a4f8c819e317cafd 100644 (file)
@@ -110,16 +110,25 @@ class RemoteBuildServer
 
 
        def update_db()
-               @parent.get_db_connection() do |db|
-                       working_job_count = @working_jobs.count
-                       waiting_job_count = @waiting_jobs.count
-
-                       db.do "UPDATE remote_build_servers SET
+               working_job_count = @working_jobs.count
+               waiting_job_count = @waiting_jobs.count
+               begin
+                       @parent.get_db_connection() do |db|
+                               db.do "UPDATE remote_build_servers SET
                                status = '#{@status}',
                                supported_os_id = (SELECT supported_os.id FROM supported_os WHERE supported_os.name = '#{@host_os}'),
                                max_job_count = #{@max_working_jobs},
                                working_job_count = #{working_job_count},
                                waiting_job_count = #{waiting_job_count} WHERE id = #{@id}"
+                       end
+               rescue BuildServerException => e
+                       if not @parent.log.nil? then
+                               @parent.log.error e.message
+                       end
+               rescue => e
+                       if not @parent.log.nil? then
+                               @parent.log.error e.errstr
+                       end
                end
        end
 
index 11bcfa44d03c3bf11489dbf1ac7b4546da350b9b..7622c450f2286640f219e001c00ab99159bbb936 100644 (file)
@@ -409,16 +409,6 @@ class SocketJobRequestListener
 
                                case job.type
                                when "BUILD"
-                                       #if status == "PENDING" then
-                                       #       if job.pending_ancestor.nil? then
-                                       #               ids = "/"
-                                       #       else
-                                       #               ids = job.pending_ancestor.id
-                                       #       end
-                                       #       BuildCommServer.send(req,"#{status}:#{ids},#{job.id},#{job.get_project().name},#{job.os} #{job.progress},#{job.get_distribution_name}")
-                                       #else
-                                       #       BuildCommServer.send(req,"#{status},#{job.id},#{job.get_project().name},#{job.os} #{job.progress},#{job.get_distribution_name}")
-                                       #end
                                        BuildCommServer.send(req,"#{status},#{job.id},#{job.get_project().name},#{job.os} #{job.progress},#{job.get_distribution_name}")
                                when "REGISTER"
                                        if job.pkg_type == "BINARY" and not job.get_project().nil? then
@@ -953,34 +943,35 @@ class SocketJobRequestListener
        def check_supported_os(os_list, req)
 
                # check if supported os list contain at least one OS
-               if @parent_server.supported_os_list.empty? then
+               host_supported_os_list =  @parent_server.supported_os_list
+               if host_supported_os_list.empty? then
                        raise BuildServerException.new("ERR007"), ""
                end
 
                result = []
                os_list.each do |os|
                        if os == "all" or os == "*" then
-                               result = result + @parent_server.supported_os_list
+                               result = result + host_supported_os_list
 
                        elsif os == "default" then
-                               os =  @parent_server.supported_os_list[0]
+                               os =  host_supported_os_list[0]
                                result.push os
                                @log.info "The default OS \"#{os}\" is used as target OS"
 
                        elsif os.include? "*" then
                                reg_os = os.gsub("*","[a-zA-Z0-9.]*")
-                               @parent_server.supported_os_list.each do |svr_os|
+                               host_supported_os_list.each do |svr_os|
                                        matches = svr_os.match("#{reg_os}")
                                        if not matches.nil? and matches.size == 1 and
                                                matches[0] == svr_os then
                                                result.push svr_os
                                        end
                                end
-                       elsif @parent_server.supported_os_list.include?(os) then
+                       elsif host_supported_os_list.include?(os) then
                                result.push os
                        else
                                msgs = "#{os}... Use a name in (" +
-                                       @parent_server.supported_os_list.join("|") + ")"
+                                       host_supported_os_list.join("|") + ")"
                                raise BuildServerException.new("ERR003"),msgs
                        end
                end
index 0578b61d5c5d78ebc01326e039ad870c7d3d4e87..289efefec6a85951e9a9eec5710ae01569453640 100755 (executable)
@@ -22,7 +22,9 @@ dibs1/build-svr remove -n testserver3
 mkdir buildsvr01
 cd buildsvr01
 ${RUBY} ../dibs1/build-svr create -n testserver3
-${RUBY} ../dibs1/build-svr migrate -n testserver3
+echo "DROP DATABASE testserver3;" > a 
+mysql -u root -p --password=$DB_PASSWD -h localhost < a
+${RUBY} ../dibs1/build-svr migrate -n testserver3 --dsn Mysql:testserver3:localhost --dbuser root --dbpassword $DB_PASSWD
 cd ..
 
 ${RUBY} dibs1/build-svr add-dist -n testserver3 -D unstable -u $CURDIR/pkgsvr01/unstable -d 127.0.0.1:3333
index ac5ccf7c21e07976fa248c7474c419499ad84114..a573822ddb7a2b0b92e79fd025caff7952f97832 100755 (executable)
@@ -15,7 +15,9 @@ cp -r ../../upgrade dibs2/
 mkdir buildsvr02
 cd buildsvr02
 ${RUBY} ../dibs2/build-svr create -n testserver4
-${RUBY} ../dibs2/build-svr migrate -n testserver4
+echo "DROP DATABASE testserver4;" > a 
+mysql -u root -p --password=$DB_PASSWD -h localhost < a
+${RUBY} ../dibs2/build-svr migrate -n testserver4 --dsn Mysql:testserverr4:localhost --dbuser root --dbpassword $DB_PASSWD
 cd ..
 ${RUBY} dibs2/build-svr add-dist -n testserver4 -D unstable -u `pwd`/pkgsvr01/unstable -d 127.0.0.1:3333