mirror of
https://github.com/discourse/discourse.git
synced 2025-03-21 04:35:47 +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:
|
profile:
|
||||||
adapter: postgresql
|
adapter: postgresql
|
||||||
database: discourse_development
|
database: discourse_profile
|
||||||
min_messages: warning
|
min_messages: warning
|
||||||
host: localhost
|
host: localhost
|
||||||
pool: 5
|
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