right_support 2.11.3 → 2.12.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +4 -0
- data/VERSION +1 -1
- data/lib/right_support/notifiers/airbrake.rb +194 -0
- data/lib/right_support/notifiers/base.rb +73 -0
- data/lib/right_support/notifiers/blacklisters/base.rb +48 -0
- data/lib/right_support/notifiers/blacklisters/canonical.rb +60 -0
- data/lib/right_support/notifiers/blacklisters/regular_expression.rb +86 -0
- data/{features/support/file_utils_bundler_mixin.rb → lib/right_support/notifiers/blacklisters/simple.rb} +21 -20
- data/lib/right_support/notifiers/blacklisters/snake_case.rb +60 -0
- data/lib/right_support/notifiers/blacklisters/wildcard.rb +65 -0
- data/lib/right_support/notifiers/blacklisters.rb +34 -0
- data/lib/right_support/notifiers/logger.rb +94 -0
- data/lib/right_support/notifiers/notification.rb +57 -0
- data/lib/right_support/notifiers/utilities/backtrace_decoder.rb +234 -0
- data/lib/right_support/notifiers/utilities.rb +29 -0
- data/lib/right_support/notifiers.rb +32 -0
- data/lib/right_support/rack/request_logger.rb +13 -9
- data/lib/right_support.rb +1 -0
- data/right_support.gemspec +19 -70
- metadata +17 -69
- data/.coveralls.yml +0 -2
- data/.rspec +0 -3
- data/.simplecov +0 -6
- data/.travis.yml +0 -13
- data/Gemfile +0 -51
- data/Gemfile.lock +0 -153
- data/features/balancer_error_handling.feature +0 -34
- data/features/balancer_health_check.feature +0 -33
- data/features/hash_tools.feature +0 -27
- data/features/http_client_timeout.feature +0 -19
- data/features/serialization.feature +0 -113
- data/features/step_definitions/hash_tools_steps.rb +0 -41
- data/features/step_definitions/http_client_steps.rb +0 -27
- data/features/step_definitions/request_balancer_steps.rb +0 -93
- data/features/step_definitions/ruby_steps.rb +0 -176
- data/features/step_definitions/serialization_steps.rb +0 -133
- data/features/step_definitions/server_steps.rb +0 -134
- data/features/support/env.rb +0 -148
- data/right_support.rconf +0 -9
- data/spec/config/feature_set_spec.rb +0 -83
- data/spec/crypto/signed_hash_spec.rb +0 -73
- data/spec/data/hash_tools_spec.rb +0 -602
- data/spec/data/mash_spec.rb +0 -313
- data/spec/data/token_spec.rb +0 -21
- data/spec/data/uuid_spec.rb +0 -45
- data/spec/db/cassandra_model_part1_spec.rb +0 -84
- data/spec/db/cassandra_model_part2_spec.rb +0 -73
- data/spec/db/cassandra_model_spec.rb +0 -375
- data/spec/fixtures/encrypted_priv_rsa.pem +0 -30
- data/spec/fixtures/good_priv_dsa.pem +0 -12
- data/spec/fixtures/good_priv_rsa.pem +0 -15
- data/spec/fixtures/good_pub_dsa.ssh +0 -1
- data/spec/fixtures/good_pub_rsa.pem +0 -5
- data/spec/fixtures/good_pub_rsa.ssh +0 -1
- data/spec/log/exception_logger_spec.rb +0 -76
- data/spec/log/filter_logger_spec.rb +0 -66
- data/spec/log/mixin_spec.rb +0 -141
- data/spec/log/multiplexer_spec.rb +0 -54
- data/spec/log/null_logger_spec.rb +0 -36
- data/spec/log/step_level_logger_spec.rb +0 -49
- data/spec/log/system_logger_spec.rb +0 -172
- data/spec/net/address_helper_spec.rb +0 -57
- data/spec/net/dns_spec.rb +0 -187
- data/spec/net/http_client_spec.rb +0 -181
- data/spec/net/lb/health_check_spec.rb +0 -417
- data/spec/net/lb/round_robin_spec.rb +0 -15
- data/spec/net/lb/sticky_spec.rb +0 -92
- data/spec/net/request_balancer_spec.rb +0 -690
- data/spec/net/s3_helper_spec.rb +0 -160
- data/spec/net/ssl_spec.rb +0 -42
- data/spec/net/string_encoder_spec.rb +0 -58
- data/spec/rack/log_setter_spec.rb +0 -5
- data/spec/rack/request_logger_spec.rb +0 -225
- data/spec/rack/request_tracker_spec.rb +0 -115
- data/spec/rack/runtime_spec.rb +0 -49
- data/spec/ruby/easy_singleton_spec.rb +0 -72
- data/spec/ruby/object_extensions_spec.rb +0 -27
- data/spec/ruby/string_extensions_spec.rb +0 -98
- data/spec/spec_helper.rb +0 -188
- data/spec/stats/activity_spec.rb +0 -425
- data/spec/stats/exceptions_spec.rb +0 -247
- data/spec/stats/helpers_spec.rb +0 -685
- data/spec/validation/openssl_spec.rb +0 -37
- data/spec/validation/ssh_spec.rb +0 -39
data/spec/data/mash_spec.rb
DELETED
@@ -1,313 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
class AwesomeHash < Hash
|
4
|
-
end
|
5
|
-
|
6
|
-
describe RightSupport::Data::Mash do
|
7
|
-
subject { RightSupport::Data::Mash}
|
8
|
-
|
9
|
-
before(:each) do
|
10
|
-
@hash = { "mash" => "indifferent", :hash => "different" }
|
11
|
-
@sub = AwesomeHash.new("mash" => "indifferent", :hash => "different")
|
12
|
-
end
|
13
|
-
|
14
|
-
describe "#initialize" do
|
15
|
-
it 'converts all keys into strings when param is a Hash' do
|
16
|
-
mash = subject.new(@hash)
|
17
|
-
|
18
|
-
mash.keys.any? { |key| key.is_a?(Symbol) }.should be(false)
|
19
|
-
end
|
20
|
-
|
21
|
-
it 'converts all pure Hash values into Mashes if param is a Hash' do
|
22
|
-
mash = subject.new :hash => @hash
|
23
|
-
|
24
|
-
mash["hash"].should be_an_instance_of(subject)
|
25
|
-
# sanity check
|
26
|
-
mash["hash"]["hash"].should == "different"
|
27
|
-
end
|
28
|
-
|
29
|
-
it 'doesn not convert Hash subclass values into Mashes' do
|
30
|
-
mash = subject.new :sub => @sub
|
31
|
-
mash["sub"].should be_an_instance_of(AwesomeHash)
|
32
|
-
end
|
33
|
-
|
34
|
-
it 'converts all value items if value is an Array' do
|
35
|
-
mash = subject.new :arry => { :hash => [@hash] }
|
36
|
-
|
37
|
-
mash["arry"].should be_an_instance_of(subject)
|
38
|
-
# sanity check
|
39
|
-
mash["arry"]["hash"].first["hash"].should == "different"
|
40
|
-
|
41
|
-
end
|
42
|
-
|
43
|
-
it 'delegates to superclass constructor if param is not a Hash' do
|
44
|
-
mash = subject.new("dash berlin")
|
45
|
-
|
46
|
-
mash["unexisting key"].should == "dash berlin"
|
47
|
-
end
|
48
|
-
end # describe "#initialize"
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
describe "#update" do
|
53
|
-
it 'converts all keys into strings when param is a Hash' do
|
54
|
-
mash = subject.new(@hash)
|
55
|
-
mash.update("starry" => "night")
|
56
|
-
|
57
|
-
mash.keys.any? { |key| key.is_a?(Symbol) }.should be(false)
|
58
|
-
end
|
59
|
-
|
60
|
-
it 'converts all Hash values into Mashes if param is a Hash' do
|
61
|
-
mash = subject.new :hash => @hash
|
62
|
-
mash.update(:hash => { :hash => "is buggy in Ruby 1.8.6" })
|
63
|
-
|
64
|
-
mash["hash"].should be_an_instance_of(subject)
|
65
|
-
end
|
66
|
-
end # describe "#update"
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
describe "#[]=" do
|
71
|
-
it 'converts key into string' do
|
72
|
-
mash = subject.new(@hash)
|
73
|
-
mash[:hash] = { "starry" => "night" }
|
74
|
-
|
75
|
-
mash.keys.any? { |key| key.is_a?(Symbol) }.should be(false)
|
76
|
-
end
|
77
|
-
|
78
|
-
it 'converts all Hash value into subject' do
|
79
|
-
mash = subject.new :hash => @hash
|
80
|
-
mash[:hash] = { :hash => "is buggy in Ruby 1.8.6" }
|
81
|
-
|
82
|
-
mash["hash"].should be_an_instance_of(subject)
|
83
|
-
end
|
84
|
-
end # describe "#[]="
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
describe "#key?" do
|
89
|
-
before(:each) do
|
90
|
-
@mash = subject.new(@hash)
|
91
|
-
end
|
92
|
-
|
93
|
-
it 'converts key before lookup' do
|
94
|
-
@mash.key?("mash").should be(true)
|
95
|
-
@mash.key?(:mash).should be(true)
|
96
|
-
|
97
|
-
@mash.key?("hash").should be(true)
|
98
|
-
@mash.key?(:hash).should be(true)
|
99
|
-
|
100
|
-
@mash.key?(:rainclouds).should be(false)
|
101
|
-
@mash.key?("rainclouds").should be(false)
|
102
|
-
end
|
103
|
-
|
104
|
-
it 'is aliased as include?' do
|
105
|
-
@mash.include?("mash").should be(true)
|
106
|
-
@mash.include?(:mash).should be(true)
|
107
|
-
|
108
|
-
@mash.include?("hash").should be(true)
|
109
|
-
@mash.include?(:hash).should be(true)
|
110
|
-
|
111
|
-
@mash.include?(:rainclouds).should be(false)
|
112
|
-
@mash.include?("rainclouds").should be(false)
|
113
|
-
end
|
114
|
-
|
115
|
-
it 'is aliased as member?' do
|
116
|
-
@mash.member?("mash").should be(true)
|
117
|
-
@mash.member?(:mash).should be(true)
|
118
|
-
|
119
|
-
@mash.member?("hash").should be(true)
|
120
|
-
@mash.member?(:hash).should be(true)
|
121
|
-
|
122
|
-
@mash.member?(:rainclouds).should be(false)
|
123
|
-
@mash.member?("rainclouds").should be(false)
|
124
|
-
end
|
125
|
-
end # describe "#key?"
|
126
|
-
|
127
|
-
|
128
|
-
describe "#dup" do
|
129
|
-
it 'returns instance of subject' do
|
130
|
-
subject.new(@hash).dup.should be_an_instance_of(subject)
|
131
|
-
end
|
132
|
-
|
133
|
-
it 'preserves keys' do
|
134
|
-
mash = subject.new(@hash)
|
135
|
-
dup = mash.dup
|
136
|
-
|
137
|
-
mash.keys.sort.should == dup.keys.sort
|
138
|
-
end
|
139
|
-
|
140
|
-
it 'preserves value' do
|
141
|
-
mash = subject.new(@hash)
|
142
|
-
dup = mash.dup
|
143
|
-
|
144
|
-
mash.values.sort.should == dup.values.sort
|
145
|
-
end
|
146
|
-
end
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
describe "#to_hash" do
|
151
|
-
it 'returns instance of subject' do
|
152
|
-
subject.new(@hash).to_hash.should be_an_instance_of(Hash)
|
153
|
-
end
|
154
|
-
|
155
|
-
it 'preserves keys' do
|
156
|
-
mash = subject.new(@hash)
|
157
|
-
converted = mash.to_hash
|
158
|
-
|
159
|
-
mash.keys.sort.should == converted.keys.sort
|
160
|
-
end
|
161
|
-
|
162
|
-
it 'preserves value' do
|
163
|
-
mash = subject.new(@hash)
|
164
|
-
converted = mash.to_hash
|
165
|
-
|
166
|
-
mash.values.sort.should == converted.values.sort
|
167
|
-
end
|
168
|
-
end
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
describe "#symbolize_keys" do
|
173
|
-
it 'returns instance of subject' do
|
174
|
-
subject.new(@hash).symbolize_keys.should be_an_instance_of(Hash)
|
175
|
-
end
|
176
|
-
|
177
|
-
it 'converts keys to symbols' do
|
178
|
-
mash = subject.new(@hash)
|
179
|
-
converted = mash.symbolize_keys
|
180
|
-
|
181
|
-
converted_keys = converted.keys.sort{|k1, k2| k1.to_s <=> k2.to_s}
|
182
|
-
orig_keys = mash.keys.map{|k| k.to_sym}.sort{|i1, i2| i1.to_s <=> i2.to_s}
|
183
|
-
|
184
|
-
converted_keys.should == orig_keys
|
185
|
-
end
|
186
|
-
|
187
|
-
it 'preserves value' do
|
188
|
-
mash = subject.new(@hash)
|
189
|
-
converted = mash.symbolize_keys
|
190
|
-
|
191
|
-
mash.values.sort.should == converted.values.sort
|
192
|
-
end
|
193
|
-
end
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
describe "#delete" do
|
198
|
-
it 'converts Symbol key into String before deleting' do
|
199
|
-
mash = subject.new(@hash)
|
200
|
-
|
201
|
-
mash.delete(:hash)
|
202
|
-
mash.key?("hash").should be(false)
|
203
|
-
end
|
204
|
-
|
205
|
-
it 'works with String keys as well' do
|
206
|
-
mash = subject.new(@hash)
|
207
|
-
|
208
|
-
mash.delete("mash")
|
209
|
-
mash.key?("mash").should be(false)
|
210
|
-
end
|
211
|
-
end
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
describe "#except" do
|
216
|
-
it "converts Symbol key into String before calling super" do
|
217
|
-
mash = subject.new(@hash)
|
218
|
-
|
219
|
-
hashless_mash = mash.except(:hash)
|
220
|
-
hashless_mash.key?("hash").should be(false)
|
221
|
-
end
|
222
|
-
|
223
|
-
it "works with String keys as well" do
|
224
|
-
mash = subject.new(@hash)
|
225
|
-
|
226
|
-
mashless_mash = mash.except("mash")
|
227
|
-
mashless_mash.key?("mash").should be(false)
|
228
|
-
end
|
229
|
-
|
230
|
-
it "works with multiple keys" do
|
231
|
-
mash = subject.new(@hash)
|
232
|
-
|
233
|
-
mashless = mash.except("hash", :mash)
|
234
|
-
mashless.key?(:hash).should be(false)
|
235
|
-
mashless.key?("mash").should be(false)
|
236
|
-
end
|
237
|
-
|
238
|
-
it "should return a mash" do
|
239
|
-
mash = subject.new(@hash)
|
240
|
-
|
241
|
-
hashless_mash = mash.except(:hash)
|
242
|
-
hashless_mash.class.should be(subject)
|
243
|
-
end
|
244
|
-
end
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
describe "#merge" do
|
249
|
-
before(:each) do
|
250
|
-
@mash = subject.new(@hash).merge(:no => "in between")
|
251
|
-
end
|
252
|
-
|
253
|
-
it 'returns instance of subject' do
|
254
|
-
@mash.should be_an_instance_of(subject)
|
255
|
-
end
|
256
|
-
|
257
|
-
it 'merges in give Hash' do
|
258
|
-
@mash["no"].should == "in between"
|
259
|
-
end
|
260
|
-
end
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
describe "#fetch" do
|
265
|
-
before(:each) do
|
266
|
-
@mash = subject.new(@hash).merge(:no => "in between")
|
267
|
-
end
|
268
|
-
|
269
|
-
it 'converts key before fetching' do
|
270
|
-
@mash.fetch("no").should == "in between"
|
271
|
-
end
|
272
|
-
|
273
|
-
it 'returns alternative value if key lookup fails' do
|
274
|
-
@mash.fetch("flying", "screwdriver").should == "screwdriver"
|
275
|
-
end
|
276
|
-
end
|
277
|
-
|
278
|
-
|
279
|
-
describe "#default" do
|
280
|
-
before(:each) do
|
281
|
-
@mash = subject.new(:yet_another_technical_revolution)
|
282
|
-
end
|
283
|
-
|
284
|
-
it 'returns default value unless key exists in mash' do
|
285
|
-
@mash.default("peak oil is now behind, baby").should == :yet_another_technical_revolution
|
286
|
-
end
|
287
|
-
|
288
|
-
it 'returns existing value if key is Symbol and exists in mash' do
|
289
|
-
@mash.update(:no => "in between")
|
290
|
-
@mash.default(:no).should == "in between"
|
291
|
-
end
|
292
|
-
end
|
293
|
-
|
294
|
-
|
295
|
-
describe "#values_at" do
|
296
|
-
before(:each) do
|
297
|
-
@mash = subject.new(@hash).merge(:no => "in between")
|
298
|
-
end
|
299
|
-
|
300
|
-
it 'is indifferent to whether keys are strings or symbols' do
|
301
|
-
@mash.values_at("hash", :mash, :no).should == ["different", "indifferent", "in between"]
|
302
|
-
end
|
303
|
-
end
|
304
|
-
|
305
|
-
|
306
|
-
describe "#stringify_keys!" do
|
307
|
-
it 'returns the mash itself' do
|
308
|
-
mash = subject.new(@hash)
|
309
|
-
|
310
|
-
mash.stringify_keys!.object_id.should == mash.object_id
|
311
|
-
end
|
312
|
-
end
|
313
|
-
end
|
data/spec/data/token_spec.rb
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe RightSupport::Data::Token do
|
4
|
-
|
5
|
-
context :generate do
|
6
|
-
let(:match) { /^[0-9a-zA-Z]{13}$/ }
|
7
|
-
|
8
|
-
subject { described_class }
|
9
|
-
|
10
|
-
it 'generates UUIDs' do
|
11
|
-
seen = {}
|
12
|
-
100.times do
|
13
|
-
actual = subject.generate
|
14
|
-
actual.should =~ match
|
15
|
-
seen[actual].should be_nil
|
16
|
-
seen[actual] = true
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
end
|
data/spec/data/uuid_spec.rb
DELETED
@@ -1,45 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe RightSupport::Data::UUID do
|
4
|
-
subject { RightSupport::Data::UUID }
|
5
|
-
|
6
|
-
VALID_UUID = /[0-9a-f-]+/ #we're not too picky here...
|
7
|
-
|
8
|
-
context :generate do
|
9
|
-
context 'when no implementation is available' do
|
10
|
-
it 'raises Unavailable' do
|
11
|
-
flexmock(subject).should_receive(:implementation).and_return(nil)
|
12
|
-
lambda {
|
13
|
-
subject.generate
|
14
|
-
}.should raise_error(subject::Unavailable)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
context 'when SimpleUUID is available' do
|
19
|
-
it 'generates UUIDs' do
|
20
|
-
subject.implementation = subject::SimpleUUID
|
21
|
-
subject.generate.should =~ VALID_UUID
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
context 'when UUIDTools v1 is available' do
|
26
|
-
it 'generates UUIDs' do
|
27
|
-
pending #need to rework tests to test 2 versions of 1 gem!
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
context 'when UUIDTools v2 is available' do
|
32
|
-
it 'generates UUIDs' do
|
33
|
-
subject.implementation = subject::UUIDTools2
|
34
|
-
subject.generate.should =~ VALID_UUID
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
context 'when UUID gem is available' do
|
39
|
-
it 'generates UUIDs' do
|
40
|
-
subject.implementation = subject::UUIDGem
|
41
|
-
subject.generate.should =~ VALID_UUID
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
@@ -1,84 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe RightSupport::DB::CassandraModel do
|
4
|
-
|
5
|
-
class Cassandra
|
6
|
-
class OrderedHash < Hash
|
7
|
-
def keys
|
8
|
-
super.sort
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
context "config" do
|
14
|
-
let(:config) { {'test' => {'server' => 'connection'} \
|
15
|
-
,'developemnt' => {'server' => 'connection1'}} }
|
16
|
-
|
17
|
-
['test', 'developemnt'].each do |env|
|
18
|
-
it "should return correct env: #{env.inspect} config" do
|
19
|
-
RightSupport::DB::CassandraModel.config = config
|
20
|
-
old_rack_env = ENV['RACK_ENV']
|
21
|
-
ENV['RACK_ENV'] = env
|
22
|
-
config[env].should == RightSupport::DB::CassandraModel.env_config
|
23
|
-
ENV['RACK_ENV'] = old_rack_env
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
it "should raise error if config not set or not Hash" do
|
28
|
-
old_rack_env = ENV['RACK_ENV']
|
29
|
-
RightSupport::DB::CassandraModel.config = nil
|
30
|
-
ENV['RACK_ENV'] = 'nil_config'
|
31
|
-
lambda {
|
32
|
-
RightSupport::DB::CassandraModel.env_config
|
33
|
-
}.should raise_error RightSupport::DB::MissingConfiguration
|
34
|
-
|
35
|
-
ENV['RACK_ENV'] = old_rack_env
|
36
|
-
end
|
37
|
-
|
38
|
-
it "should raise error if no configuration find" do
|
39
|
-
RightSupport::DB::CassandraModel.config = config
|
40
|
-
old_rack_env = ENV['RACK_ENV']
|
41
|
-
ENV['RACK_ENV'] = 'super_environment'
|
42
|
-
lambda {
|
43
|
-
RightSupport::DB::CassandraModel.env_config
|
44
|
-
}.should raise_error RightSupport::DB::MissingConfiguration
|
45
|
-
ENV['RACK_ENV'] = old_rack_env
|
46
|
-
end
|
47
|
-
|
48
|
-
end
|
49
|
-
|
50
|
-
context "initialize" do
|
51
|
-
let(:env) { 'server_config' }
|
52
|
-
let(:column_family) { 'server_config_column_family' }
|
53
|
-
let(:default_keyspace) { 'ServerConfigSatelliteService' }
|
54
|
-
let(:default_keyspace_connection) { flexmock('cassandra') }
|
55
|
-
|
56
|
-
{
|
57
|
-
'[ring1, ring2, ring3]' => ['ring1', 'ring2', 'ring3'] \
|
58
|
-
,'ring1, ring2, ring3' => ['ring1', 'ring2', 'ring3'] \
|
59
|
-
,['ring1', 'ring2', 'ring3'] => ['ring1', 'ring2', 'ring3']
|
60
|
-
}.each do |config_string, congig_test|
|
61
|
-
it "should successfully intialize from #{config_string.inspect}" do
|
62
|
-
|
63
|
-
|
64
|
-
old_rack_env = ENV['RACK_ENV']
|
65
|
-
begin
|
66
|
-
ENV['RACK_ENV'] = env
|
67
|
-
|
68
|
-
flexmock(Cassandra).should_receive(:new).with(/#{default_keyspace}_#{env}/, congig_test , {:timeout=>20, :server_retry_period=>nil}).and_return(default_keyspace_connection)
|
69
|
-
default_keyspace_connection.should_receive(:disable_node_auto_discovery!).and_return(true)
|
70
|
-
|
71
|
-
|
72
|
-
RightSupport::DB::CassandraModel.config = {env => {"server" => config_string}}
|
73
|
-
RightSupport::DB::CassandraModel.keyspace = default_keyspace
|
74
|
-
RightSupport::DB::CassandraModel.reconnect
|
75
|
-
|
76
|
-
ensure
|
77
|
-
ENV['RACK_ENV'] = old_rack_env
|
78
|
-
end
|
79
|
-
|
80
|
-
|
81
|
-
end
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|
@@ -1,73 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe RightSupport::DB::CassandraModel do
|
4
|
-
|
5
|
-
class Cassandra
|
6
|
-
class OrderedHash < Hash
|
7
|
-
def keys
|
8
|
-
super.sort
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
describe "do_op() logging" do
|
14
|
-
|
15
|
-
before(:each) do
|
16
|
-
@logger = flexmock(:logger)
|
17
|
-
flexmock(RightSupport::Log::Mixin).should_receive(:default_logger).and_return(@logger)
|
18
|
-
@logger.should_receive(:debug).with(String)
|
19
|
-
@conn = flexmock(:connection)
|
20
|
-
flexmock(RightSupport::DB::CassandraModel).should_receive(:conn).and_return(@conn)
|
21
|
-
@conn.should_receive(:multi_get).and_return(true)
|
22
|
-
@conn.should_receive(:get).and_return(true)
|
23
|
-
@conn.should_receive(:get_indexed_slices).and_return(true)
|
24
|
-
@conn.should_receive(:get_columns).and_return(true)
|
25
|
-
@conn.should_receive(:insert).and_return(true)
|
26
|
-
@conn.should_receive(:remove).and_return(true)
|
27
|
-
end
|
28
|
-
|
29
|
-
it "logs requests" do
|
30
|
-
[:multi_get, :get, :get_indexed_slices, :get_columns, :insert, :remove].each do |method|
|
31
|
-
RightSupport::DB::CassandraModel.do_op(method,'test_column_family', 'test_key')
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
end
|
36
|
-
|
37
|
-
context "do_op_log" do
|
38
|
-
before(:each) do
|
39
|
-
@logger = flexmock(:logger)
|
40
|
-
flexmock(RightSupport::Log::Mixin).should_receive(:default_logger).and_return(@logger)
|
41
|
-
flexmock(Time).should_receive(:now).and_return(100.010)
|
42
|
-
end
|
43
|
-
|
44
|
-
it "should display size for the keys if they are array" do
|
45
|
-
first_started_at = 100.0
|
46
|
-
started_at = 100.0
|
47
|
-
@logger.should_receive(:debug).with("CassandraModel get, cf=cf_name, keys=5, time=10.0ms")
|
48
|
-
RightSupport::DB::CassandraModel.do_op_log(first_started_at, started_at, 0, :get, 'cf_name', [1,2,3,4,5])
|
49
|
-
end
|
50
|
-
|
51
|
-
it "should display size for the key equal 1 if not array" do
|
52
|
-
first_started_at = 100.0
|
53
|
-
started_at = 100.0
|
54
|
-
@logger.should_receive(:debug).with("CassandraModel get, cf=cf_name, keys=1, time=10.0ms")
|
55
|
-
RightSupport::DB::CassandraModel.do_op_log(first_started_at, started_at, 0, :get, 'cf_name', "10")
|
56
|
-
end
|
57
|
-
|
58
|
-
it "should display attemps time in milliseconds (ms)" do
|
59
|
-
first_started_at = 100.0
|
60
|
-
started_at = 100.0
|
61
|
-
@logger.should_receive(:debug).with("CassandraModel get, cf=cf_name, keys=1, time=10.0ms")
|
62
|
-
RightSupport::DB::CassandraModel.do_op_log(first_started_at, started_at, 0, :get, 'cf_name', [11])
|
63
|
-
end
|
64
|
-
|
65
|
-
it "should display total time milliseconds (s)" do
|
66
|
-
first_started_at = 99.0
|
67
|
-
started_at = 100.0
|
68
|
-
@logger.should_receive(:debug).with("CassandraModel get, cf=cf_name, keys=1, time=10.0ms, retries=1, total_time=1010.0ms")
|
69
|
-
RightSupport::DB::CassandraModel.do_op_log(first_started_at, started_at, 1, :get, 'cf_name', [11])
|
70
|
-
end
|
71
|
-
|
72
|
-
end
|
73
|
-
end
|