From 349d9c01b700eed3a63004c7da8d1285e427211b Mon Sep 17 00:00:00 2001 From: Mauro Sanz Date: Wed, 16 Sep 2020 15:00:18 -0300 Subject: [PATCH 1/8] polishing and added tests --- lib/splitclient-rb/split_config.rb | 19 ++++++-- spec/cache/senders/impressions_sender_spec.rb | 1 + spec/engine/api/impressions_spec.rb | 20 ++++++++- spec/splitclient/split_config_spec.rb | 44 +++++++++++++++++-- 4 files changed, 76 insertions(+), 8 deletions(-) diff --git a/lib/splitclient-rb/split_config.rb b/lib/splitclient-rb/split_config.rb index 1be5cf8e..fbedc019 100644 --- a/lib/splitclient-rb/split_config.rb +++ b/lib/splitclient-rb/split_config.rb @@ -53,7 +53,9 @@ def initialize(opts = {}) @segments_refresh_rate = opts[:segments_refresh_rate] || SplitConfig.default_segments_refresh_rate @metrics_refresh_rate = opts[:metrics_refresh_rate] || SplitConfig.default_metrics_refresh_rate - @impressions_refresh_rate = opts[:impressions_refresh_rate] || SplitConfig.default_impressions_refresh_rate + @impressions_mode = init_impressions_mode(opts[:impressions_mode] || SplitConfig.default_impressions_mode) + + @impressions_refresh_rate = SplitConfig.init_impressions_refresh_rate(@impressions_mode, opts[:impressions_refresh_rate], SplitConfig.default_impressions_refresh_rate) @impressions_queue_size = opts[:impressions_queue_size] || SplitConfig.default_impressions_queue_size @impressions_adapter = SplitConfig.init_cache_adapter( opts[:cache_adapter] || SplitConfig.default_cache_adapter, :queue_adapter, @impressions_queue_size, @redis_url @@ -108,8 +110,6 @@ def initialize(opts = {}) @auth_retry_back_off_base = SplitConfig.init_auth_retry_back_off(opts[:auth_retry_back_off_base] || SplitConfig.default_auth_retry_back_off_base) @streaming_reconnect_back_off_base = SplitConfig.init_streaming_reconnect_back_off(opts[:streaming_reconnect_back_off_base] || SplitConfig.default_streaming_reconnect_back_off_base) - @impressions_mode = init_impressions_mode(opts[:impressions_mode] || SplitConfig.default_impressions_mode) - startup_log end @@ -288,6 +288,15 @@ def init_impressions_mode(impressions_mode) end end + def self.init_impressions_refresh_rate(impressions_mode, refresh_rate, default_rate) + case impressions_mode + when :optimized + return refresh_rate.nil? || refresh_rate <= 0 ? SplitConfig.default_impressions_refresh_rate_optimized : [default_rate, refresh_rate].max + when :debug + return refresh_rate.nil? || refresh_rate <= 0 ? default_rate : refresh_rate + end + end + def self.default_streaming_enabled true end @@ -405,6 +414,10 @@ def self.default_impressions_refresh_rate 60 end + def self.default_impressions_refresh_rate_optimized + 300 + end + def self.default_impression_listener_refresh_rate 0 end diff --git a/spec/cache/senders/impressions_sender_spec.rb b/spec/cache/senders/impressions_sender_spec.rb index 9dd7430a..19bd8145 100644 --- a/spec/cache/senders/impressions_sender_spec.rb +++ b/spec/cache/senders/impressions_sender_spec.rb @@ -42,6 +42,7 @@ sleep 0.5 expect(a_request(:post, 'https://events.split.io/api/testImpressions/bulk') .with( + :headers => {'SplitImpressionsMode' => config.impressions_mode.to_s}, body: [ { f: 'foo1', diff --git a/spec/engine/api/impressions_spec.rb b/spec/engine/api/impressions_spec.rb index 428c32f8..839b2778 100644 --- a/spec/engine/api/impressions_spec.rb +++ b/spec/engine/api/impressions_spec.rb @@ -30,7 +30,7 @@ 'Content-Type' => 'application/json', 'SplitSDKMachineIP' => config.machine_ip, 'SplitSDKMachineName' => config.machine_name, - 'SplitImpressionsMode' => config.impressions_mode.to_s + 'SplitImpressionsMode' => 'optimized' }) .to_return(status: 200, body: 'ok') @@ -38,6 +38,24 @@ expect(log.string).to include 'Impressions reported: 1' end + it 'post impressions with impressions_mode in debug' do + custom_config = SplitIoClient::SplitConfig.new(logger: Logger.new(log), impressions_mode: :debug) + custom_api = described_class.new('', custom_config) + + stub_request(:post, 'https://events.split.io/api/testImpressions/bulk') + .with(headers: { + 'Authorization' => 'Bearer', + 'SplitSDKVersion' => "#{config.language}-#{config.version}", + 'Content-Type' => 'application/json', + 'SplitSDKMachineIP' => config.machine_ip, + 'SplitSDKMachineName' => config.machine_name, + 'SplitImpressionsMode' => 'debug' + }) + .to_return(status: 200, body: 'ok') + + custom_api.post(impressions) + end + it 'throws exception if request to post latencies returns unexpected status code' do stub_request(:post, 'https://events.split.io/api/testImpressions/bulk') .to_return(status: 404) diff --git a/spec/splitclient/split_config_spec.rb b/spec/splitclient/split_config_spec.rb index 917a07e1..9b6a12fc 100644 --- a/spec/splitclient/split_config_spec.rb +++ b/spec/splitclient/split_config_spec.rb @@ -10,7 +10,7 @@ features_refresh_rate: 3, segments_refresh_rate: 4, metrics_refresh_rate: 5, - impressions_refresh_rate: 6, + impressions_refresh_rate: 65, impressions_queue_size: 20, logger: Logger.new('/dev/null'), debug_enabled: true } @@ -27,7 +27,7 @@ expect(configs.features_refresh_rate).to eq SplitIoClient::SplitConfig.default_features_refresh_rate expect(configs.segments_refresh_rate).to eq SplitIoClient::SplitConfig.default_segments_refresh_rate expect(configs.metrics_refresh_rate).to eq SplitIoClient::SplitConfig.default_metrics_refresh_rate - expect(configs.impressions_refresh_rate).to eq SplitIoClient::SplitConfig.default_impressions_refresh_rate + expect(configs.impressions_refresh_rate).to eq SplitIoClient::SplitConfig.default_impressions_refresh_rate_optimized expect(configs.impressions_queue_size).to eq SplitIoClient::SplitConfig.default_impressions_queue_size expect(configs.debug_enabled).to eq SplitIoClient::SplitConfig.default_debug expect(configs.ip_addresses_enabled).to eq default_ip @@ -50,9 +50,21 @@ expect(configs.debug_enabled).to eq custom_options[:debug_enabled] end - it 'has the current default values for timeouts and intervals' do + it 'has the current default values for timeouts and intervals, with impressions_mode in :optimized' do configs = SplitIoClient::SplitConfig.new + expect(configs.connection_timeout).to eq 5 + expect(configs.read_timeout).to eq 5 + expect(configs.features_refresh_rate).to eq 5 + expect(configs.segments_refresh_rate).to eq 60 + expect(configs.metrics_refresh_rate).to eq 60 + expect(configs.impressions_refresh_rate).to eq 300 + expect(configs.impressions_queue_size).to eq 5000 + end + + it 'has the current default values for timeouts and intervals, with impressions_mode in :debug' do + configs = SplitIoClient::SplitConfig.new(impressions_mode: :debug) + expect(configs.connection_timeout).to eq 5 expect(configs.read_timeout).to eq 5 expect(configs.features_refresh_rate).to eq 5 @@ -89,7 +101,7 @@ expect(configs.machine_ip).to eq '' end - it 'se impression mode' do + it 'set impression mode' do options1 = { impressions_mode: :debug } configs1 = SplitIoClient::SplitConfig.new(options1) @@ -105,5 +117,29 @@ expect(configs3.impressions_mode).to eq(:optimized) end + + it 'set impressions refresh rate with impressions optimized mode' do + configs = SplitIoClient::SplitConfig.new(impressions_refresh_rate: 70) + + expect(configs.impressions_refresh_rate).to eq 70 + + configs = SplitIoClient::SplitConfig.new(impressions_refresh_rate: 50) + + expect(configs.impressions_refresh_rate).to eq 60 + end + + it 'set impressions refresh rate with impressions debug mode' do + configs = SplitIoClient::SplitConfig.new(impressions_mode: :debug, impressions_refresh_rate: 0) + + expect(configs.impressions_refresh_rate).to eq 60 + + configs = SplitIoClient::SplitConfig.new(impressions_mode: :debug, impressions_refresh_rate: 1) + + expect(configs.impressions_refresh_rate).to eq 1 + + configs = SplitIoClient::SplitConfig.new(impressions_mode: :debug, impressions_refresh_rate: 40) + + expect(configs.impressions_refresh_rate).to eq 40 + end end end From 0e8d5f4ba70770ca296b4964be619b3549518199 Mon Sep 17 00:00:00 2001 From: Mauro Sanz Date: Wed, 16 Sep 2020 15:07:10 -0300 Subject: [PATCH 2/8] fixed rubocop --- spec/cache/senders/impressions_sender_spec.rb | 2 +- spec/engine/api/impressions_spec.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/cache/senders/impressions_sender_spec.rb b/spec/cache/senders/impressions_sender_spec.rb index 19bd8145..d57d65c1 100644 --- a/spec/cache/senders/impressions_sender_spec.rb +++ b/spec/cache/senders/impressions_sender_spec.rb @@ -42,7 +42,7 @@ sleep 0.5 expect(a_request(:post, 'https://events.split.io/api/testImpressions/bulk') .with( - :headers => {'SplitImpressionsMode' => config.impressions_mode.to_s}, + headers: { 'SplitImpressionsMode' => config.impressions_mode.to_s }, body: [ { f: 'foo1', diff --git a/spec/engine/api/impressions_spec.rb b/spec/engine/api/impressions_spec.rb index 839b2778..74e48efb 100644 --- a/spec/engine/api/impressions_spec.rb +++ b/spec/engine/api/impressions_spec.rb @@ -54,7 +54,7 @@ .to_return(status: 200, body: 'ok') custom_api.post(impressions) - end + end it 'throws exception if request to post latencies returns unexpected status code' do stub_request(:post, 'https://events.split.io/api/testImpressions/bulk') From c1a942f4c402dd7044533e3671f10674d14bdf98 Mon Sep 17 00:00:00 2001 From: Mauro Sanz Date: Wed, 16 Sep 2020 15:19:26 -0300 Subject: [PATCH 3/8] renamed header name --- lib/splitclient-rb/engine/api/impressions.rb | 2 +- spec/cache/senders/impressions_sender_spec.rb | 2 +- spec/engine/api/impressions_spec.rb | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/splitclient-rb/engine/api/impressions.rb b/lib/splitclient-rb/engine/api/impressions.rb index 9df9d7c9..e95df9f7 100644 --- a/lib/splitclient-rb/engine/api/impressions.rb +++ b/lib/splitclient-rb/engine/api/impressions.rb @@ -54,7 +54,7 @@ def total_impressions(impressions) def impressions_headers { - 'SplitImpressionsMode' => @config.impressions_mode.to_s + 'SplitSDKImpressionsMode' => @config.impressions_mode.to_s } end end diff --git a/spec/cache/senders/impressions_sender_spec.rb b/spec/cache/senders/impressions_sender_spec.rb index d57d65c1..fc19e1b0 100644 --- a/spec/cache/senders/impressions_sender_spec.rb +++ b/spec/cache/senders/impressions_sender_spec.rb @@ -42,7 +42,7 @@ sleep 0.5 expect(a_request(:post, 'https://events.split.io/api/testImpressions/bulk') .with( - headers: { 'SplitImpressionsMode' => config.impressions_mode.to_s }, + headers: { 'SplitSDKImpressionsMode' => config.impressions_mode.to_s }, body: [ { f: 'foo1', diff --git a/spec/engine/api/impressions_spec.rb b/spec/engine/api/impressions_spec.rb index 74e48efb..46bdf247 100644 --- a/spec/engine/api/impressions_spec.rb +++ b/spec/engine/api/impressions_spec.rb @@ -30,7 +30,7 @@ 'Content-Type' => 'application/json', 'SplitSDKMachineIP' => config.machine_ip, 'SplitSDKMachineName' => config.machine_name, - 'SplitImpressionsMode' => 'optimized' + 'SplitSDKImpressionsMode' => 'optimized' }) .to_return(status: 200, body: 'ok') @@ -49,7 +49,7 @@ 'Content-Type' => 'application/json', 'SplitSDKMachineIP' => config.machine_ip, 'SplitSDKMachineName' => config.machine_name, - 'SplitImpressionsMode' => 'debug' + 'SplitSDKImpressionsMode' => 'debug' }) .to_return(status: 200, body: 'ok') @@ -102,7 +102,7 @@ 'Content-Type' => 'application/json', 'SplitSDKMachineIP' => config.machine_ip, 'SplitSDKMachineName' => config.machine_name, - 'SplitImpressionsMode' => config.impressions_mode.to_s + 'SplitSDKImpressionsMode' => config.impressions_mode.to_s }) .to_return(status: [500, 'Internal Server Error']) @@ -111,7 +111,7 @@ 'Authorization' => 'Bearer', 'SplitSDKVersion' => "#{config.language}-#{config.version}", 'Content-Type' => 'application/json', - 'SplitImpressionsMode' => config.impressions_mode.to_s + 'SplitSDKImpressionsMode' => config.impressions_mode.to_s }) .to_return(status: 200, body: 'ok') From 8f75f2b23ad9a191227b8cb9a881485f66bbeb97 Mon Sep 17 00:00:00 2001 From: Mauro Sanz Date: Wed, 16 Sep 2020 17:46:52 -0300 Subject: [PATCH 4/8] added e2e tests --- spec/integrations/in_memory_client_spec.rb | 69 ++++++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/spec/integrations/in_memory_client_spec.rb b/spec/integrations/in_memory_client_spec.rb index 7bb43723..e56fdcf1 100644 --- a/spec/integrations/in_memory_client_spec.rb +++ b/spec/integrations/in_memory_client_spec.rb @@ -664,6 +664,75 @@ expect(events.size).to eq 0 end end + + context 'checking logic impressions' do + before do + stub_request(:post, 'https://events.split.io/api/testImpressions/bulk') + .to_return(status: 200, body: 'ok') + stub_request(:post, 'https://events.split.io/api/metrics/time') + .to_return(status: 200, body: 'ok') + stub_request(:post, 'https://events.split.io/api/metrics/counter') + .to_return(status: 200, body: 'ok') + stub_request(:post, 'https://events.split.io/api/testImpressions/count') + .to_return(status: 200, body: 'ok') + + @counter = SplitIoClient::Engine::Common::ImpressionCounter.new + end + + it 'get_treament should post 3 impressions' do + expect(client.get_treatment('nico_test', 'FACUNDO_TEST')).to eq 'on' + expect(client.get_treatment('nico_test', 'FACUNDO_TEST')).to eq 'on' + expect(client.get_treatment('admin', 'FACUNDO_TEST')).to eq 'off' + expect(client.get_treatment('24', 'Test_Save_1')).to eq 'off' + expect(client.get_treatment('24', 'Test_Save_1')).to eq 'off' + + time_frame = @counter.truncate_time_frame((Time.now.to_f * 1000.0).to_i) + + impressions = client.instance_variable_get(:@impressions_repository).batch + + client.destroy + + sleep 0.5 + + expect(impressions.size).to eq 3 + expect(a_request(:post, 'https://events.split.io/api/testImpressions/count') + .with( + body: { + pf: [ + { f: 'FACUNDO_TEST', m: time_frame, rc: 3 }, + { f: 'Test_Save_1', m: time_frame, rc: 2 } + ] + }.to_json + )).to have_been_made + end + + it 'get_treaments should post 8 impressions' do + client.get_treatments('nico_test', %w[FACUNDO_TEST MAURO_TEST Test_Save_1]) + client.get_treatments('admin', %w[FACUNDO_TEST MAURO_TEST Test_Save_1]) + client.get_treatments('maldo', %w[FACUNDO_TEST Test_Save_1]) + client.get_treatments('nico_test', %w[FACUNDO_TEST MAURO_TEST Test_Save_1]) + + time_frame = @counter.truncate_time_frame((Time.now.to_f * 1000.0).to_i) + + impressions = client.instance_variable_get(:@impressions_repository).batch + + client.destroy + + sleep 0.5 + + expect(impressions.size).to eq 8 + expect(a_request(:post, 'https://events.split.io/api/testImpressions/count') + .with( + body: { + pf: [ + { f: 'FACUNDO_TEST', m: time_frame, rc: 4 }, + { f: 'MAURO_TEST', m: time_frame, rc: 3 }, + { f: 'Test_Save_1', m: time_frame, rc: 4 } + ] + }.to_json + )).to have_been_made + end + end end private From 7e8023c2e1fafac8c04865b966dd360cb4f44c19 Mon Sep 17 00:00:00 2001 From: Mauro Sanz Date: Wed, 16 Sep 2020 18:03:25 -0300 Subject: [PATCH 5/8] added debug mode tests --- spec/integrations/in_memory_client_spec.rb | 52 +++++++++++++++++++++- 1 file changed, 51 insertions(+), 1 deletion(-) diff --git a/spec/integrations/in_memory_client_spec.rb b/spec/integrations/in_memory_client_spec.rb index e56fdcf1..2fde39c7 100644 --- a/spec/integrations/in_memory_client_spec.rb +++ b/spec/integrations/in_memory_client_spec.rb @@ -665,7 +665,7 @@ end end - context 'checking logic impressions' do + context 'checking logic impressions - optimized mode' do before do stub_request(:post, 'https://events.split.io/api/testImpressions/bulk') .to_return(status: 200, body: 'ok') @@ -733,6 +733,56 @@ )).to have_been_made end end + + context 'checking logic impressions - debug mode' do + before do + stub_request(:post, 'https://events.split.io/api/testImpressions/bulk') + .to_return(status: 200, body: 'ok') + stub_request(:post, 'https://events.split.io/api/metrics/time') + .to_return(status: 200, body: 'ok') + stub_request(:post, 'https://events.split.io/api/metrics/counter') + .to_return(status: 200, body: 'ok') + + @counter = SplitIoClient::Engine::Common::ImpressionCounter.new + custom_factory = SplitIoClient::SplitFactory.new('test_api_key', impressions_mode: :debug) + @debug_client = custom_factory.client + end + + it 'get_treament should post 6 impressions' do + expect(@debug_client.get_treatment('nico_test', 'FACUNDO_TEST')).to eq 'on' + expect(@debug_client.get_treatment('nico_test', 'FACUNDO_TEST')).to eq 'on' + expect(@debug_client.get_treatment('admin', 'FACUNDO_TEST')).to eq 'off' + expect(@debug_client.get_treatment('24', 'Test_Save_1')).to eq 'off' + expect(@debug_client.get_treatment('24', 'Test_Save_1')).to eq 'off' + + time_frame = @counter.truncate_time_frame((Time.now.to_f * 1000.0).to_i) + + impressions = @debug_client.instance_variable_get(:@impressions_repository).batch + + @debug_client.destroy + + sleep 0.5 + + expect(impressions.size).to eq 5 + end + + it 'get_treaments should post 11 impressions' do + @debug_client.get_treatments('nico_test', %w[FACUNDO_TEST MAURO_TEST Test_Save_1]) + @debug_client.get_treatments('admin', %w[FACUNDO_TEST MAURO_TEST Test_Save_1]) + @debug_client.get_treatments('maldo', %w[FACUNDO_TEST Test_Save_1]) + @debug_client.get_treatments('nico_test', %w[FACUNDO_TEST MAURO_TEST Test_Save_1]) + + time_frame = @counter.truncate_time_frame((Time.now.to_f * 1000.0).to_i) + + impressions = @debug_client.instance_variable_get(:@impressions_repository).batch + + @debug_client.destroy + + sleep 0.5 + + expect(impressions.size).to eq 11 + end + end end private From 4c86496946e7a16564e6b64c4c83bcc393bf8aae Mon Sep 17 00:00:00 2001 From: Mauro Sanz Date: Wed, 16 Sep 2020 18:18:20 -0300 Subject: [PATCH 6/8] added block until ready --- spec/integrations/in_memory_client_spec.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/spec/integrations/in_memory_client_spec.rb b/spec/integrations/in_memory_client_spec.rb index 2fde39c7..e61b1611 100644 --- a/spec/integrations/in_memory_client_spec.rb +++ b/spec/integrations/in_memory_client_spec.rb @@ -746,9 +746,11 @@ @counter = SplitIoClient::Engine::Common::ImpressionCounter.new custom_factory = SplitIoClient::SplitFactory.new('test_api_key', impressions_mode: :debug) @debug_client = custom_factory.client + + @debug_client.block_until_ready end - it 'get_treament should post 6 impressions' do + it 'get_treament should post 5 impressions' do expect(@debug_client.get_treatment('nico_test', 'FACUNDO_TEST')).to eq 'on' expect(@debug_client.get_treatment('nico_test', 'FACUNDO_TEST')).to eq 'on' expect(@debug_client.get_treatment('admin', 'FACUNDO_TEST')).to eq 'off' From f754cd3d845660b3ef0a682b4861b65e7354061f Mon Sep 17 00:00:00 2001 From: Mauro Sanz Date: Wed, 16 Sep 2020 18:25:18 -0300 Subject: [PATCH 7/8] fixed rubocop --- spec/integrations/in_memory_client_spec.rb | 5 ----- 1 file changed, 5 deletions(-) diff --git a/spec/integrations/in_memory_client_spec.rb b/spec/integrations/in_memory_client_spec.rb index e61b1611..d72802ae 100644 --- a/spec/integrations/in_memory_client_spec.rb +++ b/spec/integrations/in_memory_client_spec.rb @@ -743,7 +743,6 @@ stub_request(:post, 'https://events.split.io/api/metrics/counter') .to_return(status: 200, body: 'ok') - @counter = SplitIoClient::Engine::Common::ImpressionCounter.new custom_factory = SplitIoClient::SplitFactory.new('test_api_key', impressions_mode: :debug) @debug_client = custom_factory.client @@ -757,8 +756,6 @@ expect(@debug_client.get_treatment('24', 'Test_Save_1')).to eq 'off' expect(@debug_client.get_treatment('24', 'Test_Save_1')).to eq 'off' - time_frame = @counter.truncate_time_frame((Time.now.to_f * 1000.0).to_i) - impressions = @debug_client.instance_variable_get(:@impressions_repository).batch @debug_client.destroy @@ -774,8 +771,6 @@ @debug_client.get_treatments('maldo', %w[FACUNDO_TEST Test_Save_1]) @debug_client.get_treatments('nico_test', %w[FACUNDO_TEST MAURO_TEST Test_Save_1]) - time_frame = @counter.truncate_time_frame((Time.now.to_f * 1000.0).to_i) - impressions = @debug_client.instance_variable_get(:@impressions_repository).batch @debug_client.destroy From adb69dd3ea8c88804aae25b5b30958efb8eb901b Mon Sep 17 00:00:00 2001 From: Mauro Sanz Date: Thu, 17 Sep 2020 10:34:14 -0300 Subject: [PATCH 8/8] wip --- lib/splitclient-rb/split_config.rb | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/lib/splitclient-rb/split_config.rb b/lib/splitclient-rb/split_config.rb index fbedc019..23e41e31 100644 --- a/lib/splitclient-rb/split_config.rb +++ b/lib/splitclient-rb/split_config.rb @@ -53,7 +53,7 @@ def initialize(opts = {}) @segments_refresh_rate = opts[:segments_refresh_rate] || SplitConfig.default_segments_refresh_rate @metrics_refresh_rate = opts[:metrics_refresh_rate] || SplitConfig.default_metrics_refresh_rate - @impressions_mode = init_impressions_mode(opts[:impressions_mode] || SplitConfig.default_impressions_mode) + @impressions_mode = init_impressions_mode(opts[:impressions_mode]) @impressions_refresh_rate = SplitConfig.init_impressions_refresh_rate(@impressions_mode, opts[:impressions_refresh_rate], SplitConfig.default_impressions_refresh_rate) @impressions_queue_size = opts[:impressions_queue_size] || SplitConfig.default_impressions_queue_size @@ -278,8 +278,10 @@ def self.default_impressions_mode :optimized end - def init_impressions_mode(impressions_mode) - case impressions_mode + def init_impressions_mode(impressions_mode) + impressions_mode ||= SplitConfig.default_impressions_mode + + case impressions_mode when :debug return :debug else @@ -288,13 +290,10 @@ def init_impressions_mode(impressions_mode) end end - def self.init_impressions_refresh_rate(impressions_mode, refresh_rate, default_rate) - case impressions_mode - when :optimized - return refresh_rate.nil? || refresh_rate <= 0 ? SplitConfig.default_impressions_refresh_rate_optimized : [default_rate, refresh_rate].max - when :debug - return refresh_rate.nil? || refresh_rate <= 0 ? default_rate : refresh_rate - end + def self.init_impressions_refresh_rate(impressions_mode, refresh_rate, default_rate) + return (refresh_rate.nil? || refresh_rate <= 0 ? default_rate : refresh_rate) if impressions_mode == :debug + + return refresh_rate.nil? || refresh_rate <= 0 ? SplitConfig.default_impressions_refresh_rate_optimized : [default_rate, refresh_rate].max end def self.default_streaming_enabled