mirror of
https://github.com/Retrospring/retrospring.git
synced 2024-11-20 10:29:53 +01:00
Merge pull request #1148 from Retrospring/moar-metrics
metrics: add counter for created/destroyed users
This commit is contained in:
commit
55090a42f8
4 changed files with 70 additions and 12 deletions
|
@ -134,3 +134,6 @@ Style/EndlessMethod:
|
|||
|
||||
Style/TrailingCommaInHashLiteral:
|
||||
EnforcedStyleForMultiline: consistent_comma
|
||||
|
||||
Style/TrailingCommaInArguments:
|
||||
EnforcedStyleForMultiline: consistent_comma
|
||||
|
|
|
@ -85,8 +85,14 @@ class User < ApplicationRecord # rubocop:disable Metrics/ClassLength
|
|||
end
|
||||
end
|
||||
|
||||
after_destroy do
|
||||
Retrospring::Metrics::USERS_DESTROYED.increment
|
||||
end
|
||||
|
||||
after_create do
|
||||
Profile.create(user_id: id) if Profile.where(user_id: id).count.zero?
|
||||
|
||||
Retrospring::Metrics::USERS_CREATED.increment
|
||||
end
|
||||
|
||||
# use the screen name as parameter for url helpers
|
||||
|
|
|
@ -24,55 +24,65 @@ module Retrospring
|
|||
labels: [:version],
|
||||
preset_labels: {
|
||||
version: Retrospring::Version.to_s,
|
||||
}
|
||||
},
|
||||
).tap { _1.set 1 }
|
||||
|
||||
QUESTIONS_ASKED = counter(
|
||||
:retrospring_questions_asked_total,
|
||||
docstring: "How many questions got asked",
|
||||
labels: %i[anonymous followers generated]
|
||||
labels: %i[anonymous followers generated],
|
||||
)
|
||||
|
||||
QUESTIONS_ANSWERED = counter(
|
||||
:retrospring_questions_answered_total,
|
||||
docstring: "How many questions got answered"
|
||||
docstring: "How many questions got answered",
|
||||
)
|
||||
|
||||
COMMENTS_CREATED = counter(
|
||||
:retrospring_comments_created_total,
|
||||
docstring: "How many comments got created"
|
||||
docstring: "How many comments got created",
|
||||
)
|
||||
|
||||
USERS_CREATED = counter(
|
||||
:retrospring_users_created_total,
|
||||
docstring: "How many users got created",
|
||||
)
|
||||
|
||||
USERS_DESTROYED = counter(
|
||||
:retrospring_users_destroyed_total,
|
||||
docstring: "How many users deleted their accounts",
|
||||
)
|
||||
|
||||
# metrics from Sidekiq::Stats.new
|
||||
SIDEKIQ = {
|
||||
processed: gauge(
|
||||
:sidekiq_processed,
|
||||
docstring: "Number of jobs processed by Sidekiq"
|
||||
docstring: "Number of jobs processed by Sidekiq",
|
||||
),
|
||||
failed: gauge(
|
||||
:sidekiq_failed,
|
||||
docstring: "Number of jobs that failed"
|
||||
docstring: "Number of jobs that failed",
|
||||
),
|
||||
scheduled_size: gauge(
|
||||
:sidekiq_scheduled_jobs,
|
||||
docstring: "Number of jobs that are enqueued"
|
||||
docstring: "Number of jobs that are enqueued",
|
||||
),
|
||||
retry_size: gauge(
|
||||
:sidekiq_retried_jobs,
|
||||
docstring: "Number of jobs that are being retried"
|
||||
docstring: "Number of jobs that are being retried",
|
||||
),
|
||||
dead_size: gauge(
|
||||
:sidekiq_dead_jobs,
|
||||
docstring: "Number of jobs that are dead"
|
||||
docstring: "Number of jobs that are dead",
|
||||
),
|
||||
processes_size: gauge(
|
||||
:sidekiq_processes,
|
||||
docstring: "Number of active Sidekiq processes"
|
||||
docstring: "Number of active Sidekiq processes",
|
||||
),
|
||||
queue_enqueued: gauge(
|
||||
:sidekiq_queues_enqueued,
|
||||
docstring: "Number of enqueued jobs per queue",
|
||||
labels: %i[queue]
|
||||
labels: %i[queue],
|
||||
),
|
||||
}.freeze
|
||||
end
|
||||
|
|
|
@ -10,7 +10,7 @@ RSpec.describe User, type: :model do
|
|||
@user = User.new(
|
||||
screen_name: "FunnyMeme2004",
|
||||
password: "y_u_no_secure_password?",
|
||||
email: "nice.meme@nsa.gov"
|
||||
email: "nice.meme@nsa.gov",
|
||||
)
|
||||
Profile.new(user: @user)
|
||||
end
|
||||
|
@ -33,6 +33,45 @@ RSpec.describe User, type: :model do
|
|||
end
|
||||
end
|
||||
|
||||
describe "callbacks" do
|
||||
describe "before_destroy" do
|
||||
it "marks reports about this user as deleted" do
|
||||
other_user = FactoryBot.create(:user)
|
||||
other_user.report me, "va tutto benissimo"
|
||||
|
||||
expect { me.destroy }
|
||||
.to change { Reports::User.find_by(target_id: me.id).deleted? }
|
||||
.from(false)
|
||||
.to(true)
|
||||
end
|
||||
end
|
||||
|
||||
describe "after_destroy" do
|
||||
it "increments the users_destroyed metric" do
|
||||
expect { me.destroy }.to change { Retrospring::Metrics::USERS_DESTROYED.values.values.sum }.by(1)
|
||||
end
|
||||
end
|
||||
|
||||
describe "after_create" do
|
||||
subject :user do
|
||||
User.create!(
|
||||
screen_name: "konqi",
|
||||
email: "konqi@example.rrerr.net",
|
||||
password: "dragonsRQt5",
|
||||
)
|
||||
end
|
||||
|
||||
it "creates a profile for the user" do
|
||||
expect { user }.to change { Profile.count }.by(1)
|
||||
expect(Profile.find_by(user:).user).to eq(user)
|
||||
end
|
||||
|
||||
it "increments the users_created metric" do
|
||||
expect { user }.to change { Retrospring::Metrics::USERS_CREATED.values.values.sum }.by(1)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "custom sharing url validation" do
|
||||
subject do
|
||||
FactoryBot.build(:user, sharing_custom_url: url).tap(&:validate).errors[:sharing_custom_url]
|
||||
|
|
Loading…
Reference in a new issue