forked from redis/jedis
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Introduces test matrix based on Redis versions [8.0-M02, 7.4.1, 7.2.6…
…, 6.2.16] (redis#4015) * Introduces test matrix based on Redis versions [8.0-M1, 7.4.1, 7.2.6, 6.2.16] Use docker composer to bring up the test env using `redislabs/client-libs-test` image. When run against older Redis version some tests are using commands available only in newer Redis server versions. To resolve this we are introducing two new annotations/rules - Introduce `SinceRedisVersion` annotation/Rule - for conditionally running tests based on Redis server version contacted - Introduce `EnableOnCommad` annotation/Rule - for conditionally running tests based on command availability on the server And mark respective tests with the least Redis Version required by the test - SinceRedisVersion ("7.4.0") - Mark tests using commands/modifiers introduced with Redis 7.4.0 - SinceRedisVersion ("7.2.0") - Mark tests using commands/modifiers introduced with Redis 7.2.0 - SinceRedisVersion ("7.0.0") - Mark tests using commands/modifiers introduced with Redis 7.0.0 The same approach used to mark CSC tests - Disabled client-side caching tests for versions below 7.4 - Test env migrated to use native Redis server TLS instead of using stunnel Not all tests were migrated - Disable Modules test in containerized test env ModuleTest uses custom test module to test load/unload/sendCommand. Requires pre-build test module on the same os like test container to avoid errors - Disable UDS tests in containerized test env No easy way to make unix sockets work on MAC with docker --------- Co-authored-by: M Sazzadul Hoque <[email protected]>
- Loading branch information
Showing
138 changed files
with
2,690 additions
and
539 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,124 @@ | ||
--- | ||
|
||
name: Build and Test using containerized environment | ||
|
||
on: | ||
push: | ||
paths-ignore: | ||
- 'docs/**' | ||
- '**/*.md' | ||
- '**/*.rst' | ||
branches: | ||
- master | ||
- '[0-9].*' | ||
pull_request: | ||
branches: | ||
- master | ||
- '[0-9].*' | ||
schedule: | ||
- cron: '0 1 * * *' # nightly build | ||
workflow_dispatch: | ||
inputs: | ||
specific_test: | ||
description: 'Run specific test(s) (optional)' | ||
required: false | ||
default: '' | ||
jobs: | ||
|
||
build: | ||
name: Build and Test | ||
runs-on: ubuntu-latest | ||
env: | ||
REDIS_ENV_WORK_DIR: ${{ github.workspace }}/redis-env-work | ||
REDIS_ENV_CONF_DIR: ${{ github.workspace }}/src/test/resources/env | ||
CLIENT_LIBS_IMAGE_PREFIX: "redislabs/client-libs-test" | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
redis_version: | ||
- "8.0-M02" | ||
- "7.4.1" | ||
- "7.2.6" | ||
# - "6.2.16" | ||
steps: | ||
- uses: actions/checkout@v2 | ||
- name: Set up publishing to maven central | ||
uses: actions/setup-java@v2 | ||
with: | ||
java-version: '8' | ||
distribution: 'temurin' | ||
- name: System setup | ||
run: | | ||
sudo apt update | ||
sudo apt install -y make | ||
make compile-module | ||
- name: Cache dependencies | ||
uses: actions/cache@v2 | ||
with: | ||
path: | | ||
~/.m2/repository | ||
/var/cache/apt | ||
key: jedis-${{hashFiles('**/pom.xml')}} | ||
# Set up Docker Compose environment | ||
- name: Set up Docker Compose environment | ||
run: | | ||
mkdir -m 777 $REDIS_ENV_WORK_DIR | ||
export REDIS_VERSION="${{ matrix.redis_version }}" | ||
make start-test-env version=$REDIS_VERSION | ||
- name: Maven offline | ||
run: | | ||
mvn -q dependency:go-offline | ||
- name: Build docs | ||
run: | | ||
mvn javadoc:jar | ||
# Run Tests | ||
- name: Run Maven tests | ||
run: | | ||
export TEST_ENV_PROVIDER=docker | ||
export TEST_WORK_FOLDER=$REDIS_ENV_WORK_DIR | ||
echo $TEST_WORK_FOLDER | ||
if [ -z "$TESTS" ]; then | ||
mvn clean compile test | ||
else | ||
mvn -Dtest=$TESTS clean compile test | ||
fi | ||
env: | ||
TESTS: ${{ github.event.inputs.specific_test || '' }} | ||
- name: Publish Test Results | ||
uses: EnricoMi/publish-unit-test-result-action@v2 | ||
if: always() | ||
with: | ||
files: | | ||
target/surefire-reports/**/*.xml | ||
# Collect logs on failure | ||
- name: Collect logs on failure | ||
if: failure() # This runs only if the previous steps failed | ||
run: | | ||
echo "Collecting logs from $WORK_DIR..." | ||
ls -la $REDIS_ENV_WORK_DIR | ||
# Upload logs as artifacts | ||
- name: Upload logs on failure | ||
if: failure() | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: redis-env-work-logs-${{ matrix.redis_version }} | ||
path: ${{ env.REDIS_ENV_WORK_DIR }} | ||
# Bring down the Docker Compose test environment | ||
- name: Tear down Docker Compose environment | ||
if: always() | ||
run: | | ||
docker compose $COMPOSE_ENV_FILES -f src/test/resources/env/docker-compose.yml down | ||
continue-on-error: true | ||
# Upload code coverage | ||
- name: Upload coverage to Codecov | ||
uses: codecov/codecov-action@v4 | ||
with: | ||
fail_ci_if_error: false | ||
token: ${{ secrets.CODECOV_TOKEN }} | ||
- name: Upload test results to Codecov | ||
if: ${{ github.event_name == 'schedule' || (github.event_name == 'push') || github.event_name == 'workflow_dispatch'}} | ||
uses: codecov/test-results-action@v1 | ||
with: | ||
fail_ci_if_error: false | ||
files: ./target/surefire-reports/TEST* | ||
token: ${{ secrets.CODECOV_TOKEN }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -11,7 +11,9 @@ build/ | |
bin/ | ||
tags | ||
.idea | ||
.run | ||
*.aof | ||
*.rdb | ||
redis-git | ||
appendonlydir/ | ||
.DS_Store |
Oops, something went wrong.