module AsyncExperiments
Constants
- VERSION
Public Class Methods
fix_ordering_issues(missing_entries, extra_entries)
click to toggle source
# File lib/async_experiments.rb, line 54 def self.fix_ordering_issues(missing_entries, extra_entries) duplicate_entries = missing_entries & extra_entries missing_entries = missing_entries.reject { |entry| duplicate_entries.include?(entry) } extra_entries = extra_entries.reject { |entry| duplicate_entries.include?(entry) } [missing_entries, extra_entries] end
get_experiment_data(experiment_name)
click to toggle source
# File lib/async_experiments.rb, line 16 def self.get_experiment_data(experiment_name) key_pattern = "experiments:#{experiment_name}:mismatches:*" mismatched_responses = redis_scan_and_retrieve(key_pattern).map do |json| JSON.parse(json) end mismatched_responses.map do |parsed| missing, other = parsed.partition { |(operator)| operator == "-" } extra, changed = other.partition { |(operator)| operator == "+" } missing_entries, extra_entries = self.fix_ordering_issues( missing.map(&:last), extra.map(&:last), ) { missing: missing_entries, extra: extra_entries, changed: changed.map(&:last), } end end
get_experiment_exceptions(experiment_name)
click to toggle source
# File lib/async_experiments.rb, line 40 def self.get_experiment_exceptions(experiment_name) redis_scan_and_retrieve("experiments:#{experiment_name}:exceptions:*") end
redis_scan_and_retrieve(key_pattern)
click to toggle source
# File lib/async_experiments.rb, line 44 def self.redis_scan_and_retrieve(key_pattern) Sidekiq.redis do |redis| enumerator = redis.scan_each( match: key_pattern ) retrieve = -> (key) { redis.get(key) } enumerator.map(&retrieve).compact end end
statsd()
click to toggle source
# File lib/async_experiments.rb, line 8 def self.statsd @statsd end
statsd=(statsd)
click to toggle source
# File lib/async_experiments.rb, line 12 def self.statsd=(statsd) @statsd = statsd end