summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrancisco Javier López <fjlopez@gitlab.com>2018-01-17 17:26:35 +0100
committerFrancisco Javier López <fjlopez@gitlab.com>2018-01-17 17:26:35 +0100
commit61059ad667c6fa81f7a583aed7d7bcf2cccc15ac (patch)
tree38ab24bd01b6e56179fb504f2f361d9e0c4befe1
parentc828d253e8559309fdf9cdcbc50891ba92fcb9c4 (diff)
downloadgitlab-ce-61059ad667c6fa81f7a583aed7d7bcf2cccc15ac.tar.gz
Added migration spec
-rw-r--r--db/migrate/20171215113714_populate_can_push_from_deploy_keys_projects.rb24
-rw-r--r--db/post_migrate/20171215121205_post_populate_can_push_from_deploy_keys_projects.rb4
-rw-r--r--spec/migrations/populate_can_push_from_deploy_keys_projects_spec.rb31
3 files changed, 45 insertions, 14 deletions
diff --git a/db/migrate/20171215113714_populate_can_push_from_deploy_keys_projects.rb b/db/migrate/20171215113714_populate_can_push_from_deploy_keys_projects.rb
index d06454fd09c..680855af945 100644
--- a/db/migrate/20171215113714_populate_can_push_from_deploy_keys_projects.rb
+++ b/db/migrate/20171215113714_populate_can_push_from_deploy_keys_projects.rb
@@ -17,48 +17,48 @@ class PopulateCanPushFromDeployKeysProjects < ActiveRecord::Migration
end
def up
- # DeploysKeyProject.each_batch(of: 10_000) do |batch|
- # start_id, end_id = batch.pluck('MIN(id), MAX(id)').first
+ DeploysKeyProject.each_batch(of: 10_000) do |batch|
+ start_id, end_id = batch.pluck('MIN(id), MAX(id)').first
if Gitlab::Database.mysql?
execute <<-EOF.strip_heredoc
UPDATE deploy_keys_projects, #{DATABASE_NAME}.keys
SET deploy_keys_projects.can_push = #{DATABASE_NAME}.keys.can_push
WHERE deploy_keys_projects.deploy_key_id = #{DATABASE_NAME}.keys.id
+ AND deploy_keys_projects.id BETWEEN #{start_id} AND #{end_id}
EOF
- # AND deploy_keys_projects.id BETWEEN #{start_id} AND #{end_id}
else
execute <<-EOF.strip_heredoc
UPDATE deploy_keys_projects
SET can_push = keys.can_push
FROM keys
WHERE deploy_key_id = keys.id
+ AND deploy_keys_projects.id BETWEEN #{start_id} AND #{end_id}
EOF
- # AND deploy_keys_projects.id BETWEEN #{start_id} AND #{end_id}
end
- # end
+ end
end
def down
- # DeploysKeyProject.each_batch(of: 10_000) do |batch|
- # start_id, end_id = batch.pluck('MIN(id), MAX(id)').first
+ DeploysKeyProject.each_batch(of: 10_000) do |batch|
+ start_id, end_id = batch.pluck('MIN(id), MAX(id)').first
if Gitlab::Database.mysql?
- execute <<-EOF
+ execute <<-EOF.strip_heredoc
UPDATE deploy_keys_projects, #{DATABASE_NAME}.keys
SET #{DATABASE_NAME}.keys.can_push = deploy_keys_projects.can_push
WHERE deploy_keys_projects.deploy_key_id = #{DATABASE_NAME}.keys.id
+ AND deploy_keys_projects.id BETWEEN #{start_id} AND #{end_id}
EOF
- # AND deploy_keys_projects.id BETWEEN #{start_id} AND #{end_id}
else
- execute <<-EOF
+ execute <<-EOF.strip_heredoc
UPDATE keys
SET can_push = deploy_keys_projects.can_push
FROM deploy_keys_projects
WHERE deploy_keys_projects.deploy_key_id = keys.id
+ AND deploy_keys_projects.id BETWEEN #{start_id} AND #{end_id}
EOF
- # AND deploy_keys_projects.id BETWEEN #{start_id} AND #{end_id}
end
- # end
+ end
end
end
diff --git a/db/post_migrate/20171215121205_post_populate_can_push_from_deploy_keys_projects.rb b/db/post_migrate/20171215121205_post_populate_can_push_from_deploy_keys_projects.rb
index adc0d8fdbff..3a5850df3db 100644
--- a/db/post_migrate/20171215121205_post_populate_can_push_from_deploy_keys_projects.rb
+++ b/db/post_migrate/20171215121205_post_populate_can_push_from_deploy_keys_projects.rb
@@ -43,14 +43,14 @@ class PostPopulateCanPushFromDeployKeysProjects < ActiveRecord::Migration
start_id, end_id = batch.pluck('MIN(id), MAX(id)').first
if Gitlab::Database.mysql?
- execute <<-EOF
+ execute <<-EOF.strip_heredoc
UPDATE deploy_keys_projects, #{DATABASE_NAME}.keys
SET #{DATABASE_NAME}.keys.can_push = deploy_keys_projects.can_push
WHERE deploy_keys_projects.deploy_key_id = #{DATABASE_NAME}.keys.id
AND deploy_keys_projects.id BETWEEN #{start_id} AND #{end_id}
EOF
else
- execute <<-EOF
+ execute <<-EOF.strip_heredoc
UPDATE keys
SET can_push = deploy_keys_projects.can_push
FROM deploy_keys_projects
diff --git a/spec/migrations/populate_can_push_from_deploy_keys_projects_spec.rb b/spec/migrations/populate_can_push_from_deploy_keys_projects_spec.rb
new file mode 100644
index 00000000000..9b311974c50
--- /dev/null
+++ b/spec/migrations/populate_can_push_from_deploy_keys_projects_spec.rb
@@ -0,0 +1,31 @@
+require 'spec_helper'
+require Rails.root.join('db', 'migrate', '20171215113714_populate_can_push_from_deploy_keys_projects.rb')
+
+describe PopulateCanPushFromDeployKeysProjects, :migration do
+ let(:migration) { described_class.new }
+
+ describe '#up' do
+ it 'migrates can_push from deploy_keys to deploy_keys_projects' do
+ create_list(:deploy_keys_project, 10)
+ DeployKey.limit(5).update_all(can_push: true)
+
+ deploy_keys = DeployKey.order(:id).pluck(:id, :can_push)
+
+ migration.up
+
+ expect(DeployKeysProject.order(:id).pluck(:deploy_key_id, :can_push)).to eq deploy_keys
+ end
+ end
+
+ describe '#down' do
+ it 'migrates can_push from deploy_keys_projects to deploy_keys' do
+ create_list(:deploy_keys_project, 5, :write_access)
+ create_list(:deploy_keys_project, 5)
+ deploy_keys_projects = DeployKeysProject.order(:id).pluck(:deploy_key_id, :can_push)
+
+ migration.down
+
+ expect(DeployKey.order(:id).pluck(:id, :can_push)).to eq deploy_keys_projects
+ end
+ end
+end