diff --git a/.github/actions/regression-tests/action.yml b/.github/actions/regression-tests/action.yml index 555716b1a..01fddc2ba 100644 --- a/.github/actions/regression-tests/action.yml +++ b/.github/actions/regression-tests/action.yml @@ -19,6 +19,15 @@ inputs: filter: required: false type: string + aws-access-key-id: + required: true + type: string + aws-secret-access-key: + required: true + type: string + s3-bucket: + required: true + type: string runs: using: "composite" @@ -56,6 +65,12 @@ runs: if [[ $code -ne 0 ]]; then exit 1 fi + env: + # Add environment variables to enable the S3 snapshot test. + DRAGONFLY_S3_BUCKET: ${{ inputs.s3-bucket }} + AWS_ACCESS_KEY_ID: ${{ inputs.aws-access-key-id }} + AWS_SECRET_ACCESS_KEY: ${{ inputs.aws-secret-access-key }} + AWS_REGION: us-east-1 - name: Send notification on failure if: failure() && github.ref == 'refs/heads/main' diff --git a/.github/workflows/regression-tests.yml b/.github/workflows/regression-tests.yml index 1a5e6f026..fd917d50e 100644 --- a/.github/workflows/regression-tests.yml +++ b/.github/workflows/regression-tests.yml @@ -45,6 +45,9 @@ jobs: gspace-secret: ${{ secrets.GSPACES_BOT_DF_BUILD }} build-folder-name: build filter: ${{ matrix.build-type == 'Release' && 'not dbg_only' || 'not opt_only' }} + aws-access-key-id: ${{ secrets.AWS_S3_ACCESS_KEY }} + aws-secret-access-key: ${{ secrets.AWS_S3_ACCESS_SECRET }} + s3-bucket: ${{ secrets.S3_REGTEST_BUCKET }} - name: Upload logs on failure if: failure() diff --git a/tests/dragonfly/snapshot_test.py b/tests/dragonfly/snapshot_test.py index f5359f27d..017a4134c 100644 --- a/tests/dragonfly/snapshot_test.py +++ b/tests/dragonfly/snapshot_test.py @@ -309,14 +309,15 @@ async def test_info_persistence_field(async_client): # If DRAGONFLY_S3_BUCKET is configured, AWS credentials must also be # configured. @pytest.mark.skipif( - "DRAGONFLY_S3_BUCKET" not in os.environ, reason="AWS S3 snapshots bucket is not configured" + "DRAGONFLY_S3_BUCKET" not in os.environ or os.environ["DRAGONFLY_S3_BUCKET"] == "", + reason="AWS S3 snapshots bucket is not configured", ) @dfly_args({**BASIC_ARGS, "dir": "s3://{DRAGONFLY_S3_BUCKET}{DRAGONFLY_TMP}", "dbfilename": ""}) -async def test_s3_snapshot(self, async_client): +async def test_s3_snapshot(async_client, tmp_dir): seeder = StaticSeeder(key_target=10_000) await seeder.run(async_client) - start_capture = await StaticSeeder.capture() + start_capture = await StaticSeeder.capture(async_client) try: # save + flush + load @@ -325,7 +326,7 @@ async def test_s3_snapshot(self, async_client): await async_client.execute_command( "DFLY LOAD " + os.environ["DRAGONFLY_S3_BUCKET"] - + str(self.tmp_dir) + + str(tmp_dir) + "/snapshot-summary.dfs" ) @@ -349,7 +350,7 @@ async def test_s3_snapshot(self, async_client): delete_objects( os.environ["DRAGONFLY_S3_BUCKET"], - str(self.tmp_dir)[1:], + str(tmp_dir)[1:], )