Module: AsyncExperiments
- Defined in:
- lib/async_experiments.rb,
lib/async_experiments/util.rb,
lib/async_experiments/version.rb,
lib/async_experiments/candidate_worker.rb,
lib/async_experiments/experiment_result.rb,
lib/async_experiments/experiment_control.rb,
lib/async_experiments/experiment_error_worker.rb,
lib/async_experiments/experiment_result_worker.rb
Defined Under Namespace
Modules: ExperimentControl, Util Classes: CandidateWorker, ExperimentErrorWorker, ExperimentResult, ExperimentResultWorker
Constant Summary collapse
- VERSION =
"0.0.1"
Class Method Summary collapse
- .fix_ordering_issues(missing_entries, extra_entries) ⇒ Object
- .get_experiment_data(experiment_name) ⇒ Object
- .statsd ⇒ Object
- .statsd=(statsd) ⇒ Object
Class Method Details
.fix_ordering_issues(missing_entries, extra_entries) ⇒ Object
43 44 45 46 47 48 49 50 |
# File 'lib/async_experiments.rb', line 43 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) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/async_experiments.rb', line 14 def self.get_experiment_data(experiment_name) mismatched_responses = Sidekiq.redis { |redis| redis.lrange("experiments:#{experiment_name}:mismatches", 0, -1) } mismatched_responses.map { |json| parsed = JSON.parse(json) 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 |
.statsd ⇒ Object
6 7 8 |
# File 'lib/async_experiments.rb', line 6 def self.statsd @statsd end |
.statsd=(statsd) ⇒ Object
10 11 12 |
# File 'lib/async_experiments.rb', line 10 def self.statsd=(statsd) @statsd = statsd end |