Class: ActiveMetric::Sample
- Inherits:
-
Object
- Object
- ActiveMetric::Sample
show all
- Includes:
- Mongoid::Document
- Defined in:
- lib/active_metric/sample.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
#initialize(attr = nil, options = nil, measurement = nil, index = 0) ⇒ Sample
Returns a new instance of Sample.
20
21
22
23
24
25
26
27
28
|
# File 'lib/active_metric/sample.rb', line 20
def initialize(attr = nil, options = nil, measurement = nil, index = 0)
@seed_measurement = measurement
@latest_measurement = nil
super(attr, options)
self.sample_index = index
if stats.empty?
self.stats = self.class.stats_defined.map(&:create_stat)
end
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method, *args) ⇒ Object
30
31
32
33
|
# File 'lib/active_metric/sample.rb', line 30
def method_missing(method, *args)
self.class.send(:define_method, method.to_sym) { get_stat_by_name(method) }
get_stat_by_name(method)
end
|
Instance Attribute Details
#latest_measurement ⇒ Object
Returns the value of attribute latest_measurement.
10
11
12
|
# File 'lib/active_metric/sample.rb', line 10
def latest_measurement
@latest_measurement
end
|
#seed_measurement ⇒ Object
Returns the value of attribute seed_measurement.
10
11
12
|
# File 'lib/active_metric/sample.rb', line 10
def seed_measurement
@seed_measurement
end
|
Instance Method Details
#calculate(measurement) ⇒ Object
35
36
37
38
39
40
|
# File 'lib/active_metric/sample.rb', line 35
def calculate(measurement)
set_start_time(measurement)
@latest_measurement = measurement
update_time(measurement)
update_stats(measurement)
end
|
#complete ⇒ Object
42
43
44
45
46
47
|
# File 'lib/active_metric/sample.rb', line 42
def complete
return false if measurement_count < 1
self.stats.each do |statistic|
statistic.complete
end
end
|
#duration_from_previous_sample_in_seconds ⇒ Object
54
55
56
57
|
# File 'lib/active_metric/sample.rb', line 54
def duration_from_previous_sample_in_seconds
return duration_in_seconds unless seed_measurement
end_time - seed_measurement.timestamp
end
|
#duration_in_seconds ⇒ Object
49
50
51
52
|
# File 'lib/active_metric/sample.rb', line 49
def duration_in_seconds
return end_time - start_time if end_time && start_time
return 0
end
|
#get_stat_by_name(name_of_stat) ⇒ Object
59
60
61
|
# File 'lib/active_metric/sample.rb', line 59
def get_stat_by_name(name_of_stat)
stats_by_name[name_of_stat] || raw_stat
end
|
#is_summary? ⇒ Boolean
67
68
69
|
# File 'lib/active_metric/sample.rb', line 67
def is_summary?
!interval
end
|
#new_sample ⇒ Object
77
78
79
|
# File 'lib/active_metric/sample.rb', line 77
def new_sample
self.class.new({:samplable => self.samplable, :interval => interval}, {}, @latest_measurement, sample_index + 1)
end
|
#stats_by_name ⇒ Object
63
64
65
|
# File 'lib/active_metric/sample.rb', line 63
def stats_by_name
@stats_by_name ||= generate_stats_by_name
end
|
#within_interval?(measurement) ⇒ Boolean
71
72
73
74
75
|
# File 'lib/active_metric/sample.rb', line 71
def within_interval?(measurement)
return true if is_summary?
return true unless self.start_time
(measurement.timestamp - self.start_time) < self.interval
end
|