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:
parent
925a722ae2
commit
7453cdba1b
@ -29,11 +29,26 @@ describe "Process.setpriority" do
|
|||||||
end
|
end
|
||||||
|
|
||||||
as_superuser do
|
as_superuser do
|
||||||
it "sets the scheduling priority for a specified user" do
|
p = Process.getpriority(Process::PRIO_USER, 0)
|
||||||
p = Process.getpriority(Process::PRIO_USER, 0)
|
# The nice value is a value in the range -20 to 19.
|
||||||
Process.setpriority(Process::PRIO_USER, 0, p + 1).should == 0
|
# This test tries to change the nice value to +-1, so it cannot run if p == -20 || p == 19.
|
||||||
Process.getpriority(Process::PRIO_USER, 0).should == (p + 1)
|
if -20 < p && p < 19
|
||||||
Process.setpriority(Process::PRIO_USER, 0, p).should == 0
|
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
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user