Class: Tabs::Metrics::Task
- Inherits:
-
Object
- Object
- Tabs::Metrics::Task
show all
- Includes:
- Helpers, Storage
- Defined in:
- lib/tabs/metrics/task.rb,
lib/tabs/metrics/task/token.rb
Defined Under Namespace
Classes: Stats, Token, UnstartedTaskMetricError
Instance Attribute Summary collapse
Instance Method Summary
collapse
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
19
20
21
|
# File 'lib/tabs/metrics/task.rb', line 19
def initialize(key)
@key = key
end
|
Instance Attribute Details
#key ⇒ Object
Returns the value of attribute key.
17
18
19
|
# File 'lib/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/metrics/task.rb', line 28
def complete(token, timestamp=Time.now)
Token.new(token, key).complete(timestamp)
true
end
|
#drop! ⇒ Object
50
51
52
|
# File 'lib/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/metrics/task.rb', line 23
def start(token, timestamp=Time.now)
Token.new(token, key).start(timestamp)
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/metrics/task.rb', line 33
def stats(period, resolution)
range = timestamp_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/metrics/task.rb', line 54
def storage_key(resolution, timestamp, type)
formatted_time = Tabs::Resolution.serialize(resolution, timestamp)
"stat:task:#{key}:#{type}:#{resolution}:#{formatted_time}"
end
|