feat(tests): improve Ollama server management in agent test suite
- Enhanced the Ollama server startup process with additional logging for better diagnostics. - Increased the maximum wait time for the server to start from 30 to 60 seconds for CI environments. - Added checks to ensure the Ollama process remains alive during startup. - Included a check for the availability of the curl command, which is required for health checks. Benefits: - Improves reliability and feedback during the Ollama server integration tests, facilitating easier troubleshooting.
This commit is contained in:
@@ -51,27 +51,45 @@ start_ollama_server() {
|
|||||||
# Check if ollama command exists
|
# Check if ollama command exists
|
||||||
if ! command -v ollama &> /dev/null; then
|
if ! command -v ollama &> /dev/null; then
|
||||||
echo -e "${YELLOW}⚠ Ollama command not found. Skipping Ollama tests.${NC}"
|
echo -e "${YELLOW}⚠ Ollama command not found. Skipping Ollama tests.${NC}"
|
||||||
|
echo "PATH: $PATH"
|
||||||
|
echo "Which ollama: $(which ollama 2>&1 || echo 'not found')"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Starting Ollama server..."
|
echo "Starting Ollama server..."
|
||||||
|
echo "Ollama path: $(which ollama)"
|
||||||
ollama serve > /tmp/ollama_server.log 2>&1 &
|
ollama serve > /tmp/ollama_server.log 2>&1 &
|
||||||
OLLAMA_PID=$!
|
OLLAMA_PID=$!
|
||||||
|
echo "Ollama PID: $OLLAMA_PID"
|
||||||
|
|
||||||
# Wait for server to be ready (max 30 seconds)
|
# Wait for server to be ready (max 60 seconds for CI)
|
||||||
local max_wait=30
|
local max_wait=60
|
||||||
local waited=0
|
local waited=0
|
||||||
|
echo -n "Waiting for Ollama server to start"
|
||||||
while [ $waited -lt $max_wait ]; do
|
while [ $waited -lt $max_wait ]; do
|
||||||
if curl -s http://localhost:11434/api/tags > /dev/null 2>&1; then
|
if curl -s http://localhost:11434/api/tags > /dev/null 2>&1; then
|
||||||
echo -e "${GREEN}✓ Ollama server started (PID: $OLLAMA_PID)${NC}"
|
echo ""
|
||||||
|
echo -e "${GREEN}✓ Ollama server started (PID: $OLLAMA_PID) after ${waited}s${NC}"
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
echo -n "."
|
||||||
sleep 1
|
sleep 1
|
||||||
waited=$((waited + 1))
|
waited=$((waited + 1))
|
||||||
|
|
||||||
|
# Check if process is still alive
|
||||||
|
if ! kill -0 "$OLLAMA_PID" 2>/dev/null; then
|
||||||
|
echo ""
|
||||||
|
echo -e "${RED}✗ Ollama server process died${NC}"
|
||||||
|
echo "Last 20 lines of server log:"
|
||||||
|
tail -20 /tmp/ollama_server.log || echo "No log available"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
echo ""
|
||||||
echo -e "${RED}✗ Ollama server failed to start within ${max_wait}s${NC}"
|
echo -e "${RED}✗ Ollama server failed to start within ${max_wait}s${NC}"
|
||||||
echo "Check logs at: /tmp/ollama_server.log"
|
echo "Last 20 lines of server log:"
|
||||||
|
tail -20 /tmp/ollama_server.log || echo "No log available"
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -80,12 +98,16 @@ setup_ollama_model() {
|
|||||||
local model="$1"
|
local model="$1"
|
||||||
echo "Checking for Ollama model: $model"
|
echo "Checking for Ollama model: $model"
|
||||||
|
|
||||||
|
echo "Current models:"
|
||||||
|
ollama list || echo "Failed to list models"
|
||||||
|
|
||||||
if ollama list | grep -q "${model%:*}"; then
|
if ollama list | grep -q "${model%:*}"; then
|
||||||
echo -e "${GREEN}✓ Model $model already available${NC}"
|
echo -e "${GREEN}✓ Model $model already available${NC}"
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Pulling Ollama model: $model (this may take a while)..."
|
echo "Pulling Ollama model: $model (this may take a while)..."
|
||||||
|
echo "This is required for first-time setup in CI"
|
||||||
if ollama pull "$model"; then
|
if ollama pull "$model"; then
|
||||||
echo -e "${GREEN}✓ Model $model pulled successfully${NC}"
|
echo -e "${GREEN}✓ Model $model pulled successfully${NC}"
|
||||||
return 0
|
return 0
|
||||||
@@ -114,6 +136,15 @@ fi
|
|||||||
PROVIDER=$1
|
PROVIDER=$1
|
||||||
echo "✅ Provider: $PROVIDER"
|
echo "✅ Provider: $PROVIDER"
|
||||||
|
|
||||||
|
# Check for curl (needed for Ollama health checks)
|
||||||
|
if [ "$PROVIDER" == "ollama" ]; then
|
||||||
|
if ! command -v curl &> /dev/null; then
|
||||||
|
echo -e "${RED}✗ curl command not found (required for Ollama)${NC}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "✅ curl available"
|
||||||
|
fi
|
||||||
|
|
||||||
# Check binary exists
|
# Check binary exists
|
||||||
if [ ! -f "$Z3ED" ]; then
|
if [ ! -f "$Z3ED" ]; then
|
||||||
echo -e "${RED}✗ z3ed binary not found at: $Z3ED${NC}"
|
echo -e "${RED}✗ z3ed binary not found at: $Z3ED${NC}"
|
||||||
@@ -308,9 +339,9 @@ if [ -f "$RESULTS_FILE" ]; then
|
|||||||
cat "$RESULTS_FILE"
|
cat "$RESULTS_FILE"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
local total=$(wc -l < "$RESULTS_FILE" | tr -d ' ')
|
total=$(wc -l < "$RESULTS_FILE" | tr -d ' ')
|
||||||
local passed=$(grep -c "PASSED" "$RESULTS_FILE" || echo "0")
|
passed=$(grep -c "PASSED" "$RESULTS_FILE" || echo "0")
|
||||||
local failed=$(grep -c "FAILED" "$RESULTS_FILE" || echo "0")
|
failed=$(grep -c "FAILED" "$RESULTS_FILE" || echo "0")
|
||||||
|
|
||||||
echo "Total Tests: $total"
|
echo "Total Tests: $total"
|
||||||
echo -e "${GREEN}Passed: $passed${NC}"
|
echo -e "${GREEN}Passed: $passed${NC}"
|
||||||
|
|||||||
Reference in New Issue
Block a user