From ca7053f19c425616b90774cd2f2553f0842cd314 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Thu, 25 Jan 2024 08:10:39 -0500 Subject: [PATCH] Consolidate db test prep steps to rake task (#28886) --- .../workflows/test-migrations-one-step.yml | 19 ++-------------- .../workflows/test-migrations-two-step.yml | 22 +++---------------- lib/tasks/tests.rake | 18 +++++++++++++++ 3 files changed, 23 insertions(+), 36 deletions(-) diff --git a/.github/workflows/test-migrations-one-step.yml b/.github/workflows/test-migrations-one-step.yml index 5dca8e376da..1ff5cc06b9f 100644 --- a/.github/workflows/test-migrations-one-step.yml +++ b/.github/workflows/test-migrations-one-step.yml @@ -78,23 +78,8 @@ jobs: - name: Create database run: './bin/rails db:create' - - name: Run migrations up to v2.0.0 - run: './bin/rails db:migrate VERSION=20171010025614' - - - name: Populate database with test data - run: './bin/rails tests:migrations:populate_v2' - - - name: Run migrations up to v2.4.0 - run: './bin/rails db:migrate VERSION=20180514140000' - - - name: Populate database with test data - run: './bin/rails tests:migrations:populate_v2_4' - - - name: Run migrations up to v2.4.3 - run: './bin/rails db:migrate VERSION=20180707154237' - - - name: Populate database with test data - run: './bin/rails tests:migrations:populate_v2_4_3' + - name: Run historical migrations with data population + run: './bin/rails tests:migrations:prepare_database' - name: Run all remaining migrations run: './bin/rails db:migrate' diff --git a/.github/workflows/test-migrations-two-step.yml b/.github/workflows/test-migrations-two-step.yml index 59485d285df..66988473152 100644 --- a/.github/workflows/test-migrations-two-step.yml +++ b/.github/workflows/test-migrations-two-step.yml @@ -45,6 +45,7 @@ jobs: --health-retries 5 ports: - 5432:5432 + redis: image: redis:7-alpine options: >- @@ -77,28 +78,11 @@ jobs: - name: Create database run: './bin/rails db:create' - - name: Run migrations up to v2.0.0 - run: './bin/rails db:migrate VERSION=20171010025614' - - - name: Populate database with test data - run: './bin/rails tests:migrations:populate_v2' - - - name: Run pre-deployment migrations up to v2.4.0 - run: './bin/rails db:migrate VERSION=20180514140000' + - name: Run historical migrations with data population + run: './bin/rails tests:migrations:prepare_database' env: SKIP_POST_DEPLOYMENT_MIGRATIONS: true - - name: Populate database with test data - run: './bin/rails tests:migrations:populate_v2_4' - - - name: Run migrations up to v2.4.3 - run: './bin/rails db:migrate VERSION=20180707154237' - env: - SKIP_POST_DEPLOYMENT_MIGRATIONS: true - - - name: Populate database with test data - run: './bin/rails tests:migrations:populate_v2_4_3' - - name: Run all remaining pre-deployment migrations run: './bin/rails db:migrate' env: diff --git a/lib/tasks/tests.rake b/lib/tasks/tests.rake index 45f055e2186..885be79f416 100644 --- a/lib/tasks/tests.rake +++ b/lib/tasks/tests.rake @@ -2,6 +2,22 @@ namespace :tests do namespace :migrations do + desc 'Prepares all migrations and test data for consistency checks' + task prepare_database: :environment do + { + '2' => 2017_10_10_025614, + '2_4' => 2018_05_14_140000, + '2_4_3' => 2018_07_07_154237, + }.each do |release, version| + ActiveRecord::Tasks::DatabaseTasks + .migration_connection + .migration_context + .migrate(version) + Rake::Task["tests:migrations:populate_v#{release}"] + .invoke + end + end + desc 'Check that database state is consistent with a successful migration from populated data' task check_database: :environment do unless Account.find_by(username: 'admin', domain: nil)&.hide_collections? == false @@ -88,6 +104,8 @@ namespace :tests do puts 'Locale for fr-QC users not updated to fr-CA as expected' exit(1) end + + puts 'No errors found. Database state is consistent with a successful migration process.' end desc 'Populate the database with test data for 2.4.3'