84 lines
No EOL
2.5 KiB
Bash
84 lines
No EOL
2.5 KiB
Bash
#!/usr/bin/env bash
|
|
set -e
|
|
|
|
# Configuration
|
|
CHAINFIRE_PORT=10000
|
|
IAM_PORT=10010
|
|
LIGHTNINGSTOR_PORT=10020
|
|
S3_PORT=10021
|
|
DATA_DIR=$(mktemp -d)
|
|
|
|
echo "Building services..."
|
|
(cd chainfire && cargo build -p chainfire-server)
|
|
(cd iam && cargo build -p iam-server)
|
|
(cd lightningstor && cargo build -p lightningstor-server)
|
|
|
|
CHAINFIRE_BIN="./chainfire/target/debug/chainfire"
|
|
IAM_BIN="./iam/target/debug/iam-server"
|
|
LIGHTNINGSTOR_BIN="./lightningstor/target/debug/lightningstor-server"
|
|
|
|
echo "Starting Chainfire..."
|
|
$CHAINFIRE_BIN \
|
|
--node-id 1 \
|
|
--data-dir "$DATA_DIR/chainfire" \
|
|
--api-addr "127.0.0.1:$CHAINFIRE_PORT" \
|
|
--raft-addr "127.0.0.1:$((CHAINFIRE_PORT + 1))" \
|
|
--gossip-addr "127.0.0.1:$((CHAINFIRE_PORT + 2))" \
|
|
--initial-cluster "1=127.0.0.1:$((CHAINFIRE_PORT + 1))" \
|
|
--metrics-port $((CHAINFIRE_PORT + 3)) &
|
|
CHAINFIRE_PID=$!
|
|
|
|
echo "Starting IAM..."
|
|
export IAM_CRED_MASTER_KEY=$(openssl rand -base64 32)
|
|
$IAM_BIN \
|
|
--addr "127.0.0.1:$IAM_PORT" \
|
|
--metrics-port $((IAM_PORT + 1)) &
|
|
IAM_PID=$!
|
|
|
|
echo "Starting LightningStor..."
|
|
export DEFAULT_ORG_ID=org1
|
|
export DEFAULT_PROJECT_ID=proj1
|
|
$LIGHTNINGSTOR_BIN \
|
|
--grpc-addr "127.0.0.1:$LIGHTNINGSTOR_PORT" \
|
|
--s3-addr "127.0.0.1:$S3_PORT" \
|
|
--chainfire-endpoint "http://127.0.0.1:$CHAINFIRE_PORT" \
|
|
--data-dir "$DATA_DIR/lightningstor" \
|
|
--metrics-port $((LIGHTNINGSTOR_PORT + 2)) \
|
|
--in-memory-metadata &
|
|
LIGHTNINGSTOR_PID=$!
|
|
|
|
# Cleanup function
|
|
cleanup() {
|
|
echo "Cleaning up..."
|
|
kill $CHAINFIRE_PID $IAM_PID $LIGHTNINGSTOR_PID 2>/dev/null || true
|
|
rm -rf "$DATA_DIR"
|
|
}
|
|
trap cleanup EXIT
|
|
|
|
# Wait for services to start
|
|
echo "Waiting for services to start..."
|
|
sleep 5
|
|
|
|
# Test S3 functionality
|
|
echo "Running S3 tests..."
|
|
# Use credentials from environment or default dummy values
|
|
export AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID:-AKIAIOSFODNN7EXAMPLE}
|
|
export AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY:-wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY}
|
|
export AWS_DEFAULT_REGION=us-east-1
|
|
|
|
ENDPOINT_URL="http://localhost:$S3_PORT"
|
|
|
|
echo "1. Create bucket"
|
|
aws --endpoint-url "$ENDPOINT_URL" s3 mb s3://test-bucket
|
|
|
|
echo "2. Upload object"
|
|
echo "Hello, LightningStor!" > "$DATA_DIR/testfile.txt"
|
|
aws --endpoint-url "$ENDPOINT_URL" s3 cp "$DATA_DIR/testfile.txt" s3://test-bucket/hello.txt
|
|
|
|
echo "3. Download object"
|
|
aws --endpoint-url "$ENDPOINT_URL" s3 cp s3://test-bucket/hello.txt "$DATA_DIR/downloaded.txt"
|
|
|
|
echo "4. Verify content"
|
|
diff "$DATA_DIR/testfile.txt" "$DATA_DIR/downloaded.txt"
|
|
|
|
echo "S3 tests passed successfully!" |