mirror of
https://github.com/wahyd4/gitlabhq.git
synced 2026-08-20 10:06:04 +10:00
Merge branch 'allocated-memory-per-transaction' into 'master'
See merge request !2389
This commit is contained in:
@@ -23,20 +23,29 @@ module Gitlab
|
||||
@values = Hash.new(0)
|
||||
@tags = {}
|
||||
@action = action
|
||||
|
||||
@memory_before = 0
|
||||
@memory_after = 0
|
||||
end
|
||||
|
||||
def duration
|
||||
@finished_at ? (@finished_at - @started_at) * 1000.0 : 0.0
|
||||
end
|
||||
|
||||
def allocated_memory
|
||||
@memory_after - @memory_before
|
||||
end
|
||||
|
||||
def run
|
||||
Thread.current[THREAD_KEY] = self
|
||||
|
||||
@started_at = Time.now
|
||||
@memory_before = System.memory_usage
|
||||
@started_at = Time.now
|
||||
|
||||
yield
|
||||
ensure
|
||||
@finished_at = Time.now
|
||||
@memory_after = System.memory_usage
|
||||
@finished_at = Time.now
|
||||
|
||||
Thread.current[THREAD_KEY] = nil
|
||||
end
|
||||
@@ -65,7 +74,7 @@ module Gitlab
|
||||
end
|
||||
|
||||
def track_self
|
||||
values = { duration: duration }
|
||||
values = { duration: duration, allocated_memory: allocated_memory }
|
||||
|
||||
@values.each do |name, value|
|
||||
values[name] = value
|
||||
|
||||
@@ -11,6 +11,14 @@ describe Gitlab::Metrics::Transaction do
|
||||
end
|
||||
end
|
||||
|
||||
describe '#allocated_memory' do
|
||||
it 'returns the allocated memory in bytes' do
|
||||
transaction.run { 'a' * 32 }
|
||||
|
||||
expect(transaction.allocated_memory).to be_a_kind_of(Numeric)
|
||||
end
|
||||
end
|
||||
|
||||
describe '#run' do
|
||||
it 'yields the supplied block' do
|
||||
expect { |b| transaction.run(&b) }.to yield_control
|
||||
@@ -43,8 +51,10 @@ describe Gitlab::Metrics::Transaction do
|
||||
transaction.increment(:time, 1)
|
||||
transaction.increment(:time, 2)
|
||||
|
||||
values = { duration: 0.0, time: 3, allocated_memory: a_kind_of(Numeric) }
|
||||
|
||||
expect(transaction).to receive(:add_metric).
|
||||
with('transactions', { duration: 0.0, time: 3 }, {})
|
||||
with('transactions', values, {})
|
||||
|
||||
transaction.track_self
|
||||
end
|
||||
@@ -54,8 +64,14 @@ describe Gitlab::Metrics::Transaction do
|
||||
it 'sets a value' do
|
||||
transaction.set(:number, 10)
|
||||
|
||||
values = {
|
||||
duration: 0.0,
|
||||
number: 10,
|
||||
allocated_memory: a_kind_of(Numeric)
|
||||
}
|
||||
|
||||
expect(transaction).to receive(:add_metric).
|
||||
with('transactions', { duration: 0.0, number: 10 }, {})
|
||||
with('transactions', values, {})
|
||||
|
||||
transaction.track_self
|
||||
end
|
||||
@@ -80,8 +96,13 @@ describe Gitlab::Metrics::Transaction do
|
||||
|
||||
describe '#track_self' do
|
||||
it 'adds a metric for the transaction itself' do
|
||||
values = {
|
||||
duration: transaction.duration,
|
||||
allocated_memory: a_kind_of(Numeric)
|
||||
}
|
||||
|
||||
expect(transaction).to receive(:add_metric).
|
||||
with('transactions', { duration: transaction.duration }, {})
|
||||
with('transactions', values, {})
|
||||
|
||||
transaction.track_self
|
||||
end
|
||||
@@ -104,7 +125,7 @@ describe Gitlab::Metrics::Transaction do
|
||||
hash = {
|
||||
series: 'rails_transactions',
|
||||
tags: { action: 'Foo#bar' },
|
||||
values: { duration: 0.0 },
|
||||
values: { duration: 0.0, allocated_memory: a_kind_of(Numeric) },
|
||||
timestamp: an_instance_of(Fixnum)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user