Class: TestBench::Telemetry
- Inherits:
-
Object
- Object
- TestBench::Telemetry
show all
- Defined in:
- lib/test_bench/telemetry/sink.rb,
lib/test_bench/telemetry/event.rb,
lib/test_bench/telemetry/sink/file.rb,
lib/test_bench/telemetry/telemetry.rb,
lib/test_bench/telemetry/event_data.rb,
lib/test_bench/telemetry/substitute.rb,
lib/test_bench/telemetry/sink/handler.rb,
lib/test_bench/telemetry/controls/file.rb,
lib/test_bench/telemetry/controls/sink.rb,
lib/test_bench/telemetry/controls/time.rb,
lib/test_bench/telemetry/controls/event.rb,
lib/test_bench/telemetry/controls/random.rb,
lib/test_bench/telemetry/sink/projection.rb,
lib/test_bench/telemetry/substitute/sink.rb,
lib/test_bench/telemetry/controls/handler.rb,
lib/test_bench/telemetry/controls/event_data.rb,
lib/test_bench/telemetry/controls/process_id.rb,
lib/test_bench/telemetry/controls/projection.rb,
lib/test_bench/telemetry/controls/event/metadata.rb,
lib/test_bench/telemetry/event_data/serialization.rb,
lib/test_bench/telemetry/controls/event/event_data.rb,
lib/test_bench/telemetry/sink/handler/event_registry.rb,
lib/test_bench/telemetry/controls/projection/receiver.rb
Defined Under Namespace
Modules: Controls, Event, Sink, Substitute
Classes: EventData
Constant Summary
collapse
- RegistrationError =
Class.new(RuntimeError)
- GetError =
Class.new(RuntimeError)
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Instance Attribute Details
#sinks ⇒ Object
6
7
8
|
# File 'lib/test_bench/telemetry/telemetry.rb', line 6
def sinks
@sinks ||= []
end
|
Class Method Details
.build(*sinks) ⇒ Object
11
12
13
14
15
16
17
18
19
|
# File 'lib/test_bench/telemetry/telemetry.rb', line 11
def self.build(*sinks)
instance = new
sinks.each do |sink|
instance.register(sink)
end
instance
end
|
21
22
23
24
25
26
|
# File 'lib/test_bench/telemetry/telemetry.rb', line 21
def self.configure(receiver, *sinks, attr_name: nil)
attr_name ||= :telemetry
instance = build(*sinks)
receiver.public_send(:"#{attr_name}=", instance)
end
|
.current_time ⇒ Object
55
56
57
|
# File 'lib/test_bench/telemetry/telemetry.rb', line 55
def self.current_time
::Time.now
end
|
.process_id ⇒ Object
59
60
61
|
# File 'lib/test_bench/telemetry/telemetry.rb', line 59
def self.process_id
::Process.pid
end
|
Instance Method Details
#current_time ⇒ Object
47
48
49
|
# File 'lib/test_bench/telemetry/telemetry.rb', line 47
def current_time
self.class.current_time
end
|
#get_sink(sink_class) ⇒ Object
93
94
95
96
97
98
99
100
101
|
# File 'lib/test_bench/telemetry/telemetry.rb', line 93
def get_sink(sink_class)
sink, *other_sinks = get_sinks(sink_class)
if other_sinks.any?
raise GetError, "Multiple sinks match: #{sink_class.inspect}"
end
sink
end
|
#get_sinks(sink_class) ⇒ Object
103
104
105
106
107
|
# File 'lib/test_bench/telemetry/telemetry.rb', line 103
def get_sinks(sink_class)
sinks.select do |sink|
sink.instance_of?(sink_class)
end
end
|
#process_id ⇒ Object
51
52
53
|
# File 'lib/test_bench/telemetry/telemetry.rb', line 51
def process_id
self.class.process_id
end
|
#record(event) ⇒ Object
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
# File 'lib/test_bench/telemetry/telemetry.rb', line 28
def record(event)
if event.is_a?(Event)
event.metadata ||= Event::Metadata.new
event_data = Event::Export.(event)
else
event_data = event
end
event_data.process_id ||= process_id
event_data.time ||= current_time
sinks.each do |sink|
sink.receive(event_data)
end
event_data
end
|
#register(sink) ⇒ Object
63
64
65
66
67
68
69
|
# File 'lib/test_bench/telemetry/telemetry.rb', line 63
def register(sink)
if registered?(sink)
raise RegistrationError, "Already registered #{sink.inspect}"
end
sinks.push(sink)
end
|
#registered?(sink_or_sink_class) ⇒ Boolean
79
80
81
82
83
84
85
86
87
88
89
90
91
|
# File 'lib/test_bench/telemetry/telemetry.rb', line 79
def registered?(sink_or_sink_class)
if sink_or_sink_class.is_a?(Sink)
sink = sink_or_sink_class
sinks.include?(sink)
else
sink_class = sink_or_sink_class
sink = get_sink(sink_class)
!sink.nil?
end
end
|
#unregister(sink) ⇒ Object
71
72
73
74
75
76
77
|
# File 'lib/test_bench/telemetry/telemetry.rb', line 71
def unregister(sink)
deleted_sink = sinks.delete(sink)
if deleted_sink.nil?
raise RegistrationError, "Not registered #{sink.inspect}"
end
end
|