#!/bin/bash # perf-test.sh - Run comprehensive performance tests for Gemini echo "Running comprehensive performance tests for Gemini..." # Create results directory if it doesn't exist mkdir -p .gemini/results # Run unit tests echo "Running unit tests..." go test -v ./... | tee .gemini/results/unit-tests.log # Run concurrency tests echo "Running concurrency tests..." go test -v -run=Concurrent ./... | tee .gemini/results/concurrency-tests.log # Run benchmarks echo "Running benchmarks..." go test -bench=. -benchmem ./... | tee .gemini/results/benchmarks.log # Run benchmarks with CPU profiling echo "Running benchmarks with CPU profiling..." go test -bench=. -cpuprofile=.gemini/results/cpu.prof ./... | tee .gemini/results/cpu-bench.log # Run benchmarks with memory profiling echo "Running benchmarks with memory profiling..." go test -bench=. -memprofile=.gemini/results/mem.prof ./... | tee .gemini/results/mem-bench.log # Run benchmarks with goroutine profiling echo "Running benchmarks with goroutine profiling..." go test -bench=. -blockprofile=.gemini/results/block.prof ./... | tee .gemini/results/block-bench.log # Check for errors if [ $? -eq 0 ]; then echo "All performance tests completed successfully!" echo "Results saved to .gemini/results/" else echo "Some performance tests failed!" echo "Check .gemini/results/ for details" exit 1 fi