aboutsummaryrefslogtreecommitdiff
path: root/bin/gen-cgroup-testdata
blob: 3d9215bb447e8d3d4385ecc61a95ae09747d2e54 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#!/usr/bin/env bash
#
# gen-cgroup-testdata - Generate cgroup testdata by running
# bin/snapshot-cgroup inside Docker containers with known resource limits.
#
# Usage: gen-cgroup-testdata
#
# Prerequisites: Docker on a host running cgroup v2.
#
# Each testdata directory contains:
#   expected.json  - {"cpu_quota": <float>, "memory_limit": <int>}
#   proc/          - snapshot of /proc/self/cgroup
#   sys/           - snapshot of cgroup control files

set -euo pipefail

cd "$(dirname "$0")/.."

testdata="cgroup/testdata"
snapshot_script="bin/snapshot-cgroup"

generate() {
    local name="$1" cpu_quota="$2" memory_limit="$3"
    shift 3
    local outdir="$testdata/$name"

    echo "Generating $name..."
    rm -rf "$outdir"
    mkdir -p "$outdir"

    docker run --rm \
        --user "$(id -u):$(id -g)" \
        "$@" \
        -v "$PWD/$snapshot_script:/snapshot:ro" \
        -v "$PWD/$outdir:/out" \
        debian:bookworm-slim \
        /snapshot /out

    cat > "$outdir/expected.json" <<EOF
{"cpu_quota": $cpu_quota, "memory_limit": $memory_limit}
EOF
}

generate "v2-two-cores-256m"   2.0  268435456  --cpus=2   --memory=256m
generate "v2-quarter-core-64m" 0.25 67108864   --cpus=0.25 --memory=64m
generate "v2-no-limit"         null null

echo "v2 testdata generated successfully."