# frozen_string_literal: true require 'test_helper' require 'statsd/instrument/client' class CaptureSinktest < Minitest::Test def test_capture_sink_captures_datagram_instances capture_sink = StatsD::Instrument::CaptureSink.new(parent: []) capture_sink << 'foo:1|c' assert_equal 1, capture_sink.datagrams.length assert_kind_of StatsD::Instrument::Datagram, capture_sink.datagrams.first assert_equal 'foo:1|c', capture_sink.datagrams.first.source end def test_capture_sink_sends_datagrams_to_parent parent = [] capture_sink = StatsD::Instrument::CaptureSink.new(parent: parent) capture_sink << 'foo:1|c' << 'bar:1|c' assert_equal ['foo:1|c', 'bar:1|c'], parent end def test_nesting_capture_sink_instances null_sink = StatsD::Instrument::NullSink.new outer_capture_sink = StatsD::Instrument::CaptureSink.new(parent: null_sink) inner_capture_sink = StatsD::Instrument::CaptureSink.new(parent: outer_capture_sink) outer_capture_sink << 'foo:1|c' inner_capture_sink << 'bar:1|c' assert_equal ['foo:1|c', 'bar:1|c'], outer_capture_sink.datagrams.map(&:source) assert_equal ['bar:1|c'], inner_capture_sink.datagrams.map(&:source) end def test_using_a_different_datagram_class sink = StatsD::Instrument::CaptureSink.new(parent: [], datagram_class: String) sink << 'foo:1|c' assert sink.datagrams.all? { |datagram| datagram.is_a?(String) } assert_equal ['foo:1|c'], sink.datagrams end end