blob: 726f2bf21449101e63a984f3ed7977360a9b3cc9 (
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'
describe Gitlab::Checks::TimedLogger do
let(:log_messages) do
{
foo: "Foo message..."
}
end
class FooCheck
attr_accessor :logger
INTERNAL_TIMEOUT = 50.seconds.freeze
def initialize(start_time, ref)
@logger = Gitlab::Checks::TimedLogger.new(start_time: start_time, timeout: INTERNAL_TIMEOUT)
@logger.log << "Checking ref: #{ref}"
end
def bar_check
2 + 2
end
def grpc_check
raise GRPC::DeadlineExceeded
end
end
describe '#log_timed' do
it 'logs message' do
start = Time.now
check = FooCheck.new(start, "bar")
Timecop.freeze(start + 30.seconds) do
check.logger.log_timed(log_messages[:foo], start) { check.bar_check }
end
expect(check.logger.log).to eq(["Checking ref: bar", "Foo message... (30000.0ms)"])
end
context 'when time limit was reached' do
it 'cancels action' do
start = Time.now
check = FooCheck.new(start, "bar")
Timecop.freeze(start + 50.seconds) do
expect do
check.logger.log_timed(log_messages[:foo], start) do
check.bar_check
end
end.to raise_error(described_class::TimeoutError)
end
expect(check.logger.log).to eq(["Checking ref: bar", "Foo message... (cancelled)"])
end
it 'cancels action with time elapsed if work was performed' do
start = Time.now
check = FooCheck.new(start, "bar")
Timecop.freeze(start + 30.seconds) do
expect do
check.logger.log_timed(log_messages[:foo], start) do
check.grpc_check
end
end.to raise_error(described_class::TimeoutError)
expect(check.logger.log).to eq(["Checking ref: bar", "Foo message... (cancelled after 30000.0ms)"])
end
end
end
end
end
|