require 'test_helper' require 'statsd/instrument/matchers' class MatchersTest < Minitest::Test def test_statsd_increment_matched assert StatsD::Instrument::Matchers::Increment.new(:c, 'counter', {}).matches? lambda { StatsD.increment('counter') } end def test_statsd_increment_not_matched refute StatsD::Instrument::Matchers::Increment.new(:c, 'counter', {}).matches? lambda { StatsD.increment('not_counter') } end def test_statsd_increment_compound_matched matcher_1 = StatsD::Instrument::Matchers::Increment.new(:c, 'counter', tags: ['a']) matcher_2 = StatsD::Instrument::Matchers::Increment.new(:c, 'counter', tags: ['b']) assert RSpec::Matchers::BuiltIn::Compound::And.new(matcher_1, matcher_2).matches? lambda { StatsD.increment('counter', tags: ['a']) StatsD.increment('counter', tags: ['b']) } end def test_statsd_increment_compound_not_matched matcher_1 = StatsD::Instrument::Matchers::Increment.new(:c, 'counter', tags: ['a']) matcher_2 = StatsD::Instrument::Matchers::Increment.new(:c, 'counter', tags: ['b']) refute RSpec::Matchers::BuiltIn::Compound::And.new(matcher_1, matcher_2).matches? lambda { StatsD.increment('counter', tags: ['a']) StatsD.increment('counter', tags: ['a']) } end def test_statsd_increment_with_times_matched assert StatsD::Instrument::Matchers::Increment.new(:c, 'counter', times: 1).matches? lambda { StatsD.increment('counter') } end def test_statsd_increment_with_times_not_matched refute StatsD::Instrument::Matchers::Increment.new(:c, 'counter', times: 2).matches? lambda { StatsD.increment('counter', times: 3) } end def test_statsd_increment_with_sample_rate_matched assert StatsD::Instrument::Matchers::Increment.new(:c, 'counter', sample_rate: 0.5).matches? lambda { StatsD.increment('counter', sample_rate: 0.5) } end def test_statsd_increment_with_sample_rate_not_matched refute StatsD::Instrument::Matchers::Increment.new(:c, 'counter', sample_rate: 0.5).matches? lambda { StatsD.increment('counter', sample_rate: 0.7) } end def test_statsd_increment_with_value_matched assert StatsD::Instrument::Matchers::Increment.new(:c, 'counter', value: 1).matches? lambda { StatsD.increment('counter') } end def test_statsd_increment_with_value_matched_when_multiple_metrics assert StatsD::Instrument::Matchers::Increment.new(:c, 'counter', value: 1).matches? lambda { StatsD.increment('counter', value: 2) StatsD.increment('counter', value: 1) } end def test_statsd_increment_with_value_not_matched_when_multiple_metrics refute StatsD::Instrument::Matchers::Increment.new(:c, 'counter', value: 1).matches? lambda { StatsD.increment('counter', value: 2) StatsD.increment('counter', value: 3) } end def test_statsd_increment_with_value_not_matched refute StatsD::Instrument::Matchers::Increment.new(:c, 'counter', value: 3).matches? lambda { StatsD.increment('counter') } end def test_statsd_increment_with_tags_matched assert StatsD::Instrument::Matchers::Increment.new(:c, 'counter', tags: ['a', 'b']).matches? lambda { StatsD.increment('counter', tags: ['a', 'b']) } end def test_statsd_increment_with_tags_not_matched refute StatsD::Instrument::Matchers::Increment.new(:c, 'counter', tags: ['a', 'b']).matches? lambda { StatsD.increment('counter', tags: ['c']) } end def test_statsd_increment_with_times_and_value_matched assert StatsD::Instrument::Matchers::Increment.new(:c, 'counter', times: 2, value: 1).matches? lambda { StatsD.increment('counter', value: 1) StatsD.increment('counter', value: 1) } end def test_statsd_increment_with_times_and_value_not_matched refute StatsD::Instrument::Matchers::Increment.new(:c, 'counter', times: 2, value: 1).matches? lambda { StatsD.increment('counter', value: 1) StatsD.increment('counter', value: 2) } end def test_statsd_increment_with_sample_rate_and_argument_matcher_matched between_matcher = RSpec::Matchers::BuiltIn::BeBetween.new(0.4, 0.6).inclusive assert StatsD::Instrument::Matchers::Increment.new(:c, 'counter', sample_rate: between_matcher).matches? lambda { StatsD.increment('counter', sample_rate: 0.5) } end def test_statsd_increment_with_sample_rate_and_argument_matcher_not_matched between_matcher = RSpec::Matchers::BuiltIn::BeBetween.new(0.4, 0.6).inclusive refute StatsD::Instrument::Matchers::Increment.new(:c, 'counter', sample_rate: between_matcher).matches? lambda { StatsD.increment('counter', sample_rate: 0.7) } end end