diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-10-06 00:11:56 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-10-06 00:11:56 +0000 |
commit | 85c68f14bf3ec5fa77cf12633d33abfd2b9fd9e6 (patch) | |
tree | c1d57a63ddab2a20e624173b0b0dc68e059c00d0 /spec/tasks | |
parent | ee2aa09a2417755bc9efbedaec48fc62b498f672 (diff) | |
download | gitlab-ce-85c68f14bf3ec5fa77cf12633d33abfd2b9fd9e6.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/tasks')
-rw-r--r-- | spec/tasks/gitlab/db_rake_spec.rb | 56 |
1 files changed, 20 insertions, 36 deletions
diff --git a/spec/tasks/gitlab/db_rake_spec.rb b/spec/tasks/gitlab/db_rake_spec.rb index 91cd09fc6e6..ba434a0a46c 100644 --- a/spec/tasks/gitlab/db_rake_spec.rb +++ b/spec/tasks/gitlab/db_rake_spec.rb @@ -293,53 +293,37 @@ RSpec.describe 'gitlab:db namespace rake task', :silence_stdout do end describe '#migrate_with_instrumentation' do - subject { run_rake_task('gitlab:db:migration_testing') } + describe '#up' do + subject { run_rake_task('gitlab:db:migration_testing:up') } - let(:ctx) { double('ctx', migrations: all_migrations, schema_migration: double, get_all_versions: existing_versions) } - let(:instrumentation) { instance_double(Gitlab::Database::Migrations::Instrumentation, observations: observations) } - let(:existing_versions) { [1] } - let(:all_migrations) { [double('migration1', version: 1, name: 'test'), pending_migration] } - let(:pending_migration) { double('migration2', version: 2, name: 'test') } - let(:filename) { Gitlab::Database::Migrations::Instrumentation::STATS_FILENAME } - let(:result_dir) { Dir.mktmpdir } - let(:observations) { %w[some data] } + it 'delegates to the migration runner' do + expect(::Gitlab::Database::Migrations::Runner).to receive_message_chain(:up, :run) - before do - allow(ActiveRecord::Base.connection).to receive(:migration_context).and_return(ctx) - allow(Gitlab::Database::Migrations::Instrumentation).to receive(:new).and_return(instrumentation) - allow(ActiveRecord::Migrator).to receive_message_chain('new.run').with(any_args).with(no_args) - - allow(instrumentation).to receive(:observe).and_yield - - stub_const('Gitlab::Database::Migrations::Instrumentation::RESULT_DIR', result_dir) - end - - after do - FileUtils.rm_rf(result_dir) + subject + end end - it 'creates result directory when one does not exist' do - FileUtils.rm_rf(result_dir) + describe '#down' do + subject { run_rake_task('gitlab:db:migration_testing:down') } - expect { subject }.to change { Dir.exist?(result_dir) }.from(false).to(true) - end + it 'delegates to the migration runner' do + expect(::Gitlab::Database::Migrations::Runner).to receive_message_chain(:down, :run) - it 'instruments the pending migration' do - expect(instrumentation).to receive(:observe).with(version: 2, name: 'test').and_yield - - subject + subject + end end - it 'executes the pending migration' do - expect(ActiveRecord::Migrator).to receive_message_chain('new.run').with(:up, ctx.migrations, ctx.schema_migration, pending_migration.version).with(no_args) + describe 'legacy rake task' do + subject { run_rake_task('gitlab:db:migration_testing') } - subject - end + let(:runner) { double(Gitlab::Database::Migrations::Runner) } - it 'writes observations out to JSON file' do - subject + it 'delegates to the migration runner in legacy mode' do + expect(::Gitlab::Database::Migrations::Runner).to receive(:up).with(legacy_pipeline: true).and_return(runner) + expect(runner).to receive(:run) - expect(File.read(File.join(result_dir, filename))).to eq(observations.to_json) + subject + end end end |