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