splitclient-rb 6.4.0 → 6.4.1.pre.rc1
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f474b8941f870d494de1e1c5314b2b880c12672cf9d46b17ceb902e99e85050a
|
4
|
+
data.tar.gz: 27e00346829c95698a5e19acd95d392c9805a857cb5882ef0a94ff4011ea41d5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9463b792568144eeec07f22bd3550ad5e3b626de832752694e67c82792f884c3627e0f1b1774a3cff6168c860dbf0b248873df6848db39f1b43f487600361956
|
7
|
+
data.tar.gz: 8e2431113432f21f485ad67009c538bdfaba2902828e872099b2cf89e739bbbfae4c8114c20e49fa2e77357ed7cee9d0e524b341ca1d8667ba0607d6a5fd47f7
|
data/CHANGES.txt
CHANGED
@@ -1,7 +1,5 @@
|
|
1
|
-
6.4.0 (Jul 05, 2019)
|
2
|
-
- Added properties to track method.
|
3
|
-
|
4
1
|
6.3.0 (Apr 30, 2019)
|
2
|
+
|
5
3
|
- Added Dynamic Configurations support through two new methods that mimick the regular ones, changing the type of what is returned.
|
6
4
|
- get_treatment_with_config: Same as get_treatment but returning the treatment with it's config.
|
7
5
|
- get_treatments_with_config: Same as get_treatments, but instead of a map of string it returns a map of treatments with config.
|
data/NEWS
CHANGED
@@ -3,6 +3,8 @@ module SplitIoClient
|
|
3
3
|
module Repositories
|
4
4
|
module Metrics
|
5
5
|
class MemoryRepository
|
6
|
+
OPERATIONS = %w(sdk.get_treatment sdk.get_treatments sdk.get_treatment_with_config sdk.get_treatments_with_config)
|
7
|
+
|
6
8
|
def initialize(_ = nil, adapter)
|
7
9
|
@counts = []
|
8
10
|
@latencies = []
|
@@ -23,13 +25,25 @@ module SplitIoClient
|
|
23
25
|
def add_latency(operation, time_in_ms, binary_search)
|
24
26
|
operation_hash = @latencies.find { |l| l[:operation] == operation }
|
25
27
|
if operation_hash.nil?
|
26
|
-
latencies_for_op = (operation
|
28
|
+
latencies_for_op = (OPERATIONS.include?(operation)) ? build_latencies_for_op(operation, binary_search.add_latency_millis(time_in_ms, true)) : [time_in_ms]
|
27
29
|
@latencies << { operation: operation, latencies: latencies_for_op }
|
28
30
|
else
|
29
|
-
|
31
|
+
(OPERATIONS.include?(operation)) ? increase_latencies_for_op(operation_hash[:latencies], binary_search.add_latency_millis(time_in_ms, true)) : operation_hash[:latencies].push(time_in_ms)
|
30
32
|
end
|
31
33
|
end
|
32
34
|
|
35
|
+
def build_latencies_for_op(operation, index)
|
36
|
+
latencies_array = Array.new(BinarySearchLatencyTracker::BUCKETS.length, 0)
|
37
|
+
|
38
|
+
latencies_array[index] = 1
|
39
|
+
|
40
|
+
latencies_array
|
41
|
+
end
|
42
|
+
|
43
|
+
def increase_latencies_for_op(operation_latencies_array, index)
|
44
|
+
operation_latencies_array[index] += 1
|
45
|
+
end
|
46
|
+
|
33
47
|
def add_gauge(gauge, value)
|
34
48
|
gauge_hash = @gauges.find { |g| g[:name] == gauge }
|
35
49
|
if gauge_hash.nil?
|
@@ -17,12 +17,7 @@ module SplitIoClient
|
|
17
17
|
def add_latency(operation, time_in_ms, binary_search)
|
18
18
|
prefixed_name = impressions_metrics_key("latency.#{operation}")
|
19
19
|
|
20
|
-
|
21
|
-
@adapter.inc("#{prefixed_name}.#{binary_search.add_latency_millis(time_in_ms, true)}")
|
22
|
-
return
|
23
|
-
end
|
24
|
-
|
25
|
-
@adapter.append_to_string(prefixed_name, "#{time_in_ms},")
|
20
|
+
@adapter.inc("#{prefixed_name}.bucket.#{binary_search.add_latency_millis(time_in_ms, true)}")
|
26
21
|
end
|
27
22
|
|
28
23
|
def add_gauge(gauge, value)
|
@@ -40,30 +35,33 @@ module SplitIoClient
|
|
40
35
|
end
|
41
36
|
|
42
37
|
def latencies
|
43
|
-
collected_latencies = {}
|
44
|
-
latencies_array = Array.new(BinarySearchLatencyTracker::BUCKETS.length, 0)
|
45
38
|
keys = @adapter.find_strings_by_prefix(impressions_metrics_key('latency'))
|
46
|
-
|
47
39
|
return [] if keys.empty?
|
48
40
|
|
49
41
|
found_latencies = @adapter.multiple_strings(keys).map do |name, data|
|
50
42
|
[name.gsub(impressions_metrics_key('latency.'), ''), data]
|
51
43
|
end.to_h
|
52
44
|
|
45
|
+
collected_latencies = {}
|
46
|
+
|
53
47
|
found_latencies.each do |key, value|
|
54
|
-
|
55
|
-
|
56
|
-
|
48
|
+
operation, bucket = key.split('.bucket.')
|
49
|
+
collected_latencies[operation] = {} unless collected_latencies[operation]
|
50
|
+
collected_latencies[operation].merge!({bucket => value})
|
51
|
+
end
|
57
52
|
|
58
|
-
|
53
|
+
latencies = {}
|
54
|
+
|
55
|
+
collected_latencies.keys.each do |operation|
|
56
|
+
latencies_array = Array.new(BinarySearchLatencyTracker::BUCKETS.length, 0)
|
57
|
+
collected_latencies[operation].each do |bucket, value|
|
58
|
+
latencies_array[bucket.to_i] = value.to_i
|
59
59
|
end
|
60
60
|
|
61
|
-
|
61
|
+
latencies[operation] = latencies_array
|
62
62
|
end
|
63
63
|
|
64
|
-
|
65
|
-
|
66
|
-
collected_latencies
|
64
|
+
latencies
|
67
65
|
end
|
68
66
|
|
69
67
|
def gauges
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: splitclient-rb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.4.
|
4
|
+
version: 6.4.1.pre.rc1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Split Software
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-07-
|
11
|
+
date: 2019-07-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: allocation_stats
|
@@ -403,12 +403,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
403
403
|
version: '0'
|
404
404
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
405
405
|
requirements:
|
406
|
-
- - "
|
406
|
+
- - ">"
|
407
407
|
- !ruby/object:Gem::Version
|
408
|
-
version:
|
408
|
+
version: 1.3.1
|
409
409
|
requirements: []
|
410
|
-
|
411
|
-
rubygems_version: 2.7.10
|
410
|
+
rubygems_version: 3.0.3
|
412
411
|
signing_key:
|
413
412
|
specification_version: 4
|
414
413
|
summary: Ruby client for split SDK.
|