Class: TestBench::Telemetry::Substitute::Sink

Inherits:
Object
  • Object
show all
Includes:
TestBench::Telemetry::Sink
Defined in:
lib/test_bench/telemetry/substitute/sink.rb

Constant Summary collapse

MatchError =
Class.new(RuntimeError)

Constants included from TestBench::Telemetry::Sink

TestBench::Telemetry::Sink::ReceiveError

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.read(path) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/test_bench/telemetry/substitute/sink.rb', line 9

def self.read(path)
  file_text = ::File.read(path)

  instance = new

  file_text.each_line do |event_data_text|
    event_data = Telemetry::EventData.load(event_data_text)

    instance.receive(event_data)
  end

  instance
end

Instance Method Details

#any_event?Boolean Also known as: event?

Returns:

  • (Boolean)


50
51
52
# File 'lib/test_bench/telemetry/substitute/sink.rb', line 50

def any_event?(...)
  events(...).any?
end

#events(event_class, **attributes) ⇒ Object



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/test_bench/telemetry/substitute/sink.rb', line 55

def events(event_class, **attributes)
  event_type = event_class.event_type

  events = []

  received_events.each do |event_data|
    event_types_correspond = event_data.type == event_type

    if event_types_correspond
      event = Event::Import.(event_data, event_class)

      attributes_correspond = attributes.all? do |attribute, compare_value|
        value = event.public_send(attribute)

        value == compare_value
      end

      if attributes_correspond
        events << event
      end
    end
  end

  events
end

#one_eventObject



39
40
41
42
43
44
45
46
47
48
# File 'lib/test_bench/telemetry/substitute/sink.rb', line 39

def one_event(...)
  events = events(...)

  if events.count > 1
    event_type = events.first.event_type
    raise MatchError, "More than one event matches (Type: #{event_type.inspect}, Matching Events: #{events.count})"
  end

  events.first
end

#one_event?Boolean

Returns:

  • (Boolean)


35
36
37
# File 'lib/test_bench/telemetry/substitute/sink.rb', line 35

def one_event?(...)
  !one_event(...).nil?
end

#receive(event_data) ⇒ Object



27
28
29
# File 'lib/test_bench/telemetry/substitute/sink.rb', line 27

def receive(event_data)
  received_events << event_data
end

#received?(event_data) ⇒ Boolean

Returns:

  • (Boolean)


31
32
33
# File 'lib/test_bench/telemetry/substitute/sink.rb', line 31

def received?(event_data)
  received_events.include?(event_data)
end

#received_eventsObject



23
24
25
# File 'lib/test_bench/telemetry/substitute/sink.rb', line 23

def received_events
  @received_events ||= []
end