Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 1 addition & 7 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,4 @@
on:
push:
branches:
- do-not-send-impressions
pull_request:
branches:
- do-not-send-impressions
on: [push, pull_request]

jobs:
test:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,6 @@ def record_impressions_count(impressions_count)
impressions_count.each do |key, value|
pipeline.hincrby(impressions_count_key, key, value)
end

@future = pipeline.hlen(impressions_count_key)
end

expire_impressions_count_key(impressions_count, result)
Expand Down
10 changes: 6 additions & 4 deletions lib/splitclient-rb/split_config.rb
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ def initialize(opts = {})

@segments_refresh_rate = opts[:segments_refresh_rate] || SplitConfig.default_segments_refresh_rate

@impressions_mode = init_impressions_mode(opts[:impressions_mode])
@impressions_mode = init_impressions_mode(opts[:impressions_mode], opts[:cache_adapter])

@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
Expand Down Expand Up @@ -314,14 +314,16 @@ def self.default_impressions_mode
:optimized
end

def init_impressions_mode(impressions_mode)
def init_impressions_mode(impressions_mode, adapter)
impressions_mode ||= SplitConfig.default_impressions_mode

return :debug if adapter == :redis

case impressions_mode
when :debug
return :debug
when :none
return :none
# when :none // we not support :none impression mode yet. Defaulting to :optimized mode
# return :none
else
@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
return :optimized
Expand Down
12 changes: 6 additions & 6 deletions lib/splitclient-rb/telemetry/redis/redis_init_producer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@ def initialize(config)
def record_config(config_data)
return if config_data.nil?

data = { m: { i: @config.machine_ip, n: @config.machine_name, s: "#{@config.language}-#{@config.version}" },
t: { oM: config_data.om, st: config_data.st, aF: config_data.af, rF: config_data.rf, t: config_data.t } }
data = { t: { oM: config_data.om, st: config_data.st, aF: config_data.af, rF: config_data.rf, t: config_data.t } }
field = "#{@config.language}-#{@config.version}/#{@config.machine_name}/#{@config.machine_ip}"

@adapter.add_to_queue(config_key, data.to_json)
rescue StandardError => error
@config.log_found_exception(__method__.to_s, error)
@adapter.add_to_map(config_key, field, data.to_json)
rescue StandardError => e
@config.log_found_exception(__method__.to_s, e)
end

def record_bur_timeout
Expand All @@ -30,7 +30,7 @@ def record_non_ready_usages
private

def config_key
"#{@config.redis_namespace}.telemetry.config"
"#{@config.redis_namespace}.telemetry.init"
end
end
end
Expand Down
2 changes: 1 addition & 1 deletion lib/splitclient-rb/version.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
module SplitIoClient
VERSION = '7.3.5.pre.rc4'
VERSION = '7.3.5.pre.rc5'
end
3 changes: 2 additions & 1 deletion spec/engine/common/impression_manager_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,8 @@
unique_keys_tracker)
end

it 'build & track impression' do
# TODO: remove skip test when the sdk support :none mode.
xit 'build & track impression' do
expected =
{
m: { s: version, i: ip, n: machine_name },
Expand Down
2 changes: 2 additions & 0 deletions spec/integrations/push_client_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,7 @@
mock_splits_request(splits, -1)
mock_splits_request(splits2, 1_585_948_850_109)
stub_request(:post, 'https://telemetry.split.io/api/v1/metrics/config').to_return(status: 200, body: '')
stub_request(:get, 'https://sdk.split.io/api/segmentChanges/segment3?since=-1&till=1470947453879').to_return(status: 200, body: '')
stub_request(:get, 'https://sdk.split.io/api/segmentChanges/segment3?since=-1')
.to_return({ status: 200, body: segment3 }, { status: 200, body: segment3 }, { status: 200, body: segment3_updated })

Expand Down Expand Up @@ -352,6 +353,7 @@
mock_splits_request(splits3, 1_585_948_850_110)
mock_segment_changes('segment3', segment3, '-1')
stub_request(:post, 'https://telemetry.split.io/api/v1/metrics/config').to_return(status: 200, body: '')
stub_request(:get, 'https://sdk.split.io/api/splitChanges?since=1585948850111').to_return(status: 200, body: '')

mock_server do |server|
server.setup_response('/') do |_, res|
Expand Down
13 changes: 6 additions & 7 deletions spec/telemetry/synchronizer_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,27 +6,26 @@
let(:log) { StringIO.new }

context 'Redis' do
let(:config) { SplitIoClient::SplitConfig.new(logger: Logger.new(log), cache_adapter: :redis, mode: :consumer) }
let(:config) { SplitIoClient::SplitConfig.new(logger: Logger.new(log), cache_adapter: :redis, mode: :consumer, redis_namespace: 'synch-test') }
let(:adapter) { config.telemetry_adapter }
let(:init_producer) { SplitIoClient::Telemetry::InitProducer.new(config) }
let(:synchronizer) { SplitIoClient::Telemetry::Synchronizer.new(config, nil, init_producer, nil, nil) }
let(:config_key) { 'SPLITIO.telemetry.config' }
let(:config_key) { 'synch-test.SPLITIO.telemetry.init' }

it 'synchronize_config with data' do
adapter.redis.del(config_key)
synchronizer.synchronize_config(5, 1, ['tag-1'])

result = JSON.parse(adapter.redis.lrange(config_key, 0, -1)[0], symbolize_names: true)

expect(result[:m][:i]).to eq(config.machine_ip)
expect(result[:m][:n]).to eq(config.machine_name)
expect(result[:m][:s]).to eq("#{config.language}-#{config.version}")
field = "#{config.language}-#{config.version}/#{config.machine_name}/#{config.machine_ip}"
result = JSON.parse(adapter.find_in_map(config_key, field), symbolize_names: true)

expect(result[:t][:oM]).to eq('consumer')
expect(result[:t][:st]).to eq('redis')
expect(result[:t][:aF]).to eq(5)
expect(result[:t][:rF]).to eq(1)
expect(result[:t][:t]).to eq(%w[tag-1])

adapter.redis.del(config_key)
end
end

Expand Down
15 changes: 8 additions & 7 deletions spec/telemetry/telemetry_init_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -53,10 +53,10 @@
end

context 'Redis' do
let(:config) { SplitIoClient::SplitConfig.new(logger: Logger.new(log), cache_adapter: :redis) }
let(:config) { SplitIoClient::SplitConfig.new(logger: Logger.new(log), cache_adapter: :redis, redis_namespace: 'telemetry-test') }
let(:adapter) { config.telemetry_adapter }
let(:init_producer) { SplitIoClient::Telemetry::InitProducer.new(config) }
let(:telemetry_config_key) { 'SPLITIO.telemetry.config' }
let(:telemetry_config_key) { 'telemetry-test.SPLITIO.telemetry.init' }

it 'record config_init' do
adapter.redis.del(telemetry_config_key)
Expand All @@ -65,17 +65,16 @@

init_producer.record_config(config_init)

result = JSON.parse(adapter.redis.lrange(telemetry_config_key, 0, -1)[0], symbolize_names: true)

expect(result[:m][:i]).to eq(config.machine_ip)
expect(result[:m][:n]).to eq(config.machine_name)
expect(result[:m][:s]).to eq("#{config.language}-#{config.version}")
field = "#{config.language}-#{config.version}/#{config.machine_name}/#{config.machine_ip}"
result = JSON.parse(adapter.find_in_map(telemetry_config_key, field), symbolize_names: true)

expect(result[:t][:oM]).to eq('CONSUMER')
expect(result[:t][:st]).to eq('REDIS')
expect(result[:t][:aF]).to eq(1)
expect(result[:t][:rF]).to eq(0)
expect(result[:t][:t]).to eq(%w[t1 t2])

adapter.redis.del(telemetry_config_key)
end

it 'record config_init when data is nil' do
Expand All @@ -86,6 +85,8 @@
result = adapter.redis.lrange(telemetry_config_key, 0, -1)

expect(result.empty?).to be true

adapter.redis.del(telemetry_config_key)
end
end
end