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

redis_detailed_spec.rb « views « peek « lib « spec - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: a757af50dcbcfee6037a91e468bcd050d96f0963 (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
# frozen_string_literal: true

require 'spec_helper'

RSpec.describe Peek::Views::RedisDetailed, :request_store do
  subject { described_class.new }

  using RSpec::Parameterized::TableSyntax

  where(:cmd, :expected) do
    [:auth, 'test'] | 'auth <redacted>'
    [:set, 'key', 'value'] | 'set key <redacted>'
    [:set, 'bad'] | 'set bad'
    [:hmset, 'key1', 'value1', 'key2', 'value2'] | 'hmset key1 <redacted>'
    [:get, 'key'] | 'get key'
  end

  with_them do
    it 'scrubs Redis commands' do
      Gitlab::Instrumentation::Redis::SharedState.detail_store << { cmd: cmd, duration: 1.second }

      expect(subject.results[:details].count).to eq(1)
      expect(subject.results[:details].first)
        .to include({
                      cmd: expected,
                      duration: 1000
                    })
    end
  end

  it 'returns aggregated results' do
    Gitlab::Instrumentation::Redis::Cache.detail_store << { cmd: [:get, 'test'], duration: 0.001 }
    Gitlab::Instrumentation::Redis::Cache.detail_store << { cmd: [:get, 'test'], duration: 1.second }
    Gitlab::Instrumentation::Redis::SharedState.detail_store << { cmd: [:get, 'test'], duration: 1.second }

    expect(subject.results[:calls]).to eq(3)
    expect(subject.results[:duration]).to eq('2001.00ms')
    expect(subject.results[:details].count).to eq(3)
  end
end