Skip to content

Commit 8ce0792

Browse files
committed
enabling none impression
1 parent 5ab9624 commit 8ce0792

8 files changed

Lines changed: 57 additions & 21 deletions

File tree

CHANGES.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
CHANGES
22

3+
8.1.0 (Oct 3, 2022)
4+
-
5+
36
8.0.1 (Jul 20, 2022)
47
- Updated dependencies to support faraday > 2.0
58

lib/splitclient-rb/cache/senders/impressions_adapter/redis_sender.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ def initialize(config)
1212
end
1313

1414
def record_uniques_key(uniques)
15-
formatted = uniques_formatter(uniques)
15+
return if uniques.nil? || uniques == {}
16+
17+
formatted = uniques_formatter(uniques).to_json
1618

1719
unless formatted.nil?
1820
size = @adapter.add_to_queue(unique_keys_key, formatted)

lib/splitclient-rb/engine/common/impressions_manager.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@ def build_impression(matching_key, bucketing_key, split_name, treatment, params
3030
@unique_keys_tracker.track(split_name, matching_key)
3131
else # In OPTIMIZED mode we should track the total amount of evaluations and deduplicate the impressions.
3232
impression_data[:pt] = @impression_observer.test_and_set(impression_data)
33-
@impression_counter.inc(split_name, impression_data[:m])
33+
34+
@impression_counter.inc(split_name, impression_data[:m]) if impression_data[:pt] != nil
3435
end
3536
rescue StandardError => e
3637
@config.log_found_exception(__method__.to_s, e)

lib/splitclient-rb/split_config.rb

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -310,20 +310,29 @@ def self.default_on_demand_fetch_max_retries
310310
10
311311
end
312312

313-
def self.default_impressions_mode
314-
:optimized
315-
end
316-
317313
def init_impressions_mode(impressions_mode, adapter)
318-
impressions_mode ||= SplitConfig.default_impressions_mode
314+
if adapter == :redis
315+
impressions_mode ||= :debug
316+
317+
case impressions_mode
318+
when :optimized
319+
return :optimized
320+
when :none
321+
return :none
322+
else
323+
@logger.error('You passed an invalid impressions_mode, impressions_mode should be one of the following values: :debug or :optimized. Defaulting to :optimized mode') unless impressions_mode == :optimized
324+
return :debug
325+
end
326+
end
319327

320328
return :debug if adapter == :redis
321329

330+
impressions_mode ||= :optimized
322331
case impressions_mode
323332
when :debug
324333
return :debug
325-
# when :none // we not support :none impression mode yet. Defaulting to :optimized mode
326-
# return :none
334+
when :none
335+
return :none
327336
else
328337
@logger.error('You passed an invalid impressions_mode, impressions_mode should be one of the following values: :debug or :optimized. Defaulting to :optimized mode') unless impressions_mode == :optimized
329338
return :optimized

lib/splitclient-rb/version.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
module SplitIoClient
2-
VERSION = '8.0.1'
2+
VERSION = '8.1.0.pre.rc1'
33
end

spec/cache/senders/impressions_sender_adapter_spec.rb

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,18 @@
2222
sender.record_uniques_key(uniques)
2323

2424
result = config.cache_adapter.get_from_queue(unique_keys_key, 0)
25-
expect(result.size).to eq(3)
26-
expect(result[0]).to eq('{:f=>"feature-name-1", :k=>["key-1", "key-2", "key-3", "key-4"]}')
27-
expect(result[1]).to eq('{:f=>"feature-name-2", :k=>["key-1", "key-2", "key-3", "key-4"]}')
28-
expect(result[2]).to eq('{:f=>"feature-name-3", :k=>["key-1", "key-2", "key-3", "key-4"]}')
25+
26+
expect(result.size).to eq(1)
27+
data = JSON.parse(result[0], symbolize_names: true)
28+
29+
expect(data[0][:f]).to eq('feature-name-1')
30+
expect(data[0][:k].to_s).to eq('["key-1", "key-2", "key-3", "key-4"]')
31+
32+
expect(data[1][:f]).to eq('feature-name-2')
33+
expect(data[1][:k].to_s).to eq('["key-1", "key-2", "key-3", "key-4"]')
34+
35+
expect(data[2][:f]).to eq('feature-name-3')
36+
expect(data[2][:k].to_s).to eq('["key-1", "key-2", "key-3", "key-4"]')
2937
end
3038

3139
it 'record_uniques_key when uniques is nil or empty' do

spec/engine/impressions/redis_unique_keys_tracker_spec.rb

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,13 @@
3535
expect(tracker.track("feature-test-#{i}", 'key_test-2')).to eq(true)
3636
end
3737

38-
expect(config.cache_adapter.get_from_queue(key, 0).size).to eq(20)
38+
result = config.cache_adapter.get_from_queue(key, 0)
39+
expect(result.size).to eq(10)
40+
41+
10.times do |i|
42+
data = JSON.parse(result[i], symbolize_names: true)
43+
expect(data.size).to eq(2)
44+
end
3945

4046
cache.clear
4147
end
@@ -56,7 +62,13 @@
5662

5763
sleep 1
5864

59-
expect(config.cache_adapter.get_from_queue(key, 0).size).to eq(10)
65+
result = config.cache_adapter.get_from_queue(key, 0)
66+
expect(result.size).to eq(1)
67+
68+
10.times do |i|
69+
data = JSON.parse(result[0], symbolize_names: true)
70+
expect(data.size).to eq(10)
71+
end
6072

6173
cache.clear
6274
end

spec/integrations/dedupe_impression_spec.rb

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,8 @@
9898
.with(
9999
body: {
100100
pf: [
101-
{ f: 'FACUNDO_TEST', m: time_frame, rc: 3 },
102-
{ f: 'Test_Save_1', m: time_frame, rc: 2 }
101+
{ f: 'FACUNDO_TEST', m: time_frame, rc: 1 },
102+
{ f: 'Test_Save_1', m: time_frame, rc: 1 }
103103
]
104104
}.to_json
105105
)).to have_been_made
@@ -120,6 +120,7 @@
120120
client.get_treatments('admin', %w[FACUNDO_TEST MAURO_TEST Test_Save_1])
121121
client.get_treatments('maldo', %w[FACUNDO_TEST Test_Save_1])
122122
client.get_treatments('nico_test', %w[FACUNDO_TEST MAURO_TEST Test_Save_1])
123+
client.get_treatments('nico_test', %w[FACUNDO_TEST MAURO_TEST Test_Save_1])
123124

124125
time_frame = SplitIoClient::Engine::Common::ImpressionCounter.truncate_time_frame((Time.now.to_f * 1000.0).to_i)
125126

@@ -130,9 +131,9 @@
130131
.with(
131132
body: {
132133
pf: [
133-
{ f: 'FACUNDO_TEST', m: time_frame, rc: 4 },
134-
{ f: 'MAURO_TEST', m: time_frame, rc: 3 },
135-
{ f: 'Test_Save_1', m: time_frame, rc: 4 }
134+
{ f: 'FACUNDO_TEST', m: time_frame, rc: 2 },
135+
{ f: 'MAURO_TEST', m: time_frame, rc: 2 },
136+
{ f: 'Test_Save_1', m: time_frame, rc: 2 }
136137
]
137138
}.to_json
138139
)).to have_been_made

0 commit comments

Comments
 (0)