Repository navigation
Add 5 bash resource checker evals for kubectl exec scenarios #1456
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from all commits
94982ea
139699e
23a455f
b9c2240
3c4d80c
c73a813
26a5f9a
ce7cc19
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,42 @@ | ||
| apiVersion: v1 | ||
| kind: Pod | ||
| metadata: | ||
| name: data-cruncher | ||
| namespace: app-211 | ||
| labels: | ||
| app: data-cruncher | ||
| spec: | ||
| containers: | ||
| - name: worker | ||
| image: python:3.11-alpine | ||
| command: | ||
| - /bin/sh | ||
| - -c | ||
| - | | ||
| # Create 95 normal sleep processes (minimal memory) | ||
| for i in $(seq 1 95); do | ||
| sleep 3600 & | ||
| done | ||
|
|
||
| # Create 5 memory-hungry Python processes (~20MB each) | ||
| for i in $(seq 1 5); do | ||
| python3 -c " | ||
| import time | ||
| # Allocate ~20MB of memory | ||
| data = bytearray(20 * 1024 * 1024) | ||
| # Fill with data to ensure it's allocated | ||
| for j in range(0, len(data), 4096): | ||
| data[j] = 0xff | ||
| time.sleep(3600) | ||
| " & | ||
| done | ||
|
|
||
| # Keep container running | ||
| sleep 3600 | ||
| resources: | ||
| limits: | ||
| memory: "256Mi" | ||
| cpu: "200m" | ||
| requests: | ||
| memory: "128Mi" | ||
| cpu: "100m" |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,61 @@ | ||
| user_prompt: "The data-cruncher pod in namespace app-211 is consuming too much memory. Check which processes inside the container are using the most memory and identify any that stand out." | ||
|
|
||
| include_tool_calls: true | ||
|
|
||
| expected_output: | ||
| - "Must call bash tool with kubectl exec" | ||
| - "Must identify Python processes as consuming the most memory" | ||
| - "Must report processes sorted by memory usage or identify top consumers" | ||
|
|
||
| description: | | ||
| Tests that Holmes can use bash to run kubectl exec and inspect processes inside a container. | ||
| The pod runs 95 sleep processes plus 5 Python processes that allocate ~20MB each. | ||
| Holmes must use bash with 'kubectl exec' since no existing toolset can inspect in-container processes. | ||
|
|
||
| tags: | ||
| - kubernetes | ||
| - regression | ||
| - bash-resource-checker | ||
|
|
||
| before_test: | | ||
| kubectl create namespace app-211 --dry-run=client -o yaml | kubectl apply -f - | ||
| kubectl apply -f manifest.yaml | ||
|
|
||
| # Wait for pod to be ready | ||
| POD_READY=false | ||
| for i in {1..60}; do | ||
| if kubectl wait --for=condition=ready pod/data-cruncher -n app-211 --timeout=2s 2>/dev/null; then | ||
| echo "Pod ready!" | ||
| POD_READY=true | ||
| break | ||
| fi | ||
| sleep 1 | ||
| done | ||
|
|
||
| if [ "$POD_READY" = false ]; then | ||
| echo "Pod not ready after 60 seconds" | ||
| kubectl get pods -n app-211 | ||
| kubectl describe pod/data-cruncher -n app-211 | ||
| exit 1 | ||
| fi | ||
|
|
||
| # Verify processes are running inside the container | ||
| PROC_COUNT=$(kubectl exec -n app-211 data-cruncher -- ps aux 2>/dev/null | wc -l) | ||
| echo "Process count in container: $PROC_COUNT" | ||
| if [ "$PROC_COUNT" -lt 50 ]; then | ||
| echo "Not enough processes running in container" | ||
| kubectl exec -n app-211 data-cruncher -- ps aux | ||
| exit 1 | ||
| fi | ||
|
|
||
| # Verify Python processes are running | ||
| PYTHON_COUNT=$(kubectl exec -n app-211 data-cruncher -- ps aux 2>/dev/null | grep -c "python3" || echo "0") | ||
| echo "Python process count: $PYTHON_COUNT" | ||
| if [ "$PYTHON_COUNT" -lt 5 ]; then | ||
| echo "Not enough Python processes running" | ||
| exit 1 | ||
| fi | ||
| echo "Setup complete - container has $PROC_COUNT processes including $PYTHON_COUNT Python processes" | ||
|
|
||
| after_test: | | ||
| kubectl delete namespace app-211 --ignore-not-found |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,21 @@ | ||
| # Bash toolset for process memory audit | ||
| # Enable bash with kubectl exec in allow list | ||
| # Disable kubernetes toolsets to force use of bash for in-container inspection | ||
| toolsets: | ||
| bash: | ||
| enabled: true | ||
| config: | ||
| allow: | ||
| - "kubectl exec" | ||
| - "kubectl get" | ||
| deny: [] | ||
| kubernetes/core: | ||
| enabled: true # Keep basic k8s tools for context | ||
| kubernetes/logs: | ||
| enabled: false | ||
| kubernetes/live-metrics: | ||
| enabled: false | ||
| kubernetes/kube-prometheus-stack: | ||
| enabled: false | ||
| kubernetes/krew-extras: | ||
| enabled: false |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,39 @@ | ||
| apiVersion: v1 | ||
| kind: Pod | ||
| metadata: | ||
| name: file-processor | ||
| namespace: app-212 | ||
| labels: | ||
| app: file-processor | ||
| spec: | ||
| containers: | ||
| - name: worker | ||
| image: alpine:3.19 | ||
| command: | ||
| - /bin/sh | ||
| - -c | ||
| - | | ||
| mkdir -p /var/data | ||
|
|
||
| # Create 90 small files (1KB each) | ||
| for i in $(seq 1 90); do | ||
| dd if=/dev/zero of=/var/data/small_$i.dat bs=1K count=1 2>/dev/null | ||
| done | ||
|
|
||
| # Create 10 large files (15MB each) - use /dev/zero for speed | ||
| for i in $(seq 91 100); do | ||
| dd if=/dev/zero of=/var/data/large_$i.dat bs=1M count=15 2>/dev/null | ||
| done | ||
|
|
||
| echo "Files created successfully" | ||
| ls -la /var/data | head -20 | ||
|
|
||
| # Keep container running | ||
| sleep 3600 | ||
| resources: | ||
| limits: | ||
| memory: "256Mi" | ||
| cpu: "200m" | ||
| requests: | ||
| memory: "128Mi" | ||
| cpu: "100m" |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,71 @@ | ||
| user_prompt: "The file-processor pod in namespace app-212 might have disk space issues. Check which files in /var/data are larger than 10MB and report the total disk usage of that directory." | ||
|
|
||
| include_tool_calls: true | ||
|
|
||
| expected_output: | ||
| - "Must call bash tool with kubectl exec" | ||
| - "Must identify files larger than 10MB (should find files like large_91.dat through large_100.dat)" | ||
| - "Must report disk usage information" | ||
|
|
||
| description: | | ||
| Tests that Holmes can use bash to run kubectl exec and inspect filesystem inside a container. | ||
| The pod has 100 files in /var/data: 90 small files (1KB each) and 10 large files (15MB each). | ||
| Holmes must use bash with 'kubectl exec' since no existing toolset can access container filesystems. | ||
|
|
||
| tags: | ||
| - kubernetes | ||
| - regression | ||
| - bash-resource-checker | ||
|
|
||
| before_test: | | ||
| kubectl create namespace app-212 --dry-run=client -o yaml | kubectl apply -f - | ||
| kubectl apply -f manifest.yaml | ||
|
|
||
| # Wait for pod to be ready | ||
| POD_READY=false | ||
| for i in {1..60}; do | ||
| if kubectl wait --for=condition=ready pod/file-processor -n app-212 --timeout=2s 2>/dev/null; then | ||
| echo "Pod ready!" | ||
| POD_READY=true | ||
| break | ||
| fi | ||
| sleep 1 | ||
| done | ||
|
|
||
| if [ "$POD_READY" = false ]; then | ||
| echo "Pod not ready after 60 seconds" | ||
| kubectl get pods -n app-212 | ||
| kubectl describe pod/file-processor -n app-212 | ||
| exit 1 | ||
| fi | ||
|
|
||
| # Wait for files to be created | ||
| FILES_READY=false | ||
| for i in {1..30}; do | ||
| FILE_COUNT=$(kubectl exec -n app-212 file-processor -- ls /var/data 2>/dev/null | wc -l) | ||
| echo "Attempt $i: $FILE_COUNT files in /var/data" | ||
| if [ "$FILE_COUNT" -ge 100 ]; then | ||
| echo "All 100 files created!" | ||
| FILES_READY=true | ||
| break | ||
| fi | ||
| sleep 2 | ||
| done | ||
|
|
||
| if [ "$FILES_READY" = false ]; then | ||
| echo "Files not created properly" | ||
| kubectl exec -n app-212 file-processor -- ls -la /var/data | ||
| exit 1 | ||
| fi | ||
|
|
||
| # Verify large files exist | ||
| LARGE_COUNT=$(kubectl exec -n app-212 file-processor -- find /var/data -size +10M 2>/dev/null | wc -l) | ||
| echo "Large files (>10MB): $LARGE_COUNT" | ||
| if [ "$LARGE_COUNT" -lt 10 ]; then | ||
| echo "Not enough large files created" | ||
| exit 1 | ||
| fi | ||
| echo "Setup complete" | ||
|
|
||
| after_test: | | ||
| kubectl delete namespace app-212 --ignore-not-found |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,20 @@ | ||
| # Bash toolset for container disk audit | ||
| # Enable bash with kubectl exec in allow list | ||
| toolsets: | ||
| bash: | ||
| enabled: true | ||
| config: | ||
| allow: | ||
| - "kubectl exec" | ||
| - "kubectl get" | ||
| deny: [] | ||
| kubernetes/core: | ||
| enabled: true | ||
| kubernetes/logs: | ||
| enabled: false | ||
| kubernetes/live-metrics: | ||
| enabled: false | ||
| kubernetes/kube-prometheus-stack: | ||
| enabled: false | ||
| kubernetes/krew-extras: | ||
| enabled: false |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,51 @@ | ||
| apiVersion: v1 | ||
| kind: Pod | ||
| metadata: | ||
| name: connection-pool | ||
| namespace: app-213 | ||
| labels: | ||
| app: connection-pool | ||
| spec: | ||
| containers: | ||
| - name: worker | ||
| image: alpine:3.19 | ||
| command: | ||
| - /bin/sh | ||
| - -c | ||
| - | | ||
| # Install netcat and iproute2 for ss | ||
| apk add --no-cache netcat-openbsd iproute2 >/dev/null 2>&1 | ||
|
|
||
| # Create 50 TCP listeners on ports 8001-8050 | ||
| for port in $(seq 8001 8050); do | ||
| # Use while loop to keep listener alive after connection | ||
| while true; do nc -l -p $port; done & | ||
| done | ||
|
|
||
| echo "Created 50 TCP listeners" | ||
|
|
||
| # Wait a moment for listeners to start | ||
| sleep 2 | ||
|
|
||
| # Create connections to each listener (these will be ESTABLISHED) | ||
| for port in $(seq 8001 8050); do | ||
| # Keep connection open by sleeping after connect | ||
| (sleep 3600 | nc 127.0.0.1 $port) & | ||
| done | ||
|
|
||
| echo "Created 50 client connections" | ||
|
|
||
| # Show connection summary | ||
| sleep 2 | ||
| echo "Connection states:" | ||
| ss -tan | head -20 | ||
|
|
||
| # Keep container running | ||
| sleep 3600 | ||
|
Comment on lines
+12
to
+44
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chain🏁 Script executed: cd tests/llm/fixtures/test_ask_holmes/213_bash_network_connection_audit && \
cat -n manifest.yamlRepository: HolmesGPT/holmesgpt Length of output: 1731 Move the startup script to a Kubernetes Secret. Suggested structure spec:
+ volumes:
+ - name: entrypoint
+ secret:
+ secretName: orders-worker-213-script
containers:
- name: worker
image: alpine:3.19
- command:
- - /bin/sh
- - -c
- - |
- # Install netcat and iproute2 for ss
- apk add --no-cache netcat-openbsd iproute2 >/dev/null 2>&1
- ...
+ command: ["/bin/sh", "/scripts/entrypoint.sh"]
+ volumeMounts:
+ - name: entrypoint
+ mountPath: /scripts
+ readOnly: trueapiVersion: v1
kind: Secret
metadata:
name: orders-worker-213-script
namespace: app-213
stringData:
entrypoint.sh: |
# (move the current script body here)🤖 Prompt for AI Agents |
||
| resources: | ||
| limits: | ||
| memory: "128Mi" | ||
| cpu: "200m" | ||
| requests: | ||
| memory: "64Mi" | ||
| cpu: "100m" | ||
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,64 @@ | ||||||||||||||||||||||||||||||
| user_prompt: "The connection-pool pod in namespace app-213 may have connection leaks. Check how many TCP connections it has and group them by state (ESTABLISHED, TIME_WAIT, LISTEN, etc.)." | ||||||||||||||||||||||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Align pod references with the neutral, unique name. 🔁 Suggested rename alignment-user_prompt: "The connection-pool pod in namespace app-213 may have connection leaks. Check how many TCP connections it has and group them by state (ESTABLISHED, TIME_WAIT, LISTEN, etc.)."
+user_prompt: "The orders-worker-213 pod in namespace app-213 may have connection leaks. Check how many TCP connections it has and group them by state (ESTABLISHED, TIME_WAIT, LISTEN, etc.)."
- if kubectl wait --for=condition=ready pod/connection-pool -n app-213 --timeout=2s 2>/dev/null; then
+ if kubectl wait --for=condition=ready pod/orders-worker-213 -n app-213 --timeout=2s 2>/dev/null; then
- kubectl describe pod/connection-pool -n app-213
+ kubectl describe pod/orders-worker-213 -n app-213
- kubectl exec -n app-213 connection-pool -- ss -tan
+ kubectl exec -n app-213 orders-worker-213 -- ss -tanAs per coding guidelines: All resource names must be unique across tests to prevent conflicts when tests run simultaneously; Never use obvious or hint-giving resource names in tests - use neutral, business-context names instead of technical indicators. Also applies to: 28-28, 39-39, 58-58 🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| include_tool_calls: true | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| expected_output: | ||||||||||||||||||||||||||||||
| - "Must call bash tool with kubectl exec" | ||||||||||||||||||||||||||||||
| - "Must report TCP connection states" | ||||||||||||||||||||||||||||||
| - "Must identify LISTEN connections on ports 8001-8050" | ||||||||||||||||||||||||||||||
| - "Must identify ESTABLISHED connections" | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
|
Comment on lines
+3
to
+10
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Make expected_output specific; then drop include_tool_calls. ✅ Example expectations-include_tool_calls: true
+include_tool_calls: false
expected_output:
- - "Must call bash tool with kubectl exec"
- - "Must report TCP connection states"
- - "Must identify LISTEN connections on ports 8001-8050"
- - "Must identify ESTABLISHED connections"
+ - "Uses kubectl exec with bash against pod orders-worker-213"
+ - "Reports LISTEN sockets on ports 8001-8050 (≈50)"
+ - "Reports ESTABLISHED connections to 127.0.0.1:8001-8050 (≈50)"
+ - "Groups results by state (LISTEN/ESTABLISHED/TIME_WAIT)"As per coding guidelines: Use specific, discoverable values in expected_output instead of generic patterns to rule out hallucinations; Use 'include_tool_calls: true' in test configuration only when expected output values are too generic to be hallucination-proof. 📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||
| description: | | ||||||||||||||||||||||||||||||
| Tests that Holmes can use bash to run kubectl exec and inspect network connections inside a container. | ||||||||||||||||||||||||||||||
| The pod creates 50 TCP listeners and 50 established connections. | ||||||||||||||||||||||||||||||
| Holmes must use bash with 'kubectl exec' to run ss/netstat since no toolset inspects container network state. | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| tags: | ||||||||||||||||||||||||||||||
| - kubernetes | ||||||||||||||||||||||||||||||
| - regression | ||||||||||||||||||||||||||||||
| - bash-resource-checker | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| before_test: | | ||||||||||||||||||||||||||||||
| kubectl create namespace app-213 --dry-run=client -o yaml | kubectl apply -f - | ||||||||||||||||||||||||||||||
| kubectl apply -f manifest.yaml | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| # Wait for pod to be ready | ||||||||||||||||||||||||||||||
| POD_READY=false | ||||||||||||||||||||||||||||||
| for i in {1..60}; do | ||||||||||||||||||||||||||||||
| if kubectl wait --for=condition=ready pod/connection-pool -n app-213 --timeout=2s 2>/dev/null; then | ||||||||||||||||||||||||||||||
| echo "Pod ready!" | ||||||||||||||||||||||||||||||
| POD_READY=true | ||||||||||||||||||||||||||||||
| break | ||||||||||||||||||||||||||||||
| fi | ||||||||||||||||||||||||||||||
| sleep 1 | ||||||||||||||||||||||||||||||
| done | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| if [ "$POD_READY" = false ]; then | ||||||||||||||||||||||||||||||
| echo "Pod not ready after 60 seconds" | ||||||||||||||||||||||||||||||
| kubectl get pods -n app-213 | ||||||||||||||||||||||||||||||
| kubectl describe pod/connection-pool -n app-213 | ||||||||||||||||||||||||||||||
| exit 1 | ||||||||||||||||||||||||||||||
| fi | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| # Wait for connections to be established | ||||||||||||||||||||||||||||||
| CONN_READY=false | ||||||||||||||||||||||||||||||
| for i in {1..30}; do | ||||||||||||||||||||||||||||||
| LISTEN_COUNT=$(kubectl exec -n app-213 connection-pool -- ss -tln 2>/dev/null | grep -c LISTEN || echo "0") | ||||||||||||||||||||||||||||||
| echo "Attempt $i: $LISTEN_COUNT LISTEN connections" | ||||||||||||||||||||||||||||||
| if [ "$LISTEN_COUNT" -ge 40 ]; then | ||||||||||||||||||||||||||||||
|
Comment on lines
+45
to
+48
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chain🏁 Script executed: cat -n tests/llm/fixtures/test_ask_holmes/213_bash_network_connection_audit/test_case.yaml | head -60Repository: HolmesGPT/holmesgpt Length of output: 2380 🏁 Script executed: find tests/llm/fixtures/test_ask_holmes/213_bash_network_connection_audit -type f -name "*.yaml" -o -name "*.yml"Repository: HolmesGPT/holmesgpt Length of output: 312 🏁 Script executed: # Check if there's a fixture definition or infrastructure file for this test
find tests/llm/fixtures/test_ask_holmes/213_bash_network_connection_audit -type fRepository: HolmesGPT/holmesgpt Length of output: 312 🏁 Script executed: cat tests/llm/fixtures/test_ask_holmes/213_bash_network_connection_audit/manifest.yamlRepository: HolmesGPT/holmesgpt Length of output: 1374 🏁 Script executed: # Let me verify the grep -c behavior to understand if the claim about double-zero output is accurate
cat > /tmp/test_grep.sh << 'EOF'
#!/bin/bash
# Test 1: grep -c on non-empty output
echo "Test 1: grep -c with matches"
echo -e "LISTEN\nLISTEN\nESTABLISHED" | grep -c "LISTEN"
echo "---"
# Test 2: grep -c on empty output
echo "Test 2: grep -c with no matches (should print 0)"
echo -e "ESTABLISHED\nTIME_WAIT" | grep -c "LISTEN"
echo "---"
# Test 3: Original command pattern with || echo "0"
echo "Test 3: With || echo '0' when grep returns 0"
LISTEN_COUNT=$(echo -e "ESTABLISHED\nTIME_WAIT" | grep -c "LISTEN" || echo "0")
echo "LISTEN_COUNT='$LISTEN_COUNT'"
echo "---"
# Test 4: Check if there are multiple lines
echo "Test 4: Checking raw output with set -x"
set -x
LISTEN_COUNT=$(echo -e "ESTABLISHED\nTIME_WAIT" | grep -c "LISTEN" || echo "0")
set +x
echo "Final value: $LISTEN_COUNT"
echo "---"
# Test 5: Check with failed command
echo "Test 5: With command that fails"
LISTEN_COUNT=$(/bin/false | grep -c "LISTEN" || echo "0")
echo "LISTEN_COUNT='$LISTEN_COUNT'"
EOF
bash /tmp/test_grep.shRepository: HolmesGPT/holmesgpt Length of output: 443 🏁 Script executed: cat tests/llm/fixtures/test_ask_holmes/213_bash_network_connection_audit/manifest.yaml | grep -A 5 "metadata:" | grep "name:"Repository: HolmesGPT/holmesgpt Length of output: 86 Remove redundant echo fallback in LISTEN_COUNT assignment. The pipe 🔧 Fixed assignment- LISTEN_COUNT=$(kubectl exec -n app-213 connection-pool -- ss -tln 2>/dev/null | grep -c LISTEN || echo "0")
+ LISTEN_COUNT=$(kubectl exec -n app-213 connection-pool -- ss -tln 2>/dev/null | grep -c LISTEN || true)📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||
| echo "Connections established!" | ||||||||||||||||||||||||||||||
| CONN_READY=true | ||||||||||||||||||||||||||||||
| break | ||||||||||||||||||||||||||||||
| fi | ||||||||||||||||||||||||||||||
| sleep 2 | ||||||||||||||||||||||||||||||
| done | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| if [ "$CONN_READY" = false ]; then | ||||||||||||||||||||||||||||||
| echo "Connections not established properly" | ||||||||||||||||||||||||||||||
| kubectl exec -n app-213 connection-pool -- ss -tan | ||||||||||||||||||||||||||||||
| exit 1 | ||||||||||||||||||||||||||||||
| fi | ||||||||||||||||||||||||||||||
| echo "Setup complete" | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| after_test: | | ||||||||||||||||||||||||||||||
| kubectl delete namespace app-213 --ignore-not-found | ||||||||||||||||||||||||||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Rename the pod/label to a neutral, unique identifier.
connection-poolis a hint‑giving technical name and may collide across tests; use a neutral business‑context name with the test id and update references in test_case.yaml accordingly.🔁 Suggested rename
As per coding guidelines: All resource names must be unique across tests to prevent conflicts when tests run simultaneously; Never use obvious or hint-giving resource names in tests - use neutral, business-context names instead of technical indicators.
📝 Committable suggestion
🤖 Prompt for AI Agents