2018-03-04 10:09:32 -05:00
|
|
|
require_relative '../../spec_helper'
|
2017-05-07 08:04:49 -04:00
|
|
|
|
|
|
|
describe "Process.times" do
|
2018-02-22 22:45:55 -05:00
|
|
|
it "returns a Process::Tms" do
|
|
|
|
Process.times.should be_kind_of(Process::Tms)
|
2017-05-07 08:04:49 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
it "returns current cpu times" do
|
|
|
|
t = Process.times
|
|
|
|
|
|
|
|
# Do busy work for a wall-clock interval.
|
|
|
|
start = Time.now
|
|
|
|
1 until (Time.now - start) > 0.5
|
|
|
|
|
|
|
|
# Ensure times is larger. NOTE that there is no
|
|
|
|
# guarantee of an upper bound since anything may be
|
|
|
|
# happening at the OS level, so we ONLY check that at
|
|
|
|
# least an interval has elapsed. Also, we are assuming
|
|
|
|
# there is a correlation between wall clock time and
|
|
|
|
# process time. In practice, there is an observed
|
|
|
|
# discrepancy often 10% or greater. In other words,
|
|
|
|
# this is a very fuzzy test.
|
|
|
|
t2 = Process.times
|
|
|
|
diff = (t2.utime + t2.stime) - (t.utime + t.stime)
|
|
|
|
diff.should > 0
|
|
|
|
end
|
|
|
|
end
|