Merge branch 'fj-refactor-web-ide-commits-counter' into 'master'
Refactor WebIdeCommitsCount class See merge request gitlab-org/gitlab-ce!30726
This commit is contained in:
commit
77c8fe01d6
8 changed files with 89 additions and 39 deletions
|
@ -126,7 +126,7 @@ module API
|
||||||
if result[:status] == :success
|
if result[:status] == :success
|
||||||
commit_detail = user_project.repository.commit(result[:result])
|
commit_detail = user_project.repository.commit(result[:result])
|
||||||
|
|
||||||
Gitlab::WebIdeCommitsCounter.increment if find_user_from_warden
|
Gitlab::UsageDataCounters::WebIdeCommitsCounter.increment if find_user_from_warden
|
||||||
|
|
||||||
present commit_detail, with: Entities::CommitDetail, stats: params[:stats]
|
present commit_detail, with: Entities::CommitDetail, stats: params[:stats]
|
||||||
else
|
else
|
||||||
|
|
|
@ -130,7 +130,7 @@ module Gitlab
|
||||||
|
|
||||||
def usage_counters
|
def usage_counters
|
||||||
{
|
{
|
||||||
web_ide_commits: Gitlab::WebIdeCommitsCounter.total_count
|
web_ide_commits: Gitlab::UsageDataCounters::WebIdeCommitsCounter.total_count
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
19
lib/gitlab/usage_data_counters/redis_counter.rb
Normal file
19
lib/gitlab/usage_data_counters/redis_counter.rb
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module Gitlab
|
||||||
|
module UsageDataCounters
|
||||||
|
module RedisCounter
|
||||||
|
def increment
|
||||||
|
Gitlab::Redis::SharedState.with { |redis| redis.incr(redis_counter_key) }
|
||||||
|
end
|
||||||
|
|
||||||
|
def total_count
|
||||||
|
Gitlab::Redis::SharedState.with { |redis| redis.get(redis_counter_key).to_i }
|
||||||
|
end
|
||||||
|
|
||||||
|
def redis_counter_key
|
||||||
|
raise NotImplementedError
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
13
lib/gitlab/usage_data_counters/web_ide_commits_counter.rb
Normal file
13
lib/gitlab/usage_data_counters/web_ide_commits_counter.rb
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
# 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
|
|
@ -1,17 +0,0 @@
|
||||||
# frozen_string_literal: true
|
|
||||||
|
|
||||||
module Gitlab
|
|
||||||
module WebIdeCommitsCounter
|
|
||||||
WEB_IDE_COMMITS_KEY = "WEB_IDE_COMMITS_COUNT".freeze
|
|
||||||
|
|
||||||
class << self
|
|
||||||
def increment
|
|
||||||
Gitlab::Redis::SharedState.with { |redis| redis.incr(WEB_IDE_COMMITS_KEY) }
|
|
||||||
end
|
|
||||||
|
|
||||||
def total_count
|
|
||||||
Gitlab::Redis::SharedState.with { |redis| redis.get(WEB_IDE_COMMITS_KEY).to_i }
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
54
spec/lib/gitlab/usage_data_counters/redis_counter_spec.rb
Normal file
54
spec/lib/gitlab/usage_data_counters/redis_counter_spec.rb
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
# 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
|
|
@ -1,19 +0,0 @@
|
||||||
# frozen_string_literal: true
|
|
||||||
|
|
||||||
require 'spec_helper'
|
|
||||||
|
|
||||||
describe Gitlab::WebIdeCommitsCounter, :clean_gitlab_redis_shared_state do
|
|
||||||
describe '.increment' do
|
|
||||||
it 'increments the web ide commits counter by 1' do
|
|
||||||
expect do
|
|
||||||
described_class.increment
|
|
||||||
end.to change { described_class.total_count }.from(0).to(1)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
describe '.total_count' do
|
|
||||||
it 'returns the total amount of web ide commits' do
|
|
||||||
expect(described_class.total_count).to eq(0)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -281,7 +281,7 @@ describe API::Commits do
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'does not increment the usage counters using access token authentication' do
|
it 'does not increment the usage counters using access token authentication' do
|
||||||
expect(::Gitlab::WebIdeCommitsCounter).not_to receive(:increment)
|
expect(::Gitlab::UsageDataCounters::WebIdeCommitsCounter).not_to receive(:increment)
|
||||||
|
|
||||||
post api(url, user), params: valid_c_params
|
post api(url, user), params: valid_c_params
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue