Skip to content

Conversation

@eaydingol
Copy link
Collaborator

@eaydingol eaydingol commented Dec 31, 2025

Adds support for running regression tests in mixed‑version scenarios

This PR updates the regression test runner script, test schedules, and some regression tests to support running Citus in mixed‑version setups.
With these changes, regression test schedules can be executed in N/N‑1 and mixed‑version scenarios, including:

  • SQL version is N‑1
  • Library version is N‑1
  • A worker is N‑1
  • Coordinator is N‑1

For potential usage, see the workflow jobs removed in commit (0642595) and the corresponding test runs at (https://github.com/citusdata/citus/actions/runs/20746079664).

Details

Schedule refactoring
To enable N‑1 testing for the remaining multi‑node tests, this PR separates tests that drop/create the Citus extension from the existing multi_1_schedule into a new schedule multi_1_create_citus_schedule

This allows the remaining multi‑node tests to be reused safely in N‑1 scenarios.

Test changes

  • Cleanup steps after tests.
  • Minor adjustments to account for the updated schedule structure.

Perl script changes
This PR extends src/test/regress/pg_regress_multi.pl to support:

  • Creating the Citus extension at a specific version for the coordinator (the original PR that introduced versioned extension creation updated only worker logic and missed the coordinator Workflow refactor  #8361)
  • Changing the Citus library (citus.so) for specific nodes (worker, coordinator, or all)
  • Creating the Citus extension at a given version for specific nodes (worker, coordinator, or all)

These changes enable running N/N‑1 compatibility tests in multiple configurations. Sample scenarios are listed below.

Sample scenarios
To demonstrate potential usage sample jobs are added to git workflow but excluded from this PR (see previous comment on the commit and runs).

Test Citus Lib N‑1
All nodes load citus.so from version 13.2.
Test Citus SQL N‑1
All nodes create the Citus extension at version 13.2‑1.
Test Citus Worker N‑1
Only worker 1 loads citus.so from 13.2 and creates the extension at 13.2‑1.
Test Citus Coordinator N‑1
Only the coordinator loads citus.so from 13.2 and creates the extension at 13.2‑1.

Note that the following schedules from “Test Citus” are not included in N‑1 scenarios:

check-multi-1-create-citus, check-multi-mx Some tests in these schedules drop and recreate the Citus extension using the default version, which is incompatible with N‑1 setups.
check-vanilla The test preparation steps have not yet been adapted for N‑1 workflows.

Local testing
Local testing can be performed using sql/versions.sql and test_versions.sh. (removed in previous commit)
Steps:

  • Install the citus 13.2
  • Copy citus.so files from 13.2.0 to ~/citus-libs/17/v13.2.0
  • Install the version from head
  • Run ./test_versions.sh

See version_test_results.txt for example results.
Sample test runs:
CITUSLIBDIR=~/citus-libs/17/v13.2.0 CITUSVERSION=13.2-1 N1MODE=workeronly EXTRA_TESTS=versions make check-minimal
CITUSVERSION=13.2-1 N1MODE=all EXTRA_TESTS=versions make check-minimal

@eaydingol eaydingol marked this pull request as draft December 31, 2025 07:26
@codecov
Copy link

codecov bot commented Dec 31, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 88.75%. Comparing base (55eb366) to head (0642595).

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #8431      +/-   ##
==========================================
- Coverage   88.79%   88.75%   -0.04%     
==========================================
  Files         287      287              
  Lines       63237    63237              
  Branches     7927     7927              
==========================================
- Hits        56151    56128      -23     
- Misses       4751     4768      +17     
- Partials     2335     2341       +6     
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@eaydingol eaydingol changed the title Split multi-1 schedule Introduce N-1 tests Jan 5, 2026
@eaydingol eaydingol force-pushed the eag/test-clean-up branch 2 times, most recently from 0a86a6b to 723789d Compare January 6, 2026 09:44
@eaydingol eaydingol changed the title Introduce N-1 tests Mixed version tests for citus Jan 6, 2026
@eaydingol eaydingol marked this pull request as ready for review January 6, 2026 14:06
@eaydingol eaydingol requested review from ihalatci and m3hm3t January 14, 2026 20:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants