Rename stage index column name to priority column

This commit is contained in:
Grzegorz Bizon 2018-04-24 14:53:46 +02:00
parent d7e8bfac48
commit c9dc51111d
13 changed files with 24 additions and 24 deletions

View File

@ -17,7 +17,7 @@ module Ci
validates :project, presence: true
validates :pipeline, presence: true
validates :name, presence: true
validates :index, presence: true
validates :priority, presence: true
end
after_initialize do
@ -25,9 +25,9 @@ module Ci
end
before_validation unless: :importing? do
next if index.present?
next if priority.present?
self.index = statuses.select(:stage_idx)
self.priority = statuses.select(:stage_idx)
.where('stage_idx IS NOT NULL')
.group(:stage_idx)
.order('COUNT(*) DESC')

View File

@ -42,7 +42,7 @@ module Ci
def create_stage
Ci::Stage.create!(name: @build.stage,
index: @build.stage_idx,
priority: @build.stage_idx,
pipeline: @build.pipeline,
project: @build.project)
end

View File

@ -4,6 +4,6 @@ class AddIndexToCiStage < ActiveRecord::Migration
DOWNTIME = false
def change
add_column :ci_stages, :index, :integer
add_column :ci_stages, :priority, :integer
end
end

View File

@ -486,7 +486,7 @@ ActiveRecord::Schema.define(version: 20180420080616) do
t.string "name"
t.integer "status"
t.integer "lock_version"
t.integer "index"
t.integer "priority"
end
add_index "ci_stages", ["pipeline_id", "name"], name: "index_ci_stages_on_pipeline_id_and_name", unique: true, using: :btree

View File

@ -26,19 +26,19 @@ module Gitlab
FROM freqs
)
UPDATE ci_stages SET index = indexes.index
UPDATE ci_stages SET priority = indexes.index
FROM indexes WHERE indexes.stage_id = ci_stages.id
AND ci_stages.index IS NULL;
AND ci_stages.priority IS NULL;
SQL
else
<<~SQL
UPDATE ci_stages
SET index =
SET priority =
(SELECT stage_idx FROM ci_builds
WHERE ci_builds.stage_id = ci_stages.id
GROUP BY ci_builds.stage_idx ORDER BY COUNT(*) DESC LIMIT 1)
WHERE ci_stages.id BETWEEN #{start_id} AND #{stop_id}
AND ci_stages.index IS NULL
AND ci_stages.priority IS NULL
SQL
end
end

View File

@ -19,7 +19,7 @@ module Gitlab
def attributes
{ name: @attributes.fetch(:name),
index: @attributes.fetch(:index),
priority: @attributes.fetch(:index),
pipeline: @pipeline,
project: @pipeline.project }
end

View File

@ -21,7 +21,7 @@ FactoryBot.define do
pipeline factory: :ci_empty_pipeline
name 'test'
index 1
priority 1
status 'pending'
end
end

View File

@ -26,10 +26,10 @@ describe Gitlab::BackgroundMigration::MigrateStageIndex, :migration, schema: 201
end
it 'correctly migrates stages indices' do
expect(stages.all.pluck(:index)).to all(be_nil)
expect(stages.all.pluck(:priority)).to all(be_nil)
described_class.new.perform(100, 101)
expect(stages.all.pluck(:index)).to eq [2, 3]
expect(stages.all.pluck(:priority)).to eq [2, 3]
end
end

View File

@ -17,7 +17,7 @@ describe Gitlab::Ci::Pipeline::Chain::Create do
context 'when pipeline is ready to be saved' do
before do
pipeline.stages.build(name: 'test', index: 0, project: project)
pipeline.stages.build(name: 'test', priority: 0, project: project)
step.perform!
end

View File

@ -25,7 +25,7 @@ describe Gitlab::Ci::Pipeline::Seed::Stage do
it 'returns hash attributes of a stage' do
expect(subject.attributes).to be_a Hash
expect(subject.attributes)
.to include(:name, :index, :pipeline, :project)
.to include(:name, :priority, :pipeline, :project)
end
end

View File

@ -231,8 +231,8 @@ Ci::Pipeline:
Ci::Stage:
- id
- name
- index
- status
- priority
- lock_version
- project_id
- pipeline_id

View File

@ -21,7 +21,7 @@ describe ScheduleStagesIndexMigration, :sidekiq, :migration do
it 'schedules delayed background migrations in batches' do
Sidekiq::Testing.fake! do
Timecop.freeze do
expect(stages.all).to all(have_attributes(index: be_nil))
expect(stages.all).to all(have_attributes(priority: be_nil))
migrate!

View File

@ -89,9 +89,9 @@ describe Ci::Stage, :models do
end
describe '#index' do
context 'when stage has been imported and does not have index set' do
context 'when stage has been imported and does not have priority index set' do
before do
stage.update_column(:index, nil)
stage.update_column(:priority, nil)
end
context 'when stage has statuses' do
@ -100,21 +100,21 @@ describe Ci::Stage, :models do
end
it 'recalculates index before updating status' do
expect(stage.reload.index).to be_nil
expect(stage.reload.priority).to be_nil
stage.update_status
expect(stage.reload.index).to eq 10
expect(stage.reload.priority).to eq 10
end
end
context 'when stage does not have statuses' do
it 'fallbacks to zero' do
expect(stage.reload.index).to be_nil
expect(stage.reload.priority).to be_nil
stage.update_status
expect(stage.reload.index).to eq 0
expect(stage.reload.priority).to eq 0
end
end
end