summaryrefslogtreecommitdiff
path: root/spec/lib/gitlab/tracing/jaeger_factory_spec.rb
blob: 3d6a007cfd9e565ea42ed95ae604c6b9843afd38 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# frozen_string_literal: true

require 'fast_spec_helper'

describe Gitlab::Tracing::JaegerFactory do
  describe '.create_tracer' do
    let(:service_name) { 'rspec' }

    shared_examples_for 'a jaeger tracer' do
      it 'responds to active_span methods' do
        expect(tracer).to respond_to(:active_span)
      end

      it 'yields control' do
        expect { |b| tracer.start_active_span('operation_name', &b) }.to yield_control
      end
    end

    context 'processes default connections' do
      it_behaves_like 'a jaeger tracer' do
        let(:tracer) { described_class.create_tracer(service_name, {}) }
      end
    end

    context 'handles debug options' do
      it_behaves_like 'a jaeger tracer' do
        let(:tracer) { described_class.create_tracer(service_name, { debug: "1" }) }
      end
    end

    context 'handles const sampler' do
      it_behaves_like 'a jaeger tracer' do
        let(:tracer) { described_class.create_tracer(service_name, { sampler: "const", sampler_param: "1" }) }
      end
    end

    context 'handles probabilistic sampler' do
      it_behaves_like 'a jaeger tracer' do
        let(:tracer) { described_class.create_tracer(service_name, { sampler: "probabilistic", sampler_param: "0.5" }) }
      end
    end

    context 'handles http_endpoint configurations' do
      it_behaves_like 'a jaeger tracer' do
        let(:tracer) { described_class.create_tracer(service_name, { http_endpoint: "http://localhost:1234" }) }
      end
    end

    context 'handles udp_endpoint configurations' do
      it_behaves_like 'a jaeger tracer' do
        let(:tracer) { described_class.create_tracer(service_name, { udp_endpoint: "localhost:4321" }) }
      end
    end

    context 'ignores invalid parameters' do
      it_behaves_like 'a jaeger tracer' do
        let(:tracer) { described_class.create_tracer(service_name, { invalid: "true" }) }
      end
    end

    context 'accepts the debug parameter when strict_parser is set' do
      it_behaves_like 'a jaeger tracer' do
        let(:tracer) { described_class.create_tracer(service_name, { debug: "1", strict_parsing: "1" }) }
      end
    end

    it 'rejects invalid parameters when strict_parser is set' do
      expect { described_class.create_tracer(service_name, { invalid: "true", strict_parsing: "1" }) }.to raise_error(StandardError)
    end
  end
end