Current section

Files

Jump to
muontrap test test_helper.exs
Raw

test/test_helper.exs

ExUnit.start()
defmodule MuonTrapTestHelpers do
@timeout_before_close_check 10
def cpu_cgroup_exists(path) do
{rc, 0} = System.cmd("cgget", ["-g", "cpu", path], stderr_to_stdout: true)
String.match?(rc, ~r/cpu.shares/)
end
def memory_cgroup_exists(path) do
{rc, 0} = System.cmd("cgget", ["-g", "memory", path], stderr_to_stdout: true)
String.match?(rc, ~r/memory.stat/)
end
def check_cgroup_support() do
unless System.find_executable("cgget") do
IO.puts(:stderr, "\nPlease install cgroup-tools so that cgcreate and cgget are available.")
System.halt(0)
end
unless cpu_cgroup_exists("muontrap_test") and memory_cgroup_exists("muontrap_test") do
IO.puts(:stderr, "\nPlease create the muontrap_test cgroup")
IO.puts(:stderr, "sudo cgcreate -a $(whoami) -g memory,cpu:muontrap_test")
System.halt(0)
end
end
def random_cgroup_path() do
"muontrap_test/test#{:rand.uniform(10000)}"
end
def is_os_pid_around?(os_pid) do
{_, rc} = System.cmd("ps", ["-p", "#{os_pid}"])
rc == 0
end
def os_pid(port) do
{:os_pid, os_pid} = Port.info(port, :os_pid)
os_pid
end
def wait_for_close_check(timeout \\ @timeout_before_close_check) do
Process.sleep(timeout)
end
end
case :os.type() do
{:unix, :linux} ->
MuonTrapTestHelpers.check_cgroup_support()
_ ->
IO.puts(:stderr, "Not on Linux so skipping tests that use cgroups...")
ExUnit.configure(exclude: :cgroup)
end