Skip to content

Commit 286c5ac

Browse files
committed
Add response time in a parsable formation `
1 parent ee0fdd2 commit 286c5ac

File tree

2 files changed

+20
-5
lines changed

2 files changed

+20
-5
lines changed

lib/logcache/client.rb

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,14 @@ def container_metrics(source_guid:, start_time:, end_time:, envelope_limit: DEFA
4444

4545
private
4646

47-
def with_request_error_handling(_source_guid)
47+
def with_request_error_handling(source_guid)
4848
tries ||= 3
4949
start_time = Time.now
50-
51-
# convert to milliseconds to get more precise information
52-
time_taken = (Time.now - start_time) * 1000
53-
logger.info("Response time: #{time_taken.round(2)} ms")
50+
time_taken = (Time.now - start_time) * 1000 # convert to milliseconds to get more precise information
51+
logger.info("Response time: #{time_taken.round(2)} ms",
52+
{ source_id: source_guid,
53+
event: 'log_cache_request',
54+
time_taken_in_ms: time_taken.round(2) })
5455
yield
5556
rescue StandardError => e
5657
raise CloudController::Errors::ApiError.new_from_details('ServiceUnavailable', 'Connection to Log Cache timed out') if e.is_a?(GRPC::DeadlineExceeded)

spec/logcache/client_spec.rb

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ module Logcache
2626
let(:client_ca) { File.read(client_ca_path) }
2727
let(:client_key) { File.read(client_key_path) }
2828
let(:client_cert) { File.read(client_cert_path) }
29+
let(:mock_logger) { double(Steno::Logger, info: nil) }
2930

3031
describe '#container_metrics' do
3132
let(:instance_count) { 2 }
@@ -39,6 +40,7 @@ module Logcache
3940
with("#{host}:#{port}", credentials, channel_args: channel_arg_hash, timeout: 10).
4041
and_return(logcache_service)
4142
allow(Logcache::V1::ReadRequest).to receive(:new).and_return(logcache_request)
43+
allow_any_instance_of(Client).to receive(:logger).and_return(mock_logger)
4244
end
4345

4446
it 'calls Logcache with the correct parameters and returns envelopes' do
@@ -56,6 +58,18 @@ module Logcache
5658
)
5759
expect(logcache_service).to have_received(:read).with(logcache_request)
5860
end
61+
62+
it 'logs the response time and metadata' do
63+
client.container_metrics(source_guid: process.guid, envelope_limit: 1000, start_time: 100, end_time: 101)
64+
expect(mock_logger).to have_received(:info).with(
65+
a_string_matching(/Response time: \d+\.\d+ ms/),
66+
hash_including(
67+
source_id: process.guid,
68+
event: 'log_cache_request',
69+
time_taken_in_ms: be_a(Float)
70+
)
71+
)
72+
end
5973
end
6074

6175
describe 'when logcache is unavailable' do

0 commit comments

Comments
 (0)