mogilefs-client 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,98 @@
1
+ require 'test/unit'
2
+
3
+ $TESTING = true
4
+
5
+ require 'mogilefs/pool'
6
+
7
+ class MogileFS::Pool
8
+
9
+ attr_reader :objects, :queue
10
+
11
+ end
12
+
13
+ class Resource; end
14
+
15
+ class ResourceWithArgs
16
+
17
+ def initialize(args)
18
+ end
19
+
20
+ end
21
+
22
+ class TestPool < Test::Unit::TestCase
23
+
24
+ def setup
25
+ @pool = MogileFS::Pool.new Resource
26
+ end
27
+
28
+ def test_get
29
+ o1 = @pool.get
30
+ o2 = @pool.get
31
+ assert_kind_of Resource, o1
32
+ assert_kind_of Resource, o2
33
+ assert_not_equal o1, o2
34
+ end
35
+
36
+ def test_get_with_args
37
+ @pool = MogileFS::Pool.new ResourceWithArgs, 'my arg'
38
+ o = @pool.get
39
+ assert_kind_of ResourceWithArgs, o
40
+ end
41
+
42
+ def test_put
43
+ o = @pool.get
44
+ @pool.put o
45
+
46
+ assert_raises(MogileFS::Pool::BadObjectError) { @pool.put nil }
47
+ assert_raises(MogileFS::Pool::BadObjectError) { @pool.put Resource.new }
48
+ end
49
+
50
+ def test_put_destroy
51
+ objs = (0...7).map { @pool.get } # pool full
52
+
53
+ assert_equal 7, @pool.objects.length
54
+ assert_equal 0, @pool.queue.length
55
+
56
+ 4.times { @pool.put objs.shift }
57
+
58
+ assert_equal 7, @pool.objects.length
59
+ assert_equal 4, @pool.queue.length
60
+
61
+ @pool.put objs.shift # trip threshold
62
+
63
+ assert_equal 4, @pool.objects.length
64
+ assert_equal 2, @pool.queue.length
65
+
66
+ @pool.put objs.shift # don't need to remove any more
67
+
68
+ assert_equal 4, @pool.objects.length
69
+ assert_equal 3, @pool.queue.length
70
+
71
+ @pool.put objs.shift until objs.empty?
72
+
73
+ assert_equal 4, @pool.objects.length
74
+ assert_equal 4, @pool.queue.length
75
+ end
76
+
77
+ def test_use
78
+ val = @pool.use { |o| assert_kind_of Resource, o }
79
+ assert_equal nil, val, "Don't return object from pool"
80
+ end
81
+
82
+ def test_use_with_exception
83
+ @pool.use { |o| raise } rescue nil
84
+ assert_equal 1, @pool.queue.length, "Resource not returned to pool"
85
+ end
86
+
87
+ def test_use_reuse
88
+ o1 = nil
89
+ o2 = nil
90
+
91
+ @pool.use { |o| o1 = o }
92
+ @pool.use { |o| o2 = o }
93
+
94
+ assert_equal o1, o2, "Objects must be reused"
95
+ end
96
+
97
+ end
98
+
metadata ADDED
@@ -0,0 +1,63 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.8.11.6
3
+ specification_version: 1
4
+ name: mogilefs-client
5
+ version: !ruby/object:Gem::Version
6
+ version: 1.0.1
7
+ date: 2006-03-21 00:00:00 -08:00
8
+ summary: A Ruby MogileFS client
9
+ require_paths:
10
+ - lib
11
+ email: eric@robotcoop.com
12
+ homepage:
13
+ rubyforge_project:
14
+ description: A Ruby MogileFS client. MogileFS is a distributed filesystem written by Danga Interactive. This client supports NFS mode and has untested support for HTTP mode.
15
+ autorequire:
16
+ default_executable:
17
+ bindir: bin
18
+ has_rdoc: true
19
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
20
+ requirements:
21
+ - - ">"
22
+ - !ruby/object:Gem::Version
23
+ version: 0.0.0
24
+ version:
25
+ platform: ruby
26
+ signing_key:
27
+ cert_chain:
28
+ post_install_message:
29
+ authors:
30
+ - Eric Hodel
31
+ files:
32
+ - LICENSE
33
+ - Manifest.txt
34
+ - README
35
+ - Rakefile
36
+ - lib/mogilefs.rb
37
+ - lib/mogilefs/admin.rb
38
+ - lib/mogilefs/backend.rb
39
+ - lib/mogilefs/client.rb
40
+ - lib/mogilefs/httpfile.rb
41
+ - lib/mogilefs/mogilefs.rb
42
+ - lib/mogilefs/nfsfile.rb
43
+ - lib/mogilefs/pool.rb
44
+ - test/setup.rb
45
+ - test/test_admin.rb
46
+ - test/test_backend.rb
47
+ - test/test_client.rb
48
+ - test/test_mogilefs.rb
49
+ - test/test_pool.rb
50
+ test_files: []
51
+
52
+ rdoc_options: []
53
+
54
+ extra_rdoc_files: []
55
+
56
+ executables: []
57
+
58
+ extensions: []
59
+
60
+ requirements: []
61
+
62
+ dependencies: []
63
+