snapshot of https://github.com/seaweedfs/seaweedfs.git (master, 2026-09-16; blobs > 131072B omitted)
Some checks failed
go: build dev binaries / cleanup (push) Successful in 4s
Codespell / Check for spelling errors (push) Failing after 3s
docker: build dev containers / build-rust-binaries (amd64, x86_64-unknown-linux-musl) (push) Failing after 3s
docker: build dev containers / build-dev-containers (push) Has been skipped
docker: build dev containers / build-rust-binaries (arm64, true, aarch64-unknown-linux-musl) (push) Failing after 3s
End to End / FUSE Mount (push) Failing after 2s
EC Integration Tests / EC Integration Tests (push) Failing after 30s
FUSE DLM Integration Tests / FUSE DLM Integration Tests (push) Failing after 3s
FUSE Volume Server Failover Tests / FUSE Volume Server Failover (push) Failing after 3s
FUSE Integration Tests / FUSE Integration Testing (push) Failing after 2s
FUSE P2P Peer Chunk Sharing Integration Tests / FUSE P2P Peer Chunk Sharing (push) Failing after 3s
go: build binary / Go Vet (push) Failing after 2s
go: build binary / Go Vet 32-bit (push) Failing after 3s
go: build binary / Build (push) Failing after 4s
go: build binary / Build cross-platform (freebsd/amd64) (push) Failing after 3s
go: build binary / Build cross-platform (windows/amd64) (push) Failing after 3s
go: build binary / Build cross-platform (darwin/arm64) (push) Failing after 3s
go: build binary / Build cross-platform (windows/arm64) (push) Failing after 3s
go: build binary / Test (push) Failing after 2s
go: build binary / Test 32-bit (push) Failing after 3s
helm: lint and test charts / lint-test (push) Failing after 3s
Java Client Integration Tests / Java Integration Tests (11) (push) Failing after 3s
Java Client Integration Tests / Java Integration Tests (17) (push) Failing after 3s
go: build dev binaries / build_dev_linux_windows (amd64, linux) (push) Failing after 2s
go: build dev binaries / build_dev_linux_windows (amd64, windows) (push) Failing after 3s
go: build dev binaries / build_dev_darwin (amd64, darwin) (push) Has been skipped
go: build dev binaries / build_dev_darwin (arm64, darwin) (push) Has been skipped
Java Client Unit Tests / Java Unit Tests (11) (push) Failing after 3s
Java Client Unit Tests / Java Unit Tests (17) (push) Failing after 2s
Java Client Unit Tests / Java Unit Tests (21) (push) Failing after 3s
Java Client Unit Tests / Java Unit Tests (8) (push) Failing after 3s
Kafka Quick Test (Load Test with Schema Registry) / Kafka Client Load Test (Quick) (push) Failing after 3s
Kafka Gateway Tests / Kafka Unit Tests (unit-tests-1) (push) Failing after 11s
Kafka Gateway Tests / Kafka Integration Tests (Critical) (integration-1) (push) Failing after 3s
Kafka Gateway Tests / Kafka End-to-End Tests (with SMQ) (e2e-1) (push) Failing after 3s
Kafka Gateway Tests / Kafka Consumer Group Tests (Highly Isolated) (consumer-group-1) (push) Failing after 2s
Kafka Gateway Tests / Kafka Client Compatibility (with SMQ) (client-compat-1) (push) Failing after 3s
Kafka Gateway Tests / Kafka SMQ Integration Tests (Full Stack) (smq-integration-1) (push) Failing after 3s
Kafka Gateway Tests / Kafka Protocol Tests (Isolated) (protocol-1) (push) Failing after 3s
KMS Tests / KMS Provider Integration Tests (push) Failing after 2s
KMS Tests / S3 KMS End-to-End Tests (push) Failing after 3s
Master Cold Start Tests / Master Cold Start Tests (push) Failing after 4s
Metadata Subscribe Integration Tests / Metadata Subscribe Integration Tests (push) Failing after 3s
Multi-Master Tests / Multi-Master Failover Tests (push) Failing after 3s
Performance / CPU and Heap Profile (push) Failing after 2s
Performance / S3 Read/Write Benchmark (rust volume) (push) Failing after 3s
pjdfstest POSIX Compliance / pjdfstest (push) Failing after 2s
Plugin Worker Integration Tests / Plugin Worker: erasure_coding (push) Failing after 3s
Plugin Worker Integration Tests / Plugin Worker: vacuum (push) Failing after 3s
Rust Volume Server Tests / Rust Integration Tests (push) Failing after 3s
Rust Volume Server Tests / Go Tests with Rust Volume (grpc - Shard 1) (push) Failing after 2s
Rust Volume Server Tests / Go Tests with Rust Volume (http - Shard 1) (push) Failing after 3s
Rust Volume Server Tests / Go Tests with Rust Volume (grpc - Shard 2) (push) Failing after 3s
Rust Volume Server Tests / Go Tests with Rust Volume (http - Shard 2) (push) Failing after 3s
Rust Volume Server Tests / Go Tests with Rust Volume (grpc - Shard 3) (push) Failing after 3s
S3 IAM Integration Tests / S3 IAM Distributed Tests (push) Failing after 2s
S3 IAM Integration Tests / S3 IAM Performance Tests (push) Failing after 3s
Performance / Throughput Benchmark (go volume) (push) Failing after 3s
Performance / Throughput Benchmark (rust volume) (push) Failing after 2s
Performance / S3 Read/Write Benchmark (go volume) (push) Failing after 3s
Plugin Worker Integration Tests / Plugin Worker: volume_balance (push) Failing after 3s
PostgreSQL Gateway Tests / PostgreSQL Basic Tests (push) Failing after 3s
Rust Volume Server Tests / Rust Unit Tests (push) Failing after 2s
Rust Volume Server Tests / Go Tests with Rust Volume (http - Shard 3) (push) Failing after 3s
Rust Plugin Worker Tests / Rust Plugin Worker Build and Unit Tests (push) Failing after 3s
rust: build dev volume server binaries / cleanup (push) Successful in 3s
S3 ETag and ACL Tests / S3 ETag + ACL Integration Tests (push) Failing after 3s
S3 IAM Integration Tests / IAM Unit Tests (push) Failing after 3s
S3 IAM Integration Tests / S3 IAM Integration Tests (advanced) (push) Failing after 3s
S3 IAM Integration Tests / S3 IAM Integration Tests (basic) (push) Failing after 2s
S3 IAM Integration Tests / S3 IAM Integration Tests (group) (push) Failing after 3s
S3 IAM Integration Tests / S3 IAM Integration Tests (policy-enforcement) (push) Failing after 2s
S3 IAM Integration Tests / S3 IAM Integration Tests (sts) (push) Failing after 4s
S3 Keycloak Integration Tests / S3 Keycloak Integration Tests (push) Failing after 3s
S3 PyArrow Parquet Tests / PyArrow Parquet Tests (Python 3.11) (push) Failing after 3s
S3 PyArrow Parquet Tests / Go Unit Tests (Implicit Directory) (push) Has been cancelled
S3 PyArrow Parquet Tests / PyArrow Parquet Tests (Python 3.12) (push) Has been cancelled
rust: build dev volume server binaries / build-rust-volume-dev-darwin (darwin-amd64, x86_64-apple-darwin) (push) Has been cancelled
rust: build dev volume server binaries / build-rust-volume-dev-darwin (darwin-arm64, aarch64-apple-darwin) (push) Has been cancelled
rust: build dev volume server binaries / build-rust-volume-dev-linux (linux-amd64, x86_64-unknown-linux-gnu) (push) Has been cancelled
S3 PyArrow Parquet Tests / PyArrow Parquet Tests (Python 3.9) (push) Has been cancelled
S3 Proxy Signature Tests / S3 Proxy Signature Verification Tests (push) Has been cancelled
S3 SDK V2 Route Disambiguation Tests / S3 SDK V2 Routing Tests (push) Has been cancelled
S3 SSE Tests / S3 SSE Integration Tests (quick) (push) Has been cancelled
S3 SSE Tests / S3 SSE Compatibility Test (push) Has been cancelled
S3 SSE Tests / S3 SSE Metadata Persistence Test (push) Has been cancelled
S3 SSE Tests / S3 SSE Copy Operations Test (push) Has been cancelled
S3 SSE Tests / S3 SSE Multipart Upload Test (push) Has been cancelled
S3 SSE Tests / S3 SSE Performance Test (push) Has been cancelled
S3 SSE Tests / S3 Volume Encryption Test (push) Has been cancelled
S3 SSE Tests / S3 SSE Integration Tests (comprehensive) (push) Has been cancelled
Spark Integration Tests / Spark Integration Tests (push) Failing after 2s
Telemetry Integration Tests / telemetry-integration-test (push) Failing after 3s
Volume Server Integration Tests / Volume Server Integration Tests (grpc - Shard 1) (push) Failing after 3s
Volume Server Integration Tests / Volume Server Integration Tests (http - Shard 1) (push) Failing after 3s
Ceph S3 tests / Basic S3 tests (KV store) (push) Has been cancelled
Ceph S3 tests / S3 Versioning & Object Lock tests (push) Has been cancelled
S3 Policy Integration Tests / S3 Policy Unit Tests (push) Failing after 3s
Ceph S3 tests / S3 CORS tests (push) Has been cancelled
Ceph S3 tests / SeaweedFS Custom S3 Copy tests (push) Has been cancelled
Ceph S3 tests / Basic S3 tests (SQL store) (push) Has been cancelled
test s3 over https using aws-cli / awscli-tests (push) Has been cancelled
TLS Rotation Integration Tests / TLS Rotation Integration Tests (push) Has been cancelled
Vacuum Integration Tests / Vacuum Integration Tests (push) Has been cancelled
S3 Policy Integration Tests / S3 Policy Variables Integration Tests (push) Failing after 3s
S3 Policy Integration Tests / S3 Policy Enforcement Integration Tests (advanced-policy) (push) Failing after 3s
S3 Policy Integration Tests / S3 Policy Enforcement Integration Tests (basic-policy) (push) Failing after 2s
S3 Policy Integration Tests / S3 Policy Enforcement Integration Tests (contextual-policy) (push) Failing after 4s
S3 Policy Integration Tests / Trusted Proxy Detection Tests (push) Failing after 2s
S3 Policy Integration Tests / S3 Policy Shell Integration Tests (push) Failing after 3s
Samba on FUSE Integration / samba-integration (push) Failing after 2s
SFTP Integration Tests / SFTP Integration Testing (push) Failing after 3s
terraform: validate and test modules / fmt, validate, plan-level tests (push) Failing after 3s
terraform: validate and test modules / local cluster smoke test (real weed) (push) Failing after 2s
Volume Server Integration Tests / Volume Server Integration Tests (grpc - Shard 3) (push) Failing after 3s
Volume Server Integration Tests / Volume Server Integration Tests (grpc - Shard 2) (push) Failing after 3s
Volume Server Integration Tests / Volume Server Integration Tests (http - Shard 2) (push) Failing after 2s
Volume Server Integration Tests / Volume Server Integration Tests (http - Shard 3) (push) Failing after 5s
mount: windows conformance / WinFsp conformance (push) Has been cancelled
mount: windows / Mount on Windows (push) Has been cancelled
Some checks failed
go: build dev binaries / cleanup (push) Successful in 4s
Codespell / Check for spelling errors (push) Failing after 3s
docker: build dev containers / build-rust-binaries (amd64, x86_64-unknown-linux-musl) (push) Failing after 3s
docker: build dev containers / build-dev-containers (push) Has been skipped
docker: build dev containers / build-rust-binaries (arm64, true, aarch64-unknown-linux-musl) (push) Failing after 3s
End to End / FUSE Mount (push) Failing after 2s
EC Integration Tests / EC Integration Tests (push) Failing after 30s
FUSE DLM Integration Tests / FUSE DLM Integration Tests (push) Failing after 3s
FUSE Volume Server Failover Tests / FUSE Volume Server Failover (push) Failing after 3s
FUSE Integration Tests / FUSE Integration Testing (push) Failing after 2s
FUSE P2P Peer Chunk Sharing Integration Tests / FUSE P2P Peer Chunk Sharing (push) Failing after 3s
go: build binary / Go Vet (push) Failing after 2s
go: build binary / Go Vet 32-bit (push) Failing after 3s
go: build binary / Build (push) Failing after 4s
go: build binary / Build cross-platform (freebsd/amd64) (push) Failing after 3s
go: build binary / Build cross-platform (windows/amd64) (push) Failing after 3s
go: build binary / Build cross-platform (darwin/arm64) (push) Failing after 3s
go: build binary / Build cross-platform (windows/arm64) (push) Failing after 3s
go: build binary / Test (push) Failing after 2s
go: build binary / Test 32-bit (push) Failing after 3s
helm: lint and test charts / lint-test (push) Failing after 3s
Java Client Integration Tests / Java Integration Tests (11) (push) Failing after 3s
Java Client Integration Tests / Java Integration Tests (17) (push) Failing after 3s
go: build dev binaries / build_dev_linux_windows (amd64, linux) (push) Failing after 2s
go: build dev binaries / build_dev_linux_windows (amd64, windows) (push) Failing after 3s
go: build dev binaries / build_dev_darwin (amd64, darwin) (push) Has been skipped
go: build dev binaries / build_dev_darwin (arm64, darwin) (push) Has been skipped
Java Client Unit Tests / Java Unit Tests (11) (push) Failing after 3s
Java Client Unit Tests / Java Unit Tests (17) (push) Failing after 2s
Java Client Unit Tests / Java Unit Tests (21) (push) Failing after 3s
Java Client Unit Tests / Java Unit Tests (8) (push) Failing after 3s
Kafka Quick Test (Load Test with Schema Registry) / Kafka Client Load Test (Quick) (push) Failing after 3s
Kafka Gateway Tests / Kafka Unit Tests (unit-tests-1) (push) Failing after 11s
Kafka Gateway Tests / Kafka Integration Tests (Critical) (integration-1) (push) Failing after 3s
Kafka Gateway Tests / Kafka End-to-End Tests (with SMQ) (e2e-1) (push) Failing after 3s
Kafka Gateway Tests / Kafka Consumer Group Tests (Highly Isolated) (consumer-group-1) (push) Failing after 2s
Kafka Gateway Tests / Kafka Client Compatibility (with SMQ) (client-compat-1) (push) Failing after 3s
Kafka Gateway Tests / Kafka SMQ Integration Tests (Full Stack) (smq-integration-1) (push) Failing after 3s
Kafka Gateway Tests / Kafka Protocol Tests (Isolated) (protocol-1) (push) Failing after 3s
KMS Tests / KMS Provider Integration Tests (push) Failing after 2s
KMS Tests / S3 KMS End-to-End Tests (push) Failing after 3s
Master Cold Start Tests / Master Cold Start Tests (push) Failing after 4s
Metadata Subscribe Integration Tests / Metadata Subscribe Integration Tests (push) Failing after 3s
Multi-Master Tests / Multi-Master Failover Tests (push) Failing after 3s
Performance / CPU and Heap Profile (push) Failing after 2s
Performance / S3 Read/Write Benchmark (rust volume) (push) Failing after 3s
pjdfstest POSIX Compliance / pjdfstest (push) Failing after 2s
Plugin Worker Integration Tests / Plugin Worker: erasure_coding (push) Failing after 3s
Plugin Worker Integration Tests / Plugin Worker: vacuum (push) Failing after 3s
Rust Volume Server Tests / Rust Integration Tests (push) Failing after 3s
Rust Volume Server Tests / Go Tests with Rust Volume (grpc - Shard 1) (push) Failing after 2s
Rust Volume Server Tests / Go Tests with Rust Volume (http - Shard 1) (push) Failing after 3s
Rust Volume Server Tests / Go Tests with Rust Volume (grpc - Shard 2) (push) Failing after 3s
Rust Volume Server Tests / Go Tests with Rust Volume (http - Shard 2) (push) Failing after 3s
Rust Volume Server Tests / Go Tests with Rust Volume (grpc - Shard 3) (push) Failing after 3s
S3 IAM Integration Tests / S3 IAM Distributed Tests (push) Failing after 2s
S3 IAM Integration Tests / S3 IAM Performance Tests (push) Failing after 3s
Performance / Throughput Benchmark (go volume) (push) Failing after 3s
Performance / Throughput Benchmark (rust volume) (push) Failing after 2s
Performance / S3 Read/Write Benchmark (go volume) (push) Failing after 3s
Plugin Worker Integration Tests / Plugin Worker: volume_balance (push) Failing after 3s
PostgreSQL Gateway Tests / PostgreSQL Basic Tests (push) Failing after 3s
Rust Volume Server Tests / Rust Unit Tests (push) Failing after 2s
Rust Volume Server Tests / Go Tests with Rust Volume (http - Shard 3) (push) Failing after 3s
Rust Plugin Worker Tests / Rust Plugin Worker Build and Unit Tests (push) Failing after 3s
rust: build dev volume server binaries / cleanup (push) Successful in 3s
S3 ETag and ACL Tests / S3 ETag + ACL Integration Tests (push) Failing after 3s
S3 IAM Integration Tests / IAM Unit Tests (push) Failing after 3s
S3 IAM Integration Tests / S3 IAM Integration Tests (advanced) (push) Failing after 3s
S3 IAM Integration Tests / S3 IAM Integration Tests (basic) (push) Failing after 2s
S3 IAM Integration Tests / S3 IAM Integration Tests (group) (push) Failing after 3s
S3 IAM Integration Tests / S3 IAM Integration Tests (policy-enforcement) (push) Failing after 2s
S3 IAM Integration Tests / S3 IAM Integration Tests (sts) (push) Failing after 4s
S3 Keycloak Integration Tests / S3 Keycloak Integration Tests (push) Failing after 3s
S3 PyArrow Parquet Tests / PyArrow Parquet Tests (Python 3.11) (push) Failing after 3s
S3 PyArrow Parquet Tests / Go Unit Tests (Implicit Directory) (push) Has been cancelled
S3 PyArrow Parquet Tests / PyArrow Parquet Tests (Python 3.12) (push) Has been cancelled
rust: build dev volume server binaries / build-rust-volume-dev-darwin (darwin-amd64, x86_64-apple-darwin) (push) Has been cancelled
rust: build dev volume server binaries / build-rust-volume-dev-darwin (darwin-arm64, aarch64-apple-darwin) (push) Has been cancelled
rust: build dev volume server binaries / build-rust-volume-dev-linux (linux-amd64, x86_64-unknown-linux-gnu) (push) Has been cancelled
S3 PyArrow Parquet Tests / PyArrow Parquet Tests (Python 3.9) (push) Has been cancelled
S3 Proxy Signature Tests / S3 Proxy Signature Verification Tests (push) Has been cancelled
S3 SDK V2 Route Disambiguation Tests / S3 SDK V2 Routing Tests (push) Has been cancelled
S3 SSE Tests / S3 SSE Integration Tests (quick) (push) Has been cancelled
S3 SSE Tests / S3 SSE Compatibility Test (push) Has been cancelled
S3 SSE Tests / S3 SSE Metadata Persistence Test (push) Has been cancelled
S3 SSE Tests / S3 SSE Copy Operations Test (push) Has been cancelled
S3 SSE Tests / S3 SSE Multipart Upload Test (push) Has been cancelled
S3 SSE Tests / S3 SSE Performance Test (push) Has been cancelled
S3 SSE Tests / S3 Volume Encryption Test (push) Has been cancelled
S3 SSE Tests / S3 SSE Integration Tests (comprehensive) (push) Has been cancelled
Spark Integration Tests / Spark Integration Tests (push) Failing after 2s
Telemetry Integration Tests / telemetry-integration-test (push) Failing after 3s
Volume Server Integration Tests / Volume Server Integration Tests (grpc - Shard 1) (push) Failing after 3s
Volume Server Integration Tests / Volume Server Integration Tests (http - Shard 1) (push) Failing after 3s
Ceph S3 tests / Basic S3 tests (KV store) (push) Has been cancelled
Ceph S3 tests / S3 Versioning & Object Lock tests (push) Has been cancelled
S3 Policy Integration Tests / S3 Policy Unit Tests (push) Failing after 3s
Ceph S3 tests / S3 CORS tests (push) Has been cancelled
Ceph S3 tests / SeaweedFS Custom S3 Copy tests (push) Has been cancelled
Ceph S3 tests / Basic S3 tests (SQL store) (push) Has been cancelled
test s3 over https using aws-cli / awscli-tests (push) Has been cancelled
TLS Rotation Integration Tests / TLS Rotation Integration Tests (push) Has been cancelled
Vacuum Integration Tests / Vacuum Integration Tests (push) Has been cancelled
S3 Policy Integration Tests / S3 Policy Variables Integration Tests (push) Failing after 3s
S3 Policy Integration Tests / S3 Policy Enforcement Integration Tests (advanced-policy) (push) Failing after 3s
S3 Policy Integration Tests / S3 Policy Enforcement Integration Tests (basic-policy) (push) Failing after 2s
S3 Policy Integration Tests / S3 Policy Enforcement Integration Tests (contextual-policy) (push) Failing after 4s
S3 Policy Integration Tests / Trusted Proxy Detection Tests (push) Failing after 2s
S3 Policy Integration Tests / S3 Policy Shell Integration Tests (push) Failing after 3s
Samba on FUSE Integration / samba-integration (push) Failing after 2s
SFTP Integration Tests / SFTP Integration Testing (push) Failing after 3s
terraform: validate and test modules / fmt, validate, plan-level tests (push) Failing after 3s
terraform: validate and test modules / local cluster smoke test (real weed) (push) Failing after 2s
Volume Server Integration Tests / Volume Server Integration Tests (grpc - Shard 3) (push) Failing after 3s
Volume Server Integration Tests / Volume Server Integration Tests (grpc - Shard 2) (push) Failing after 3s
Volume Server Integration Tests / Volume Server Integration Tests (http - Shard 2) (push) Failing after 2s
Volume Server Integration Tests / Volume Server Integration Tests (http - Shard 3) (push) Failing after 5s
mount: windows conformance / WinFsp conformance (push) Has been cancelled
mount: windows / Mount on Windows (push) Has been cancelled
This commit is contained in:
362
test/s3/cors/README.md
Normal file
362
test/s3/cors/README.md
Normal file
@@ -0,0 +1,362 @@
|
||||
# CORS Integration Tests for SeaweedFS S3 API
|
||||
|
||||
This directory contains comprehensive integration tests for the CORS (Cross-Origin Resource Sharing) functionality in SeaweedFS S3 API.
|
||||
|
||||
## Overview
|
||||
|
||||
The CORS integration tests validate the complete CORS implementation including:
|
||||
- CORS configuration management (PUT/GET/DELETE)
|
||||
- CORS rule validation
|
||||
- CORS middleware behavior
|
||||
- Caching functionality
|
||||
- Error handling
|
||||
- Real-world CORS scenarios
|
||||
|
||||
## Prerequisites
|
||||
|
||||
1. **Go 1.19+**: For building SeaweedFS and running tests
|
||||
2. **Network Access**: Tests use `localhost:8333` by default
|
||||
3. **System Dependencies**: `curl` and `netstat` for health checks
|
||||
|
||||
## Quick Start
|
||||
|
||||
The tests now automatically start their own SeaweedFS server, so you don't need to manually start one.
|
||||
|
||||
### 1. Run All Tests with Managed Server
|
||||
|
||||
```bash
|
||||
# Run all tests with automatic server management
|
||||
make test-with-server
|
||||
|
||||
# Run core CORS tests only
|
||||
make test-cors-quick
|
||||
|
||||
# Run comprehensive CORS tests
|
||||
make test-cors-comprehensive
|
||||
```
|
||||
|
||||
### 2. Manual Server Management
|
||||
|
||||
If you prefer to manage the server manually:
|
||||
|
||||
```bash
|
||||
# Start server
|
||||
make start-server
|
||||
|
||||
# Run tests (assuming server is running)
|
||||
make test-cors-simple
|
||||
|
||||
# Stop server
|
||||
make stop-server
|
||||
```
|
||||
|
||||
### 3. Individual Test Categories
|
||||
|
||||
```bash
|
||||
# Run specific test types
|
||||
make test-basic-cors # Basic CORS configuration
|
||||
make test-preflight-cors # Preflight OPTIONS requests
|
||||
make test-actual-cors # Actual CORS request handling
|
||||
make test-origin-matching # Origin matching logic
|
||||
make test-header-matching # Header matching logic
|
||||
make test-method-matching # Method matching logic
|
||||
make test-multiple-rules # Multiple CORS rules
|
||||
make test-validation # CORS validation
|
||||
make test-caching # CORS caching behavior
|
||||
make test-error-handling # Error handling
|
||||
```
|
||||
|
||||
## Test Server Management
|
||||
|
||||
The tests use a comprehensive server management system similar to other SeaweedFS integration tests:
|
||||
|
||||
### Server Configuration
|
||||
|
||||
- **S3 Port**: 8333 (configurable via `S3_PORT`)
|
||||
- **Master Port**: 9333
|
||||
- **Volume Port**: 8080
|
||||
- **Filer Port**: 8888
|
||||
- **Metrics Port**: 9324
|
||||
- **Data Directory**: `./test-volume-data` (auto-created)
|
||||
- **Log File**: `weed-test.log`
|
||||
|
||||
### Server Lifecycle
|
||||
|
||||
1. **Build**: Automatically builds `../../../weed/weed_binary`
|
||||
2. **Start**: Launches SeaweedFS with S3 API enabled
|
||||
3. **Health Check**: Waits up to 90 seconds for server to be ready
|
||||
4. **Test**: Runs the requested tests
|
||||
5. **Stop**: Gracefully shuts down the server
|
||||
6. **Cleanup**: Removes temporary files and data
|
||||
|
||||
### Available Commands
|
||||
|
||||
```bash
|
||||
# Server management
|
||||
make start-server # Start SeaweedFS server
|
||||
make stop-server # Stop SeaweedFS server
|
||||
make health-check # Check server health
|
||||
make logs # View server logs
|
||||
|
||||
# Test execution
|
||||
make test-with-server # Full test cycle with server management
|
||||
make test-cors-simple # Run tests without server management
|
||||
make test-cors-quick # Run core tests only
|
||||
make test-cors-comprehensive # Run all tests
|
||||
|
||||
# Development
|
||||
make dev-start # Start server for development
|
||||
make dev-test # Run development tests
|
||||
make build-weed # Build SeaweedFS binary
|
||||
make check-deps # Check dependencies
|
||||
|
||||
# Maintenance
|
||||
make clean # Clean up all artifacts
|
||||
make coverage # Generate coverage report
|
||||
make fmt # Format code
|
||||
make lint # Run linter
|
||||
```
|
||||
|
||||
## Test Configuration
|
||||
|
||||
### Default Configuration
|
||||
|
||||
The tests use these default settings (configurable via environment variables):
|
||||
|
||||
```bash
|
||||
WEED_BINARY=../../../weed/weed_binary
|
||||
S3_PORT=8333
|
||||
TEST_TIMEOUT=10m
|
||||
TEST_PATTERN=TestCORS
|
||||
```
|
||||
|
||||
### Configuration File
|
||||
|
||||
The `test_config.json` file contains S3 client configuration:
|
||||
|
||||
```json
|
||||
{
|
||||
"endpoint": "http://localhost:8333",
|
||||
"access_key": "some_access_key1",
|
||||
"secret_key": "some_secret_key1",
|
||||
"region": "us-east-1",
|
||||
"bucket_prefix": "test-cors-",
|
||||
"use_ssl": false,
|
||||
"skip_verify_ssl": true
|
||||
}
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Compilation Issues
|
||||
|
||||
If you encounter compilation errors, the most common issues are:
|
||||
|
||||
1. **AWS SDK v2 Type Mismatches**: The `MaxAgeSeconds` field in `types.CORSRule` expects `int32`, not `*int32`. Use direct values like `3600` instead of `aws.Int32(3600)`.
|
||||
|
||||
2. **Field Name Issues**: The `GetBucketCorsOutput` type has a `CORSRules` field directly, not a `CORSConfiguration` field.
|
||||
|
||||
Example fix:
|
||||
```go
|
||||
// ❌ Incorrect
|
||||
MaxAgeSeconds: aws.Int32(3600),
|
||||
assert.Len(t, getResp.CORSConfiguration.CORSRules, 1)
|
||||
|
||||
// ✅ Correct
|
||||
MaxAgeSeconds: 3600,
|
||||
assert.Len(t, getResp.CORSRules, 1)
|
||||
```
|
||||
|
||||
### Server Issues
|
||||
|
||||
1. **Server Won't Start**
|
||||
```bash
|
||||
# Check for port conflicts
|
||||
netstat -tlnp | grep 8333
|
||||
|
||||
# View server logs
|
||||
make logs
|
||||
|
||||
# Force cleanup
|
||||
make clean
|
||||
```
|
||||
|
||||
2. **Test Failures**
|
||||
```bash
|
||||
# Run with server management
|
||||
make test-with-server
|
||||
|
||||
# Run specific test
|
||||
make test-basic-cors
|
||||
|
||||
# Check server health
|
||||
make health-check
|
||||
```
|
||||
|
||||
3. **Connection Issues**
|
||||
```bash
|
||||
# Verify server is running
|
||||
curl -s http://localhost:8333
|
||||
|
||||
# Check server logs
|
||||
tail -f weed-test.log
|
||||
```
|
||||
|
||||
### Performance Issues
|
||||
|
||||
If tests are slow or timing out:
|
||||
|
||||
```bash
|
||||
# Increase timeout
|
||||
export TEST_TIMEOUT=30m
|
||||
make test-with-server
|
||||
|
||||
# Run quick tests only
|
||||
make test-cors-quick
|
||||
|
||||
# Check server resources
|
||||
make debug-status
|
||||
```
|
||||
|
||||
## Test Coverage
|
||||
|
||||
### Core Functionality Tests
|
||||
|
||||
#### 1. CORS Configuration Management (`TestCORSConfigurationManagement`)
|
||||
- PUT CORS configuration
|
||||
- GET CORS configuration
|
||||
- DELETE CORS configuration
|
||||
- Configuration updates
|
||||
- Error handling for non-existent configurations
|
||||
|
||||
#### 2. Multiple CORS Rules (`TestCORSMultipleRules`)
|
||||
- Multiple rules in single configuration
|
||||
- Rule precedence and ordering
|
||||
- Complex rule combinations
|
||||
|
||||
#### 3. CORS Validation (`TestCORSValidation`)
|
||||
- Invalid HTTP methods
|
||||
- Empty origins validation
|
||||
- Negative MaxAge validation
|
||||
- Rule limit validation
|
||||
|
||||
#### 4. Wildcard Support (`TestCORSWithWildcards`)
|
||||
- Wildcard origins (`*`, `https://*.example.com`)
|
||||
- Wildcard headers (`*`)
|
||||
- Wildcard expose headers
|
||||
|
||||
#### 5. Rule Limits (`TestCORSRuleLimit`)
|
||||
- Maximum 100 rules per configuration
|
||||
- Rule limit enforcement
|
||||
- Large configuration handling
|
||||
|
||||
#### 6. Error Handling (`TestCORSErrorHandling`)
|
||||
- Non-existent bucket operations
|
||||
- Invalid configurations
|
||||
- Malformed requests
|
||||
|
||||
### HTTP-Level Tests
|
||||
|
||||
#### 1. Preflight Requests (`TestCORSPreflightRequest`)
|
||||
- OPTIONS request handling
|
||||
- CORS headers in preflight responses
|
||||
- Access-Control-Request-Method validation
|
||||
- Access-Control-Request-Headers validation
|
||||
|
||||
#### 2. Actual Requests (`TestCORSActualRequest`)
|
||||
- CORS headers in actual responses
|
||||
- Origin validation for real requests
|
||||
- Proper expose headers handling
|
||||
|
||||
#### 3. Origin Matching (`TestCORSOriginMatching`)
|
||||
- Exact origin matching
|
||||
- Wildcard origin matching (`*`)
|
||||
- Subdomain wildcard matching (`https://*.example.com`)
|
||||
- Non-matching origins (should be rejected)
|
||||
|
||||
#### 4. Header Matching (`TestCORSHeaderMatching`)
|
||||
- Wildcard header matching (`*`)
|
||||
- Specific header matching
|
||||
- Case-insensitive matching
|
||||
- Disallowed headers
|
||||
|
||||
#### 5. Method Matching (`TestCORSMethodMatching`)
|
||||
- Allowed methods verification
|
||||
- Disallowed methods rejection
|
||||
- Method-specific CORS behavior
|
||||
|
||||
#### 6. Multiple Rules (`TestCORSMultipleRulesMatching`)
|
||||
- Rule precedence and selection
|
||||
- Multiple rules with different configurations
|
||||
- Complex rule interactions
|
||||
|
||||
### Integration Tests
|
||||
|
||||
#### 1. Caching (`TestCORSCaching`)
|
||||
- CORS configuration caching
|
||||
- Cache invalidation
|
||||
- Cache performance
|
||||
|
||||
#### 2. Object Operations (`TestCORSObjectOperations`)
|
||||
- CORS with actual S3 operations
|
||||
- PUT/GET/DELETE objects with CORS
|
||||
- CORS headers in object responses
|
||||
|
||||
#### 3. Without Configuration (`TestCORSWithoutConfiguration`)
|
||||
- Behavior when no CORS configuration exists
|
||||
- Default CORS behavior
|
||||
- Graceful degradation
|
||||
|
||||
## Development
|
||||
|
||||
### Running Tests During Development
|
||||
|
||||
```bash
|
||||
# Start server for development
|
||||
make dev-start
|
||||
|
||||
# Run quick test
|
||||
make dev-test
|
||||
|
||||
# View logs in real-time
|
||||
make logs
|
||||
```
|
||||
|
||||
### Adding New Tests
|
||||
|
||||
1. Follow the existing naming convention (`TestCORSXxxYyy`)
|
||||
2. Use the helper functions (`getS3Client`, `createTestBucket`, etc.)
|
||||
3. Add cleanup with `defer cleanupTestBucket(t, client, bucketName)`
|
||||
4. Include proper error checking with `require.NoError(t, err)`
|
||||
5. Use assertions with `assert.Equal(t, expected, actual)`
|
||||
6. Add the test to the appropriate Makefile target
|
||||
|
||||
### Code Quality
|
||||
|
||||
```bash
|
||||
# Format code
|
||||
make fmt
|
||||
|
||||
# Run linter
|
||||
make lint
|
||||
|
||||
# Generate coverage report
|
||||
make coverage
|
||||
```
|
||||
|
||||
## Performance Notes
|
||||
|
||||
- Tests create and destroy buckets for each test case
|
||||
- Large configuration tests may take several minutes
|
||||
- Server startup typically takes 15-30 seconds
|
||||
- Tests run in parallel where possible for efficiency
|
||||
|
||||
## Integration with SeaweedFS
|
||||
|
||||
These tests validate the CORS implementation in:
|
||||
- `weed/s3api/cors/` - Core CORS package
|
||||
- `weed/s3api/s3api_bucket_cors_handlers.go` - HTTP handlers
|
||||
- `weed/s3api/s3api_server.go` - Router integration
|
||||
- `weed/s3api/s3api_bucket_config.go` - Configuration management
|
||||
|
||||
The tests ensure AWS S3 API compatibility and proper CORS behavior across all supported scenarios.
|
||||
Reference in New Issue
Block a user