system_timer 1.0 → 1.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/ChangeLog +64 -0
- data/README +123 -44
- data/ext/system_timer/extconf.rb +0 -0
- data/ext/system_timer/system_timer_native.c +236 -128
- data/lib/system_timer.rb +80 -37
- data/lib/system_timer/concurrent_timer_pool.rb +89 -0
- data/lib/system_timer/thread_timer.rb +22 -0
- data/lib/system_timer_stub.rb +5 -1
- data/test/all_tests.rb +3 -1
- data/test/system_timer/concurrent_timer_pool_unit_test.rb +291 -0
- data/test/system_timer/thread_timer_test.rb +20 -0
- data/test/system_timer_functional_test.rb +282 -0
- data/test/system_timer_unit_test.rb +110 -0
- data/test/test_helper.rb +10 -0
- metadata +32 -11
- data/test/system_timer_test.rb +0 -121
data/test/system_timer_test.rb
DELETED
@@ -1,121 +0,0 @@
|
|
1
|
-
# $: << File.dirname(__FILE__) + '/../ext/xray'
|
2
|
-
$: << File.dirname(__FILE__) + '/../lib'
|
3
|
-
$: << File.dirname(__FILE__) + '/../ext/system_timer'
|
4
|
-
$: << File.dirname(__FILE__) + "/../../../vendor/gems/dust-0.1.4/lib"
|
5
|
-
$: << File.dirname(__FILE__) + "/../../../vendor/gems/mocha-0.5.3/lib"
|
6
|
-
require 'test/unit'
|
7
|
-
require 'system_timer'
|
8
|
-
require 'dust'
|
9
|
-
require 'mocha'
|
10
|
-
require 'stringio'
|
11
|
-
|
12
|
-
functional_tests do
|
13
|
-
|
14
|
-
test "original_ruby_sigalrm_handler is nil after reset" do
|
15
|
-
SystemTimer.send(:install_ruby_sigalrm_handler)
|
16
|
-
SystemTimer.send(:reset_original_ruby_sigalrm_handler)
|
17
|
-
assert_nil SystemTimer.send(:original_ruby_sigalrm_handler)
|
18
|
-
end
|
19
|
-
|
20
|
-
test "original_ruby_sigalrm_handler is set to existing handler after install_ruby_sigalrm_handler" do
|
21
|
-
SystemTimer.expects(:trap).with('SIGALRM').returns(:an_existing_handler)
|
22
|
-
SystemTimer.send(:install_ruby_sigalrm_handler)
|
23
|
-
assert_equal :an_existing_handler, SystemTimer.send(:original_ruby_sigalrm_handler)
|
24
|
-
end
|
25
|
-
|
26
|
-
test "restore_original_ruby_sigalrm_handler traps sigalrm using original_ruby_sigalrm_handler" do
|
27
|
-
SystemTimer.stubs(:original_ruby_sigalrm_handler).returns(:the_original_handler)
|
28
|
-
SystemTimer.expects(:trap).with('SIGALRM', :the_original_handler)
|
29
|
-
SystemTimer.send :restore_original_ruby_sigalrm_handler
|
30
|
-
end
|
31
|
-
|
32
|
-
test "restore_original_ruby_sigalrm_handler resets original_ruby_sigalrm_handler" do
|
33
|
-
SystemTimer.stubs(:trap)
|
34
|
-
SystemTimer.expects(:reset_original_ruby_sigalrm_handler)
|
35
|
-
SystemTimer.send :restore_original_ruby_sigalrm_handler
|
36
|
-
end
|
37
|
-
|
38
|
-
test "restore_original_ruby_sigalrm_handler reset SIGALRM handler to default when original_ruby_sigalrm_handler is nil" do
|
39
|
-
SystemTimer.stubs(:original_ruby_sigalrm_handler)
|
40
|
-
SystemTimer.expects(:trap).with('SIGALRM', 'DEFAULT')
|
41
|
-
SystemTimer.stubs(:reset_original_ruby_sigalrm_handler)
|
42
|
-
SystemTimer.send :restore_original_ruby_sigalrm_handler
|
43
|
-
end
|
44
|
-
|
45
|
-
test "restore_original_ruby_sigalrm_handler resets original_ruby_sigalrm_handler when trap raises" do
|
46
|
-
SystemTimer.stubs(:trap).returns(:the_original_handler)
|
47
|
-
SystemTimer.send(:install_ruby_sigalrm_handler)
|
48
|
-
SystemTimer.expects(:trap).raises("next time maybe...")
|
49
|
-
SystemTimer.expects(:reset_original_ruby_sigalrm_handler)
|
50
|
-
|
51
|
-
SystemTimer.send(:restore_original_ruby_sigalrm_handler) rescue nil
|
52
|
-
end
|
53
|
-
|
54
|
-
test "timeout_after raises TimeoutError if block takes too long" do
|
55
|
-
assert_raises(Timeout::Error) do
|
56
|
-
SystemTimer.timeout_after(1) {sleep 5}
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
test "timeout_after does not raises Timeout Error if block completes in time" do
|
61
|
-
SystemTimer.timeout_after(5) {sleep 1}
|
62
|
-
end
|
63
|
-
|
64
|
-
test "timeout_after returns the value returned by the black" do
|
65
|
-
assert_equal :block_value, SystemTimer.timeout_after(1) {:block_value}
|
66
|
-
end
|
67
|
-
|
68
|
-
test "timeout_after raises TimeoutError in thread that called timeout_after" do
|
69
|
-
raised_thread = nil
|
70
|
-
other_thread = Thread.new do
|
71
|
-
begin
|
72
|
-
SystemTimer.timeout_after(1) {sleep 5}
|
73
|
-
flunk "Should have timed out"
|
74
|
-
rescue Timeout::Error
|
75
|
-
raised_thread = Thread.current
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
other_thread.join
|
80
|
-
assert_equal other_thread, raised_thread
|
81
|
-
end
|
82
|
-
|
83
|
-
test "cancelling a timer that was installed restores previous ruby handler for SIG_ALRM" do
|
84
|
-
begin
|
85
|
-
fake_original_ruby_handler = proc {}
|
86
|
-
initial_ruby_handler = trap "SIGALRM", fake_original_ruby_handler
|
87
|
-
SystemTimer.install_timer(3)
|
88
|
-
SystemTimer.cleanup_timer
|
89
|
-
assert_equal fake_original_ruby_handler, trap("SIGALRM", "IGNORE")
|
90
|
-
ensure # avoid interfering with test infrastructure
|
91
|
-
trap("SIGALRM", initial_ruby_handler) if initial_ruby_handler
|
92
|
-
end
|
93
|
-
end
|
94
|
-
|
95
|
-
test "debug_enabled returns true after enabling debug" do
|
96
|
-
begin
|
97
|
-
SystemTimer.disable_debug
|
98
|
-
SystemTimer.enable_debug
|
99
|
-
assert_equal true, SystemTimer.debug_enabled?
|
100
|
-
ensure
|
101
|
-
SystemTimer.disable_debug
|
102
|
-
end
|
103
|
-
end
|
104
|
-
|
105
|
-
test "debug_enabled returns false after disable debug" do
|
106
|
-
begin
|
107
|
-
SystemTimer.enable_debug
|
108
|
-
SystemTimer.disable_debug
|
109
|
-
assert_equal false, SystemTimer.debug_enabled?
|
110
|
-
ensure
|
111
|
-
SystemTimer.disable_debug
|
112
|
-
end
|
113
|
-
end
|
114
|
-
|
115
|
-
test "timeout offers an API fully compatible with timeout.rb" do
|
116
|
-
assert_raises(Timeout::Error) do
|
117
|
-
SystemTimer.timeout(1) {sleep 5}
|
118
|
-
end
|
119
|
-
end
|
120
|
-
|
121
|
-
end
|