stalk_climber 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
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