mirror of
https://github.com/discourse/discourse.git
synced 2025-03-20 06:16:41 +08:00
Create profile db generator for use when benchmarking a local install http://meta.discourse.org/t/benchmarking-discourse-locally/9070
This commit is contained in:
parent
f517df6768
commit
10b02b1288
@ -39,7 +39,7 @@ production:
|
||||
|
||||
profile:
|
||||
adapter: postgresql
|
||||
database: discourse_development
|
||||
database: discourse_profile
|
||||
min_messages: warning
|
||||
host: localhost
|
||||
pool: 5
|
||||
|
73
script/profile_db_generator.rb
Normal file
73
script/profile_db_generator.rb
Normal file
@ -0,0 +1,73 @@
|
||||
# can be used to generate a mock db for profiling purposes
|
||||
|
||||
require 'optparse'
|
||||
require 'gabbler'
|
||||
|
||||
user_id = nil
|
||||
|
||||
def sentence
|
||||
@gabbler ||= Gabbler.new.tap do |gabbler|
|
||||
story = File.read(File.dirname(__FILE__) + "/alice.txt")
|
||||
gabbler.learn(story)
|
||||
end
|
||||
|
||||
sentence = ""
|
||||
until sentence.length > 800 do
|
||||
sentence << @gabbler.sentence
|
||||
sentence << "\n"
|
||||
end
|
||||
sentence
|
||||
end
|
||||
|
||||
def create_admin(seq)
|
||||
User.new.tap { |admin|
|
||||
admin.email = "admin@localhost#{seq}"
|
||||
admin.username = "admin#{seq}"
|
||||
admin.password = "password"
|
||||
admin.save
|
||||
admin.grant_admin!
|
||||
admin.change_trust_level!(:regular)
|
||||
admin.email_tokens.update_all(confirmed: true)
|
||||
}
|
||||
end
|
||||
|
||||
require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
|
||||
|
||||
unless Rails.env == "profile"
|
||||
puts "This script should only be used in the profile environment"
|
||||
exit
|
||||
end
|
||||
|
||||
unless User.count == 0
|
||||
puts "Only run this script against an empty DB"
|
||||
exit
|
||||
end
|
||||
|
||||
puts "Creating 100 users"
|
||||
users = 100.times.map do |i|
|
||||
putc "."
|
||||
create_admin(i)
|
||||
end
|
||||
|
||||
puts
|
||||
puts "Creating 10 categories"
|
||||
categories = 10.times.map do |i|
|
||||
putc "."
|
||||
Category.create(name: "category#{i}", text_color: "ffffff", color: "000000", user: users.first)
|
||||
end
|
||||
|
||||
puts
|
||||
puts "Creating 100 topics"
|
||||
|
||||
topic_ids = 100.times.map do
|
||||
topic = PostCreator.create(users.sample, raw: sentence, title: sentence[0..50].strip, category: categories.sample.name, skip_validations: true)
|
||||
putc "."
|
||||
topic.id
|
||||
end
|
||||
|
||||
puts
|
||||
puts "creating 2000 replies"
|
||||
2000.times do
|
||||
putc "."
|
||||
PostCreator.create(users.sample, raw: sentence, topic_id: topic_ids.sample, skip_validations: true)
|
||||
end
|
Loading…
x
Reference in New Issue
Block a user