sidekiq-sqs 0.0.7 → 0.0.8

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/Guardfile CHANGED
@@ -1,7 +1,7 @@
1
1
  # A sample Guardfile
2
2
  # More info at https://github.com/guard/guard#readme
3
3
 
4
- guard 'rspec', :version => 2 do
4
+ guard 'rspec', :version => 2, :cli => "--format nested" do
5
5
  watch(%r{^spec/.+_spec\.rb$})
6
6
  watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
7
7
  watch('spec/spec_helper.rb') { "spec" }
@@ -16,16 +16,6 @@ module Sidekiq
16
16
  @unique_queues = @queues.uniq
17
17
  end
18
18
 
19
- # TODO Since there's only one fetcher per manager, we run into the issue
20
- # where it takes longer to fetch a single job that it does to process,
21
- # on average, so that we have waiting workers even if we have jobs in the
22
- # queue because, with the HTTP round trip, fetching single messages is too
23
- # slow.
24
- #
25
- # We could fetch 10 at a time, but then we have to worry about stuffing them
26
- # into a "cache", and pushing them back into SQS if we die or exit. We could,
27
- # I guess, just let the "hold" on them expire, and then they would be picked
28
- # up again. I wonder if that would be 'good enough'
29
19
  def fetch
30
20
  watchdog('Fetcher#fetch died') do
31
21
  return if Sidekiq::Fetcher.done?
@@ -39,9 +29,7 @@ module Sidekiq
39
29
  queues.pop # Last entry is TIMEOUT
40
30
 
41
31
  msg = queues.inject(nil) do |message, queue|
42
- next if message
43
-
44
- Sidekiq.sqs.queues.named(queue).receive_message
32
+ message || Sidekiq.sqs.queues.named(queue).receive_message
45
33
  end
46
34
 
47
35
  if msg
@@ -1,5 +1,5 @@
1
1
  module Sidekiq
2
2
  module Sqs
3
- VERSION = "0.0.7"
3
+ VERSION = "0.0.8"
4
4
  end
5
5
  end
data/sidekiq-sqs.gemspec CHANGED
@@ -22,6 +22,8 @@ Gem::Specification.new do |gem|
22
22
  gem.add_dependency 'aws-sdk', '~> 1.6.6'
23
23
 
24
24
  gem.add_development_dependency 'rspec'
25
+ gem.add_development_dependency 'rb-fsevent', '~> 0.9.1'
25
26
  gem.add_development_dependency 'guard'
26
27
  gem.add_development_dependency 'guard-rspec'
28
+ gem.add_development_dependency 'mocha', '~> 0.12.3'
27
29
  end
@@ -0,0 +1,45 @@
1
+ require 'spec_helper'
2
+
3
+ class StubClient
4
+ def self.push(*args)
5
+ end
6
+
7
+ def self.push_bulk(*args)
8
+ end
9
+
10
+ def self.process_single(*args)
11
+ end
12
+
13
+ include Sidekiq::Sqs::Client
14
+ end
15
+
16
+ describe Sidekiq::Sqs::Client do
17
+ subject { StubClient }
18
+
19
+ describe ".process_single_with_sqs" do
20
+ it "base64 encodes and compresses the payload" do
21
+ subject.expects(:process_single_without_sqs).with(:worker_class, :item).returns([:item, "payload"])
22
+
23
+ subject.process_single_with_sqs(:worker_class, :item).should eq([:item, "eJwrSKzMyU9MAQAL3QLr\n"])
24
+ end
25
+ end
26
+
27
+ describe ".queue_or_create" do
28
+ let(:queue) { 'queue' }
29
+ let(:queues) { stub }
30
+ before { Sidekiq.stubs(sqs: stub(queues: queues)) }
31
+
32
+ it "returns the queue if it exists" do
33
+ queues.expects(:named).with(queue).returns(:queue)
34
+
35
+ subject.queue_or_create(queue).should eq(:queue)
36
+ end
37
+
38
+ it "creates the queue if it doesn't exists" do
39
+ queues.expects(:named).with(queue).raises(AWS::SQS::Errors::NonExistentQueue.new)
40
+ queues.expects(:create).with(queue).returns(:queue)
41
+
42
+ subject.queue_or_create(queue).should eq(:queue)
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,25 @@
1
+ require 'spec_helper'
2
+
3
+ class StubProcessor
4
+ def process(msg, queue)
5
+ end
6
+
7
+ include Sidekiq::Sqs::Processor
8
+ end
9
+
10
+ describe Sidekiq::Sqs::Processor do
11
+ subject { StubProcessor.new }
12
+
13
+ describe "#process_with_sqs" do
14
+ let(:body) { "eJxLTEo2NDIGAAbsAb0=\n" }
15
+ let(:message) { stub(body: body) }
16
+ let(:queue) { stub }
17
+
18
+ it "expands the message, delegates to the base class and deletes the message" do
19
+ subject.expects(:process_without_sqs).with('abc123', queue).returns(:processed)
20
+ message.expects(:delete)
21
+
22
+ subject.process(message, queue).should eq(:processed)
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,25 @@
1
+ require 'spec_helper'
2
+
3
+ class StubWorker
4
+ include Sidekiq::Sqs::Worker
5
+ end
6
+
7
+ describe Sidekiq::Sqs::Worker do
8
+ subject { StubWorker.new }
9
+
10
+ describe "#perform_async_bulk" do
11
+ it "formats the arguments" do
12
+ subject.expects(:client_push_bulk).with('class' => subject, 'args' => :args)
13
+
14
+ subject.perform_async_bulk(:args)
15
+ end
16
+ end
17
+
18
+ describe "#client_push_bulk" do
19
+ it "delegates to Client" do
20
+ Sidekiq::Client.expects(:push_bulk).with(:args)
21
+
22
+ subject.client_push_bulk(:args)
23
+ end
24
+ end
25
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,4 +1,8 @@
1
1
  $: << 'lib'
2
+ require 'sidekiq'
2
3
  require 'sidekiq-sqs'
3
4
 
5
+ RSpec.configure do |config|
6
+ config.mock_framework = :mocha
7
+ end
4
8
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq-sqs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
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: 2012-10-01 00:00:00.000000000 Z
12
+ date: 2012-10-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -75,6 +75,22 @@ dependencies:
75
75
  - - ! '>='
76
76
  - !ruby/object:Gem::Version
77
77
  version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: rb-fsevent
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ~>
84
+ - !ruby/object:Gem::Version
85
+ version: 0.9.1
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: 0.9.1
78
94
  - !ruby/object:Gem::Dependency
79
95
  name: guard
80
96
  requirement: !ruby/object:Gem::Requirement
@@ -107,6 +123,22 @@ dependencies:
107
123
  - - ! '>='
108
124
  - !ruby/object:Gem::Version
109
125
  version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: mocha
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ~>
132
+ - !ruby/object:Gem::Version
133
+ version: 0.12.3
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ~>
140
+ - !ruby/object:Gem::Version
141
+ version: 0.12.3
110
142
  description: SQS backed job store for Sidekiq. Redis is still used for stats/job worker
111
143
  tracking
112
144
  email:
@@ -130,7 +162,9 @@ files:
130
162
  - lib/sidekiq-sqs/worker.rb
131
163
  - lib/top_level.rb
132
164
  - sidekiq-sqs.gemspec
133
- - spec/sidekiq-sqs/middleware/compression_spec.rb
165
+ - spec/sidekiq-sqs/client_spec.rb
166
+ - spec/sidekiq-sqs/processor_spec.rb
167
+ - spec/sidekiq-sqs/worker_spec.rb
134
168
  - spec/spec_helper.rb
135
169
  homepage: http://github.com/jmoses/sidekiq-sqs
136
170
  licenses: []
@@ -157,5 +191,7 @@ signing_key:
157
191
  specification_version: 3
158
192
  summary: SQS backed job store for Sidekiq
159
193
  test_files:
160
- - spec/sidekiq-sqs/middleware/compression_spec.rb
194
+ - spec/sidekiq-sqs/client_spec.rb
195
+ - spec/sidekiq-sqs/processor_spec.rb
196
+ - spec/sidekiq-sqs/worker_spec.rb
161
197
  - spec/spec_helper.rb
@@ -1,26 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Sidekiq::Sqs::Middleware::Compression do
4
- context "Server" do
5
- subject { Sidekiq::Sqs::Middleware::Compression::Server.new }
6
- let(:message) { stub(body: "eJzLTS0uTkxPBQALwQLm\n") }
7
-
8
- it "decompresses the message" do
9
- subject.call(nil, message, nil)
10
-
11
- message.body.should eq('message')
12
- end
13
- end
14
-
15
- # context "Client" do
16
- # subject { Sidekiq::Sqs::Middleware::Compression::Client.new }
17
- # let(:message) { 'message' }
18
- #
19
- # it "compresses the message and yields" do
20
- # expect {|b| subject.call(nil, message, :queue, &b) }.to yield_control
21
- #
22
- # message.should eq(Base64.encode64(Zlib::Deflate.deflate('message')))
23
- # end
24
- # end
25
- end
26
-