diff options
Diffstat (limited to 'spec/migrations/20221021145820_create_routing_table_for_builds_metadata_v2_spec.rb')
-rw-r--r-- | spec/migrations/20221021145820_create_routing_table_for_builds_metadata_v2_spec.rb | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/spec/migrations/20221021145820_create_routing_table_for_builds_metadata_v2_spec.rb b/spec/migrations/20221021145820_create_routing_table_for_builds_metadata_v2_spec.rb new file mode 100644 index 00000000000..48a00df430d --- /dev/null +++ b/spec/migrations/20221021145820_create_routing_table_for_builds_metadata_v2_spec.rb @@ -0,0 +1,36 @@ +# frozen_string_literal: true + +require 'spec_helper' +require_migration! + +RSpec.describe CreateRoutingTableForBuildsMetadataV2, :migration do + let_it_be(:migration) { described_class.new } + + describe '#up' do + context 'when the table is already partitioned' do + before do + # `convert_table_to_first_list_partition` checks if it's being executed + # inside a transaction, but we're using transactional fixtures here so we + # need to tell it that it's not inside a transaction. + # We toggle the behavior depending on how many transactions we have open + # instead of just returning `false` because the migration could have the + # DDL transaction enabled. + # + open_transactions = ActiveRecord::Base.connection.open_transactions + allow(migration).to receive(:transaction_open?) do + ActiveRecord::Base.connection.open_transactions > open_transactions + end + + migration.convert_table_to_first_list_partition( + table_name: :ci_builds_metadata, + partitioning_column: :partition_id, + parent_table_name: :p_ci_builds_metadata, + initial_partitioning_value: 100) + end + + it 'skips the migration' do + expect { migrate! }.not_to raise_error + end + end + end +end |