splitclient-rb 7.0.2.pre.rc2-java → 7.0.3-java

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
  SHA1:
3
- metadata.gz: 99b07947540ac1971dc7ccf9b7b3cf3d44fc8b90
4
- data.tar.gz: c8911b0348e73e1192ebb4ca041cd3f4164a08fb
3
+ metadata.gz: 13e8f0d13a64dd00ff1a4ba2e831c0c68898d07a
4
+ data.tar.gz: 3a723eb9cfd9c5844bb7f543b02f79b7f0501bfb
5
5
  SHA512:
6
- metadata.gz: fe5dca7a09847b5b7688489d3a833274314774a8f4d9086ae3d09fddd41104a629d0d177bf43063708859fc4ebc2ded475ba0ac88e0b2ff9c1ed46d1fbdacfe1
7
- data.tar.gz: 902c1067142dcc0eef6268910a9d4a3301e9ed133a1d82cc3d8552b21f932fb094b2f0386e4160dc27364df5286c13087985ae62d0afac5c69594d084c1bce10
6
+ metadata.gz: 160d1a974ef68db74d53495bd9a8cbd5040761dbf3a9076467f232e27746a974e9d9d0cd1261d9eec268c7b1adc5e06c910697ab90d567fe531fa2f1e9a0235d
7
+ data.tar.gz: 892f1d01a48bd179b123c2fce338dcab9024f34581e61ffcdc65840b04ee2ed6c0b502321eb825efd20941e0aebfe2c54ee97a80471d948316626aa2fdbd8d3a
data/CHANGES.txt CHANGED
@@ -1,4 +1,9 @@
1
+ 7.0.3 (Jan 20, 2020)
2
+ - Added integration tests.
3
+ - Fixed impressions labels.
4
+
1
5
  7.0.2 (Nov 11, 2019)
6
+ - Fixed an issue about empty logs.
2
7
  - Fixed an issue about reducing scan commands in redis.
3
8
 
4
9
  7.0.1 (Oct 31, 2019)
@@ -35,7 +40,7 @@
35
40
  define configurations for your treatments and also whitelisted keys. Read more in our docs!
36
41
 
37
42
  6.2.0 (Mar 7th, 2019)
38
- - Reworked SplitClient#destroy to ensure events, impressions and metrics are sent to Split backend when called
43
+ - Reworked SplitClient#destroy to ensure events, impressions and metrics are sent to Split backend when called.
39
44
  - Ensured destroy is called when keyboard interrupts are sent to the application
40
45
  - Changed SDK blocker (and block_until_ready) to have no effect in consumer mode
41
46
  - Added support for applications tied to Faraday < 0.13 and net-http-persistent 3 using a patched Faraday adapter
@@ -25,6 +25,12 @@ module SplitIoClient
25
25
  @size = 0
26
26
  @adapter.clear
27
27
  end
28
+
29
+ def batch
30
+ return [] if @config.events_queue_size.zero?
31
+
32
+ @adapter.get_batch(@config.events_queue_size)
33
+ end
28
34
  end
29
35
  end
30
36
  end
@@ -24,6 +24,10 @@ module SplitIoClient
24
24
  @config.logger.error("Exception while clearing events cache: #{e}")
25
25
  []
26
26
  end
27
+
28
+ def batch
29
+ clear()
30
+ end
27
31
  end
28
32
  end
29
33
  end
@@ -4,7 +4,7 @@ module SplitIoClient
4
4
  # Repository which forwards events interface to the selected adapter
5
5
  class EventsRepository < Repository
6
6
  extend Forwardable
7
- def_delegators :@repository, :add, :clear
7
+ def_delegators :@repository, :add, :clear, :batch
8
8
 
9
9
  def initialize(config, api_key)
10
10
  super(config)
@@ -1,3 +1,5 @@
1
+ require 'concurrent'
2
+
1
3
  module SplitIoClient
2
4
  module Cache
3
5
  module Repositories
@@ -6,9 +8,9 @@ module SplitIoClient
6
8
  OPERATIONS = %w(sdk.get_treatment sdk.get_treatments sdk.get_treatment_with_config sdk.get_treatments_with_config)
7
9
 
8
10
  def initialize(_ = nil, config)
9
- @counts = []
10
- @latencies = []
11
- @gauges = []
11
+ @counts = Concurrent::Array.new
12
+ @latencies = Concurrent::Array.new
13
+ @gauges = Concurrent::Array.new
12
14
  @config = config
13
15
  end
14
16
 
@@ -64,15 +66,15 @@ module SplitIoClient
64
66
  end
65
67
 
66
68
  def clear_counts
67
- @counts = []
69
+ @counts = Concurrent::Array.new
68
70
  end
69
71
 
70
72
  def clear_latencies
71
- @latencies = []
73
+ @latencies = Concurrent::Array.new
72
74
  end
73
75
 
74
76
  def clear_gauges
75
- @gauges = []
77
+ @gauges = Concurrent::Array.new
76
78
  end
77
79
 
78
80
  def clear
@@ -152,7 +154,7 @@ module SplitIoClient
152
154
  end
153
155
 
154
156
  def find_operation_latencies(operation)
155
- @latencies.find { |l| l[:operation] == operation unless l.nil? }
157
+ @latencies.find { |l| l[:operation] == operation }
156
158
  end
157
159
  end
158
160
  end
@@ -67,7 +67,8 @@ module SplitIoClient
67
67
 
68
68
  # introduced to fix incorrect latencies
69
69
  def fix_latencies
70
- return if @adapter.exists?(impressions_metrics_key('lantencies.cleaned'))
70
+ latencies_cleaned_key = namespace_key('/latencies.cleaned')
71
+ return if @adapter.exists?(latencies_cleaned_key)
71
72
 
72
73
  keys =[]
73
74
 
@@ -91,7 +92,7 @@ module SplitIoClient
91
92
  end
92
93
  end
93
94
 
94
- @adapter.set_string(impressions_metrics_key('lantencies.cleaned'), '1')
95
+ @adapter.set_string(latencies_cleaned_key, '1')
95
96
  end
96
97
 
97
98
  def latencies_to_be_deleted_key_pattern_prefix(key)
@@ -28,13 +28,14 @@ module SplitIoClient
28
28
  split_name: split_name.to_s,
29
29
  matching_key: impressions[:matching_key],
30
30
  bucketing_key: impressions[:bucketing_key],
31
+ time: impressions[:time],
31
32
  treatment: {
32
33
  label: impressions[:treatments_labels_change_numbers][split_name.to_sym][:label],
33
34
  treatment: impressions[:treatments_labels_change_numbers][split_name.to_sym][:treatment],
34
35
  change_number: impressions[:treatments_labels_change_numbers][split_name.to_sym][:change_number]
35
36
  },
36
37
  attributes: impressions[:attributes]
37
- )
38
+ ) unless impressions[:treatments_labels_change_numbers][split_name.to_sym].nil?
38
39
  end
39
40
  end
40
41
 
@@ -9,16 +9,12 @@ module SplitIoClient
9
9
  @config = config
10
10
  end
11
11
 
12
- def call
13
- if ENV['SPLITCLIENT_ENV'] == 'test'
14
- post_events
15
- else
16
- events_thread
17
-
18
- if defined?(PhusionPassenger)
19
- PhusionPassenger.on_event(:starting_worker_process) do |forked|
20
- events_thread if forked
21
- end
12
+ def call
13
+ events_thread
14
+
15
+ if defined?(PhusionPassenger)
16
+ PhusionPassenger.on_event(:starting_worker_process) do |forked|
17
+ events_thread if forked
22
18
  end
23
19
  end
24
20
  end
@@ -11,15 +11,11 @@ module SplitIoClient
11
11
  end
12
12
 
13
13
  def call
14
- if ENV['SPLITCLIENT_ENV'] == 'test'
15
- post_impressions
16
- else
17
- impressions_thread
18
-
19
- if defined?(PhusionPassenger)
20
- PhusionPassenger.on_event(:starting_worker_process) do |forked|
21
- impressions_thread if forked
22
- end
14
+ impressions_thread
15
+
16
+ if defined?(PhusionPassenger)
17
+ PhusionPassenger.on_event(:starting_worker_process) do |forked|
18
+ impressions_thread if forked
23
19
  end
24
20
  end
25
21
  end
@@ -11,8 +11,6 @@ module SplitIoClient
11
11
  end
12
12
 
13
13
  def call
14
- return if ENV['SPLITCLIENT_ENV'] == 'test'
15
-
16
14
  metrics_thread
17
15
 
18
16
  if defined?(PhusionPassenger)
@@ -97,7 +97,11 @@ module SplitIoClient
97
97
  matching_key: matching_key,
98
98
  bucketing_key: bucketing_key,
99
99
  time: time,
100
- treatment: treatment,
100
+ treatment: {
101
+ label: treatment[:label],
102
+ treatment: treatment[:treatment],
103
+ change_number: treatment[:change_number]
104
+ },
101
105
  attributes: attributes
102
106
  )
103
107
  end
@@ -247,12 +251,14 @@ module SplitIoClient
247
251
  # Measure
248
252
  @adapter.metrics.time('sdk.' + calling_method, latency)
249
253
 
254
+ treatments_for_impressions = get_treatment_for_impressions(treatments_labels_change_numbers)
255
+
250
256
  time = (Time.now.to_f * 1000.0).to_i
251
257
  @impressions_repository.add_bulk(
252
- matching_key, bucketing_key, treatments_labels_change_numbers, time
253
- )
258
+ matching_key, bucketing_key, treatments_for_impressions, time
259
+ ) unless treatments_for_impressions == {}
254
260
 
255
- route_impressions(sanitized_split_names, matching_key, bucketing_key, time, treatments_labels_change_numbers, attributes)
261
+ route_impressions(sanitized_split_names, matching_key, bucketing_key, time, treatments_for_impressions, attributes)
256
262
 
257
263
  split_names_keys = treatments_labels_change_numbers.keys
258
264
  treatments = treatments_labels_change_numbers.values.map do |v|
@@ -282,14 +288,11 @@ module SplitIoClient
282
288
  )
283
289
  control_treatment = { treatment: Engine::Models::Treatment::CONTROL }
284
290
 
285
- parsed_control_exception = parsed_treatment(multiple,
286
- control_treatment.merge({ label: Engine::Models::Label::EXCEPTION }))
287
-
288
291
  bucketing_key, matching_key = keys_from_key(key)
289
292
 
290
293
  attributes = parsed_attributes(attributes)
291
294
 
292
- return parsed_control_exception unless valid_client && @config.split_validator.valid_get_treatment_parameters(calling_method, key, split_name, matching_key, bucketing_key, attributes)
295
+ return parsed_treatment(multiple, control_treatment) unless valid_client && @config.split_validator.valid_get_treatment_parameters(calling_method, key, split_name, matching_key, bucketing_key, attributes)
293
296
 
294
297
  bucketing_key = bucketing_key ? bucketing_key.to_s : nil
295
298
  matching_key = matching_key.to_s
@@ -336,7 +339,7 @@ module SplitIoClient
336
339
 
337
340
  store_impression(split_name, matching_key, bucketing_key, control_treatment, attributes) if store_impressions
338
341
 
339
- return parsed_control_exception
342
+ return parsed_treatment(multiple, control_treatment.merge({ label: Engine::Models::Label::EXCEPTION }))
340
343
  end
341
344
 
342
345
  parsed_treatment(multiple, treatment_data)
@@ -354,5 +357,12 @@ module SplitIoClient
354
357
  def parsed_attributes(attributes)
355
358
  return attributes || attributes.to_h
356
359
  end
360
+
361
+ def get_treatment_for_impressions(treatments_labels_change_numbers)
362
+ return treatments_labels_change_numbers.select{|imp|
363
+ treatments_labels_change_numbers[imp][:label] != Engine::Models::Label::NOT_FOUND &&
364
+ !treatments_labels_change_numbers[imp][:label].nil?
365
+ }
366
+ end
357
367
  end
358
368
  end
@@ -1,3 +1,3 @@
1
1
  module SplitIoClient
2
- VERSION = '7.0.2.pre.rc2'
2
+ VERSION = '7.0.3'
3
3
  end
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: 7.0.2.pre.rc2
4
+ version: 7.0.3
5
5
  platform: java
6
6
  authors:
7
7
  - Split Software
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-11-22 00:00:00.000000000 Z
11
+ date: 2020-01-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
@@ -402,9 +402,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
402
402
  version: '0'
403
403
  required_rubygems_version: !ruby/object:Gem::Requirement
404
404
  requirements:
405
- - - ">"
405
+ - - ">="
406
406
  - !ruby/object:Gem::Version
407
- version: 1.3.1
407
+ version: '0'
408
408
  requirements: []
409
409
  rubyforge_project:
410
410
  rubygems_version: 2.6.14