Welcome to mirror list, hosted at ThFree Co, Russian Federation.

grpc_error_processor_spec.rb « processor « error_tracking « gitlab « lib « spec - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 797707114a17836c7f4fd099ee15cdb6245bad12 (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
72
73
74
75
# frozen_string_literal: true

require 'spec_helper'

RSpec.describe Gitlab::ErrorTracking::Processor::GrpcErrorProcessor do
  describe '#process' do
    subject { described_class.new }

    context 'when there is no GRPC exception' do
      let(:data) { { fingerprint: ['ArgumentError', 'Missing arguments'] } }

      it 'leaves data unchanged' do
        expect(subject.process(data)).to eq(data)
      end
    end

    context 'when there is a GPRC exception with a debug string' do
      let(:data) do
        {
          exception: {
            values: [
              {
                type: "GRPC::DeadlineExceeded",
                value: "4:DeadlineExceeded. debug_error_string:{\"hello\":1}"
              }
            ]
          },
          extra: {
            caller: 'test'
          },
          fingerprint: [
            "GRPC::DeadlineExceeded",
            "4:Deadline Exceeded. debug_error_string:{\"created\":\"@1598938192.005782000\",\"description\":\"Error received from peer unix:/home/git/gitalypraefect.socket\",\"file\":\"src/core/lib/surface/call.cc\",\"file_line\":1055,\"grpc_message\":\"Deadline Exceeded\",\"grpc_status\":4}"
          ]
        }
      end

      let(:expected) do
        {
          fingerprint: [
            "GRPC::DeadlineExceeded",
            "4:Deadline Exceeded."
          ],
          exception: {
            values: [
              {
                type: "GRPC::DeadlineExceeded",
                value: "4:DeadlineExceeded."
              }
            ]
          },
          extra: {
            caller: 'test',
            grpc_debug_error_string: "{\"hello\":1}"
         }
        }
      end

      it 'removes the debug error string and stores it as an extra field' do
        expect(subject.process(data)).to eq(expected)
      end

      context 'with no custom fingerprint' do
        before do
          data.delete(:fingerprint)
          expected.delete(:fingerprint)
        end

        it 'removes the debug error string and stores it as an extra field' do
          expect(subject.process(data)).to eq(expected)
        end
      end
    end
  end
end