diff options
Diffstat (limited to 'lib/tasks/dev.rake')
-rw-r--r-- | lib/tasks/dev.rake | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/lib/tasks/dev.rake b/lib/tasks/dev.rake index 4beb94eeb8e..6d3e181744c 100644 --- a/lib/tasks/dev.rake +++ b/lib/tasks/dev.rake @@ -12,4 +12,41 @@ namespace :dev do task load: :environment do Rails.application.eager_load! end + + desc "GitLab | Create many test groups and projects" + task :populate, [:username, :prefix, :group_start, :group_end, :projects_per_group] => :environment do |task, args| + user = User.find_by!(username: args.username || "root") + prefix = args.prefix || "test-1" + group_start = (args.group_start || 1).to_i + group_end = (args.group_end || 5).to_i + projects_per_group = (args.projects_per_group || 100).to_i + + ActiveRecord::Base.logger = nil + + group_start.upto(group_end).each do |gid| + group_name = "#{prefix}-group-#{gid}" + + ActiveRecord::Base.transaction do + group = Group.create!(path: group_name, name: group_name, owner: user) + print "Group #{gid}: " + + 1.upto(projects_per_group).each do |pid| + project_name = "project-#{pid}" + + project = Projects::CreateService.new( + user, + name: project_name, path: project_name, namespace_id: group.id + ).execute + + if project.errors.any? + raise "Failed: #{gid}.#{pid}:\n\t#{project.errors.full_messages.join("\n\t")}" + end + + print "." if pid%10==0 + end + + print "\n" + end + end + end end |