1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

spec/ruby/core/process/setpriority_spec.rb: allow to run under docker

Docker container is not always able to lower the nice value even if the
euid is a root.  It depends upon the configuration of docker which
cannot check from the container itself.

This change does check it by actually trying to lower the value first.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66570 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
mame 2018-12-26 07:02:31 +00:00
parent 925a722ae2
commit 7453cdba1b

View file

@ -29,11 +29,26 @@ describe "Process.setpriority" do
end
as_superuser do
it "sets the scheduling priority for a specified user" do
p = Process.getpriority(Process::PRIO_USER, 0)
Process.setpriority(Process::PRIO_USER, 0, p + 1).should == 0
Process.getpriority(Process::PRIO_USER, 0).should == (p + 1)
Process.setpriority(Process::PRIO_USER, 0, p).should == 0
p = Process.getpriority(Process::PRIO_USER, 0)
# The nice value is a value in the range -20 to 19.
# This test tries to change the nice value to +-1, so it cannot run if p == -20 || p == 19.
if -20 < p && p < 19
begin
# Check if we can lower the nice value or not.
#
# We are not always able to do it even as a root.
# Docker container is not always able to do it depending upon the configuration,
# which cannot know from the container itself.
Process.setpriority(Process::PRIO_USER, 0, p - 1)
Process.setpriority(Process::PRIO_USER, 0, p)
it "sets the scheduling priority for a specified user" do
Process.setpriority(Process::PRIO_USER, 0, p + 1).should == 0
Process.getpriority(Process::PRIO_USER, 0).should == (p + 1)
Process.setpriority(Process::PRIO_USER, 0, p).should == 0
end
rescue Errno::EACCES
end
end
end
end