measure only time units (s, ms) and if ms, value must be in ms.
This commit is contained in:
parent
fccfe5a1d5
commit
4b8cc9eef8
|
@ -1,5 +1,8 @@
|
||||||
module NSCA
|
module NSCA
|
||||||
module PerformanceData
|
module PerformanceData
|
||||||
|
class TimeUnitExpected < Exception
|
||||||
|
end
|
||||||
|
|
||||||
class Base
|
class Base
|
||||||
extend Timeout
|
extend Timeout
|
||||||
extend Benchmark
|
extend Benchmark
|
||||||
|
@ -17,6 +20,11 @@ module NSCA
|
||||||
end
|
end
|
||||||
|
|
||||||
def measure &block
|
def measure &block
|
||||||
|
f = case unit.to_s.to_sym
|
||||||
|
when :s then 1
|
||||||
|
when :ms then 1000
|
||||||
|
else raise TimeUnitExpected, "Unit must be seconds (s) or miliseconds (ms) not (#{unit})"
|
||||||
|
end
|
||||||
exception = ::Class.new Timeout::Error
|
exception = ::Class.new Timeout::Error
|
||||||
timeout = max
|
timeout = max
|
||||||
m = realtime do
|
m = realtime do
|
||||||
|
@ -25,7 +33,7 @@ module NSCA
|
||||||
rescue exception
|
rescue exception
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
new m
|
new f * m
|
||||||
end
|
end
|
||||||
|
|
||||||
def to_sym() label.to_sym end
|
def to_sym() label.to_sym end
|
||||||
|
|
|
@ -113,8 +113,14 @@ class TestNSCA::PerformanceData < Test::Unit::TestCase
|
||||||
|
|
||||||
context 'Created NSCA::PerformanceData-subclasses' do
|
context 'Created NSCA::PerformanceData-subclasses' do
|
||||||
should 'be the same like returned' do
|
should 'be the same like returned' do
|
||||||
cl = NSCA::PerformanceData.create 'returned and subclass the same test'
|
PA = NSCA::PerformanceData.create 'returned and subclass the same test'
|
||||||
assert cl == NSCA::PerformanceData::Returned_and_subclass_the_same_test, 'Classes are not the same.'
|
assert_equal PA, NSCA::PerformanceData::Returned_and_subclass_the_same_test
|
||||||
|
end
|
||||||
|
should 'not exists, if #new used' do
|
||||||
|
pb = NSCA::PerformanceData.new 'no subclass'
|
||||||
|
assert_raise NameError do
|
||||||
|
NSCA::PerformanceData::No_subclass
|
||||||
|
end
|
||||||
end
|
end
|
||||||
should 'have a unit if given' do
|
should 'have a unit if given' do
|
||||||
assert :s == perfdata( 'have an unit test', :s).unit, "Not s as unit"
|
assert :s == perfdata( 'have an unit test', :s).unit, "Not s as unit"
|
||||||
|
@ -129,6 +135,37 @@ class TestNSCA::PerformanceData < Test::Unit::TestCase
|
||||||
assert nil == perfdata( 'have not a warn test', nil, nil).warn, "Not nil as warn"
|
assert nil == perfdata( 'have not a warn test', nil, nil).warn, "Not nil as warn"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'Measure' do
|
||||||
|
should 'work with s' do
|
||||||
|
PC = perfdata 'something in seconds', :s
|
||||||
|
assert PC.measure { true }.is_a?( PC), 'can not be created?'
|
||||||
|
end
|
||||||
|
|
||||||
|
should 'work with ms' do
|
||||||
|
PD = perfdata 'something in mili seconds', :ms
|
||||||
|
assert PD.measure { true }.is_a?( PD), 'can not be created?'
|
||||||
|
end
|
||||||
|
|
||||||
|
should 'not work with something else' do
|
||||||
|
PE = perfdata 'something else than time', :c
|
||||||
|
assert_raise NSCA::PerformanceData::TimeUnitExpected do
|
||||||
|
PE.measure { true }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
should 'measure something between 1s..3s if i sleep 2 seconds' do
|
||||||
|
PF = perfdata 'wait 2 seconds', :s
|
||||||
|
pf = PF.measure { sleep 2 }
|
||||||
|
assert (1..3).include?( pf.value), "Not in range 1s..3s: #{pf.value}s"
|
||||||
|
end
|
||||||
|
|
||||||
|
should 'measure something between 1000ms..3000ms if i sleep 2 seconds' do
|
||||||
|
PG = perfdata 'wait 2000 mili second', :ms
|
||||||
|
pf = PG.measure { sleep 2 }
|
||||||
|
assert (1000..3000).include?( pf.value), "Not in range 1000ms..3000ms: #{pf.value}ms"
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
class TestNSCA::Check < Test::Unit::TestCase
|
class TestNSCA::Check < Test::Unit::TestCase
|
||||||
|
|
Loading…
Reference in a new issue