Skip to content

Releases: alexei-led/pumba

Release 1.0.4

01 Mar 21:30
8743ab9

Choose a tag to compare

What's Changed

  • fix: support --inject-cgroup and sidecar stress modes on containerd by @alexei-led in #304

Full Changelog: 1.0.3...1.0.4

Release 1.0.3

27 Feb 20:03
e4ebe5a

Choose a tag to compare

Full Changelog: 1.0.2...1.0.3

Release 1.0.2

27 Feb 17:28
d29cba6

Choose a tag to compare

What's Changed

Advanced Go Integration Test Suite

Added a comprehensive Go-based integration test suite (tests/integration/) covering scenarios that are difficult or impossible to test with shell scripts.

Test coverage includes:

  • Crash recovery (SIGKILL, SIGTERM, target death during netem/pause/iptables/stress)
  • Network verification (netem delay/loss/corrupt/duplicate/rate, iptables packet loss)
  • Concurrent operations (multiple containers, mixed netem + iptables)
  • Sidecar lifecycle (creation, cleanup, skip-label, leak detection)
  • Container lifecycle (kill/stop/rm/restart/pause with labels and regex)
  • Interval mode, stress-ng, and containerd runtime scenarios

Fix: Real cgroups v2 OOM Kill Test

The OOM integration test (TestCrashRecovery_TargetOOMDuringNetem) previously faked OOM by sending SIGKILL — making it identical to the target-death test. This release replaces it with a deterministic cgroups v2 OOM kill:

  • Sets memory.oom.group=1 on the container's cgroup so the kernel kills all processes (including PID 1) atomically
  • Triggers real memory pressure via dd if=/dev/zero of=/dev/shm/fill (backed by tmpfs, counts against cgroup memory limit)
  • Asserts State.OOMKilled=true to prove genuine OOM — not simulated SIGKILL
  • Skips gracefully on environments without cgroups v2

This is the only reliable approach — alternatives (exec dd, tail /dev/zero, shell variable growth) are nondeterministic due to kernel ENOMEM-vs-OOM-kill behavior.

Full Changelog: 1.0.1...1.0.2

Release 1.0.1

25 Feb 16:36

Choose a tag to compare

What's Changed

  • fix(ci): run integration tests natively on runner VM by @alexei-led in #300

Full Changelog: 1.0.0...1.0.1

Release 1.0.0

25 Feb 14:31

Choose a tag to compare

What's Changed

  • refactor: multi-runtime abstraction (Phase 2) by @alexei-led in #295
  • refactor: Phase 2 cleanup — filter extraction, panic fixes, tests by @alexei-led in #296
  • feat: narrow chaos command interfaces to minimal required methods by @alexei-led in #297
  • ci: replace QEMU with native ARM64 runners by @alexei-led in #299
  • feat: containerd runtime support (Runtime Abstraction) by @alexei-led in #298

Full Changelog: 0.12.3...1.0.0

v0.12.3

18 Feb 06:09
0f8dab2

Choose a tag to compare

Bug Fixes

  • fix: support comma-separated labels in --label flag (#294, closes #171)
    • Both --label k1=v1 --label k2=v2 and --label k1=v1,k2=v2 now work (AND logic)
  • fix: use TrimPrefix instead of Trim for re2 pattern extraction (#293)

Full Changelog: 0.12.2...0.12.3

Release 0.12.2

17 Feb 20:17
5655a7b

Choose a tag to compare

What's Changed

Full Changelog: 0.12.1...0.12.2

0.12.1: Native Cgroups V2 Support

17 Feb 11:15

Choose a tag to compare

Pumba v0.12.1 Release Notes

This release brings native cgroups v2 support for the stress command, eliminating the need for legacy dockhack scripts and privileged execution modes. Pumba now works seamlessly on modern Linux distros and Kubernetes clusters with cgroups v2 enabled.

Highlights

  • Native Cgroups V2 Support: The stress command now works out-of-the-box on cgroups v2 systems.
  • Dual-Mode Injection:
    • Default Mode: Uses Docker's --cgroup-parent to nest the stress sidecar under the target container (child cgroup). Safe and isolated.
    • Inject-Cgroup Mode: New --inject-cgroup flag places stress-ng processes directly into the target container's cgroup (same cgroup). Provides realistic resource contention and shared OOM scope.
  • Kubernetes-Aware: Automatically resolves the correct cgroup path on Kubernetes nodes (e.g., /kubepods/burstable/pod<uid>/<containerID>) using ContainerInspect.
  • Security Improvements:
    • Removed requirement for --privileged mode.
    • Removed requirement for SYS_ADMIN capability.
    • Removed requirement for AppArmor unconfined.
  • New cg-inject Binary: A minimal, pure-Go binary handles cgroup placement, replacing the old bash/dockhack scripts.
  • Bug Fixes:
    • Fixed a potential goroutine leak in stress container error handling.
    • Improved error reporting during container startup.

Updating

# Docker
docker pull ghcr.io/alexei-led/pumba:0.12.1

# Kubernetes
kubectl set image daemonset/pumba pumba=ghcr.io/alexei-led/pumba:0.12.1

Full Changelog

  • feat: cgroups v2 support for stress command with dual-mode injection (@ralphex-bot)
  • fix: goroutine leak in stress container error path (@ralphex-bot)
  • docs: comprehensive documentation updates for stress testing (@ralphex-bot)

Release 0.11.10

16 Feb 16:50
9f92277

Choose a tag to compare

What's Changed

Full Changelog: 0.11.9...0.11.10

Release 0.11.9

16 Feb 16:10
291b33f

Choose a tag to compare

Automated release for 0.11.9

What's Changed

  • docs: clarify --stressors flag usage syntax by @alexei-led in #285
  • fix: graceful handling when container removed during netem/iptables by @alexei-led in #286

Full Changelog: 0.11.8...0.11.9