forked from ruby/spec
-
Notifications
You must be signed in to change notification settings - Fork 0
/
setrlimit_spec.rb
96 lines (84 loc) · 3.62 KB
/
setrlimit_spec.rb
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
require File.expand_path('../../../spec_helper', __FILE__)
describe "Process.setrlimit and Process.getrlimit" do
platform_is_not :windows do
it "coerces arguments to Integers" do
lim, max = Process.getrlimit(Process::RLIMIT_CORE)
Process.setrlimit(mock_int(Process::RLIMIT_CORE),
mock_int(lim),
mock_int(max)).should be_nil
end
it "limit and get core size (bytes)" do
lim, max = Process.getrlimit(Process::RLIMIT_CORE)
lim.kind_of?(Integer).should == true
max.kind_of?(Integer).should == true
Process.setrlimit(Process::RLIMIT_CORE, lim, max).should be_nil
end
it "limit and get CPU time (seconds)" do
lim, max = Process.getrlimit(Process::RLIMIT_CPU)
lim.kind_of?(Integer).should == true
max.kind_of?(Integer).should == true
Process.setrlimit(Process::RLIMIT_CPU, lim, max).should be_nil
end
it "limit and get data segment (bytes)" do
lim, max = Process.getrlimit(Process::RLIMIT_DATA)
lim.kind_of?(Integer).should == true
max.kind_of?(Integer).should == true
Process.setrlimit(Process::RLIMIT_DATA, lim, max).should be_nil
end
it "limit and get file size (bytes)" do
lim, max = Process.getrlimit(Process::RLIMIT_FSIZE)
lim.kind_of?(Integer).should == true
max.kind_of?(Integer).should == true
Process.setrlimit(Process::RLIMIT_FSIZE, lim, max).should be_nil
end
it "limit and get file descriptors (number)" do
lim, max = Process.getrlimit(Process::RLIMIT_NOFILE)
lim.kind_of?(Integer).should == true
max.kind_of?(Integer).should == true
Process.setrlimit(Process::RLIMIT_NOFILE, lim, max).should be_nil
end
it "limit and get stack size (bytes)" do
lim, max = Process.getrlimit(Process::RLIMIT_STACK)
lim.kind_of?(Integer).should == true
max.kind_of?(Integer).should == true
Process.setrlimit(Process::RLIMIT_STACK, lim, max).should be_nil
end
platform_is_not :openbsd do
it "limit and get total available memory (bytes)" do
lim, max = Process.getrlimit(Process::RLIMIT_AS)
lim.kind_of?(Integer).should == true
max.kind_of?(Integer).should == true
Process.setrlimit(Process::RLIMIT_AS, lim, max).should be_nil
end
end
platform_is_not :solaris do
it "limit and get total size for mlock(2) (bytes)" do
lim, max = Process.getrlimit(Process::RLIMIT_MEMLOCK)
lim.kind_of?(Integer).should == true
max.kind_of?(Integer).should == true
max = lim if lim > max # EINVAL is raised if this invariant is violated
Process.setrlimit(Process::RLIMIT_MEMLOCK, lim, max).should be_nil
end
it "limit and get number of processes for the user (number)" do
lim, max = Process.getrlimit(Process::RLIMIT_NPROC)
lim.kind_of?(Integer).should == true
max.kind_of?(Integer).should == true
Process.setrlimit(Process::RLIMIT_NPROC, lim, max).should be_nil
end
it "limit and get resident memory size (bytes)" do
lim, max = Process.getrlimit(Process::RLIMIT_RSS)
lim.kind_of?(Integer).should == true
max.kind_of?(Integer).should == true
Process.setrlimit(Process::RLIMIT_RSS, lim, max).should be_nil
end
end
platform_is :os => [:netbsd, :freebsd] do
it "limit and get all socket buffers (bytes)" do
lim, max = Process.getrlimit(Process::RLIMIT_SBSIZE)
lim.kind_of?(Integer).should == true
max.kind_of?(Integer).should == true
Process.setrlimit(Process::RLIMIT_SBSIZE , lim, max).should be_nil
end
end
end
end