right_support 2.11.3 → 2.12.1
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 +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
|