Skip to content

Commit 124951e

Browse files
authored
fix: add trap cleanup for port-forward and handle curl failure in deploy-model.sh (#54)
Signed-off-by: Aneesh Puttur <aneeshputtur@gmail.com>
1 parent de48a63 commit 124951e

File tree

2 files changed

+19
-8
lines changed

2 files changed

+19
-8
lines changed

README.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -140,9 +140,10 @@ make test NAMESPACE=llm-inference # Run conformance tests
140140
make test PROFILE=kserve-gpu # With specific profile
141141

142142
# Mock model (no GPU required)
143-
make deploy-mock-model # Deploy mock LLMInferenceService
144-
make test NAMESPACE=mock-vllm-test # Test against mock
145-
make clean-mock-model # Clean up mock
143+
make deploy-mock-model # Deploy mock LLMInferenceService
144+
MOCK_IMAGE=quay.io/myorg/vllm-mock:latest make deploy-mock-model # Custom image
145+
make test NAMESPACE=mock-vllm-test # Test against mock
146+
make clean-mock-model # Clean up mock
146147

147148
# Other
148149
make status # Show status

test/deploy-model.sh

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -143,25 +143,35 @@ kubectl get pods -n "$NAMESPACE"
143143
SERVICE_URL=$(kubectl get llmisvc "$MODEL_NAME" -n "$NAMESPACE" -o jsonpath='{.status.url}')
144144
echo ""
145145

146+
PF_PID=""
147+
cleanup_port_forward() {
148+
[[ -n "$PF_PID" ]] && kill "$PF_PID" 2>/dev/null || true
149+
}
150+
trap cleanup_port_forward EXIT
151+
146152
if [[ -z "$SERVICE_URL" ]]; then
147153
echo "[INFO] No external URL (no LoadBalancer — expected on KinD/minikube)"
148154
echo "[INFO] Testing inference via port-forward to mock pod..."
149155
POD_NAME=$(kubectl get pod -n "$NAMESPACE" -l app.kubernetes.io/name="$MODEL_NAME",kserve.io/component=workload -o jsonpath='{.items[0].metadata.name}' 2>/dev/null)
156+
if [[ -z "$POD_NAME" ]]; then
157+
echo "[WARN] Could not find mock pod for port-forward"
158+
echo "=== Mock model deployed (inference not verified) ==="
159+
echo " LLMInferenceService: $MODEL_NAME"
160+
echo " Namespace: $NAMESPACE"
161+
echo " Cleanup: make clean-mock-model"
162+
exit 0
163+
fi
150164
kubectl port-forward -n "$NAMESPACE" "pod/$POD_NAME" 8000:8000 &
151165
PF_PID=$!
152166
sleep 3
153167
SERVICE_URL="https://localhost:8000"
154-
CLEANUP_PF=true
155168
else
156169
echo "[INFO] Testing inference at $SERVICE_URL ..."
157-
CLEANUP_PF=false
158170
fi
159171

160172
RESPONSE=$(curl -s -k --max-time 30 -X POST "${SERVICE_URL}/v1/chat/completions" \
161173
-H "Content-Type: application/json" \
162-
-d '{"model":"mock-model","messages":[{"role":"user","content":"Hello"}],"max_tokens":20}')
163-
164-
[[ "$CLEANUP_PF" == "true" ]] && kill $PF_PID 2>/dev/null || true
174+
-d '{"model":"mock-model","messages":[{"role":"user","content":"Hello"}],"max_tokens":20}' || true)
165175

166176
if echo "$RESPONSE" | python3 -c "import sys,json; d=json.load(sys.stdin); print('[PASS] Response:', d['choices'][0]['message']['content'])" 2>/dev/null; then
167177
echo ""

0 commit comments

Comments
 (0)