summaryrefslogtreecommitdiff
path: root/db/fixtures/development/29_usage_trends.rb
diff options
context:
space:
mode:
Diffstat (limited to 'db/fixtures/development/29_usage_trends.rb')
-rw-r--r--db/fixtures/development/29_usage_trends.rb40
1 files changed, 40 insertions, 0 deletions
diff --git a/db/fixtures/development/29_usage_trends.rb b/db/fixtures/development/29_usage_trends.rb
new file mode 100644
index 00000000000..f6496e5cd3d
--- /dev/null
+++ b/db/fixtures/development/29_usage_trends.rb
@@ -0,0 +1,40 @@
+# frozen_string_literal: true
+
+require './spec/support/sidekiq_middleware'
+
+Gitlab::Seeder.quiet do
+ chance_for_decrement = 0.1 # 10% chance that we'll generate smaller count than the previous count
+ max_increase = 10000
+ max_decrease = 1000
+
+ model_class = Analytics::UsageTrends::Measurement
+
+ # Skip generating data for billable_users, to avoid license check problems
+ measurements = model_class.identifiers.except(:billable_users).each_value.flat_map do |id|
+ recorded_at = 60.days.ago
+ current_count = rand(1_000_000)
+
+ # Insert random counts for the last 60 days
+ Array.new(60) do
+ recorded_at = (recorded_at + 1.day).end_of_day - 5.minutes
+
+ # Normally our counts should slowly increase as the gitlab instance grows.
+ # Small chance (10%) to have a slight decrease (simulating cleanups, bulk delete)
+ if rand < chance_for_decrement
+ current_count -= rand(max_decrease)
+ else
+ current_count += rand(max_increase)
+ end
+
+ {
+ recorded_at: recorded_at,
+ count: current_count,
+ identifier: id
+ }
+ end
+ end
+
+ model_class.upsert_all(measurements, unique_by: [:identifier, :recorded_at])
+
+ print '.'
+end