You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

149 lines
3.6 KiB

#!/bin/bash
set -e
echo "=== SeaweedFS Spark Integration Tests Quick Start ==="
echo ""
# Check if SeaweedFS is running
check_seaweedfs() {
echo "Checking if SeaweedFS is running..."
if curl -f http://localhost:8888/ > /dev/null 2>&1; then
echo "✓ SeaweedFS filer is accessible at http://localhost:8888"
return 0
else
echo "✗ SeaweedFS filer is not accessible"
return 1
fi
}
# Start SeaweedFS with Docker if not running
start_seaweedfs() {
echo ""
echo "Starting SeaweedFS with Docker..."
docker-compose up -d seaweedfs-master seaweedfs-volume seaweedfs-filer
echo "Waiting for SeaweedFS to be ready..."
for i in {1..30}; do
if curl -f http://localhost:8888/ > /dev/null 2>&1; then
echo "✓ SeaweedFS is ready!"
return 0
fi
echo -n "."
sleep 2
done
echo ""
echo "✗ SeaweedFS failed to start"
return 1
}
# Build the project
build_project() {
echo ""
echo "Building the project..."
mvn clean package -DskipTests
echo "✓ Build completed"
}
# Run tests
run_tests() {
echo ""
echo "Running integration tests..."
export SEAWEEDFS_TEST_ENABLED=true
mvn test
echo "✓ Tests completed"
}
# Run example
run_example() {
echo ""
echo "Running example application..."
if ! command -v spark-submit > /dev/null; then
echo "⚠ spark-submit not found. Skipping example application."
echo "To run the example, install Apache Spark and try: make run-example"
return 0
fi
spark-submit \
--class seaweed.spark.SparkSeaweedFSExample \
--master local[2] \
--conf spark.hadoop.fs.seaweedfs.impl=seaweed.hdfs.SeaweedFileSystem \
--conf spark.hadoop.fs.seaweed.filer.host=localhost \
--conf spark.hadoop.fs.seaweed.filer.port=8888 \
--conf spark.hadoop.fs.seaweed.filer.port.grpc=18888 \
target/seaweedfs-spark-integration-tests-1.0-SNAPSHOT.jar \
seaweedfs://localhost:8888/spark-quickstart-output
echo "✓ Example completed"
}
# Cleanup
cleanup() {
echo ""
echo "Cleaning up..."
docker-compose down -v
echo "✓ Cleanup completed"
}
# Main execution
main() {
# Check if Docker is available
if ! command -v docker > /dev/null; then
echo "Error: Docker is not installed or not in PATH"
exit 1
fi
# Check if Maven is available
if ! command -v mvn > /dev/null; then
echo "Error: Maven is not installed or not in PATH"
exit 1
fi
# Check if SeaweedFS is running, if not start it
if ! check_seaweedfs; then
read -p "Do you want to start SeaweedFS with Docker? (y/n) " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
start_seaweedfs || exit 1
else
echo "Please start SeaweedFS manually and rerun this script."
exit 1
fi
fi
# Build project
build_project || exit 1
# Run tests
run_tests || exit 1
# Run example if Spark is available
run_example
echo ""
echo "=== Quick Start Completed Successfully! ==="
echo ""
echo "Next steps:"
echo " - View test results in target/surefire-reports/"
echo " - Check example output at http://localhost:8888/"
echo " - Run 'make help' for more options"
echo " - Read README.md for detailed documentation"
echo ""
read -p "Do you want to stop SeaweedFS? (y/n) " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
cleanup
fi
}
# Handle Ctrl+C
trap cleanup INT
# Run main
main