Class: TabsTabs::Metrics::Task
- Inherits:
-
Object
- Object
- TabsTabs::Metrics::Task
- Defined in:
- lib/tabs_tabs/metrics/task.rb,
lib/tabs_tabs/metrics/task/token.rb
Defined Under Namespace
Classes: Stats, Token, UnstartedTaskMetricError
Instance Attribute Summary collapse
-
#key ⇒ Object
readonly
Returns the value of attribute key.
Instance Method Summary collapse
- #complete(token, timestamp = Time.now) ⇒ Object
- #drop! ⇒ Object
-
#initialize(key) ⇒ Task
constructor
A new instance of Task.
- #start(token, timestamp = Time.now) ⇒ Object
- #stats(period, resolution) ⇒ Object
- #storage_key(resolution, timestamp, type) ⇒ Object
Methods included from Helpers
#normalize_period, #timestamp_range, #to_numeric
Methods included from Storage
#del, #del_by_prefix, #exists, #expireat, #get, #hdel, #hget, #hgetall, #hincrby, #hkeys, #hset, #incr, #mget, #redis, #rpush, #sadd, #set, #sismember, #smembers, #smembers_all, #tabs_key, #ttl
Constructor Details
#initialize(key) ⇒ Task
Returns a new instance of Task.
19 20 21 |
# File 'lib/tabs_tabs/metrics/task.rb', line 19 def initialize(key) @key = key end |
Instance Attribute Details
#key ⇒ Object (readonly)
Returns the value of attribute key.
17 18 19 |
# File 'lib/tabs_tabs/metrics/task.rb', line 17 def key @key end |
Instance Method Details
#complete(token, timestamp = Time.now) ⇒ Object
28 29 30 31 |
# File 'lib/tabs_tabs/metrics/task.rb', line 28 def complete(token, =Time.now) Token.new(token, key).complete() true end |
#drop! ⇒ Object
50 51 52 |
# File 'lib/tabs_tabs/metrics/task.rb', line 50 def drop! del_by_prefix("stat:task:#{key}") end |
#start(token, timestamp = Time.now) ⇒ Object
23 24 25 26 |
# File 'lib/tabs_tabs/metrics/task.rb', line 23 def start(token, =Time.now) Token.new(token, key).start() true end |
#stats(period, resolution) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/tabs_tabs/metrics/task.rb', line 33 def stats(period, resolution) range = (period, resolution) started_tokens = tokens_for_period(range, resolution, "started") completed_tokens = tokens_for_period(range, resolution, "completed") matching_tokens = started_tokens.select { |token| completed_tokens.include? token } completion_rate = (matching_tokens.size.to_f / range.size).round(Config.decimal_precision) elapsed_times = matching_tokens.map { |t| t.time_elapsed(resolution) } average_completion_time = matching_tokens.blank? ? 0.0 : (elapsed_times.sum) / matching_tokens.size Stats.new( started_tokens.size, completed_tokens.size, matching_tokens.size, completion_rate, average_completion_time ) end |
#storage_key(resolution, timestamp, type) ⇒ Object
54 55 56 57 |
# File 'lib/tabs_tabs/metrics/task.rb', line 54 def storage_key(resolution, , type) formatted_time = TabsTabs::Resolution.serialize(resolution, ) "stat:task:#{key}:#{type}:#{resolution}:#{formatted_time}" end |