right_support 2.8.0 → 2.8.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.
- data/VERSION +1 -1
- data/lib/right_support/db/cassandra_model.rb +24 -3
- data/lib/right_support/stats/activity.rb +1 -1
- data/right_support.gemspec +1 -1
- data/spec/db/cassandra_model_part1_spec.rb +1 -1
- data/spec/db/cassandra_model_spec.rb +10 -10
- data/spec/stats/activity_spec.rb +32 -0
- data/spec/stats/exceptions_spec.rb +1 -0
- metadata +33 -33
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.8.
|
1
|
+
2.8.1
|
@@ -164,6 +164,18 @@ module RightSupport::DB
|
|
164
164
|
result
|
165
165
|
end
|
166
166
|
|
167
|
+
def namespace(env)
|
168
|
+
if env == 'test'
|
169
|
+
nspace = "testns"
|
170
|
+
else
|
171
|
+
nspace = nil
|
172
|
+
if File.file?("/etc/namespace")
|
173
|
+
nspace = File.read("/etc/namespace").strip
|
174
|
+
end
|
175
|
+
end
|
176
|
+
nspace
|
177
|
+
end
|
178
|
+
|
167
179
|
# Return current keyspace names as Array of String (any keyspace that has been used this session).
|
168
180
|
#
|
169
181
|
# === Return
|
@@ -186,7 +198,10 @@ module RightSupport::DB
|
|
186
198
|
# keyspace(String):: Set the default keyspace
|
187
199
|
|
188
200
|
def keyspace=(kyspc)
|
189
|
-
|
201
|
+
env = ENV['RACK_ENV'] || 'development'
|
202
|
+
nspace = namespace(env)
|
203
|
+
@@default_keyspace = "#{kyspc}_#{env}"
|
204
|
+
@@default_keyspace += "_#{nspace}" if nspace
|
190
205
|
end
|
191
206
|
|
192
207
|
# Temporarily change the working keyspace for this class for the duration of
|
@@ -200,8 +215,14 @@ module RightSupport::DB
|
|
200
215
|
def with_keyspace(keyspace, append_env=true, &block)
|
201
216
|
@@current_keyspace = keyspace
|
202
217
|
env = ENV['RACK_ENV'] || 'development'
|
203
|
-
|
204
|
-
|
218
|
+
nspace = namespace(env)
|
219
|
+
if append_env
|
220
|
+
if nspace
|
221
|
+
tail = "_#{env}_#{nspace}"
|
222
|
+
else
|
223
|
+
tail = "_#{env}"
|
224
|
+
end
|
225
|
+
@@current_keyspace += tail unless @@current_keyspace.end_with?(tail)
|
205
226
|
end
|
206
227
|
block.call
|
207
228
|
ensure
|
@@ -247,7 +247,7 @@ module RightSupport::Stats
|
|
247
247
|
#
|
248
248
|
# @return [Fixnum, NilClass] Average rate or nil if no average rate data
|
249
249
|
def self.avg_rate(stats, total)
|
250
|
-
sum = stats.inject(nil) { |sum, stat| sum = (sum || 0.0) + (stat["rate"] * stat["total"]) if stat["rate"]; sum }
|
250
|
+
sum = stats.inject(nil) { |sum, stat| sum = (sum || 0.0) + (stat["rate"] * stat["total"]) if stat && stat["rate"]; sum }
|
251
251
|
sum / total if sum
|
252
252
|
end
|
253
253
|
|
data/right_support.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{right_support}
|
8
|
-
s.version = "2.8.
|
8
|
+
s.version = "2.8.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Tony Spataro", "Sergey Sergyenko", "Ryan Williamson", "Lee Kirchhoff", "Alexey Karpik", "Scott Messier"]
|
@@ -65,7 +65,7 @@ describe RightSupport::DB::CassandraModel do
|
|
65
65
|
begin
|
66
66
|
ENV['RACK_ENV'] = env
|
67
67
|
|
68
|
-
flexmock(Cassandra).should_receive(:new).with(default_keyspace
|
68
|
+
flexmock(Cassandra).should_receive(:new).with(/#{default_keyspace}_#{env}/, congig_test , {:timeout=>10}).and_return(default_keyspace_connection)
|
69
69
|
default_keyspace_connection.should_receive(:disable_node_auto_discovery!).and_return(true)
|
70
70
|
|
71
71
|
|
@@ -43,8 +43,8 @@ describe RightSupport::DB::CassandraModel do
|
|
43
43
|
default_keyspace_connection.should_receive(:disable_node_auto_discovery!).and_return(true)
|
44
44
|
default_keyspace_connection.should_receive(:name).and_return('connection2')
|
45
45
|
|
46
|
-
flexmock(Cassandra).should_receive(:new).with(keyspace + '_' + (ENV['RACK_ENV'] || 'development'), "localhost:9160", {:timeout=>10}).and_return(current_keyspace_connection)
|
47
|
-
flexmock(Cassandra).should_receive(:new).with(default_keyspace + '_' + (ENV['RACK_ENV'] || 'development'), "localhost:9160", {:timeout=>10}).and_return(default_keyspace_connection)
|
46
|
+
flexmock(Cassandra).should_receive(:new).with(keyspace + '_' + (ENV['RACK_ENV'] || 'development') + "_testns", "localhost:9160", {:timeout=>10}).and_return(current_keyspace_connection)
|
47
|
+
flexmock(Cassandra).should_receive(:new).with(default_keyspace + '_' + (ENV['RACK_ENV'] || 'development') + "_testns", "localhost:9160", {:timeout=>10}).and_return(default_keyspace_connection)
|
48
48
|
end
|
49
49
|
|
50
50
|
it 'raises a meaningful exception when a config stanza is missing' do
|
@@ -141,14 +141,14 @@ describe RightSupport::DB::CassandraModel do
|
|
141
141
|
|
142
142
|
it 'appends the environment to the keyspace provided' do
|
143
143
|
RightSupport::DB::CassandraModel.keyspace = keyspace
|
144
|
-
RightSupport::DB::CassandraModel.send(:class_variable_get, :@@default_keyspace).should == (keyspace + "_" + (ENV['RACK_ENV'] || 'development'))
|
144
|
+
RightSupport::DB::CassandraModel.send(:class_variable_get, :@@default_keyspace).should == (keyspace + "_" + (ENV['RACK_ENV'] || 'development') + "_testns")
|
145
145
|
end
|
146
146
|
end
|
147
147
|
|
148
148
|
# If a current keyspace is provided it takes precedence over the default keyspace. If none is
|
149
149
|
# provided, the default keyspace should be returned.
|
150
150
|
context :keyspace do
|
151
|
-
let(:keyspace) { 'SatelliteService_' + ENV['RACK_ENV'] }
|
151
|
+
let(:keyspace) { 'SatelliteService_' + ENV['RACK_ENV'] + "_testns"}
|
152
152
|
|
153
153
|
it 'returns the default keyspace if no current keyspace is set' do
|
154
154
|
RightSupport::DB::CassandraModel.send(:class_variable_set, :@@current_keyspace, nil)
|
@@ -177,24 +177,24 @@ describe RightSupport::DB::CassandraModel do
|
|
177
177
|
|
178
178
|
it 'sets the current keyspace to the keyspace provided for execution within the block' do
|
179
179
|
RightSupport::DB::CassandraModel.with_keyspace(keyspace) do
|
180
|
-
RightSupport::DB::CassandraModel.keyspace.should == keyspace + "
|
180
|
+
RightSupport::DB::CassandraModel.keyspace.should == keyspace + "_test_testns"
|
181
181
|
end
|
182
182
|
end
|
183
183
|
|
184
184
|
it 'resets back to the default keyspace for execution outside of the block' do
|
185
185
|
RightSupport::DB::CassandraModel.with_keyspace(keyspace) {}
|
186
|
-
RightSupport::DB::CassandraModel.keyspace.should == default_keyspace + "
|
186
|
+
RightSupport::DB::CassandraModel.keyspace.should == default_keyspace + "_test_testns"
|
187
187
|
end
|
188
188
|
context 'append_env parameter' do
|
189
189
|
it 'appends the environment by default' do
|
190
190
|
RightSupport::DB::CassandraModel.with_keyspace('Monkey') do
|
191
|
-
RightSupport::DB::CassandraModel.keyspace.should == '
|
191
|
+
RightSupport::DB::CassandraModel.keyspace.should == 'Monkey_test_testns'
|
192
192
|
end
|
193
193
|
end
|
194
194
|
|
195
195
|
it 'appends the environment when append_env == true' do
|
196
196
|
RightSupport::DB::CassandraModel.with_keyspace('Monkey', true) do
|
197
|
-
RightSupport::DB::CassandraModel.keyspace.should == '
|
197
|
+
RightSupport::DB::CassandraModel.keyspace.should == 'Monkey_test_testns'
|
198
198
|
end
|
199
199
|
end
|
200
200
|
|
@@ -205,8 +205,8 @@ describe RightSupport::DB::CassandraModel do
|
|
205
205
|
end
|
206
206
|
|
207
207
|
it 'avoids double-appending the environment' do
|
208
|
-
RightSupport::DB::CassandraModel.with_keyspace('
|
209
|
-
RightSupport::DB::CassandraModel.keyspace.should == '
|
208
|
+
RightSupport::DB::CassandraModel.with_keyspace('Monkey_test_testns') do
|
209
|
+
RightSupport::DB::CassandraModel.keyspace.should == 'Monkey_test_testns'
|
210
210
|
end
|
211
211
|
end
|
212
212
|
end
|
data/spec/stats/activity_spec.rb
CHANGED
@@ -259,6 +259,14 @@ describe RightSupport::Stats::Activity do
|
|
259
259
|
{"last" => {"elapsed" => 10, "type" => "foo"}, "total" => 5, "percent" => {"foo" => 20.0, "bar" => 80.0}, "rate" => 0.18}
|
260
260
|
end
|
261
261
|
|
262
|
+
it "handles nil stat" do
|
263
|
+
stats = [{"last" => {"elapsed" => 10, "type" => "foo"}, "total" => 1, "percent" => {"foo" => 100.0}},
|
264
|
+
nil,
|
265
|
+
{"last" => {"elapsed" => 20, "type" => "bar"}, "total" => 4, "percent" => {"bar" => 100.0}}]
|
266
|
+
RightSupport::Stats::Activity.all(stats).should ==
|
267
|
+
{"last" => {"elapsed" => 10, "type" => "foo"}, "total" => 5, "percent" => {"foo" => 20.0, "bar" => 80.0}}
|
268
|
+
end
|
269
|
+
|
262
270
|
it "returns nil if there are no stats" do
|
263
271
|
RightSupport::Stats::Activity.all([]).should be_nil
|
264
272
|
end
|
@@ -272,6 +280,15 @@ describe RightSupport::Stats::Activity do
|
|
272
280
|
RightSupport::Stats::Activity.percentage(stats, 10).should == {"total" => 10, "percent" => {"foo" => 40.0, "bar" => 60.0}}
|
273
281
|
end
|
274
282
|
|
283
|
+
it "handles nil stat" do
|
284
|
+
stats = [{"total" => 1, "percent" => {"foo" => 100.0}},
|
285
|
+
nil,
|
286
|
+
{"total" => 5, "percent" => {"bar" => 100.0}},
|
287
|
+
nil,
|
288
|
+
{"total" => 4, "percent" => {"foo" => 75.0, "bar" => 25.0}}]
|
289
|
+
RightSupport::Stats::Activity.percentage(stats, 10).should == {"total" => 10, "percent" => {"foo" => 40.0, "bar" => 60.0}}
|
290
|
+
end
|
291
|
+
|
275
292
|
it "returns only total if there is no data" do
|
276
293
|
RightSupport::Stats::Activity.percentage([], 0).should == {"total" => 0}
|
277
294
|
end
|
@@ -285,6 +302,15 @@ describe RightSupport::Stats::Activity do
|
|
285
302
|
RightSupport::Stats::Activity.avg_rate(stats, 10).should == 0.18
|
286
303
|
end
|
287
304
|
|
305
|
+
it "handles nil stat" do
|
306
|
+
stats = [{"total" => 1, "rate" => 0.5},
|
307
|
+
nil,
|
308
|
+
{"total" => 5, "rate" => 0.1},
|
309
|
+
nil,
|
310
|
+
{"total" => 4, "rate" => 0.2}]
|
311
|
+
RightSupport::Stats::Activity.avg_rate(stats, 10).should == 0.18
|
312
|
+
end
|
313
|
+
|
288
314
|
it "returns nil if there is no data" do
|
289
315
|
RightSupport::Stats::Activity.avg_rate([], 0).should be_nil
|
290
316
|
end
|
@@ -296,6 +322,12 @@ describe RightSupport::Stats::Activity do
|
|
296
322
|
{"last" => {"elapsed" => 0, "type" => "foo"}, "total" => 1, "percent" => {"foo" => 100.0}}]
|
297
323
|
end
|
298
324
|
|
325
|
+
it "handles nil stat" do
|
326
|
+
stats = [{"last" => {"elapsed" => 0, "type" => "foo"}, "total" => 1, "percent" => {"foo" => 100.0}},
|
327
|
+
nil,
|
328
|
+
{"last" => {"elapsed" => 0, "type" => "foo"}, "total" => 1, "percent" => {"foo" => 100.0}}]
|
329
|
+
end
|
330
|
+
|
299
331
|
it "returns nil if there is no data" do
|
300
332
|
RightSupport::Stats::Activity.last([]).should be_nil
|
301
333
|
end
|
@@ -178,6 +178,7 @@ describe RightSupport::Stats::Exceptions do
|
|
178
178
|
"when" => @now + 15, "where" => "there"},
|
179
179
|
{"count" => 2, "type" => "ArgumentError", "message" => "badarg",
|
180
180
|
"when" => @now + 30, "where" => "everywhere"}]}},
|
181
|
+
nil,
|
181
182
|
{"testing" => {"total" => 1,
|
182
183
|
"recent" => [{"count" => 1, "type" => "ArgumentError", "message" => "awfularg",
|
183
184
|
"when" => @now + 10, "where" => "here"}]}},
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: right_support
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 45
|
5
|
+
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 2
|
8
8
|
- 8
|
9
|
-
-
|
10
|
-
version: 2.8.
|
9
|
+
- 1
|
10
|
+
version: 2.8.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Tony Spataro
|
@@ -20,12 +20,11 @@ autorequire:
|
|
20
20
|
bindir: bin
|
21
21
|
cert_chain: []
|
22
22
|
|
23
|
-
date: 2013-
|
23
|
+
date: 2013-09-06 00:00:00 -07:00
|
24
24
|
default_executable:
|
25
25
|
dependencies:
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
|
-
|
28
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
27
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
29
28
|
none: false
|
30
29
|
requirements:
|
31
30
|
- - ~>
|
@@ -35,12 +34,12 @@ dependencies:
|
|
35
34
|
- 0
|
36
35
|
- 9
|
37
36
|
version: "0.9"
|
38
|
-
|
37
|
+
requirement: *id001
|
38
|
+
type: :development
|
39
39
|
name: rake
|
40
40
|
prerelease: false
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
|
43
|
-
requirement: &id002 !ruby/object:Gem::Requirement
|
42
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
44
43
|
none: false
|
45
44
|
requirements:
|
46
45
|
- - ~>
|
@@ -51,12 +50,12 @@ dependencies:
|
|
51
50
|
- 8
|
52
51
|
- 3
|
53
52
|
version: 1.8.3
|
54
|
-
|
53
|
+
requirement: *id002
|
54
|
+
type: :development
|
55
55
|
name: jeweler
|
56
56
|
prerelease: false
|
57
57
|
- !ruby/object:Gem::Dependency
|
58
|
-
|
59
|
-
requirement: &id003 !ruby/object:Gem::Requirement
|
58
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
60
59
|
none: false
|
61
60
|
requirements:
|
62
61
|
- - ~>
|
@@ -66,12 +65,12 @@ dependencies:
|
|
66
65
|
- 1
|
67
66
|
- 0
|
68
67
|
version: "1.0"
|
69
|
-
|
68
|
+
requirement: *id003
|
69
|
+
type: :development
|
70
70
|
name: right_develop
|
71
71
|
prerelease: false
|
72
72
|
- !ruby/object:Gem::Dependency
|
73
|
-
|
74
|
-
requirement: &id004 !ruby/object:Gem::Requirement
|
73
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
75
74
|
none: false
|
76
75
|
requirements:
|
77
76
|
- - ">="
|
@@ -81,12 +80,12 @@ dependencies:
|
|
81
80
|
- 0
|
82
81
|
- 10
|
83
82
|
version: "0.10"
|
84
|
-
|
83
|
+
requirement: *id004
|
84
|
+
type: :development
|
85
85
|
name: ruby-debug
|
86
86
|
prerelease: false
|
87
87
|
- !ruby/object:Gem::Dependency
|
88
|
-
|
89
|
-
requirement: &id005 !ruby/object:Gem::Requirement
|
88
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
90
89
|
none: false
|
91
90
|
requirements:
|
92
91
|
- - ">="
|
@@ -97,12 +96,12 @@ dependencies:
|
|
97
96
|
- 11
|
98
97
|
- 6
|
99
98
|
version: 0.11.6
|
100
|
-
|
99
|
+
requirement: *id005
|
100
|
+
type: :development
|
101
101
|
name: ruby-debug19
|
102
102
|
prerelease: false
|
103
103
|
- !ruby/object:Gem::Dependency
|
104
|
-
|
105
|
-
requirement: &id006 !ruby/object:Gem::Requirement
|
104
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
106
105
|
none: false
|
107
106
|
requirements:
|
108
107
|
- - ">="
|
@@ -113,12 +112,12 @@ dependencies:
|
|
113
112
|
- 4
|
114
113
|
- 2
|
115
114
|
version: 2.4.2
|
116
|
-
|
115
|
+
requirement: *id006
|
116
|
+
type: :development
|
117
117
|
name: rdoc
|
118
118
|
prerelease: false
|
119
119
|
- !ruby/object:Gem::Dependency
|
120
|
-
|
121
|
-
requirement: &id007 !ruby/object:Gem::Requirement
|
120
|
+
version_requirements: &id007 !ruby/object:Gem::Requirement
|
122
121
|
none: false
|
123
122
|
requirements:
|
124
123
|
- - ~>
|
@@ -128,12 +127,12 @@ dependencies:
|
|
128
127
|
- 1
|
129
128
|
- 0
|
130
129
|
version: "1.0"
|
131
|
-
|
130
|
+
requirement: *id007
|
131
|
+
type: :development
|
132
132
|
name: flexmock
|
133
133
|
prerelease: false
|
134
134
|
- !ruby/object:Gem::Dependency
|
135
|
-
|
136
|
-
requirement: &id008 !ruby/object:Gem::Requirement
|
135
|
+
version_requirements: &id008 !ruby/object:Gem::Requirement
|
137
136
|
none: false
|
138
137
|
requirements:
|
139
138
|
- - ~>
|
@@ -144,12 +143,12 @@ dependencies:
|
|
144
143
|
- 0
|
145
144
|
- 0
|
146
145
|
version: 1.0.0
|
147
|
-
|
146
|
+
requirement: *id008
|
147
|
+
type: :development
|
148
148
|
name: syntax
|
149
149
|
prerelease: false
|
150
150
|
- !ruby/object:Gem::Dependency
|
151
|
-
|
152
|
-
requirement: &id009 !ruby/object:Gem::Requirement
|
151
|
+
version_requirements: &id009 !ruby/object:Gem::Requirement
|
153
152
|
none: false
|
154
153
|
requirements:
|
155
154
|
- - ~>
|
@@ -159,7 +158,8 @@ dependencies:
|
|
159
158
|
- 1
|
160
159
|
- 5
|
161
160
|
version: "1.5"
|
162
|
-
|
161
|
+
requirement: *id009
|
162
|
+
type: :development
|
163
163
|
name: nokogiri
|
164
164
|
prerelease: false
|
165
165
|
description: A toolkit of useful, reusable foundation code created by RightScale.
|
@@ -320,7 +320,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
320
320
|
requirements: []
|
321
321
|
|
322
322
|
rubyforge_project:
|
323
|
-
rubygems_version: 1.
|
323
|
+
rubygems_version: 1.3.7
|
324
324
|
signing_key:
|
325
325
|
specification_version: 3
|
326
326
|
summary: Reusable foundation code.
|