parallizer 0.4.1 → 0.4.2

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/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