# frozen_string_literal: true require 'test_helper' class DeprecationsTest < Minitest::Test unless StatsD::Instrument.strict_mode_enabled? class InstrumentedClass extend StatsD::Instrument def foo; end statsd_count :foo, 'frequency', 0.5, ['tag'] # rubocop:disable StatsD/MetaprogrammingPositionalArguments statsd_measure :foo, 'latency', as_dist: true # rubocop:disable StatsD/MeasureAsDistArgument statsd_count_success :foo, 'frequency', prefix: 'foo' # rubocop:disable StatsD/MetricPrefixArgument end end include StatsD::Instrument::Assertions def setup skip("Deprecation are not supported in strict mode") if StatsD::Instrument.strict_mode_enabled? end def test__deprecated__metaprogramming_method_with_positional_arguments metrics = capture_statsd_calls { InstrumentedClass.new.foo } metric = metrics[0] assert_equal :c, metric.type assert_equal 'frequency', metric.name assert_equal 1, metric.value assert_equal 0.5, metric.sample_rate assert_equal ["tag"], metric.tags end def test__deprecated__metaprogramming_statsd_measure_with_as_dist metrics = capture_statsd_calls { InstrumentedClass.new.foo } metric = metrics[1] assert_equal :d, metric.type assert_equal 'latency', metric.name end def test__deprecated__metaprogramming_statsd_count_with_prefix metrics = capture_statsd_calls { InstrumentedClass.new.foo } metric = metrics[2] assert_equal :c, metric.type assert_equal 'foo.frequency.success', metric.name end # rubocop:disable StatsD/MetricValueKeywordArgument def test__deprecated__statsd_measure_with_explicit_value_as_keyword_argument metric = capture_statsd_call { StatsD.measure('values.foobar', value: 42) } assert_equal 'values.foobar', metric.name assert_equal 42, metric.value assert_equal :ms, metric.type end # rubocop:disable StatsD/MeasureAsDistArgument def test__deprecated__statsd_measure_with_explicit_value_keyword_and_distribution_override metric = capture_statsd_call { StatsD.measure('values.foobar', value: 42, as_dist: true) } assert_equal 42, metric.value assert_equal :d, metric.type end # rubocop:enable StatsD/MeasureAsDistArgument def test__deprecated__statsd_increment_with_value_as_keyword_argument metric = capture_statsd_call { StatsD.increment('values.foobar', value: 2) } assert_equal StatsD.default_sample_rate, metric.sample_rate assert_equal 2, metric.value end def test__deprecated__statsd_gauge_with_keyword_argument metric = capture_statsd_call { StatsD.gauge('values.foobar', value: 13) } assert_equal :g, metric.type assert_equal 'values.foobar', metric.name assert_equal 13, metric.value end # rubocop:enable StatsD/MetricValueKeywordArgument # rubocop:disable StatsD/MetricReturnValue def test__deprecated__statsd_increment_returns_metric_instance metric = StatsD.increment('key') assert_kind_of StatsD::Instrument::Metric, metric assert_equal 'key', metric.name assert_equal :c, metric.type assert_equal 1, metric.value end # rubocop:enable StatsD/MetricReturnValue # rubocop:disable StatsD/PositionalArguments def test__deprecated__statsd_increment_with_positional_argument_for_tags metric = capture_statsd_call { StatsD.increment('values.foobar', 12, nil, ['test']) } assert_equal StatsD.default_sample_rate, metric.sample_rate assert_equal ['test'], metric.tags assert_equal 12, metric.value assert_equal StatsD.default_sample_rate, metric.sample_rate end # rubocop:enable StatsD/PositionalArguments # rubocop:disable StatsD/MeasureAsDistArgument def test__deprecated__statsd_measure_with_explicit_value_and_distribution_override metric = capture_statsd_call { StatsD.measure('values.foobar', 42, as_dist: true) } assert_equal :d, metric.type end def test__deprecated__statsd_measure_use_distribution_override_for_a_block metric = capture_statsd_call do StatsD.measure('values.foobar', as_dist: true) { 'foo' } end assert_equal :d, metric.type end def test__deprecated__statsd_measure_as_distribution_returns_return_value_of_block_even_if_nil return_value = StatsD.measure('values.foobar', as_dist: true) { nil } assert_nil return_value end # rubocop:enable StatsD/MeasureAsDistArgument # rubocop:disable StatsD/MetricPrefixArgument def test__deprecated__override_name_prefix m = capture_statsd_call { StatsD.increment('counter', prefix: "foobar") } assert_equal 'foobar.counter', m.name m = capture_statsd_call { StatsD.increment('counter', prefix: "foobar", no_prefix: true) } assert_equal 'counter', m.name end # rubocop:enable StatsD/MetricPrefixArgument def test__deprecated__statsd_key_value metric = capture_statsd_call { StatsD.key_value('values.foobar', 42) } assert_equal :kv, metric.type assert_equal 'values.foobar', metric.name assert_equal 42, metric.value end protected def capture_statsd_call(&block) metrics = capture_statsd_calls(&block) assert_equal 1, metrics.length metrics.first end end