timberline 0.3.1 → 0.4.0
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.
- checksums.yaml +7 -0
- data/.rspec +1 -0
- data/.ruby-gemset +1 -0
- data/.travis.yml +10 -0
- data/Gemfile +1 -1
- data/README.markdown +11 -6
- data/Rakefile +4 -5
- data/lib/timberline/config.rb +1 -0
- data/lib/timberline/queue.rb +4 -1
- data/lib/timberline/version.rb +1 -1
- data/lib/timberline.rb +108 -114
- data/spec/fake_rails/config/timberline.yaml +7 -0
- data/spec/lib/timberline/config_spec.rb +170 -0
- data/spec/lib/timberline/envelope_spec.rb +91 -0
- data/spec/lib/timberline/queue_spec.rb +100 -0
- data/spec/lib/timberline_spec.rb +375 -0
- data/spec/spec_helper.rb +19 -0
- data/spec/support/fake_rails.rb +17 -0
- data/spec/support/timberline_reset.rb +20 -0
- data/spec/support/timberline_yaml.rb +17 -0
- data/timberline.gemspec +4 -5
- metadata +63 -53
- data/test/fake_rails/config/timberline.yaml +0 -14
- data/test/partial_minispec.rb +0 -229
- data/test/test_helper.rb +0 -25
- data/test/unit/config_test.rb +0 -122
- data/test/unit/envelope_test.rb +0 -69
- data/test/unit/queue_test.rb +0 -114
- data/test/unit/timberline_test.rb +0 -143
- /data/{test → spec/config}/test_config.yaml +0 -0
metadata
CHANGED
@@ -1,110 +1,125 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: timberline
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.4.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Tommy Morgan
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-06-02 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: redis
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '>='
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: redis-namespace
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - '>='
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: redis-expiring-set
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - '>='
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :runtime
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - '>='
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: trollop
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - '>='
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '0'
|
70
62
|
type: :runtime
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - '>='
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '0'
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: daemons
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
|
-
- -
|
73
|
+
- - '>='
|
84
74
|
- !ruby/object:Gem::Version
|
85
75
|
version: '0'
|
86
76
|
type: :runtime
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
|
-
- -
|
80
|
+
- - '>='
|
92
81
|
- !ruby/object:Gem::Version
|
93
82
|
version: '0'
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
|
-
name:
|
84
|
+
name: rake
|
96
85
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
86
|
requirements:
|
99
|
-
- -
|
87
|
+
- - '>='
|
100
88
|
- !ruby/object:Gem::Version
|
101
89
|
version: '0'
|
102
90
|
type: :development
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
93
|
requirements:
|
107
|
-
- -
|
94
|
+
- - '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rspec
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ~>
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 3.0.0.rc1
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ~>
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 3.0.0.rc1
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: pry
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - '>='
|
108
123
|
- !ruby/object:Gem::Version
|
109
124
|
version: '0'
|
110
125
|
description: Timberline is a simple and extensible queuing system built in Ruby and
|
@@ -119,6 +134,9 @@ extensions: []
|
|
119
134
|
extra_rdoc_files: []
|
120
135
|
files:
|
121
136
|
- .gitignore
|
137
|
+
- .rspec
|
138
|
+
- .ruby-gemset
|
139
|
+
- .travis.yml
|
122
140
|
- Gemfile
|
123
141
|
- README.markdown
|
124
142
|
- Rakefile
|
@@ -128,47 +146,39 @@ files:
|
|
128
146
|
- lib/timberline/envelope.rb
|
129
147
|
- lib/timberline/queue.rb
|
130
148
|
- lib/timberline/version.rb
|
131
|
-
-
|
132
|
-
-
|
133
|
-
-
|
134
|
-
-
|
135
|
-
-
|
136
|
-
-
|
137
|
-
-
|
138
|
-
-
|
149
|
+
- spec/config/test_config.yaml
|
150
|
+
- spec/fake_rails/config/timberline.yaml
|
151
|
+
- spec/lib/timberline/config_spec.rb
|
152
|
+
- spec/lib/timberline/envelope_spec.rb
|
153
|
+
- spec/lib/timberline/queue_spec.rb
|
154
|
+
- spec/lib/timberline_spec.rb
|
155
|
+
- spec/spec_helper.rb
|
156
|
+
- spec/support/fake_rails.rb
|
157
|
+
- spec/support/timberline_reset.rb
|
158
|
+
- spec/support/timberline_yaml.rb
|
139
159
|
- timberline.gemspec
|
140
|
-
homepage: http://github.com/
|
160
|
+
homepage: http://github.com/treehouse/timberline
|
141
161
|
licenses: []
|
162
|
+
metadata: {}
|
142
163
|
post_install_message:
|
143
164
|
rdoc_options: []
|
144
165
|
require_paths:
|
145
166
|
- lib
|
146
167
|
required_ruby_version: !ruby/object:Gem::Requirement
|
147
|
-
none: false
|
148
168
|
requirements:
|
149
|
-
- -
|
169
|
+
- - '>='
|
150
170
|
- !ruby/object:Gem::Version
|
151
171
|
version: '0'
|
152
172
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
153
|
-
none: false
|
154
173
|
requirements:
|
155
|
-
- -
|
174
|
+
- - '>='
|
156
175
|
- !ruby/object:Gem::Version
|
157
176
|
version: '0'
|
158
177
|
requirements: []
|
159
178
|
rubyforge_project: timberline
|
160
|
-
rubygems_version:
|
179
|
+
rubygems_version: 2.2.2
|
161
180
|
signing_key:
|
162
|
-
specification_version:
|
181
|
+
specification_version: 4
|
163
182
|
summary: Timberline is a simple and extensible queuing system built in Ruby and backed
|
164
183
|
by Redis.
|
165
|
-
test_files:
|
166
|
-
- test/fake_rails/config/timberline.yaml
|
167
|
-
- test/partial_minispec.rb
|
168
|
-
- test/test_config.yaml
|
169
|
-
- test/test_helper.rb
|
170
|
-
- test/unit/config_test.rb
|
171
|
-
- test/unit/envelope_test.rb
|
172
|
-
- test/unit/queue_test.rb
|
173
|
-
- test/unit/timberline_test.rb
|
174
|
-
has_rdoc:
|
184
|
+
test_files: []
|
@@ -1,14 +0,0 @@
|
|
1
|
-
development:
|
2
|
-
host: localhost
|
3
|
-
port: 12345
|
4
|
-
timeout: 10
|
5
|
-
password: foo
|
6
|
-
database: 3
|
7
|
-
namespace: treecurve
|
8
|
-
production:
|
9
|
-
host: redis.myawesomeproduct.com
|
10
|
-
port: 56789
|
11
|
-
timeout: 10
|
12
|
-
password: foo
|
13
|
-
database: 3
|
14
|
-
namespace: myawesomeproduct
|
data/test/partial_minispec.rb
DELETED
@@ -1,229 +0,0 @@
|
|
1
|
-
## This is code stolen from the definition file for Minitest::Spec. We really
|
2
|
-
# like everything about Minitest::Spec except for the expectations part, so we
|
3
|
-
# are stealing it and using it here. Shamelessly.
|
4
|
-
#
|
5
|
-
# This code may go out of date in future versions of Ruby, so we should keep an
|
6
|
-
# eye on that. But that's better than reinventing the wheel.
|
7
|
-
|
8
|
-
module Kernel # :nodoc:
|
9
|
-
##
|
10
|
-
# Describe a series of expectations for a given target +desc+.
|
11
|
-
#
|
12
|
-
# TODO: find good tutorial url.
|
13
|
-
#
|
14
|
-
# Defines a test class subclassing from either MiniTest::Spec or
|
15
|
-
# from the surrounding describe's class. The surrounding class may
|
16
|
-
# subclass MiniTest::Spec manually in order to easily share code:
|
17
|
-
#
|
18
|
-
# class MySpec < MiniTest::Spec
|
19
|
-
# # ... shared code ...
|
20
|
-
# end
|
21
|
-
#
|
22
|
-
# class TestStuff < MySpec
|
23
|
-
# it "does stuff" do
|
24
|
-
# # shared code available here
|
25
|
-
# end
|
26
|
-
# describe "inner stuff" do
|
27
|
-
# it "still does stuff" do
|
28
|
-
# # ...and here
|
29
|
-
# end
|
30
|
-
# end
|
31
|
-
# end
|
32
|
-
|
33
|
-
def describe desc, additional_desc = nil, &block # :doc:
|
34
|
-
stack = MiniTest::Spec.describe_stack
|
35
|
-
name = [stack.last, desc, additional_desc].compact.join("::")
|
36
|
-
sclas = stack.last || if Class === self && self < MiniTest::Spec then
|
37
|
-
self
|
38
|
-
else
|
39
|
-
MiniTest::Spec.spec_type desc
|
40
|
-
end
|
41
|
-
|
42
|
-
cls = sclas.create name, desc
|
43
|
-
|
44
|
-
stack.push cls
|
45
|
-
cls.class_eval(&block)
|
46
|
-
stack.pop
|
47
|
-
cls
|
48
|
-
end
|
49
|
-
private :describe
|
50
|
-
end
|
51
|
-
|
52
|
-
##
|
53
|
-
# MiniTest::Spec -- The faster, better, less-magical spec framework!
|
54
|
-
#
|
55
|
-
# For a list of expectations, see MiniTest::Expectations.
|
56
|
-
|
57
|
-
class MiniTest::Spec < MiniTest::Unit::TestCase
|
58
|
-
##
|
59
|
-
# Contains pairs of matchers and Spec classes to be used to
|
60
|
-
# calculate the superclass of a top-level describe. This allows for
|
61
|
-
# automatically customizable spec types.
|
62
|
-
#
|
63
|
-
# See: register_spec_type and spec_type
|
64
|
-
|
65
|
-
TYPES = [[//, MiniTest::Spec]]
|
66
|
-
|
67
|
-
##
|
68
|
-
# Register a new type of spec that matches the spec's description.
|
69
|
-
# This method can take either a Regexp and a spec class or a spec
|
70
|
-
# class and a block that takes the description and returns true if
|
71
|
-
# it matches.
|
72
|
-
#
|
73
|
-
# Eg:
|
74
|
-
#
|
75
|
-
# register_spec_type(/Controller$/, MiniTest::Spec::Rails)
|
76
|
-
#
|
77
|
-
# or:
|
78
|
-
#
|
79
|
-
# register_spec_type(MiniTest::Spec::RailsModel) do |desc|
|
80
|
-
# desc.superclass == ActiveRecord::Base
|
81
|
-
# end
|
82
|
-
|
83
|
-
def self.register_spec_type(*args, &block)
|
84
|
-
if block then
|
85
|
-
matcher, klass = block, args.first
|
86
|
-
else
|
87
|
-
matcher, klass = *args
|
88
|
-
end
|
89
|
-
TYPES.unshift [matcher, klass]
|
90
|
-
end
|
91
|
-
|
92
|
-
##
|
93
|
-
# Figure out the spec class to use based on a spec's description. Eg:
|
94
|
-
#
|
95
|
-
# spec_type("BlahController") # => MiniTest::Spec::Rails
|
96
|
-
|
97
|
-
def self.spec_type desc
|
98
|
-
TYPES.find { |matcher, klass|
|
99
|
-
if matcher.respond_to? :call then
|
100
|
-
matcher.call desc
|
101
|
-
else
|
102
|
-
matcher === desc.to_s
|
103
|
-
end
|
104
|
-
}.last
|
105
|
-
end
|
106
|
-
|
107
|
-
@@describe_stack = []
|
108
|
-
def self.describe_stack # :nodoc:
|
109
|
-
@@describe_stack
|
110
|
-
end
|
111
|
-
|
112
|
-
##
|
113
|
-
# Returns the children of this spec.
|
114
|
-
|
115
|
-
def self.children
|
116
|
-
@children ||= []
|
117
|
-
end
|
118
|
-
|
119
|
-
def self.nuke_test_methods! # :nodoc:
|
120
|
-
self.public_instance_methods.grep(/^test_/).each do |name|
|
121
|
-
self.send :undef_method, name
|
122
|
-
end
|
123
|
-
end
|
124
|
-
|
125
|
-
##
|
126
|
-
# Define a 'before' action. Inherits the way normal methods should.
|
127
|
-
#
|
128
|
-
# NOTE: +type+ is ignored and is only there to make porting easier.
|
129
|
-
#
|
130
|
-
# Equivalent to MiniTest::Unit::TestCase#setup.
|
131
|
-
|
132
|
-
def self.before type = :each, &block
|
133
|
-
raise "unsupported before type: #{type}" unless type == :each
|
134
|
-
|
135
|
-
add_setup_hook {|tc| tc.instance_eval(&block) }
|
136
|
-
end
|
137
|
-
|
138
|
-
##
|
139
|
-
# Define an 'after' action. Inherits the way normal methods should.
|
140
|
-
#
|
141
|
-
# NOTE: +type+ is ignored and is only there to make porting easier.
|
142
|
-
#
|
143
|
-
# Equivalent to MiniTest::Unit::TestCase#teardown.
|
144
|
-
|
145
|
-
def self.after type = :each, &block
|
146
|
-
raise "unsupported after type: #{type}" unless type == :each
|
147
|
-
|
148
|
-
add_teardown_hook {|tc| tc.instance_eval(&block) }
|
149
|
-
end
|
150
|
-
|
151
|
-
##
|
152
|
-
# Define an expectation with name +desc+. Name gets morphed to a
|
153
|
-
# proper test method name. For some freakish reason, people who
|
154
|
-
# write specs don't like class inheritence, so this goes way out of
|
155
|
-
# its way to make sure that expectations aren't inherited.
|
156
|
-
#
|
157
|
-
# This is also aliased to #specify and doesn't require a +desc+ arg.
|
158
|
-
#
|
159
|
-
# Hint: If you _do_ want inheritence, use minitest/unit. You can mix
|
160
|
-
# and match between assertions and expectations as much as you want.
|
161
|
-
|
162
|
-
def self.it desc = "anonymous", &block
|
163
|
-
block ||= proc { skip "(no tests defined)" }
|
164
|
-
|
165
|
-
@specs ||= 0
|
166
|
-
@specs += 1
|
167
|
-
|
168
|
-
name = "test_%04d_%s" % [ @specs, desc.gsub(/\W+/, '_').downcase ]
|
169
|
-
|
170
|
-
define_method name, &block
|
171
|
-
|
172
|
-
self.children.each do |mod|
|
173
|
-
mod.send :undef_method, name if mod.public_method_defined? name
|
174
|
-
end
|
175
|
-
end
|
176
|
-
|
177
|
-
##
|
178
|
-
# Essentially, define an accessor for +name+ with +block+.
|
179
|
-
#
|
180
|
-
# Why use let instead of def? I honestly don't know.
|
181
|
-
|
182
|
-
def self.let name, &block
|
183
|
-
define_method name do
|
184
|
-
@_memoized ||= {}
|
185
|
-
@_memoized.fetch(name) { |k| @_memoized[k] = instance_eval(&block) }
|
186
|
-
end
|
187
|
-
end
|
188
|
-
|
189
|
-
##
|
190
|
-
# Another lazy man's accessor generator. Made even more lazy by
|
191
|
-
# setting the name for you to +subject+.
|
192
|
-
|
193
|
-
def self.subject &block
|
194
|
-
let :subject, &block
|
195
|
-
end
|
196
|
-
|
197
|
-
def self.create name, desc # :nodoc:
|
198
|
-
cls = Class.new(self) do
|
199
|
-
@name = name
|
200
|
-
@desc = desc
|
201
|
-
|
202
|
-
nuke_test_methods!
|
203
|
-
end
|
204
|
-
|
205
|
-
children << cls
|
206
|
-
|
207
|
-
cls
|
208
|
-
end
|
209
|
-
|
210
|
-
def self.to_s # :nodoc:
|
211
|
-
defined?(@name) ? @name : super
|
212
|
-
end
|
213
|
-
|
214
|
-
# :stopdoc:
|
215
|
-
def after_setup
|
216
|
-
run_setup_hooks
|
217
|
-
end
|
218
|
-
|
219
|
-
def before_teardown
|
220
|
-
run_teardown_hooks
|
221
|
-
end
|
222
|
-
|
223
|
-
class << self
|
224
|
-
attr_reader :desc
|
225
|
-
alias :specify :it
|
226
|
-
alias :name :to_s
|
227
|
-
end
|
228
|
-
# :startdoc:
|
229
|
-
end
|
data/test/test_helper.rb
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
require 'test/unit'
|
2
|
-
require 'ostruct'
|
3
|
-
|
4
|
-
require 'nutrasuite'
|
5
|
-
|
6
|
-
# include the gem
|
7
|
-
require 'timberline'
|
8
|
-
|
9
|
-
def reset_timberline
|
10
|
-
Timberline.redis = nil
|
11
|
-
Timberline.instance_variable_set("@config", nil)
|
12
|
-
clear_test_db
|
13
|
-
Timberline.redis = nil
|
14
|
-
Timberline.instance_variable_set("@queue_list", {})
|
15
|
-
end
|
16
|
-
|
17
|
-
# Use database 15 for testing, so we don't risk overwriting any data that's
|
18
|
-
# actually useful
|
19
|
-
def clear_test_db
|
20
|
-
Timberline.config do |c|
|
21
|
-
c.database = 15
|
22
|
-
end
|
23
|
-
Timberline.redis.flushdb
|
24
|
-
end
|
25
|
-
|
data/test/unit/config_test.rb
DELETED
@@ -1,122 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class ConfigTest < Test::Unit::TestCase
|
4
|
-
a "Config object without any preset YAML configs" do
|
5
|
-
before do
|
6
|
-
@config = Timberline::Config.new
|
7
|
-
end
|
8
|
-
|
9
|
-
it "builds a proper config hash for Redis" do
|
10
|
-
@logger = Logger.new STDERR
|
11
|
-
|
12
|
-
@config.host = "localhost"
|
13
|
-
@config.port = 12345
|
14
|
-
@config.timeout = 10
|
15
|
-
@config.password = "foo"
|
16
|
-
@config.database = 3
|
17
|
-
@config.logger = @logger
|
18
|
-
|
19
|
-
config = @config.redis_config
|
20
|
-
|
21
|
-
assert_equal "localhost", config[:host]
|
22
|
-
assert_equal 12345, config[:port]
|
23
|
-
assert_equal 10, config[:timeout]
|
24
|
-
assert_equal "foo", config[:password]
|
25
|
-
assert_equal 3, config[:db]
|
26
|
-
assert_equal @logger, config[:logger]
|
27
|
-
|
28
|
-
end
|
29
|
-
|
30
|
-
it "reads configuration from a YAML config file" do
|
31
|
-
base_dir = File.dirname(File.path(__FILE__))
|
32
|
-
yaml_file = File.join(base_dir, "..", "test_config.yaml")
|
33
|
-
config = YAML.load_file(yaml_file)
|
34
|
-
|
35
|
-
@config.load_from_yaml(config)
|
36
|
-
assert_equal "localhost", @config.host
|
37
|
-
assert_equal 12345, @config.port
|
38
|
-
assert_equal 10, @config.timeout
|
39
|
-
assert_equal "foo", @config.password
|
40
|
-
assert_equal 3, @config.database
|
41
|
-
assert_equal "treecurve", @config.namespace
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
a "Config object in a Rails app without a config file" do
|
46
|
-
before do
|
47
|
-
Object::Rails = OpenStruct.new(:root => File.join(File.dirname(File.path(__FILE__)), "..", "gibberish"), :env => "development")
|
48
|
-
@config = Timberline::Config.new
|
49
|
-
end
|
50
|
-
|
51
|
-
after do
|
52
|
-
Object.send(:remove_const, :Rails)
|
53
|
-
end
|
54
|
-
|
55
|
-
it "loads successfully without any configs." do
|
56
|
-
["database","host","port","timeout","password","logger"].each do |setting|
|
57
|
-
assert_equal nil, @config.instance_variable_get("@#{setting}")
|
58
|
-
end
|
59
|
-
|
60
|
-
# check defaults
|
61
|
-
assert_equal "timberline", @config.namespace
|
62
|
-
assert_equal 5, @config.max_retries
|
63
|
-
assert_equal 60, @config.stat_timeout
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
a "Config object in a Rails app with a config file" do
|
68
|
-
before do
|
69
|
-
Object::Rails = OpenStruct.new(:root => File.join(File.dirname(File.path(__FILE__)), "..", "fake_rails"), :env => "development")
|
70
|
-
@config = Timberline::Config.new
|
71
|
-
end
|
72
|
-
|
73
|
-
after do
|
74
|
-
Object.send(:remove_const, :Rails)
|
75
|
-
end
|
76
|
-
|
77
|
-
it "loads the config/timberline.yaml file" do
|
78
|
-
assert_equal "localhost", @config.host
|
79
|
-
assert_equal 12345, @config.port
|
80
|
-
assert_equal 10, @config.timeout
|
81
|
-
assert_equal "foo", @config.password
|
82
|
-
assert_equal 3, @config.database
|
83
|
-
assert_equal "treecurve", @config.namespace
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
a "Config object when TIMBERLINE_YAML is defined" do
|
88
|
-
before do
|
89
|
-
Object::TIMBERLINE_YAML = File.join(File.dirname(File.path(__FILE__)), "..", "test_config.yaml")
|
90
|
-
@config = Timberline::Config.new
|
91
|
-
end
|
92
|
-
|
93
|
-
after do
|
94
|
-
Object.send(:remove_const, :TIMBERLINE_YAML)
|
95
|
-
end
|
96
|
-
|
97
|
-
it "loads the specified yaml file" do
|
98
|
-
assert_equal "localhost", @config.host
|
99
|
-
assert_equal 12345, @config.port
|
100
|
-
assert_equal 10, @config.timeout
|
101
|
-
assert_equal "foo", @config.password
|
102
|
-
assert_equal 3, @config.database
|
103
|
-
assert_equal "treecurve", @config.namespace
|
104
|
-
end
|
105
|
-
end
|
106
|
-
|
107
|
-
a "Config object when TIMBERLINE_YAML is defined, but doesn't exist" do
|
108
|
-
before do
|
109
|
-
Object::TIMBERLINE_YAML = File.join(File.dirname(File.path(__FILE__)), "..", "fake_config.yaml")
|
110
|
-
end
|
111
|
-
|
112
|
-
after do
|
113
|
-
Object.send(:remove_const, :TIMBERLINE_YAML)
|
114
|
-
end
|
115
|
-
|
116
|
-
it "raises an exception" do
|
117
|
-
assert_raises RuntimeError do
|
118
|
-
@config = Timberline::Config.new
|
119
|
-
end
|
120
|
-
end
|
121
|
-
end
|
122
|
-
end
|
data/test/unit/envelope_test.rb
DELETED
@@ -1,69 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
require 'date'
|
3
|
-
|
4
|
-
class EnvelopeTest < Test::Unit::TestCase
|
5
|
-
|
6
|
-
a "newly instantiated Envelope object" do
|
7
|
-
before do
|
8
|
-
@envelope = Timberline::Envelope.new
|
9
|
-
end
|
10
|
-
|
11
|
-
it "raises a MissingContentException when to_s is called because the contents are nil" do
|
12
|
-
assert_raises Timberline::MissingContentException do
|
13
|
-
@envelope.to_s
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
it "has an empty hash for metadata" do
|
18
|
-
assert_equal({}, @envelope.metadata)
|
19
|
-
end
|
20
|
-
|
21
|
-
it "allows for the reading of attributes via method_missing magic" do
|
22
|
-
@envelope.metadata["original_queue"] = "test_queue"
|
23
|
-
assert_equal "test_queue", @envelope.original_queue
|
24
|
-
end
|
25
|
-
|
26
|
-
it "allows for the setting of attributes via method_missing magic" do
|
27
|
-
@envelope.original_queue = "test_queue"
|
28
|
-
assert_equal "test_queue", @envelope.metadata["original_queue"]
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
an "Envelope object with contents" do
|
33
|
-
before do
|
34
|
-
@envelope = Timberline::Envelope.new
|
35
|
-
@envelope.contents = "Test data"
|
36
|
-
end
|
37
|
-
|
38
|
-
it "returns a JSON string when to_s is called" do
|
39
|
-
json_string = @envelope.to_s
|
40
|
-
json_data = JSON.parse(json_string)
|
41
|
-
assert_equal "Test data", json_data["contents"]
|
42
|
-
end
|
43
|
-
|
44
|
-
it "only includes a 'contents' parameter by default" do
|
45
|
-
json_string = @envelope.to_s
|
46
|
-
json_data = JSON.parse(json_string)
|
47
|
-
assert_equal 1, json_data.keys.size
|
48
|
-
end
|
49
|
-
|
50
|
-
it "also includes metadata, if provided" do
|
51
|
-
time = DateTime.now
|
52
|
-
time_s = DateTime.now.to_s
|
53
|
-
@envelope.first_posted = time
|
54
|
-
@envelope.origin_queue = "test_queue"
|
55
|
-
|
56
|
-
json_string = @envelope.to_s
|
57
|
-
json_data = JSON.parse(json_string)
|
58
|
-
assert_equal "test_queue", json_data["origin_queue"]
|
59
|
-
assert_equal time_s, json_data["first_posted"]
|
60
|
-
end
|
61
|
-
|
62
|
-
it "parses itself back correctly using from_json" do
|
63
|
-
json_string = @envelope.to_s
|
64
|
-
new_envelope = Timberline::Envelope.from_json(json_string)
|
65
|
-
assert_equal @envelope.contents, new_envelope.contents
|
66
|
-
assert_equal @envelope.metadata, new_envelope.metadata
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|