Skip to content

Commit 243c38e

Browse files
authored
Merge pull request #1393 from YaoZengzeng/cross
output kmesh log when e2e test failed
2 parents baca1ea + f49494e commit 243c38e

File tree

1 file changed

+107
-0
lines changed

1 file changed

+107
-0
lines changed

test/e2e/run_test.sh

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ DEFAULT_KIND_IMAGE="kindest/node:v1.30.0@sha256:047357ac0cfea04663786a612ba1eaba
1111

1212
ISTIO_VERSION=${ISTIO_VERSION:-"1.22.0"}
1313

14+
LOGFILE="kmesh_daemon.log"
15+
1416
export KMESH_WAYPOINT_IMAGE=${KMESH_WAYPOINT_IMAGE:-"ghcr.io/kmesh-net/waypoint:latest"}
1517

1618
ROOT_DIR=$(git rev-parse --show-toplevel)
@@ -137,6 +139,77 @@ function setup_kmesh() {
137139
echo "Waiting for pods of Kmesh daemon to enter Running state..."
138140
sleep 1
139141
done
142+
143+
# Set log of each Kmesh pods.
144+
PODS=$(kubectl get pods -n kmesh-system -l app=kmesh -o jsonpath='{.items[*].metadata.name}')
145+
146+
for POD in $PODS; do
147+
echo "turn on the debug mode of the log for pod $POD"
148+
# Set BPF debug log
149+
for i in {1..5}; do
150+
echo "Attempt $i of 5: kmeshctl log $POD --set bpf:debug"
151+
output=$(kmeshctl log $POD --set bpf:debug 2>&1)
152+
if echo "$output" | grep -q "set BPF Log Level: 3"; then
153+
echo "BPF debug log set successfully"
154+
break
155+
fi
156+
echo "Failed to set BPF debug log. Output: $output"
157+
[ $i -eq 5 ] && echo "Failed to set BPF debug log after 5 attempts" && exit 1
158+
sleep 2
159+
done
160+
161+
# Set default debug log
162+
for i in {1..5}; do
163+
echo "Attempt $i of 5: kmeshctl log $POD --set default:debug"
164+
output=$(kmeshctl log $POD --set default:debug 2>&1)
165+
if echo "$output" | grep -q "OK"; then
166+
echo "Default debug log set successfully"
167+
break
168+
fi
169+
echo "Failed to set default debug log. Output: $output"
170+
[ $i -eq 5 ] && echo "Failed to set default debug log after 5 attempts" && exit 1
171+
sleep 2
172+
done
173+
done
174+
}
175+
176+
function setup_kmesh_log() {
177+
# Set log of each Kmesh pods.
178+
PODS=$(kubectl get pods -n kmesh-system -l app=kmesh -o jsonpath='{.items[*].metadata.name}')
179+
180+
for POD in $PODS; do
181+
echo "turn on the debug mode of the log for pod $POD"
182+
# Set BPF debug log
183+
for i in {1..5}; do
184+
echo "Attempt $i of 5: kmeshctl log $POD --set bpf:debug"
185+
output=$(kmeshctl log $POD --set bpf:debug 2>&1)
186+
if echo "$output" | grep -q "set BPF Log Level: 3"; then
187+
echo "BPF debug log set successfully"
188+
break
189+
fi
190+
echo "Failed to set BPF debug log. Output: $output"
191+
[ $i -eq 5 ] && echo "Failed to set BPF debug log after 5 attempts" && exit 1
192+
sleep 2
193+
done
194+
195+
# Set default debug log
196+
for i in {1..5}; do
197+
echo "Attempt $i of 5: kmeshctl log $POD --set default:debug"
198+
output=$(kmeshctl log $POD --set default:debug 2>&1)
199+
if echo "$output" | grep -q "OK"; then
200+
echo "Default debug log set successfully"
201+
break
202+
fi
203+
echo "Failed to set default debug log. Output: $output"
204+
[ $i -eq 5 ] && echo "Failed to set default debug log after 5 attempts" && exit 1
205+
sleep 2
206+
done
207+
done
208+
}
209+
210+
function install_kmeshctl() {
211+
# Install kmeshctl
212+
cp kmeshctl $TMPBIN
140213
}
141214

142215
export KIND_REGISTRY_NAME="kind-registry"
@@ -209,6 +282,24 @@ function cleanup_docker_registry() {
209282
docker rm "${KIND_REGISTRY_NAME}" || echo "Failed to remove or no such registry '${KIND_REGISTRY_NAME}'."
210283
}
211284

285+
capture_pod_logs() {
286+
NAMESPACE="kmesh-system"
287+
NODE_NAME="kmesh-testing-worker"
288+
289+
while :; do
290+
PODS=$(kubectl get pods -n $NAMESPACE --field-selector spec.nodeName=$NODE_NAME -o jsonpath='{.items[*].metadata.name}')
291+
292+
if [ -z "$PODS" ]; then
293+
echo "No pods found on node $NODE_NAME in namespace $NAMESPACE."
294+
continue
295+
fi
296+
297+
echo "Logs for Pod: ${PODS[0]}"
298+
299+
kubectl logs -n $NAMESPACE -f ${PODS[0]} >>$LOGFILE 2>&1
300+
done
301+
}
302+
212303
PARAMS=()
213304

214305
while (("$#")); do
@@ -272,6 +363,7 @@ fi
272363
if [[ -z ${SKIP_BUILD:-} ]]; then
273364
setup_kind_registry
274365
build_and_push_images
366+
install_kmeshctl
275367
fi
276368

277369
kubectl config use-context "kind-$NAME"
@@ -283,9 +375,22 @@ if [[ -z ${SKIP_SETUP:-} ]]; then
283375
setup_kmesh
284376
fi
285377

378+
setup_kmesh_log
379+
380+
capture_pod_logs &
381+
286382
cmd="go test -v -tags=integ $ROOT_DIR/test/e2e/... -istio.test.kube.loadbalancer=false ${PARAMS[*]}"
287383

384+
set +e
288385
bash -c "$cmd"
386+
EXIT_CODE=$?
387+
set -e
388+
389+
if [ $EXIT_CODE -ne 0 ]; then
390+
cat $LOGFILE
391+
fi
392+
393+
rm $LOGFILE
289394

290395
if [[ -n ${CLEANUP_KIND} ]]; then
291396
cleanup_kind_cluster
@@ -296,3 +401,5 @@ if [[ -n ${CLEANUP_REGISTRY} ]]; then
296401
fi
297402

298403
rm -rf "${TMP}"
404+
405+
exit $EXIT_CODE

0 commit comments

Comments
 (0)