119 lines
2.9 KiB
Bash
Executable File
119 lines
2.9 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# RuVector Benchmark Setup Script
|
|
# Sets up the benchmarking environment
|
|
#
|
|
|
|
set -e
|
|
|
|
echo "=========================================="
|
|
echo "RuVector Benchmark Suite Setup"
|
|
echo "=========================================="
|
|
echo ""
|
|
|
|
# Colors
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# Check if k6 is installed
|
|
echo -n "Checking for k6... "
|
|
if command -v k6 &> /dev/null; then
|
|
echo -e "${GREEN}✓ Found k6 $(k6 version --quiet)${NC}"
|
|
else
|
|
echo -e "${RED}✗ k6 not found${NC}"
|
|
echo ""
|
|
echo "Please install k6:"
|
|
echo " macOS: brew install k6"
|
|
echo " Linux: See https://k6.io/docs/getting-started/installation/"
|
|
echo " Windows: choco install k6"
|
|
exit 1
|
|
fi
|
|
|
|
# Check if Node.js is installed
|
|
echo -n "Checking for Node.js... "
|
|
if command -v node &> /dev/null; then
|
|
echo -e "${GREEN}✓ Found Node.js $(node --version)${NC}"
|
|
else
|
|
echo -e "${RED}✗ Node.js not found${NC}"
|
|
echo "Please install Node.js v18 or higher"
|
|
exit 1
|
|
fi
|
|
|
|
# Check if TypeScript is installed
|
|
echo -n "Checking for TypeScript... "
|
|
if command -v ts-node &> /dev/null; then
|
|
echo -e "${GREEN}✓ Found ts-node${NC}"
|
|
else
|
|
echo -e "${YELLOW}! ts-node not found, installing...${NC}"
|
|
npm install -g typescript ts-node
|
|
fi
|
|
|
|
# Check for Claude Flow (optional)
|
|
echo -n "Checking for Claude Flow... "
|
|
if command -v claude-flow &> /dev/null; then
|
|
echo -e "${GREEN}✓ Found claude-flow${NC}"
|
|
HOOKS_ENABLED=true
|
|
else
|
|
echo -e "${YELLOW}! claude-flow not found (optional)${NC}"
|
|
HOOKS_ENABLED=false
|
|
fi
|
|
|
|
# Create results directory
|
|
echo -n "Creating results directory... "
|
|
mkdir -p results
|
|
echo -e "${GREEN}✓${NC}"
|
|
|
|
# Set up environment
|
|
echo ""
|
|
echo "Setting up environment..."
|
|
echo ""
|
|
|
|
# Prompt for BASE_URL
|
|
read -p "Enter RuVector cluster URL (default: http://localhost:8080): " BASE_URL
|
|
BASE_URL=${BASE_URL:-http://localhost:8080}
|
|
|
|
# Create .env file
|
|
cat > .env << EOF
|
|
# RuVector Benchmark Configuration
|
|
BASE_URL=${BASE_URL}
|
|
PARALLEL=1
|
|
ENABLE_HOOKS=${HOOKS_ENABLED}
|
|
LOG_LEVEL=info
|
|
|
|
# Optional: Slack notifications
|
|
# SLACK_WEBHOOK_URL=https://hooks.slack.com/services/...
|
|
|
|
# Optional: Email notifications
|
|
# EMAIL_NOTIFICATION=team@example.com
|
|
EOF
|
|
|
|
echo -e "${GREEN}✓ Created .env file${NC}"
|
|
|
|
# Make scripts executable
|
|
chmod +x setup.sh
|
|
chmod +x benchmark-runner.ts 2>/dev/null || true
|
|
|
|
echo ""
|
|
echo "=========================================="
|
|
echo -e "${GREEN}Setup Complete!${NC}"
|
|
echo "=========================================="
|
|
echo ""
|
|
echo "Quick Start:"
|
|
echo ""
|
|
echo " # List available scenarios"
|
|
echo " ts-node benchmark-runner.ts list"
|
|
echo ""
|
|
echo " # Run quick validation (45 minutes)"
|
|
echo " ts-node benchmark-runner.ts run baseline_100m"
|
|
echo ""
|
|
echo " # Run standard test suite"
|
|
echo " ts-node benchmark-runner.ts group standard_suite"
|
|
echo ""
|
|
echo " # View results"
|
|
echo " open visualization-dashboard.html"
|
|
echo ""
|
|
echo "For detailed documentation, see README.md"
|
|
echo ""
|