Refactor RedisCounter and WebIdeCommitsCounter
This MR refactor RedisCounter and WebIdeCommitsCounter to be reused by other components.
This commit is contained in:
parent
f74bd44d2a
commit
bcd2458076
8 changed files with 47 additions and 76 deletions
|
@ -126,7 +126,7 @@ module API
|
|||
if result[:status] == :success
|
||||
commit_detail = user_project.repository.commit(result[:result])
|
||||
|
||||
Gitlab::UsageDataCounters::WebIdeCommitsCounter.increment if find_user_from_warden
|
||||
Gitlab::UsageDataCounters::WebIdeCounter.increment_commits_count if find_user_from_warden
|
||||
|
||||
present commit_detail, with: Entities::CommitDetail, stats: params[:stats]
|
||||
else
|
||||
|
|
|
@ -130,7 +130,7 @@ module Gitlab
|
|||
|
||||
def usage_counters
|
||||
{
|
||||
web_ide_commits: Gitlab::UsageDataCounters::WebIdeCommitsCounter.total_count
|
||||
web_ide_commits: Gitlab::UsageDataCounters::WebIdeCounter.total_commits_count
|
||||
}
|
||||
end
|
||||
|
||||
|
|
|
@ -3,17 +3,13 @@
|
|||
module Gitlab
|
||||
module UsageDataCounters
|
||||
module RedisCounter
|
||||
def increment
|
||||
def increment(redis_counter_key)
|
||||
Gitlab::Redis::SharedState.with { |redis| redis.incr(redis_counter_key) }
|
||||
end
|
||||
|
||||
def total_count
|
||||
def total_count(redis_counter_key)
|
||||
Gitlab::Redis::SharedState.with { |redis| redis.get(redis_counter_key).to_i }
|
||||
end
|
||||
|
||||
def redis_counter_key
|
||||
raise NotImplementedError
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,13 +0,0 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module Gitlab
|
||||
module UsageDataCounters
|
||||
class WebIdeCommitsCounter
|
||||
extend RedisCounter
|
||||
|
||||
def self.redis_counter_key
|
||||
'WEB_IDE_COMMITS_COUNT'
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
21
lib/gitlab/usage_data_counters/web_ide_counter.rb
Normal file
21
lib/gitlab/usage_data_counters/web_ide_counter.rb
Normal file
|
@ -0,0 +1,21 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module Gitlab
|
||||
module UsageDataCounters
|
||||
class WebIdeCounter
|
||||
extend RedisCounter
|
||||
|
||||
COMMITS_COUNT_KEY = 'WEB_IDE_COMMITS_COUNT'
|
||||
|
||||
class << self
|
||||
def increment_commits_count
|
||||
increment(COMMITS_COUNT_KEY)
|
||||
end
|
||||
|
||||
def total_commits_count
|
||||
total_count(COMMITS_COUNT_KEY)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,54 +0,0 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'spec_helper'
|
||||
|
||||
describe Gitlab::UsageDataCounters::RedisCounter, :clean_gitlab_redis_shared_state do
|
||||
context 'when redis_key is not defined' do
|
||||
subject do
|
||||
Class.new.extend(described_class)
|
||||
end
|
||||
|
||||
describe '.increment' do
|
||||
it 'raises a NotImplementedError exception' do
|
||||
expect { subject.increment}.to raise_error(NotImplementedError)
|
||||
end
|
||||
end
|
||||
|
||||
describe '.total_count' do
|
||||
it 'raises a NotImplementedError exception' do
|
||||
expect { subject.total_count}.to raise_error(NotImplementedError)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'when redis_key is defined' do
|
||||
subject do
|
||||
counter_module = described_class
|
||||
|
||||
Class.new do
|
||||
extend counter_module
|
||||
|
||||
def self.redis_counter_key
|
||||
'foo_redis_key'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '.increment' do
|
||||
it 'increments the web ide commits counter by 1' do
|
||||
expect do
|
||||
subject.increment
|
||||
end.to change { subject.total_count }.from(0).to(1)
|
||||
end
|
||||
end
|
||||
|
||||
describe '.total_count' do
|
||||
it 'returns the total amount of web ide commits' do
|
||||
subject.increment
|
||||
subject.increment
|
||||
|
||||
expect(subject.total_count).to eq(2)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
21
spec/lib/gitlab/usage_data_counters/web_ide_counter_spec.rb
Normal file
21
spec/lib/gitlab/usage_data_counters/web_ide_counter_spec.rb
Normal file
|
@ -0,0 +1,21 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'spec_helper'
|
||||
|
||||
describe Gitlab::UsageDataCounters::WebIdeCounter, :clean_gitlab_redis_shared_state do
|
||||
describe '.increment_commits_count' do
|
||||
it 'increments the web ide commits counter by 1' do
|
||||
expect do
|
||||
described_class.increment_commits_count
|
||||
end.to change { described_class.total_commits_count }.by(1)
|
||||
end
|
||||
end
|
||||
|
||||
describe '.total_commits_count' do
|
||||
it 'returns the total amount of web ide commits' do
|
||||
2.times { described_class.increment_commits_count }
|
||||
|
||||
expect(described_class.total_commits_count).to eq(2)
|
||||
end
|
||||
end
|
||||
end
|
|
@ -281,7 +281,7 @@ describe API::Commits do
|
|||
end
|
||||
|
||||
it 'does not increment the usage counters using access token authentication' do
|
||||
expect(::Gitlab::UsageDataCounters::WebIdeCommitsCounter).not_to receive(:increment)
|
||||
expect(::Gitlab::UsageDataCounters::WebIdeCounter).not_to receive(:increment_commits_count)
|
||||
|
||||
post api(url, user), params: valid_c_params
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue