Skip to content
Snippets Groups Projects
Commit d6e0a7de authored by Vasilii Iakliushin's avatar Vasilii Iakliushin :two:
Browse files

Collect metrics from all pull mirrors

Contributes to #367846

**Problem**

`def mirror?` includes additional checks that can exclude processing of
projects with pull mirroring enabled but without the license to use it.

**Solution**

Fetch `mirror` status directly from the project.

Changelog: changed
EE: true
parent 9e9dd6b8
No related branches found
No related tags found
1 merge request!93290Collect metrics from all pull mirrors
......@@ -90,13 +90,13 @@ def in_progress?
end
def mirror_waiting_duration
return unless mirror?
return unless project.read_attribute('mirror')
(last_update_started_at.to_i - last_update_scheduled_at.to_i).seconds
end
def mirror_update_duration
return unless mirror?
return unless project.read_attribute('mirror')
(last_update_at.to_i - last_update_started_at.to_i).seconds
end
......
......@@ -213,35 +213,59 @@
end
describe '#mirror_waiting_duration' do
it 'returns nil if not mirror' do
import_state = create(:import_state, :scheduled)
expect(import_state.mirror_waiting_duration).to be_nil
end
let(:import_state) { create(:import_state, :scheduled, :mirror) }
it 'returns in seconds the time spent in the queue' do
import_state = create(:import_state, :scheduled, :mirror)
import_state.last_update_started_at = import_state.last_update_scheduled_at + 5.minutes
expect(import_state.mirror_waiting_duration).to eq(300)
end
end
describe '#mirror_update_duration' do
it 'returns nil if not mirror' do
import_state = create(:import_state, :started)
context 'when account does not have a license' do
before do
stub_licensed_features(repository_mirrors: false)
end
expect(import_state.mirror_update_duration).to be_nil
it 'returns in seconds the time spent in the queue' do
import_state.last_update_started_at = import_state.last_update_scheduled_at + 1.minute
expect(import_state.mirror_waiting_duration).to eq(60)
end
end
it 'returns in seconds the time spent updating' do
import_state = create(:import_state, :started, :mirror)
context 'when import state is not mirror' do
let(:import_state) { create(:import_state, :scheduled) }
it { expect(import_state.mirror_waiting_duration).to be_nil }
end
end
describe '#mirror_update_duration' do
let(:import_state) { create(:import_state, :started, :mirror) }
it 'returns in seconds the time spent updating' do
import_state.last_update_at = import_state.last_update_started_at + 5.minutes
expect(import_state.mirror_update_duration).to eq(300)
end
context 'when account does not have a license' do
before do
stub_licensed_features(repository_mirrors: false)
end
it 'returns in seconds the time spent in the queue' do
import_state.last_update_at = import_state.last_update_started_at + 1.minute
expect(import_state.mirror_update_duration).to eq(60)
end
end
context 'when import state is not mirror' do
let(:import_state) { create(:import_state, :scheduled) }
it { expect(import_state.mirror_update_duration).to be_nil }
end
end
describe '#updating_mirror?' do
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment