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.
98 lines
2.8 KiB
98 lines
2.8 KiB
# S3 delete regression test harness
|
|
|
|
.PHONY: all test help build-weed check-deps start-server stop-server test-delete test-with-server clean logs
|
|
|
|
WEED_BINARY := ../../../weed/weed_binary
|
|
S3_PORT := 8333
|
|
TEST_TIMEOUT := 10m
|
|
SERVER_DIR := ./test-volume-data
|
|
S3_CONFIG := ./test_s3.json
|
|
|
|
.DEFAULT_GOAL := help
|
|
|
|
all: test
|
|
|
|
test: test-with-server
|
|
|
|
help:
|
|
@echo "S3 delete regression test harness"
|
|
@echo ""
|
|
@echo "Available targets:"
|
|
@echo " build-weed - Build the SeaweedFS binary"
|
|
@echo " start-server - Start SeaweedFS with S3 enabled"
|
|
@echo " stop-server - Stop the test server"
|
|
@echo " test-delete - Run delete regression tests"
|
|
@echo " test-with-server - Start server, run tests, stop server"
|
|
@echo " logs - Show server logs"
|
|
@echo " clean - Remove test artifacts"
|
|
|
|
build-weed:
|
|
@echo "Building SeaweedFS binary..."
|
|
@cd ../../../weed && go build -o weed_binary .
|
|
@chmod +x $(WEED_BINARY)
|
|
|
|
check-deps: build-weed
|
|
@command -v go >/dev/null 2>&1 || (echo "Go is required but not installed" && exit 1)
|
|
@test -f $(WEED_BINARY) || (echo "SeaweedFS binary not found at $(WEED_BINARY)" && exit 1)
|
|
@test -f $(S3_CONFIG) || (echo "S3 config not found at $(S3_CONFIG)" && exit 1)
|
|
|
|
start-server: check-deps
|
|
@echo "Starting SeaweedFS server for delete regression tests..."
|
|
@rm -f weed-server.pid
|
|
@mkdir -p $(SERVER_DIR)
|
|
@$(WEED_BINARY) mini \
|
|
-dir=$(SERVER_DIR) \
|
|
-s3 \
|
|
-s3.port=$(S3_PORT) \
|
|
-s3.config=$(S3_CONFIG) \
|
|
-master.peers=none \
|
|
> weed-test.log 2>&1 & echo $$! > weed-server.pid
|
|
@for i in $$(seq 1 60); do \
|
|
if curl -sS -o /dev/null http://127.0.0.1:$(S3_PORT)/ >/dev/null 2>&1; then \
|
|
echo "SeaweedFS S3 server is ready on port $(S3_PORT)"; \
|
|
exit 0; \
|
|
fi; \
|
|
sleep 1; \
|
|
done; \
|
|
echo "SeaweedFS S3 server failed to start"; \
|
|
echo "=== Server logs ==="; \
|
|
test -f weed-test.log && cat weed-test.log || true; \
|
|
exit 1
|
|
|
|
stop-server:
|
|
@echo "Stopping SeaweedFS server..."
|
|
@if [ -f weed-server.pid ]; then \
|
|
SERVER_PID=$$(cat weed-server.pid); \
|
|
kill -TERM $$SERVER_PID 2>/dev/null || true; \
|
|
for i in $$(seq 1 20); do \
|
|
if ! kill -0 $$SERVER_PID >/dev/null 2>&1; then \
|
|
break; \
|
|
fi; \
|
|
sleep 0.1; \
|
|
done; \
|
|
if kill -0 $$SERVER_PID >/dev/null 2>&1; then \
|
|
kill -KILL $$SERVER_PID 2>/dev/null || true; \
|
|
fi; \
|
|
rm -f weed-server.pid; \
|
|
fi
|
|
|
|
test-delete: check-deps
|
|
@echo "Running delete regression tests..."
|
|
@go test -v -timeout=$(TEST_TIMEOUT) .
|
|
|
|
test-with-server: start-server
|
|
@trap "$(MAKE) stop-server" EXIT; \
|
|
$(MAKE) test-delete || (echo "=== Last 100 lines of server logs ===" && tail -100 weed-test.log && exit 1)
|
|
@$(MAKE) stop-server
|
|
|
|
logs:
|
|
@if test -f weed-test.log; then \
|
|
tail -f weed-test.log; \
|
|
else \
|
|
echo "No server log file found."; \
|
|
fi
|
|
|
|
clean:
|
|
@$(MAKE) stop-server
|
|
@rm -f weed-test.log weed-server.pid
|
|
@rm -rf $(SERVER_DIR)
|