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

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/lib/gitlab/sherlock/transaction_spec.rb')
-rw-r--r--spec/lib/gitlab/sherlock/transaction_spec.rb238
1 files changed, 0 insertions, 238 deletions
diff --git a/spec/lib/gitlab/sherlock/transaction_spec.rb b/spec/lib/gitlab/sherlock/transaction_spec.rb
deleted file mode 100644
index 535b0ad4d8a..00000000000
--- a/spec/lib/gitlab/sherlock/transaction_spec.rb
+++ /dev/null
@@ -1,238 +0,0 @@
-# frozen_string_literal: true
-
-require 'spec_helper'
-
-RSpec.describe Gitlab::Sherlock::Transaction do
- let(:transaction) { described_class.new('POST', '/cat_pictures') }
-
- describe '#id' do
- it 'returns the transaction ID' do
- expect(transaction.id).to be_an_instance_of(String)
- end
- end
-
- describe '#type' do
- it 'returns the type' do
- expect(transaction.type).to eq('POST')
- end
- end
-
- describe '#path' do
- it 'returns the path' do
- expect(transaction.path).to eq('/cat_pictures')
- end
- end
-
- describe '#queries' do
- it 'returns an Array of queries' do
- expect(transaction.queries).to be_an_instance_of(Array)
- end
- end
-
- describe '#file_samples' do
- it 'returns an Array of file samples' do
- expect(transaction.file_samples).to be_an_instance_of(Array)
- end
- end
-
- describe '#started_at' do
- it 'returns the start time' do
- allow(transaction).to receive(:profile_lines).and_yield
-
- transaction.run { 'cats are amazing' }
-
- expect(transaction.started_at).to be_an_instance_of(Time)
- end
- end
-
- describe '#finished_at' do
- it 'returns the completion time' do
- allow(transaction).to receive(:profile_lines).and_yield
-
- transaction.run { 'cats are amazing' }
-
- expect(transaction.finished_at).to be_an_instance_of(Time)
- end
- end
-
- describe '#view_counts' do
- it 'returns a Hash' do
- expect(transaction.view_counts).to be_an_instance_of(Hash)
- end
-
- it 'sets the default value of a key to 0' do
- expect(transaction.view_counts['cats.rb']).to be_zero
- end
- end
-
- describe '#run' do
- it 'runs the transaction' do
- allow(transaction).to receive(:profile_lines).and_yield
-
- retval = transaction.run { 'cats are amazing' }
-
- expect(retval).to eq('cats are amazing')
- end
- end
-
- describe '#duration' do
- it 'returns the duration in seconds' do
- start_time = Time.now
-
- allow(transaction).to receive(:started_at).and_return(start_time)
- allow(transaction).to receive(:finished_at).and_return(start_time + 5)
-
- expect(transaction.duration).to be_within(0.1).of(5.0)
- end
- end
-
- describe '#query_duration' do
- it 'returns the total query duration in seconds' do
- time = Time.now
- query1 = Gitlab::Sherlock::Query.new('SELECT 1', time, time + 5)
- query2 = Gitlab::Sherlock::Query.new('SELECT 2', time, time + 2)
-
- transaction.queries << query1
- transaction.queries << query2
-
- expect(transaction.query_duration).to be_within(0.1).of(7.0)
- end
- end
-
- describe '#to_param' do
- it 'returns the transaction ID' do
- expect(transaction.to_param).to eq(transaction.id)
- end
- end
-
- describe '#sorted_queries' do
- it 'returns the queries in descending order' do
- start_time = Time.now
-
- query1 = Gitlab::Sherlock::Query.new('SELECT 1', start_time, start_time)
-
- query2 = Gitlab::Sherlock::Query
- .new('SELECT 2', start_time, start_time + 5)
-
- transaction.queries << query1
- transaction.queries << query2
-
- expect(transaction.sorted_queries).to eq([query2, query1])
- end
- end
-
- describe '#sorted_file_samples' do
- it 'returns the file samples in descending order' do
- sample1 = Gitlab::Sherlock::FileSample.new(__FILE__, [], 10.0, 1)
- sample2 = Gitlab::Sherlock::FileSample.new(__FILE__, [], 15.0, 1)
-
- transaction.file_samples << sample1
- transaction.file_samples << sample2
-
- expect(transaction.sorted_file_samples).to eq([sample2, sample1])
- end
- end
-
- describe '#find_query' do
- it 'returns a Query when found' do
- query = Gitlab::Sherlock::Query.new('SELECT 1', Time.now, Time.now)
-
- transaction.queries << query
-
- expect(transaction.find_query(query.id)).to eq(query)
- end
-
- it 'returns nil when no query could be found' do
- expect(transaction.find_query('cats')).to be_nil
- end
- end
-
- describe '#find_file_sample' do
- it 'returns a FileSample when found' do
- sample = Gitlab::Sherlock::FileSample.new(__FILE__, [], 10.0, 1)
-
- transaction.file_samples << sample
-
- expect(transaction.find_file_sample(sample.id)).to eq(sample)
- end
-
- it 'returns nil when no file sample could be found' do
- expect(transaction.find_file_sample('cats')).to be_nil
- end
- end
-
- describe '#profile_lines' do
- describe 'when line profiling is enabled' do
- it 'yields the block using the line profiler' do
- allow(Gitlab::Sherlock).to receive(:enable_line_profiler?)
- .and_return(true)
-
- allow_next_instance_of(Gitlab::Sherlock::LineProfiler) do |instance|
- allow(instance).to receive(:profile).and_return('cats are amazing', [])
- end
-
- retval = transaction.profile_lines { 'cats are amazing' }
-
- expect(retval).to eq('cats are amazing')
- end
- end
-
- describe 'when line profiling is disabled' do
- it 'yields the block' do
- allow(Gitlab::Sherlock).to receive(:enable_line_profiler?)
- .and_return(false)
-
- retval = transaction.profile_lines { 'cats are amazing' }
-
- expect(retval).to eq('cats are amazing')
- end
- end
- end
-
- describe '#subscribe_to_active_record' do
- let(:subscription) { transaction.subscribe_to_active_record }
- let(:time) { Time.now }
- let(:query_data) { { sql: 'SELECT 1', binds: [] } }
-
- after do
- ActiveSupport::Notifications.unsubscribe(subscription)
- end
-
- it 'tracks executed queries' do
- expect(transaction).to receive(:track_query)
- .with('SELECT 1', [], time, time)
-
- subscription.publish('test', time, time, nil, query_data)
- end
-
- it 'only tracks queries triggered from the transaction thread' do
- expect(transaction).not_to receive(:track_query)
-
- Thread.new { subscription.publish('test', time, time, nil, query_data) }
- .join
- end
- end
-
- describe '#subscribe_to_action_view' do
- let(:subscription) { transaction.subscribe_to_action_view }
- let(:time) { Time.now }
- let(:view_data) { { identifier: 'foo.rb' } }
-
- after do
- ActiveSupport::Notifications.unsubscribe(subscription)
- end
-
- it 'tracks rendered views' do
- expect(transaction).to receive(:track_view).with('foo.rb')
-
- subscription.publish('test', time, time, nil, view_data)
- end
-
- it 'only tracks views rendered from the transaction thread' do
- expect(transaction).not_to receive(:track_view)
-
- Thread.new { subscription.publish('test', time, time, nil, view_data) }
- .join
- end
- end
-end