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 +1 -1
- data/lib/stalk_climber/job.rb +10 -3
- data/lib/stalk_climber/version.rb +1 -1
- data/test/unit/job_test.rb +47 -19
- metadata +30 -21
- checksums.yaml +0 -7
data/.travis.yml
CHANGED
data/lib/stalk_climber/job.rb
CHANGED
@@ -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
|
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
|
-
@
|
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
|
data/test/unit/job_test.rb
CHANGED
@@ -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
|
-
|
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
|
-
|
103
|
-
:body =>
|
102
|
+
stats_response = {
|
103
|
+
:body => stats_body,
|
104
104
|
:connection => @connection,
|
105
105
|
:id => 149,
|
106
106
|
:status => 'OK',
|
107
107
|
}
|
108
|
-
|
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
|
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
|
+
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-
|
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
|
-
-
|
63
|
-
-
|
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:
|
109
|
+
rubygems_version: 1.8.25
|
102
110
|
signing_key:
|
103
|
-
specification_version:
|
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
|