Skip to content
Snippets Groups Projects
Commit 556d213c authored by Francisco Javier López's avatar Francisco Javier López Committed by James Lopez
Browse files

Refactored WebIdeCommitsCount class

We're adding more redis base counters to the web ide and other
classes. We're refactoring this class in other to use the logic
in other places.
parent f1b257f3
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -126,7 +126,7 @@ module API
if result[:status] == :success
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]
else
Loading
Loading
Loading
Loading
@@ -130,7 +130,7 @@ module Gitlab
 
def usage_counters
{
web_ide_commits: Gitlab::WebIdeCommitsCounter.total_count
web_ide_commits: Gitlab::UsageDataCounters::WebIdeCommitsCounter.total_count
}
end
 
Loading
Loading
# frozen_string_literal: true
 
module Gitlab
module WebIdeCommitsCounter
WEB_IDE_COMMITS_KEY = "WEB_IDE_COMMITS_COUNT".freeze
class << self
module UsageDataCounters
module RedisCounter
def increment
Gitlab::Redis::SharedState.with { |redis| redis.incr(WEB_IDE_COMMITS_KEY) }
Gitlab::Redis::SharedState.with { |redis| redis.incr(redis_counter_key) }
end
 
def total_count
Gitlab::Redis::SharedState.with { |redis| redis.get(WEB_IDE_COMMITS_KEY).to_i }
Gitlab::Redis::SharedState.with { |redis| redis.get(redis_counter_key).to_i }
end
def redis_counter_key
raise NotImplementedError
end
end
end
Loading
Loading
# 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
# 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
# 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
Loading
Loading
@@ -281,7 +281,7 @@ describe API::Commits do
end
 
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
end
Loading
Loading
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