Prune old field tests for ongoing tests (#6540) [deploy]
This commit is contained in:
parent
b096b19897
commit
5bd042e7d6
4 changed files with 50 additions and 0 deletions
13
app/workers/field_tests/prune_old_experiments_worker.rb
Normal file
13
app/workers/field_tests/prune_old_experiments_worker.rb
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
module FieldTests
|
||||
class PruneOldExperimentsWorker
|
||||
include Sidekiq::Worker
|
||||
sidekiq_options queue: :low_priority, retry: 10
|
||||
|
||||
def perform
|
||||
five_precent_membership_count = FieldTest::Membership.count / 20
|
||||
memberships = FieldTest::Membership.first(five_precent_membership_count)
|
||||
FieldTest::Event.where(field_test_membership_id: memberships.pluck(:id)).delete_all
|
||||
memberships.map(&:delete)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -98,6 +98,13 @@ task award_contributor_badges_from_github: :environment do
|
|||
BadgeRewarder.award_contributor_badges_from_github
|
||||
end
|
||||
|
||||
# This task is meant to be scheduled daily
|
||||
task prune_old_field_tests: :environment do
|
||||
# For rolling ongoing experiemnts, we remove old experiment memberships
|
||||
# So that they can be re-tested.
|
||||
FieldTests::PruneOldExperimentsWorker.perform_async
|
||||
end
|
||||
|
||||
task remove_old_html_variant_data: :environment do
|
||||
HtmlVariantTrial.where("created_at < ?", 2.weeks.ago).destroy_all
|
||||
HtmlVariantSuccess.where("created_at < ?", 2.weeks.ago).destroy_all
|
||||
|
|
|
|||
8
spec/factories/field_test_memberships.rb
Normal file
8
spec/factories/field_test_memberships.rb
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
FactoryBot.define do
|
||||
factory :field_test_memberships, class: "FieldTest::Membership" do
|
||||
converted { false }
|
||||
experiment { :user_home_feed }
|
||||
participant_type { "User" }
|
||||
variant { "base" }
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
require "rails_helper"
|
||||
|
||||
RSpec.describe FieldTests::PruneOldExperimentsWorker, type: :worker do
|
||||
include_examples "#enqueues_on_correct_queue", "low_priority", 1
|
||||
include FieldTest::Helpers
|
||||
|
||||
describe "#perform" do
|
||||
let(:worker) { subject }
|
||||
|
||||
it "prunes first 5% of memberships and events" do
|
||||
create_list(:user, 40)
|
||||
User.all.each do |user|
|
||||
create(:field_test_memberships, participant_id: user.id.to_s)
|
||||
field_test_converted(:user_home_feed, participant: user, goal: "user_creates_comment")
|
||||
end
|
||||
worker.perform
|
||||
expect(FieldTest::Membership.count).to be(38)
|
||||
expect(FieldTest::Event.count).to be(38)
|
||||
expect(FieldTest::Event.pluck(:field_test_membership_id).sort).to eq(FieldTest::Membership.pluck(:id).sort)
|
||||
end
|
||||
end
|
||||
end
|
||||
Loading…
Add table
Reference in a new issue