sleepy_penguin 3.2.0 → 3.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,94 +0,0 @@
1
- require 'test/unit'
2
- require "dl"
3
- begin
4
- require "dl/func"
5
- rescue LoadError
6
- end
7
- $-w = true
8
- require 'sleepy_penguin'
9
-
10
- class TestSignalFD < Test::Unit::TestCase
11
- include SleepyPenguin
12
-
13
- def setup
14
- @sfd = nil
15
- trap(:USR1, "IGNORE")
16
- trap(:USR2, "IGNORE")
17
- end
18
-
19
- def teardown
20
- @sfd.close if @sfd && ! @sfd.closed?
21
- trap(:USR1, "DEFAULT")
22
- trap(:USR2, "DEFAULT")
23
- end
24
-
25
- def test_rt_constants
26
- assert [33,34].include?(SignalFD::RTMIN)
27
- assert_equal 64, SignalFD::RTMAX
28
- end
29
-
30
- def test_new_with_flags
31
- @sfd = SignalFD.new(%w(USR1), [:CLOEXEC,:NONBLOCK])
32
- assert_instance_of SignalFD, @sfd
33
- end if defined?(SignalFD::CLOEXEC) && defined?(SignalFD::NONBLOCK)
34
-
35
- def test_new_with_sym_flag
36
- @sfd = SignalFD.new(%w(USR1), :CLOEXEC)
37
- assert_instance_of SignalFD, @sfd
38
- end if defined?(SignalFD::CLOEXEC)
39
-
40
- def test_take
41
- @sfd = SignalFD.new(%w(USR1), 0)
42
- pid = fork { sleep 0.01; Process.kill(:USR1, Process.ppid) }
43
- siginfo = @sfd.take
44
- assert_equal Signal.list["USR1"], siginfo.signo
45
- assert_equal pid, siginfo.pid
46
- assert Process.waitpid2(pid)[1].success?
47
- end if RUBY_VERSION =~ %r{\A1\.9}
48
-
49
- def test_take_nonblock
50
- @sfd = SignalFD.new(%w(USR1), :NONBLOCK)
51
- assert_nil @sfd.take(true)
52
- assert_nil IO.select [ @sfd ], nil, nil, 0
53
- pid = fork { sleep 0.01; Process.kill(:USR1, Process.ppid) }
54
- siginfo = @sfd.take(true)
55
- if siginfo
56
- assert_equal Signal.list["USR1"], siginfo.signo
57
- assert_equal pid, siginfo.pid
58
- else
59
- warn "WARNING: SignalFD#take(nonblock=true) broken"
60
- end
61
- assert Process.waitpid2(pid)[1].success?
62
- end if RUBY_VERSION =~ %r{\A1\.9}
63
-
64
- def test_update
65
- assert_nothing_raised do
66
- @sfd = SignalFD.new
67
- @sfd.update! Signal.list["USR1"]
68
- @sfd.update! [ "USR1", Signal.list["USR2"] ]
69
- @sfd.update! [ "USR1", :USR2 ]
70
- @sfd.update! [ Signal.list["USR1"], Signal.list["USR2"] ]
71
- end
72
- end
73
-
74
- def test_with_sigqueue
75
- sig = Signal.list["USR2"]
76
- @sfd = SignalFD.new(:USR2)
77
- libc = DL::Handle.new("libc.so.6")
78
- if defined?(DL::Function)
79
- sigqueue = libc["sigqueue"]
80
- sigqueue = DL::CFunc.new(sigqueue, DL::TYPE_INT, "sigqueue")
81
- args = [DL::TYPE_INT, DL::TYPE_INT,DL::TYPE_INT]
82
- sigqueue = DL::Function.new(sigqueue, args, DL::TYPE_INT)
83
- else
84
- sigqueue = libc["sigqueue", "IIII"]
85
- end
86
- pid = fork { sleep 0.01; sigqueue.call(Process.ppid, sig, 666) }
87
- siginfo = @sfd.take
88
- assert_equal sig, siginfo.signo
89
- assert_equal pid, siginfo.pid
90
- assert Process.waitpid2(pid)[1].success?
91
- assert_equal 666, siginfo.ptr
92
- assert_equal 666, siginfo.int
93
- end if RUBY_VERSION =~ %r{\A1\.9}
94
- end if defined?(SleepyPenguin::SignalFD)
@@ -1,32 +0,0 @@
1
- require 'test/unit'
2
- $-w = true
3
- require 'sleepy_penguin'
4
-
5
- class TestSignalFDSigInfo < Test::Unit::TestCase
6
- include SleepyPenguin
7
-
8
- def test_members
9
- members = SignalFD::SigInfo::MEMBERS
10
- assert_equal 16, members.size
11
- a = SignalFD::SigInfo.new
12
- members.each { |k| assert_equal 0, a.__send__(k) }
13
- end
14
-
15
- def test_equality
16
- a = SignalFD::SigInfo.new
17
- b = SignalFD::SigInfo.new
18
- assert_equal a, b
19
-
20
- c = Class.new(SignalFD::SigInfo).new
21
- assert_equal a, c
22
- assert c != c.to_hash
23
- end
24
-
25
- def test_to_hash
26
- hash = SignalFD::SigInfo.new.to_hash
27
- assert_instance_of Hash, hash
28
- members = SignalFD::SigInfo::MEMBERS
29
- assert_equal members.size, hash.size
30
- members.each { |k| assert_equal 0, hash[k] }
31
- end
32
- end if defined?(SleepyPenguin::SignalFD)