fastthread 1.0.1-i386-mswin32

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/test/test_all.rb ADDED
@@ -0,0 +1,6 @@
1
+ require 'test/unit'
2
+ $:.unshift File.expand_path( File.dirname( __FILE__ ) )
3
+ require 'test_mutex'
4
+ require 'test_condvar'
5
+ require 'test_queue'
6
+
@@ -0,0 +1,34 @@
1
+ require 'test/unit'
2
+ require 'thread'
3
+ if RUBY_PLATFORM != "java"
4
+ $:.unshift File.expand_path( File.join( File.dirname( __FILE__ ), "../ext/fastthread" ) )
5
+ require 'fastthread'
6
+ end
7
+
8
+ class TestCondVar < Test::Unit::TestCase
9
+ def test_signal
10
+ s = ""
11
+ m = Mutex.new
12
+ cv = ConditionVariable.new
13
+ ready = false
14
+
15
+ t = Thread.new do
16
+ nil until ( Thread.pass ; m.synchronize { ready } )
17
+ m.synchronize { s << "b" }
18
+ cv.signal
19
+ end
20
+
21
+ m.synchronize do
22
+ s << "a"
23
+ ready = true
24
+ cv.wait m
25
+ assert m.locked?
26
+ s << "c"
27
+ end
28
+
29
+ t.join
30
+
31
+ assert_equal "abc", s
32
+ end
33
+ end
34
+
@@ -0,0 +1,74 @@
1
+ require 'test/unit'
2
+ require 'thread'
3
+ if RUBY_PLATFORM != "java"
4
+ $:.unshift File.expand_path( File.join( File.dirname( __FILE__ ), "../ext/fastthread" ) )
5
+ require 'fastthread'
6
+ end
7
+
8
+ class TestMutex < Test::Unit::TestCase
9
+ def self.mutex_test( name, &body )
10
+ define_method( "test_#{ name }" ) do
11
+ body.call( self, Mutex.new, "" )
12
+ end
13
+ # at one time we also tested Mutex_m here, but it's no longer
14
+ # part of fastthread
15
+ end
16
+
17
+ mutex_test( :locked_p ) do |test, m, prefix|
18
+ test.instance_eval do
19
+ assert_equal false, m.send( "#{ prefix }locked?" )
20
+ m.send "#{ prefix }lock"
21
+ assert_equal true, m.send( "#{ prefix }locked?" )
22
+ m.send "#{ prefix }unlock"
23
+ assert_equal false, m.send( "#{ prefix }locked?" )
24
+ end
25
+ end
26
+
27
+ mutex_test( :synchronize ) do |test, m, prefix|
28
+ test.instance_eval do
29
+ assert !m.send( "#{ prefix }locked?" )
30
+ m.send "#{ prefix }synchronize" do
31
+ assert m.send( "#{ prefix }locked?" )
32
+ end
33
+ assert !m.send( "#{ prefix }locked?" )
34
+ end
35
+ end
36
+
37
+ mutex_test( :synchronize_exception ) do |test, m, prefix|
38
+ test.instance_eval do
39
+ assert !m.send( "#{ prefix }locked?" )
40
+ assert_raise ArgumentError do
41
+ m.send "#{ prefix }synchronize" do
42
+ assert m.send( "#{ prefix }locked?" )
43
+ raise ArgumentError
44
+ end
45
+ end
46
+ assert !m.send( "#{ prefix }locked?" )
47
+ end
48
+ end
49
+
50
+ mutex_test( :mutual_exclusion ) do |test, m, prefix|
51
+ test.instance_eval do
52
+ s = ""
53
+
54
+ ("a".."c").map do |c|
55
+ Thread.new do
56
+ Thread.pass
57
+ 5.times do
58
+ m.send "#{ prefix }synchronize" do
59
+ s << c
60
+ Thread.pass
61
+ s << c
62
+ end
63
+ end
64
+ end
65
+ end.each do |thread|
66
+ thread.join
67
+ end
68
+
69
+ assert_equal 30, s.length
70
+ assert s.match( /^(aa|bb|cc)+$/ )
71
+ end
72
+ end
73
+ end
74
+
@@ -0,0 +1,79 @@
1
+ require 'test/unit'
2
+ require 'thread'
3
+ if RUBY_PLATFORM != "java"
4
+ $:.unshift File.expand_path( File.join( File.dirname( __FILE__ ), "../ext/fastthread" ) )
5
+ require 'fastthread'
6
+ end
7
+
8
+ class TestQueue < Test::Unit::TestCase
9
+ def check_sequence( q )
10
+ range = "a".."f"
11
+
12
+ s = ""
13
+ e = nil
14
+
15
+ t = Thread.new do
16
+ begin
17
+ for c in range
18
+ q.push c
19
+ s << c
20
+ Thread.pass
21
+ end
22
+ rescue Exception => e
23
+ end
24
+ end
25
+
26
+ for c in range
27
+ unless t.alive?
28
+ raise e if e
29
+ assert_equal range.to_a.join, s, "expected all values pushed"
30
+ end
31
+ x = q.shift
32
+ assert_equal c, x, "sequence error: expected #{ c } but got #{ x }"
33
+ end
34
+ end
35
+
36
+ def test_queue
37
+ check_sequence( Queue.new )
38
+ end
39
+
40
+ def test_sized_queue_full
41
+ check_sequence( SizedQueue.new( 6 ) )
42
+ end
43
+
44
+ def test_sized_queue_half
45
+ check_sequence( SizedQueue.new( 3 ) )
46
+ end
47
+
48
+ def test_sized_queue_one
49
+ check_sequence( SizedQueue.new( 1 ) )
50
+ end
51
+
52
+ def check_serialization( k, *args )
53
+ q1 = k.new *args
54
+ %w(a b c d e f).each { |c| q1.push c }
55
+ q2 = Marshal.load(Marshal.dump(q1))
56
+ assert( ( q1.size == q2.size ), "queues are same size" )
57
+ q1.size.times do
58
+ assert( ( q1.pop == q2.pop ), "same data" )
59
+ end
60
+ [ q1, q2 ]
61
+ end
62
+
63
+ def test_queue_serialization
64
+ check_serialization Queue
65
+ end
66
+
67
+ def test_sized_queue_serialization
68
+ (q1, q2) = check_serialization SizedQueue, 20
69
+ assert( ( q1.max == q2.max ), "maximum sizes equal" )
70
+ end
71
+
72
+ def test_sized_queue_size
73
+ q = SizedQueue.new 3
74
+ assert_equal 3, q.max, "queue has expected max (3)"
75
+ q.max = 5
76
+ assert_equal 5, q.max, "queue has expected max (5)"
77
+ end
78
+ end
79
+
metadata ADDED
@@ -0,0 +1,101 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.9.4
3
+ specification_version: 1
4
+ name: fastthread
5
+ version: !ruby/object:Gem::Version
6
+ version: 1.0.1
7
+ date: 2007-12-20 00:00:00 -03:00
8
+ summary: Optimized replacement for thread.rb primitives
9
+ require_paths:
10
+ - lib
11
+ - ext
12
+ email: ""
13
+ homepage: ""
14
+ rubyforge_project: mongrel
15
+ description: Optimized replacement for thread.rb primitives
16
+ autorequire:
17
+ default_executable:
18
+ bindir: bin
19
+ has_rdoc: true
20
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
21
+ requirements:
22
+ - - ">"
23
+ - !ruby/object:Gem::Version
24
+ version: 0.0.0
25
+ version:
26
+ platform: i386-mswin32
27
+ signing_key:
28
+ cert_chain:
29
+ - |
30
+ -----BEGIN CERTIFICATE-----
31
+ MIIDUDCCAjigAwIBAgIBADANBgkqhkiG9w0BAQUFADBOMRwwGgYDVQQDDBNtb25n
32
+ cmVsLWRldmVsb3BtZW50MRkwFwYKCZImiZPyLGQBGRYJcnVieWZvcmdlMRMwEQYK
33
+ CZImiZPyLGQBGRYDb3JnMB4XDTA3MDkxNjEwMzI0OVoXDTA4MDkxNTEwMzI0OVow
34
+ TjEcMBoGA1UEAwwTbW9uZ3JlbC1kZXZlbG9wbWVudDEZMBcGCgmSJomT8ixkARkW
35
+ CXJ1Ynlmb3JnZTETMBEGCgmSJomT8ixkARkWA29yZzCCASIwDQYJKoZIhvcNAQEB
36
+ BQADggEPADCCAQoCggEBAMb9v3B01eOHk3FyypbQgKXzJplUE5P6dXoG+xpPm0Lv
37
+ P7BQmeMncOwqQ7zXpVQU+lTpXtQFTsOE3vL7KnhQFJKGvUAkbh24VFyopu1I0yqF
38
+ mGu4nRqNXGXVj8TvLSj4S1WpSRLAa0acLPNyKhGmoV9+crqQypSjM6XKjBeppifo
39
+ 4eBmWGjiJEYMIJBvJZPJ4rAVDDA8C6CM1m3gMBGNh8ELDhU8HI9AP3dMIkTI2Wx9
40
+ 9xkJwHdroAaS0IFFtYChrwee4FbCF1FHDgoTosMwa47DrLHg4hZ6ojaKwK5QVWEV
41
+ XGb6ju5UqpktnSWF2W+Lvl/K0tI42OH2CAhebT1gEVUCAwEAAaM5MDcwCQYDVR0T
42
+ BAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFGHChyMSZ16u9WOzKhgJSQ9lqDc5
43
+ MA0GCSqGSIb3DQEBBQUAA4IBAQA/lfeN2WdB1xN+82tT7vNS4HOjRQw6MUh5yktu
44
+ GQjaGqm0UB+aX0Z9y0B0qpfv9rj7nmIvEGiwBmDepNWYCGuW15JyqpN7QVVnG2xS
45
+ Mrame7VqgjM7A+VGDD5In5LtWbM/CHAATvvFlQ5Ph13YE1EdnVbZ65c+KQv+5sFY
46
+ Q+zEop74d878uaC/SAHHXS46TiXneocaLSYw1CEZs/MAIy+9c4Q5ESbGpgnfg1Ad
47
+ 6lwl7k3hsNHO/+tZzx4HJtOXDI1yAl3+q6T9J0yI3z97EinwvAKhS1eyOI2Y5eeT
48
+ tbQaNYkU127B3l/VNpd8fQm3Jkl/PqCCmDBQjUszFrJEODug
49
+ -----END CERTIFICATE-----
50
+
51
+ - |
52
+ -----BEGIN CERTIFICATE-----
53
+ MIIDQzCCAiugAwIBAgIBADANBgkqhkiG9w0BAQUFADBOMRwwGgYDVQQDDBNtb25n
54
+ cmVsLWRldmVsb3BtZW50MRkwFwYKCZImiZPyLGQBGRYJcnVieWZvcmdlMRMwEQYK
55
+ CZImiZPyLGQBGRYDb3JnMB4XDTA3MDkyNDAyMzAzOVoXDTA4MDkyMzAyMzAzOVow
56
+ QTETMBEGA1UEAwwKbHVpc2xhdmVuYTEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMw
57
+ EQYKCZImiZPyLGQBGRYDY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
58
+ AQEA5gIWDL7FYk43BEM3guuNz1vrr2RW7UAh+KY8w2+cGxt+MNi3P+rrfx/LAr7d
59
+ KKV+RT7PQgutb9MZhk8ghn0qgTpCxWbvlhnFrMqIDaJy9nXGEWt6M0fTWdEojrzF
60
+ dLSO//3GYzZze/ykE20KeNZ8SXzbxPwmIwrKfvoGYshGdmU7RAwiV6vV9ZS4uB1I
61
+ /pvzsWp3cSqZwxJvtb7P445jcDMPqFXjMFVAXd6KpfVNl4ZNBzYHc0Ii2uLu3Pv4
62
+ jOmwvJlYZ30ccBh0G86ngtlOpZNrdcnXgRKXADGnxPickYZMdIHPPykIeR6Im0sR
63
+ hCq6hsHkuWQU6CuwqTtGErw6uwIDAQABozkwNzAJBgNVHRMEAjAAMAsGA1UdDwQE
64
+ AwIEsDAdBgNVHQ4EFgQUkz5QYICmPVaUs8rhPOQmhrDosCUwDQYJKoZIhvcNAQEF
65
+ BQADggEBAMVgi+dtUNn1WNgsrkDi8wPkBbTj4qvTdu/mLncUD/wSNEfaf0ADiycu
66
+ W9x8imY3UmSyyc2HO+/Wnf6/PkbaoAcUZxl/7a60UDqSyTpdpfB3moA7z9+j+Kyp
67
+ nVFr7JVQG3SSNC/y0XrYf6J0DCgpLwOqLSes/KaQOtJlXl/xV37AHXEnAPjwJyCD
68
+ qafzGwoObqIf7Vj8IzU/eoCx/SxAYnaevry1bls58eb28FKGuq7bWyJuDrFu1H8m
69
+ mPG0Kv6rJ8vKyQiYZMAKm+XpuDZ09rnGm3ytdeEpXDfF5osSDDBSlWox82z2ulMd
70
+ knPjAuGZt50yNl1teBnVEZkty2RINfo=
71
+ -----END CERTIFICATE-----
72
+
73
+ post_install_message:
74
+ authors:
75
+ - MenTaLguY <mental@rydia.net>
76
+ files:
77
+ - test/test_queue.rb
78
+ - test/test_mutex.rb
79
+ - test/test_condvar.rb
80
+ - test/test_all.rb
81
+ - setup.rb
82
+ - Manifest
83
+ - ext/fastthread/fastthread.c
84
+ - ext/fastthread/extconf.rb
85
+ - CHANGELOG
86
+ - fastthread.gemspec
87
+ - lib/fastthread.so
88
+ test_files:
89
+ - test/test_all.rb
90
+ rdoc_options: []
91
+
92
+ extra_rdoc_files: []
93
+
94
+ executables: []
95
+
96
+ extensions: []
97
+
98
+ requirements: []
99
+
100
+ dependencies: []
101
+
metadata.gz.sig ADDED
Binary file