thread_tools 0.23 → 0.24

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.
@@ -0,0 +1,47 @@
1
+ require 'test/unit'
2
+ require File.expand_path(File.dirname(__FILE__)+'/../lib/thread_tools/debugmutex')
3
+
4
+
5
+ class DebugMutexTest < Test::Unit::TestCase
6
+ def test_lock_unlock_trylock
7
+ mtx = ThreadTools::DebugMutex.new
8
+
9
+ # lock should return self
10
+ assert_equal(mtx.lock, mtx)
11
+ # mutex should be locked
12
+ assert(mtx.locked?)
13
+ # unlock should return nil
14
+ assert_nil(mtx.unlock)
15
+
16
+ # try_lock should return true
17
+ assert(mtx.try_lock)
18
+ # try_lock should return false
19
+ assert(!mtx.try_lock)
20
+
21
+ mtx.unlock
22
+ # unlock should raise if not locked
23
+ assert_raise ThreadError do
24
+ mtx.unlock
25
+ end
26
+ end
27
+
28
+ def test_contention_owner
29
+ thr = Thread.current
30
+ mtx = ThreadTools::DebugMutex.new
31
+ mtx.synchronize do
32
+ Thread.new do
33
+ # previous thread still the owner
34
+ assert_equal(mtx.owner, thr)
35
+ mtx.lock
36
+ # current thread is the new owner
37
+ assert_equal(mtx.owner, Thread.current)
38
+ mtx.unlock
39
+ end
40
+ sleep 0.05
41
+ end
42
+ # we should have 1 contention
43
+ assert_equal(mtx.contentions, 1)
44
+ # owner is nil
45
+ assert_nil(mtx.owner)
46
+ end
47
+ end
data/thread_tools.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = %q{thread_tools}
3
- s.version = '0.23'
3
+ s.version = '0.24'
4
4
  s.summary = %q{Utilities for threaded apps}
5
5
  s.platform = Gem::Platform::RUBY
6
6
  s.email = %q{daniel@tralamazza.com}
@@ -19,11 +19,13 @@ Gem::Specification.new do |s|
19
19
  'test/test_mongrel.rb',
20
20
  'test/test_semaphore.rb',
21
21
  'test/test_threadpool.rb',
22
+ 'test/test_debugmutex.rb',
22
23
  ]
23
24
  s.test_files = [
24
25
  'test/test_mongrel.rb',
25
26
  'test/test_semaphore.rb',
26
27
  'test/test_threadpool.rb',
28
+ 'test/test_debugmutex.rb',
27
29
  ]
28
30
  s.rdoc_options = ['--main', 'README.rdoc']
29
31
  s.extra_rdoc_files = ['README.rdoc']
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: thread_tools
3
3
  version: !ruby/object:Gem::Version
4
- version: "0.23"
4
+ version: "0.24"
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Tralamazza
@@ -32,6 +32,7 @@ files:
32
32
  - test/test_mongrel.rb
33
33
  - test/test_semaphore.rb
34
34
  - test/test_threadpool.rb
35
+ - test/test_debugmutex.rb
35
36
  has_rdoc: true
36
37
  homepage: http://github.com/differential/thread_tools
37
38
  licenses: []
@@ -65,3 +66,4 @@ test_files:
65
66
  - test/test_mongrel.rb
66
67
  - test/test_semaphore.rb
67
68
  - test/test_threadpool.rb
69
+ - test/test_debugmutex.rb