This is an automated email from the ASF dual-hosted git repository.

tustvold pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-rs-object-store.git


The following commit(s) were added to refs/heads/main by this push:
     new 47e7a75  ci: use RustFS for presigned URL tests (#898)
47e7a75 is described below

commit 47e7a75ece7c662fee057f0fe844d1409883fd3b
Author: Xin Sun <[email protected]>
AuthorDate: Sat Oct 31 18:11:00 2026 +0800

    ci: use RustFS for presigned URL tests (#898)
---
 .github/workflows/ci.yml | 26 ++++++++++++++------------
 CONTRIBUTING.md          | 14 +++++++-------
 2 files changed, 21 insertions(+), 19 deletions(-)

diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index dadfcf6..efdb076 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -215,14 +215,16 @@ jobs:
           AWS_SSE_KMS_KEY_ID=$(jq -r .KeyMetadata.KeyId <<< "$KMS_KEY")
           echo "AWS_SSE_KMS_KEY_ID=$AWS_SSE_KMS_KEY_ID" >> $GITHUB_ENV
 
-      # MinIO validates SigV4 (LocalStack does not), so it backs the 
presigned-URL
+      # RustFS validates SigV4 (LocalStack does not), so it backs the 
presigned-URL
       # signature-enforcement tests below.
-      - name: Setup MinIO (SigV4-validating S3)
+      - name: Setup RustFS (SigV4-validating S3)
         run: |
-          MINIO_CONTAINER=$(docker run -d -p 9000:9000 -e 
MINIO_ROOT_USER=minio -e MINIO_ROOT_PASSWORD=minio123 minio/minio server /data)
-          echo "MINIO_CONTAINER=$MINIO_CONTAINER" >> $GITHUB_ENV
-          for _ in $(seq 1 30); do curl -fsS 
http://localhost:9000/minio/health/ready && break; sleep 1; done
-          AWS_ACCESS_KEY_ID=minio AWS_SECRET_ACCESS_KEY=minio123 \
+          RUSTFS_CONTAINER=$(docker run -d -p 9000:9000 \
+            -e RUSTFS_ACCESS_KEY=rustfs -e RUSTFS_SECRET_KEY=rustfs123 \
+            -e RUSTFS_CONSOLE_ENABLE=false rustfs/rustfs:1.0.0)
+          echo "RUSTFS_CONTAINER=$RUSTFS_CONTAINER" >> $GITHUB_ENV
+          for _ in $(seq 1 30); do curl -fsS 
http://localhost:9000/health/ready && break; sleep 1; done
+          AWS_ACCESS_KEY_ID=rustfs AWS_SECRET_ACCESS_KEY=rustfs123 \
             aws --endpoint-url=http://localhost:9000 s3 mb 
s3://test-bucket-for-signing
 
       - name: Configure Azurite (Azure emulation)
@@ -253,15 +255,15 @@ jobs:
       # These tests assert the backend REJECTS a tampered signature, an 
expired URL, or an
       # altered signed header, so they need a backend that validates SigV4 and 
are gated behind
       # TEST_S3_SIGNATURE_ENFORCEMENT (skipped against LocalStack elsewhere). 
Run them against
-      # MinIO. `env -u` drops the job-wide SSE-KMS settings, whose LocalStack 
key MinIO does not
+      # RustFS. `env -u` drops the job-wide SSE-KMS settings, whose LocalStack 
key RustFS does not
       # have; the tests only need a plain authenticated round trip.
-      - name: Run presigned-URL signature-enforcement tests (MinIO)
+      - name: Run presigned-URL signature-enforcement tests (RustFS)
         run: env -u AWS_SERVER_SIDE_ENCRYPTION -u AWS_SSE_KMS_KEY_ID cargo 
test --lib --features=aws aws::tests::signed_url
         env:
           TEST_S3_SIGNATURE_ENFORCEMENT: 1
           AWS_ENDPOINT: http://localhost:9000
-          AWS_ACCESS_KEY_ID: minio
-          AWS_SECRET_ACCESS_KEY: minio123
+          AWS_ACCESS_KEY_ID: rustfs
+          AWS_SECRET_ACCESS_KEY: rustfs123
           AWS_BUCKET: test-bucket-for-signing
 
       # Exercise the `ring` crypto provider at runtime (the other jobs only
@@ -283,9 +285,9 @@ jobs:
         if: ${{ !cancelled() }}
         run: docker logs $LOCALSTACK_CONTAINER
 
-      - name: MinIO Output
+      - name: RustFS Output
         if: ${{ !cancelled() }}
-        run: docker logs $MINIO_CONTAINER
+        run: docker logs $RUSTFS_CONTAINER
 
       - name: EC2 Metadata Output
         if: ${{ !cancelled() }}
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index e15db34..74cbdae 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -156,28 +156,28 @@ a tampered signature, an expired URL, or a signed header 
whose value the client
 require a backend that actually validates SigV4. LocalStack does not (it 
accepts presigned
 requests regardless of signature or expiry), so these tests are gated behind a 
separate
 `TEST_S3_SIGNATURE_ENFORCEMENT` variable rather than running in the main 
LocalStack integration
-pass. CI runs them against MinIO instead, which does validate SigV4 (the "Run 
presigned-URL
-signature-enforcement tests (MinIO)" step in `ci.yml`), so they stay 
exercised. The steps below
+pass. CI runs them against RustFS instead, which does validate SigV4 (the "Run 
presigned-URL
+signature-enforcement tests (RustFS)" step in `ci.yml`), so they stay 
exercised. The steps below
 reproduce that locally or point at real S3.
 
 These tests use a dedicated `test-bucket-for-signing` bucket so their writes 
cannot contaminate the
 shared `test-bucket` whose exact contents `s3_test` asserts. To point at a 
bucket in your own
 account instead, set `OBJECT_STORE_SIGNING_BUCKET` (no source edit required).
 
-MinIO is the recommended local backend: unlike LocalStack it validates SigV4 
signatures and expiry,
+RustFS is the recommended local backend: unlike LocalStack it validates SigV4 
signatures and expiry,
 so the enforcement assertions actually exercise. Plain HTTP is enough (these 
tests don't use SSE-C,
 so the self-signed-cert setup from the SSE-C section is not needed, and the 
test client would
 reject that cert anyway):
 
 ```shell
 docker run -d -p 9000:9000 \
-  -e MINIO_ROOT_USER=minio -e MINIO_ROOT_PASSWORD=minio123 \
-  minio/minio server /data
+  -e RUSTFS_ACCESS_KEY=rustfs -e RUSTFS_SECRET_KEY=rustfs123 \
+  -e RUSTFS_CONSOLE_ENABLE=false rustfs/rustfs:1.0.0
 
 export AWS_ENDPOINT=http://localhost:9000
 export AWS_ALLOW_HTTP=true
-export AWS_ACCESS_KEY_ID=minio
-export AWS_SECRET_ACCESS_KEY=minio123
+export AWS_ACCESS_KEY_ID=rustfs
+export AWS_SECRET_ACCESS_KEY=rustfs123
 export AWS_REGION=us-east-1
 aws --endpoint-url=http://localhost:9000 s3 mb s3://test-bucket-for-signing
 ```

Reply via email to