parallizer 0.4.1 → 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- parallizer (0.4.1)
4
+ parallizer (0.4.2)
5
5
  celluloid (~> 0.11.0)
6
6
 
7
7
  GEM
data/README.md CHANGED
@@ -122,8 +122,8 @@ require 'net/http'
122
122
  require 'parallizer'
123
123
 
124
124
  parallizer = Parallizer.new(Net::HTTP)
125
- parallizer.add.get('www.google.com', '/?q=foo')
126
- parallizer.add.get('www.google.com', '/?q=bar')
125
+ parallizer.add.get('www.google.com', '/search?q=foo')
126
+ parallizer.add.get('www.google.com', '/search?q=bar')
127
127
  http_service = parallizer.create_proxy
128
128
  ```
129
129
 
@@ -146,10 +146,30 @@ require 'net/http'
146
146
  require 'parallizer'
147
147
 
148
148
  parallizer = Parallizer.new(Net::HTTP, :retries => 3)
149
- parallizer.add.get('www.google.com', '/?q=foo')
149
+ parallizer.add.get('www.google.com', '/search?q=foo')
150
150
  http_service = parallizer.create_proxy
151
151
 
152
- http_service.get('www.google.com', '/?q=foo') # Will be called up to 4 times
152
+ http_service.get('www.google.com', '/search?q=foo') # Will be called up to 4 times
153
+ ```
154
+
155
+
156
+ ### Retrieve all results
157
+
158
+ You can also execute all added methods in parallel and get all the results.
159
+
160
+ ```ruby
161
+ require 'net/http'
162
+ require 'parallizer'
163
+
164
+ parallizer = Parallizer.new(Net::HTTP)
165
+ parallizer.add.get('www.google.com', '/search?q=foo')
166
+ parallizer.add.get('www.google.com', '/search?q=bar')
167
+
168
+ call_results = parallizer.all_call_results
169
+ # {
170
+ # [:get, 'www.google.com', '/search?q=foo'] => ...,
171
+ # [:get, 'www.google.com', '/search?q=foo'] => ...
172
+ # }
153
173
  ```
154
174
 
155
175
 
data/lib/parallizer.rb CHANGED
@@ -69,6 +69,16 @@ class Parallizer
69
69
  ::Parallizer::Proxy.new(client, call_infos)
70
70
  end
71
71
 
72
+ def all_call_results
73
+ proxy = create_proxy
74
+
75
+ call_infos.keys.inject({}) do |result, method_name_and_args|
76
+ result[method_name_and_args] = proxy.send(*method_name_and_args)
77
+
78
+ result
79
+ end
80
+ end
81
+
72
82
  private
73
83
 
74
84
  def execute
@@ -1,3 +1,3 @@
1
1
  class Parallizer
2
- VERSION = "0.4.1"
2
+ VERSION = "0.4.2"
3
3
  end
@@ -3,21 +3,30 @@ require 'spec_helper'
3
3
  describe Parallizer do
4
4
  class TestObject
5
5
  def a_method(arg)
6
- Thread.current
6
+ @a_method ||= {}
7
+ @a_method[arg] ||= rand(1..100)
7
8
  end
8
9
 
9
10
  def another_method
11
+ @another_method ||= rand(1..100)
12
+ end
13
+
14
+ def current_thread
15
+ Thread.current
16
+ end
17
+
18
+ def another_current_thread
10
19
  Thread.current
11
20
  end
12
21
  end
13
22
 
14
23
  class AnotherTestObject
15
24
  def a_method
16
- Thread.current
25
+ @a_method ||= rand(1..100)
17
26
  end
18
27
 
19
28
  def another_method
20
- Thread.current
29
+ @another_method ||= rand(1..100)
21
30
  end
22
31
  end
23
32
 
@@ -90,6 +99,31 @@ describe Parallizer do
90
99
  end
91
100
  end
92
101
 
102
+ describe "#all_call_results" do
103
+ before do
104
+ @client = TestObject.new
105
+ @parallizer = Parallizer.new(@client)
106
+ end
107
+
108
+ execute do
109
+ @results = @parallizer.all_call_results
110
+ end
111
+
112
+ context "gives all results" do
113
+ before do
114
+ @parallizer.add_call(:a_method, 'arg1')
115
+ @parallizer.add_call(:a_method, 'arg2')
116
+ @parallizer.add_call(:another_method)
117
+ end
118
+
119
+ it "gives results in order executed" do
120
+ @results[[:a_method, 'arg1']].should == @client.a_method('arg1')
121
+ @results[[:a_method, 'arg2']].should == @client.a_method('arg2')
122
+ @results[[:another_method]].should == @client.another_method
123
+ end
124
+ end
125
+ end
126
+
93
127
  describe "#create_proxy" do
94
128
  before do
95
129
  @client = TestObject.new
@@ -102,15 +136,15 @@ describe Parallizer do
102
136
 
103
137
  context "with existing method on client" do
104
138
  before do
105
- @parallizer.add_call(:a_method, 'arg')
139
+ @parallizer.add_call(:current_thread)
106
140
  end
107
141
 
108
142
  it "should execute method with add_call in a separate thread" do
109
- @proxy.a_method('arg').should_not == Thread.current
143
+ @proxy.current_thread.should_not == Thread.current
110
144
  end
111
145
 
112
146
  it "should execute method not added with add_call in current thread" do
113
- @proxy.another_method.should == Thread.current
147
+ @proxy.another_current_thread.should == Thread.current
114
148
  end
115
149
  end
116
150
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: parallizer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-02-26 00:00:00.000000000 Z
12
+ date: 2013-07-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: celluloid
@@ -110,18 +110,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
110
110
  - - ! '>='
111
111
  - !ruby/object:Gem::Version
112
112
  version: '0'
113
- segments:
114
- - 0
115
- hash: 1172644731991110538
116
113
  required_rubygems_version: !ruby/object:Gem::Requirement
117
114
  none: false
118
115
  requirements:
119
116
  - - ! '>='
120
117
  - !ruby/object:Gem::Version
121
118
  version: '0'
122
- segments:
123
- - 0
124
- hash: 1172644731991110538
125
119
  requirements: []
126
120
  rubyforge_project: parallizer
127
121
  rubygems_version: 1.8.25