summaryrefslogtreecommitdiff
path: root/spec/lib/gitlab/metrics/subscribers/rails_cache_spec.rb
blob: d824dc54438bb1453aab68d2b53650239a127802 (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
76
77
require 'spec_helper'

describe Gitlab::Metrics::Subscribers::RailsCache do
  let(:transaction) { Gitlab::Metrics::Transaction.new }
  let(:subscriber) { described_class.new }

  let(:event) { double(:event, duration: 15.2) }

  describe '#cache_read' do
    it 'increments the cache_read duration' do
      expect(subscriber).to receive(:increment).
        with(:cache_read, event.duration)

      subscriber.cache_read(event)
    end
  end

  describe '#cache_write' do
    it 'increments the cache_write duration' do
      expect(subscriber).to receive(:increment).
        with(:cache_write, event.duration)

      subscriber.cache_write(event)
    end
  end

  describe '#cache_delete' do
    it 'increments the cache_delete duration' do
      expect(subscriber).to receive(:increment).
        with(:cache_delete, event.duration)

      subscriber.cache_delete(event)
    end
  end

  describe '#cache_exist?' do
    it 'increments the cache_exists duration' do
      expect(subscriber).to receive(:increment).
        with(:cache_exists, event.duration)

      subscriber.cache_exist?(event)
    end
  end

  describe '#increment' do
    context 'without a transaction' do
      it 'returns' do
        expect(transaction).not_to receive(:increment)

        subscriber.increment(:foo, 15.2)
      end
    end

    context 'with a transaction' do
      before do
        allow(subscriber).to receive(:current_transaction).
          and_return(transaction)
      end

      it 'increments the total and specific cache duration' do
        expect(transaction).to receive(:increment).
          with(:cache_duration, event.duration)

        expect(transaction).to receive(:increment).
          with(:cache_count, 1)

        expect(transaction).to receive(:increment).
          with(:cache_delete_duration, event.duration)

        expect(transaction).to receive(:increment).
          with(:cache_delete_count, 1)

        subscriber.increment(:cache_delete, event.duration)
      end
    end
  end
end