mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-11 23:56:53 +00:00
chore(hotpath): add samply symbol summary tools (#5875)
Co-authored-by: heihutu <heihutu@gmail.com>
This commit is contained in:
Executable
+51
@@ -0,0 +1,51 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
repo_root=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)
|
||||
tmp_dir=$(mktemp -d)
|
||||
trap 'rm -rf "$tmp_dir"' EXIT
|
||||
|
||||
mock_ssh="$tmp_dir/ssh"
|
||||
cat >"$mock_ssh" <<'EOF'
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
if read -r consumed; then
|
||||
printf 'ssh-consumed-stdin:%s\n' "$consumed" >>"$CALL_LOG"
|
||||
exit 24
|
||||
fi
|
||||
printf 'ssh:%s\n' "$*" >>"$CALL_LOG"
|
||||
echo "123 12.5 456789 00:01:02"
|
||||
EOF
|
||||
chmod +x "$mock_ssh"
|
||||
|
||||
export CALL_LOG="$tmp_dir/calls.log"
|
||||
output=$("$repo_root/scripts/sample_remote_rustfs_rss.sh" \
|
||||
--nodes vm004,vm005 \
|
||||
--duration-secs 1 \
|
||||
--interval-secs 1 \
|
||||
--out "$tmp_dir/rss.tsv" \
|
||||
--ssh-bin "$mock_ssh")
|
||||
|
||||
[[ "$output" == "rss_samples=2" ]]
|
||||
[[ "$(wc -l <"$tmp_dir/rss.tsv")" -eq 3 ]]
|
||||
grep -q $'^ts_utc\tnode\tpid\tpcpu\trss_kib\tetime$' "$tmp_dir/rss.tsv"
|
||||
grep -q $'\tvm004\t123\t12.5\t456789\t00:01:02$' "$tmp_dir/rss.tsv"
|
||||
grep -q $'\tvm005\t123\t12.5\t456789\t00:01:02$' "$tmp_dir/rss.tsv"
|
||||
[[ "$(grep -c '^ssh:' "$CALL_LOG")" -eq 2 ]]
|
||||
if grep -q '^ssh-consumed-stdin:' "$CALL_LOG"; then
|
||||
echo "ssh consumed the sampling loop stdin" >&2
|
||||
exit 1
|
||||
fi
|
||||
grep -q 'sudo su - root -c' "$CALL_LOG"
|
||||
|
||||
if "$repo_root/scripts/sample_remote_rustfs_rss.sh" \
|
||||
--nodes 'vm004;rm' \
|
||||
--duration-secs 1 \
|
||||
--out "$tmp_dir/bad.tsv" \
|
||||
--ssh-bin "$mock_ssh" >"$tmp_dir/bad.stdout" 2>"$tmp_dir/bad.stderr"; then
|
||||
echo "unsafe node name was accepted" >&2
|
||||
exit 1
|
||||
fi
|
||||
grep -q 'node contains unsafe characters' "$tmp_dir/bad.stderr"
|
||||
|
||||
echo "test_sample_remote_rustfs_rss: ok"
|
||||
Reference in New Issue
Block a user