Advertisement
Guest User

Untitled

a guest
Jan 14th, 2017
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.77 KB | None | 0 0
  1. desc <<-END_DESC
  2. Seed sample data for benchmark tests - do not use it with production data!
  3.  
  4. Examples:
  5. # prepare base redmine data
  6. export RAILS_ENV=test
  7. bundle exec rake db:drop db:create db:migrate
  8. bundle exec rake redmine:load_default_data REDMINE_LANG=en
  9. bundle exec rake redmine:plugins:migrate
  10.  
  11. # create data for benchmark tests
  12. time bundle exec rake redmine:sample_data
  13. END_DESC
  14.  
  15. namespace :redmine do
  16. task sample_data: :environment do
  17. user_amount = 1000
  18. project_amount = 2000
  19. issue_per_project_amount = 100
  20. members_per_project = 50
  21. timelog_per_issue = 2
  22. activity = TimeEntryActivity.find_by(name: 'Design')
  23. timelog_start = Date.new(2010, 1, 1).to_time
  24. timelog_end = Time.zone.today.to_time
  25.  
  26. # Create users
  27. print 'Create users'
  28. user_amount.times do |user_num|
  29. user = User.new(
  30. firstname: "Firstname #{user_num}",
  31. lastname: "Lastname #{user_num}",
  32. mail: "user#{user_num}@example.net",
  33. must_change_passwd: false
  34. )
  35. user.login = "user#{user_num}"
  36. user.language = 'en'
  37. user.password = "user#{user_num}password"
  38. user.save!
  39. print '.'
  40. end
  41.  
  42. puts ''
  43. # Create projects
  44. print 'Create projects'
  45. project_amount.times do |project_num|
  46. project = Project.create!(
  47. name: "Project #{project_num}",
  48. identifier: "project-#{project_num}",
  49. is_public: false,
  50. description: "Description for project #{project_num}"
  51. )
  52.  
  53. # Assign members
  54. user_start_pos = rand(10..(1000 - members_per_project))
  55. members_per_project.times do |member_num|
  56. @userid = user_start_pos + member_num
  57. Member.create!(project_id: project.id, user_id: @userid, role_ids: [3, 4])
  58. end
  59.  
  60. member_user = User.find_by(id: @userid)
  61. issue_per_project_amount.times do |issue_num|
  62. status_id = rand(1..6)
  63. issue = Issue.create!(
  64. subject: "Issue #{issue_num} for project #{project_num}",
  65. description: "Description for Issue #{issue_num} in project #{project_num}",
  66. tracker_id: rand(1..3),
  67. author_id: member_user.id,
  68. status_id: status_id,
  69. priority: IssuePriority.first,
  70. project_id: project.id
  71. )
  72.  
  73. timelog_per_issue.times do |timelog_num|
  74. TimeEntry.create(spent_on: Time.zone.at((timelog_start.to_f - timelog_end.to_f) * rand + timelog_end.to_f),
  75. hours: rand(1..10),
  76. issue: issue,
  77. project: project,
  78. comments: "Time log #{timelog_num} with issue #{issue_num} in project #{project_num}",
  79. user: member_user,
  80. activity: activity)
  81. end
  82. end
  83. print '.'
  84. end
  85. end
  86. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement