Skip to content
Snippets Groups Projects
Commit 04598039 authored by Igor Drozdov's avatar Igor Drozdov Committed by Stan Hu
Browse files

Add usage pings for source code pushes

Source Code Usage Ping for Create SMAU
parent 383a1840
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -77,6 +77,7 @@ class PostReceive
def after_project_changes_hooks(post_received, user, refs, changes)
hook_data = Gitlab::DataBuilder::Repository.update(post_received.project, user, changes, refs)
SystemHooksService.new.execute_hooks(hook_data, :repository_update_hooks)
Gitlab::UsageDataCounters::SourceCodeCounter.count(:pushes)
end
 
def process_wiki_changes(post_received)
Loading
Loading
---
title: Add usage pings for source code pushes
merge_request: 31734
author:
type: added
Loading
Loading
@@ -142,7 +142,8 @@ module Gitlab
Gitlab::UsageDataCounters::WebIdeCounter,
Gitlab::UsageDataCounters::NoteCounter,
Gitlab::UsageDataCounters::SnippetCounter,
Gitlab::UsageDataCounters::SearchCounter
Gitlab::UsageDataCounters::SearchCounter,
Gitlab::UsageDataCounters::SourceCodeCounter
]
end
 
Loading
Loading
# frozen_string_literal: true
module Gitlab::UsageDataCounters
class SourceCodeCounter < BaseCounter
KNOWN_EVENTS = %w[pushes].freeze
PREFIX = 'source_code'
end
end
# frozen_string_literal: true
require 'spec_helper'
describe Gitlab::UsageDataCounters::SourceCodeCounter do
it_behaves_like 'a redis usage counter', 'Source Code', :pushes
it_behaves_like 'a redis usage counter with totals', :source_code, pushes: 5
end
Loading
Loading
@@ -71,7 +71,8 @@ describe Gitlab::UsageData do
web_ide_views: a_kind_of(Integer),
web_ide_commits: a_kind_of(Integer),
web_ide_merge_requests: a_kind_of(Integer),
navbar_searches: a_kind_of(Integer)
navbar_searches: a_kind_of(Integer),
source_code_pushes: a_kind_of(Integer)
)
end
 
Loading
Loading
Loading
Loading
@@ -14,6 +14,10 @@ describe PostReceive do
create(:project, :repository, auto_cancel_pending_pipelines: 'disabled')
end
 
def perform(changes: base64_changes)
described_class.new.perform(gl_repository, key_id, changes)
end
context "as a sidekiq worker" do
it "responds to #perform" do
expect(described_class.new).to respond_to(:perform)
Loading
Loading
@@ -28,7 +32,7 @@ describe PostReceive do
 
it "returns false and logs an error" do
expect(Gitlab::GitLogger).to receive(:error).with("POST-RECEIVE: #{error_message}")
expect(described_class.new.perform(gl_repository, key_id, base64_changes)).to be(false)
expect(perform).to be(false)
end
end
 
Loading
Loading
@@ -39,7 +43,7 @@ describe PostReceive do
expect(Git::TagPushService).not_to receive(:new)
expect_next_instance_of(SystemHooksService) { |service| expect(service).to receive(:execute_hooks) }
 
described_class.new.perform(gl_repository, key_id, "")
perform(changes: "")
end
end
 
Loading
Loading
@@ -50,7 +54,7 @@ describe PostReceive do
expect(Git::BranchPushService).not_to receive(:new)
expect(Git::TagPushService).not_to receive(:new)
 
expect(described_class.new.perform(gl_repository, key_id, base64_changes)).to be false
expect(perform).to be false
end
end
 
Loading
Loading
@@ -81,7 +85,7 @@ describe PostReceive do
 
expect(Git::TagPushService).not_to receive(:new)
 
described_class.new.perform(gl_repository, key_id, base64_changes)
perform
end
end
 
Loading
Loading
@@ -123,7 +127,7 @@ describe PostReceive do
 
expect(Git::BranchPushService).not_to receive(:new)
 
described_class.new.perform(gl_repository, key_id, base64_changes)
perform
end
end
 
Loading
Loading
@@ -134,7 +138,7 @@ describe PostReceive do
expect(Git::BranchPushService).not_to receive(:new)
expect(Git::TagPushService).not_to receive(:new)
 
described_class.new.perform(gl_repository, key_id, base64_changes)
perform
end
end
 
Loading
Loading
@@ -151,7 +155,7 @@ describe PostReceive do
 
let(:changes_count) { changes.lines.count }
 
subject { described_class.new.perform(gl_repository, key_id, base64_changes) }
subject { perform }
 
context "with valid .gitlab-ci.yml" do
before do
Loading
Loading
@@ -220,7 +224,13 @@ describe PostReceive do
it 'calls SystemHooksService' do
expect_any_instance_of(SystemHooksService).to receive(:execute_hooks).with(fake_hook_data, :repository_update_hooks).and_return(true)
 
described_class.new.perform(gl_repository, key_id, base64_changes)
perform
end
it 'increments the usage data counter of pushes event' do
counter = Gitlab::UsageDataCounters::SourceCodeCounter
expect { perform }.to change { counter.read(:pushes) }.by(1)
end
end
end
Loading
Loading
@@ -237,7 +247,7 @@ describe PostReceive do
# a second to ensure we see changes.
Timecop.freeze(1.second.from_now) do
expect do
described_class.new.perform(gl_repository, key_id, base64_changes)
perform
project.reload
end.to change(project, :last_activity_at)
.and change(project, :last_repository_updated_at)
Loading
Loading
@@ -248,7 +258,8 @@ describe PostReceive do
context "webhook" do
it "fetches the correct project" do
expect(Project).to receive(:find_by).with(id: project.id.to_s)
described_class.new.perform(gl_repository, key_id, base64_changes)
perform
end
 
it "does not run if the author is not in the project" do
Loading
Loading
@@ -258,7 +269,7 @@ describe PostReceive do
 
expect(project).not_to receive(:execute_hooks)
 
expect(described_class.new.perform(gl_repository, key_id, base64_changes)).to be_falsey
expect(perform).to be_falsey
end
 
it "asks the project to trigger all hooks" do
Loading
Loading
@@ -267,7 +278,7 @@ describe PostReceive do
expect(project).to receive(:execute_hooks).twice
expect(project).to receive(:execute_services).twice
 
described_class.new.perform(gl_repository, key_id, base64_changes)
perform
end
 
it "enqueues a UpdateMergeRequestsWorker job" do
Loading
Loading
@@ -275,7 +286,7 @@ describe PostReceive do
 
expect(UpdateMergeRequestsWorker).to receive(:perform_async).with(project.id, project.owner.id, any_args)
 
described_class.new.perform(gl_repository, key_id, base64_changes)
perform
end
end
end
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