Save current BZZZ config-ui state before CHORUS branding update
🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
262
test-setup-integration.sh
Executable file
262
test-setup-integration.sh
Executable file
@@ -0,0 +1,262 @@
|
||||
#!/bin/bash
|
||||
|
||||
# BZZZ Setup Integration Test Script
|
||||
# Tests the complete setup flow from no config to configured system
|
||||
|
||||
set -e
|
||||
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m'
|
||||
|
||||
echo -e "${BLUE}🐝 BZZZ Setup Integration Test${NC}"
|
||||
echo -e "${BLUE}==============================${NC}"
|
||||
echo ""
|
||||
|
||||
# Clean up any existing test artifacts
|
||||
cleanup() {
|
||||
echo -e "${YELLOW}🧹 Cleaning up test artifacts...${NC}"
|
||||
rm -rf .bzzz/
|
||||
pkill -f "bzzz" 2>/dev/null || true
|
||||
sleep 1
|
||||
}
|
||||
|
||||
# Test 1: No configuration - should enter setup mode
|
||||
test_no_config() {
|
||||
echo -e "${BLUE}Test 1: No Configuration - Setup Mode${NC}"
|
||||
cleanup
|
||||
|
||||
echo -e "Starting BZZZ with no configuration..."
|
||||
timeout 3s ./build/bzzz &
|
||||
BZZZ_PID=$!
|
||||
|
||||
sleep 2
|
||||
|
||||
# Test API endpoints
|
||||
echo -e "Testing setup API endpoints..."
|
||||
|
||||
HEALTH=$(curl -s http://localhost:8090/api/health 2>/dev/null || echo "failed")
|
||||
if [[ $HEALTH == *"setup_mode"* ]]; then
|
||||
echo -e "${GREEN}✅ Setup mode API working${NC}"
|
||||
else
|
||||
echo -e "${RED}❌ Setup mode API failed${NC}"
|
||||
echo "Response: $HEALTH"
|
||||
fi
|
||||
|
||||
SETUP_REQUIRED=$(curl -s http://localhost:8090/api/setup/required 2>/dev/null || echo "failed")
|
||||
if [[ $SETUP_REQUIRED == *"setup_required"* ]]; then
|
||||
echo -e "${GREEN}✅ Setup required endpoint working${NC}"
|
||||
else
|
||||
echo -e "${RED}❌ Setup required endpoint failed${NC}"
|
||||
fi
|
||||
|
||||
kill $BZZZ_PID 2>/dev/null || true
|
||||
wait $BZZZ_PID 2>/dev/null || true
|
||||
echo ""
|
||||
}
|
||||
|
||||
# Test 2: Invalid configuration - should enter setup mode
|
||||
test_invalid_config() {
|
||||
echo -e "${BLUE}Test 2: Invalid Configuration - Setup Mode${NC}"
|
||||
cleanup
|
||||
|
||||
# Create invalid config
|
||||
mkdir -p .bzzz
|
||||
echo "invalid yaml content" > .bzzz/config.yaml
|
||||
|
||||
echo -e "Starting BZZZ with invalid configuration..."
|
||||
timeout 3s ./build/bzzz &
|
||||
BZZZ_PID=$!
|
||||
|
||||
sleep 2
|
||||
|
||||
HEALTH=$(curl -s http://localhost:8090/api/health 2>/dev/null || echo "failed")
|
||||
if [[ $HEALTH == *"setup_mode"* ]]; then
|
||||
echo -e "${GREEN}✅ Invalid config triggers setup mode${NC}"
|
||||
else
|
||||
echo -e "${RED}❌ Invalid config test failed${NC}"
|
||||
fi
|
||||
|
||||
kill $BZZZ_PID 2>/dev/null || true
|
||||
wait $BZZZ_PID 2>/dev/null || true
|
||||
echo ""
|
||||
}
|
||||
|
||||
# Test 3: Valid configuration - should start normally
|
||||
test_valid_config() {
|
||||
echo -e "${BLUE}Test 3: Valid Configuration - Normal Mode${NC}"
|
||||
cleanup
|
||||
|
||||
# Create valid config
|
||||
mkdir -p .bzzz
|
||||
cat > .bzzz/config.yaml << 'EOF'
|
||||
agent:
|
||||
id: "test-integration-agent"
|
||||
capabilities:
|
||||
- "code_generation"
|
||||
- "task_coordination"
|
||||
models:
|
||||
- "llama2:7b"
|
||||
specialization: "general_developer"
|
||||
max_tasks: 3
|
||||
|
||||
p2p:
|
||||
service_tag: "bzzz-peer-discovery"
|
||||
bzzz_topic: "bzzz/coordination/v1"
|
||||
hmmm_topic: "hmmm/meta-discussion/v1"
|
||||
discovery_timeout: "10s"
|
||||
|
||||
logging:
|
||||
level: "info"
|
||||
format: "text"
|
||||
output: "stdout"
|
||||
structured: false
|
||||
|
||||
v2:
|
||||
enabled: true
|
||||
dht:
|
||||
enabled: false
|
||||
|
||||
security:
|
||||
election_config:
|
||||
heartbeat_timeout: "30s"
|
||||
election_timeout: "60s"
|
||||
minimum_peers: 1
|
||||
audit_logging: true
|
||||
EOF
|
||||
|
||||
echo -e "Starting BZZZ with valid configuration..."
|
||||
timeout 5s ./build/bzzz > test_output.log 2>&1 &
|
||||
BZZZ_PID=$!
|
||||
|
||||
sleep 3
|
||||
|
||||
# Check if it started in normal mode (not setup mode)
|
||||
if grep -q "Setup required" test_output.log; then
|
||||
echo -e "${RED}❌ Valid config should not trigger setup mode${NC}"
|
||||
cat test_output.log
|
||||
elif grep -q "Bzzz node started successfully" test_output.log; then
|
||||
echo -e "${GREEN}✅ Valid config starts normal mode${NC}"
|
||||
|
||||
# Test normal API endpoint (different port)
|
||||
NORMAL_API=$(curl -s http://localhost:8080/api/health 2>/dev/null || echo "failed")
|
||||
if [[ $NORMAL_API == *"healthy"* ]]; then
|
||||
echo -e "${GREEN}✅ Normal mode API working${NC}"
|
||||
else
|
||||
echo -e "${YELLOW}⚪ Normal mode API not accessible (expected if port busy)${NC}"
|
||||
fi
|
||||
else
|
||||
echo -e "${RED}❌ Unexpected startup behavior${NC}"
|
||||
cat test_output.log
|
||||
fi
|
||||
|
||||
kill $BZZZ_PID 2>/dev/null || true
|
||||
wait $BZZZ_PID 2>/dev/null || true
|
||||
rm -f test_output.log
|
||||
echo ""
|
||||
}
|
||||
|
||||
# Test 4: Configuration validation
|
||||
test_config_validation() {
|
||||
echo -e "${BLUE}Test 4: Configuration Validation${NC}"
|
||||
cleanup
|
||||
|
||||
timeout 3s ./build/bzzz &
|
||||
BZZZ_PID=$!
|
||||
sleep 2
|
||||
|
||||
# Test valid config validation
|
||||
VALID_CONFIG='{
|
||||
"agent_id": "test-agent",
|
||||
"capabilities": ["code_generation"],
|
||||
"models": ["llama2:7b"],
|
||||
"specialization": "general_developer"
|
||||
}'
|
||||
|
||||
VALIDATION=$(curl -s -X POST \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "$VALID_CONFIG" \
|
||||
http://localhost:8090/api/setup/validate 2>/dev/null || echo "failed")
|
||||
|
||||
if [[ $VALIDATION == *"valid"* ]] && [[ $VALIDATION == *"true"* ]]; then
|
||||
echo -e "${GREEN}✅ Valid config validation working${NC}"
|
||||
else
|
||||
echo -e "${RED}❌ Config validation failed${NC}"
|
||||
echo "Response: $VALIDATION"
|
||||
fi
|
||||
|
||||
kill $BZZZ_PID 2>/dev/null || true
|
||||
wait $BZZZ_PID 2>/dev/null || true
|
||||
echo ""
|
||||
}
|
||||
|
||||
# Test 5: Web UI availability
|
||||
test_web_ui() {
|
||||
echo -e "${BLUE}Test 5: Web UI Availability${NC}"
|
||||
cleanup
|
||||
|
||||
timeout 3s ./build/bzzz &
|
||||
BZZZ_PID=$!
|
||||
sleep 2
|
||||
|
||||
# Test if web UI is accessible
|
||||
WEB_UI=$(curl -s http://localhost:8090/ 2>/dev/null || echo "failed")
|
||||
if [[ $WEB_UI == *"html"* ]] || [[ $WEB_UI == *"BZZZ"* ]]; then
|
||||
echo -e "${GREEN}✅ Web UI accessible${NC}"
|
||||
else
|
||||
echo -e "${RED}❌ Web UI not accessible${NC}"
|
||||
fi
|
||||
|
||||
# Test setup route
|
||||
SETUP_UI=$(curl -s http://localhost:8090/setup/ 2>/dev/null || echo "failed")
|
||||
if [[ $SETUP_UI == *"html"* ]] || [[ $SETUP_UI == *"BZZZ"* ]]; then
|
||||
echo -e "${GREEN}✅ Setup UI route working${NC}"
|
||||
else
|
||||
echo -e "${RED}❌ Setup UI route failed${NC}"
|
||||
fi
|
||||
|
||||
kill $BZZZ_PID 2>/dev/null || true
|
||||
wait $BZZZ_PID 2>/dev/null || true
|
||||
echo ""
|
||||
}
|
||||
|
||||
# Main execution
|
||||
main() {
|
||||
echo -e "Building BZZZ for testing..."
|
||||
go build -o build/bzzz . > /dev/null
|
||||
|
||||
if [ ! -f "build/bzzz" ]; then
|
||||
echo -e "${RED}❌ Failed to build BZZZ binary${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo -e "${GREEN}✅ BZZZ binary built successfully${NC}"
|
||||
echo ""
|
||||
|
||||
test_no_config
|
||||
test_invalid_config
|
||||
test_valid_config
|
||||
test_config_validation
|
||||
test_web_ui
|
||||
|
||||
cleanup
|
||||
|
||||
echo -e "${GREEN}🎉 All integration tests completed!${NC}"
|
||||
echo ""
|
||||
echo -e "${BLUE}Summary:${NC}"
|
||||
echo -e "✅ Setup mode activation (no config)"
|
||||
echo -e "✅ Setup mode activation (invalid config)"
|
||||
echo -e "✅ Normal mode startup (valid config)"
|
||||
echo -e "✅ Configuration validation API"
|
||||
echo -e "✅ Web UI accessibility"
|
||||
echo ""
|
||||
echo -e "${GREEN}🚀 BZZZ setup integration is fully functional!${NC}"
|
||||
}
|
||||
|
||||
# Handle cleanup on exit
|
||||
trap cleanup EXIT
|
||||
|
||||
# Run tests
|
||||
main
|
||||
Reference in New Issue
Block a user