stalk_climber 0.0.4 → 0.0.5

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/.travis.yml CHANGED
@@ -4,7 +4,7 @@ rvm:
4
4
  - 1.9.3
5
5
  - 2.0.0
6
6
  - jruby-19mode
7
- - rbx-19mode
7
+ - rbx-2.0.0
8
8
 
9
9
  before_install:
10
10
  - sudo apt-get update -qq
@@ -4,6 +4,7 @@ module StalkClimber
4
4
  class Job
5
5
 
6
6
  STATS_ATTRIBUTES = %w[age buries delay kicks pri releases reserves state time-left timeouts ttr tube]
7
+ HASH_ATTRIBUTES = (STATS_ATTRIBUTES + %w[body id]).sort!.map!(&:to_sym)
7
8
  attr_reader :id
8
9
 
9
10
  STATS_ATTRIBUTES.each do |method_name|
@@ -41,7 +42,7 @@ module StalkClimber
41
42
 
42
43
 
43
44
  # Determines if a job exists by retrieving stats for the job. If Beaneater can't find
44
- # the jobm then it does not exist and false is returned. The stats command is used
45
+ # the job then it does not exist and false is returned. The stats command is used
45
46
  # because it will return a response of a near constant size, whereas, depending on
46
47
  # the job, the peek command could return a much larger response. Rather than waste
47
48
  # the trip to the server, stats are updated each time the method is called.
@@ -81,9 +82,9 @@ module StalkClimber
81
82
  @body = job_data[:body]
82
83
  @stats = nil
83
84
  when 'OK' # stats-job
84
- @body = nil
85
- @stats = job_data.delete(:body)
85
+ @stats = job_data[:body].dup
86
86
  @id = @stats.delete('id').to_i
87
+ @body = nil
87
88
  else
88
89
  raise RuntimeError, "Unexpected job status: #{job_data[:status]}"
89
90
  end
@@ -102,6 +103,12 @@ module StalkClimber
102
103
  end
103
104
 
104
105
 
106
+ # Returns a hash of all job attributes
107
+ def to_h
108
+ return Hash[HASH_ATTRIBUTES.map { |attr| [attr, send(attr) ] } ]
109
+ end
110
+
111
+
105
112
  # :method: age
106
113
  # Retrieves the age of the job from the job's stats. Passing a non-false value for
107
114
  # +force_refresh+ will force retrieval of updated stats for the job
@@ -1,3 +1,3 @@
1
1
  module StalkClimber
2
- VERSION = '0.0.4'
2
+ VERSION = '0.0.5'
3
3
  end
@@ -84,32 +84,30 @@ class Job < Test::Unit::TestCase
84
84
 
85
85
 
86
86
  def test_initialize_with_stats_attribute_methods_return_correct_values
87
- body = {
88
- 'age'=>3,
89
- 'buries'=>0,
90
- 'delay'=>0,
87
+ stats_body = {
88
+ 'age' => 3,
89
+ 'buries' => 0,
90
+ 'delay' => 0,
91
91
  'id' => 4412,
92
- 'kicks'=>0,
93
- 'pri'=>4294967295,
94
- 'releases'=>0,
95
- 'reserves'=>0,
96
- 'state'=>'ready',
97
- 'time-left'=>0,
98
- 'timeouts'=>0,
99
- 'ttr'=>300,
100
- 'tube'=>'default',
92
+ 'kicks' => 0,
93
+ 'pri' => 4294967295,
94
+ 'releases' => 0,
95
+ 'reserves' => 0,
96
+ 'state' => 'ready',
97
+ 'time-left' => 0,
98
+ 'timeouts' => 0,
99
+ 'ttr' => 300,
100
+ 'tube' => 'default',
101
101
  }
102
- stats = {
103
- :body => body,
102
+ stats_response = {
103
+ :body => stats_body,
104
104
  :connection => @connection,
105
105
  :id => 149,
106
106
  :status => 'OK',
107
107
  }
108
- @connection.expects(:transmit).returns(stats)
109
- job = StalkClimber::Job.new(@connection.transmit("stats-job #{@job.id}"))
110
- @connection.expects(:transmit).never
108
+ job = StalkClimber::Job.new(stats_response)
111
109
  StalkClimber::Job::STATS_ATTRIBUTES.each do |method_name|
112
- assert_equal body[method_name], job.send(method_name), "Expected #{body[method_name.to_sym]} for #{method_name}, got #{job.send(method_name)}"
110
+ assert_equal stats_body[method_name], job.send(method_name), "Expected #{stats_body[method_name.to_sym]} for #{method_name}, got #{job.send(method_name)}"
113
111
  end
114
112
  end
115
113
 
@@ -164,4 +162,34 @@ class Job < Test::Unit::TestCase
164
162
  end
165
163
  end
166
164
 
165
+ def test_to_h_returns_expected_hash
166
+ job_body = "test #{Time.now.to_i}"
167
+ stats_body = {
168
+ 'age' => 3,
169
+ 'body' => job_body, # Will be ignored during job init
170
+ 'buries' => 0,
171
+ 'delay' => 0,
172
+ 'id' => 4412,
173
+ 'kicks' => 0,
174
+ 'pri' => 4294967295,
175
+ 'releases' => 0,
176
+ 'reserves' => 0,
177
+ 'state' => 'ready',
178
+ 'time-left' => 0,
179
+ 'timeouts' => 0,
180
+ 'ttr' => 300,
181
+ 'tube' => 'default',
182
+ }
183
+ stats_response = {
184
+ :body => stats_body,
185
+ :connection => @connection,
186
+ :id => 149,
187
+ :status => 'OK',
188
+ }
189
+ job = StalkClimber::Job.new(stats_response)
190
+ job.instance_variable_set(:@body, job_body)
191
+ expected_hash = Hash[stats_body.map { |k, v| [k.to_sym, v] }]
192
+ assert_equal expected_hash, job.to_h
193
+ end
194
+
167
195
  end
metadata CHANGED
@@ -1,57 +1,64 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stalk_climber
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Gemerald Beanstalk
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2013-11-23 00:00:00.000000000 Z
12
+ date: 2013-11-25 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: bundler
15
- prerelease: false
16
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
17
18
  requirements:
18
- - - "~>"
19
+ - - ~>
19
20
  - !ruby/object:Gem::Version
20
21
  version: '1.3'
22
+ type: :development
23
+ prerelease: false
21
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
22
26
  requirements:
23
- - - "~>"
27
+ - - ~>
24
28
  - !ruby/object:Gem::Version
25
29
  version: '1.3'
26
- type: :development
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: rake
29
- prerelease: false
30
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
31
34
  requirements:
32
- - - ">="
35
+ - - ! '>='
33
36
  - !ruby/object:Gem::Version
34
37
  version: '0'
38
+ type: :development
39
+ prerelease: false
35
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
36
42
  requirements:
37
- - - ">="
43
+ - - ! '>='
38
44
  - !ruby/object:Gem::Version
39
45
  version: '0'
40
- type: :development
41
46
  - !ruby/object:Gem::Dependency
42
47
  name: beaneater
43
- prerelease: false
44
48
  requirement: !ruby/object:Gem::Requirement
49
+ none: false
45
50
  requirements:
46
- - - ">="
51
+ - - ! '>='
47
52
  - !ruby/object:Gem::Version
48
53
  version: '0'
54
+ type: :runtime
55
+ prerelease: false
49
56
  version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
50
58
  requirements:
51
- - - ">="
59
+ - - ! '>='
52
60
  - !ruby/object:Gem::Version
53
61
  version: '0'
54
- type: :runtime
55
62
  description: Improved sequential access to Beanstalk
56
63
  email:
57
64
  - gemeraldbeanstalk@gmail.com
@@ -59,8 +66,8 @@ executables: []
59
66
  extensions: []
60
67
  extra_rdoc_files: []
61
68
  files:
62
- - ".gitignore"
63
- - ".travis.yml"
69
+ - .gitignore
70
+ - .travis.yml
64
71
  - Gemfile
65
72
  - LICENSE
66
73
  - README.md
@@ -81,26 +88,27 @@ files:
81
88
  homepage: https://github.com/gemeraldbeanstalk/stalk_climber
82
89
  licenses:
83
90
  - MIT
84
- metadata: {}
85
91
  post_install_message:
86
92
  rdoc_options: []
87
93
  require_paths:
88
94
  - lib
89
95
  required_ruby_version: !ruby/object:Gem::Requirement
96
+ none: false
90
97
  requirements:
91
- - - ">="
98
+ - - ! '>='
92
99
  - !ruby/object:Gem::Version
93
100
  version: '0'
94
101
  required_rubygems_version: !ruby/object:Gem::Requirement
102
+ none: false
95
103
  requirements:
96
- - - ">="
104
+ - - ! '>='
97
105
  - !ruby/object:Gem::Version
98
106
  version: '0'
99
107
  requirements: []
100
108
  rubyforge_project:
101
- rubygems_version: 2.1.5
109
+ rubygems_version: 1.8.25
102
110
  signing_key:
103
- specification_version: 4
111
+ specification_version: 3
104
112
  summary: StalkClimber is a Ruby library allowing improved sequential access to Beanstalk
105
113
  via a job cache.
106
114
  test_files:
@@ -109,3 +117,4 @@ test_files:
109
117
  - test/unit/connection_pool_test.rb
110
118
  - test/unit/connection_test.rb
111
119
  - test/unit/job_test.rb
120
+ has_rdoc:
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 58d16edc421b0bedb33303d8cbabcae323ddcffb
4
- data.tar.gz: 0bd0a4449dbb273a75074290935cd1475ee2de48
5
- SHA512:
6
- metadata.gz: 633f2d317942c0a79c8983fa66feb34db9fd8e67f42bcb4e73d253d87b9246bc74f194e635748c6c80f843d8082b4803513514ac289049fb8a9eb678828373eb
7
- data.tar.gz: f7c4ea8214a975110b9ca6e1c313d8d6e03635cee0a2256e48596c2e471c3a44a33975d51960d798118390994c06a1318e229dfb8cfef3420181e86e679391ed