diff --git a/app/workers/massive_likes_creator_worker.rb b/app/workers/massive_likes_creator_worker.rb new file mode 100644 index 0000000000000000000000000000000000000000..79506a6831d6571a912b2a24990054f0f60ed616 --- /dev/null +++ b/app/workers/massive_likes_creator_worker.rb @@ -0,0 +1,21 @@ +class MassiveLikesCreatorWorker + + include Sidekiq::Worker + include RepositoriesProxy + + def perform(item_id, users_ids) + + item = learning_object_repository.find item_id + + users_ids.each do |user_id| + user = User.find user_id + begin + learning_object_repository.like user, item + rescue + next + end + end + + end + +end diff --git a/app/workers/massive_views_creator_worker.rb b/app/workers/massive_views_creator_worker.rb new file mode 100644 index 0000000000000000000000000000000000000000..a5903a0a87314ecb87074abfc47cf1e90e4ab418 --- /dev/null +++ b/app/workers/massive_views_creator_worker.rb @@ -0,0 +1,21 @@ +class MassiveViewsCreatorWorker + + include Sidekiq::Worker + include RepositoriesProxy + + def perform(item_id, users_ids) + + item = learning_object_repository.find item_id + + users_ids.each do |user_id| + user = User.find user_id + begin + learning_object_repository.increment_views user, item + rescue + next + end + end + + end + +end diff --git a/lib/tasks/fakeData.rake b/lib/tasks/fakeData.rake new file mode 100644 index 0000000000000000000000000000000000000000..0552285fb647d4685e70635b71219ae13b0bc49e --- /dev/null +++ b/lib/tasks/fakeData.rake @@ -0,0 +1,89 @@ +namespace :fakedata do + desc "Fake data generation tasks" + + task generate_users: :environment do + desc "Generate fake Users" + + include RepositoriesProxy + + total_new_users = 50 + + (1..total_new_users).each do |i| + user = User.new( + :name => "User#{i}", + :email => "user#{i}@inf.ufpr.br", + :password => "1234567890", + :password_confirmation => "1234567890" + ) + user.save + end + end + + task generate_data: :environment do + desc "Generate fake user Likes/Views data" + + include RepositoriesProxy + + # Quantity of items fetched on each iteration + limit = 100 + + # Start point from where items will be fetched + offset = 0 + + users = User.all + + loop do + + begin + # Get items from dspace (from offset to offset+limit) + learning_objects = learning_object_repository.all(limit,offset) + rescue + # Sleeps for a while to wait database's recovery + sleep(30.seconds) + # Goes to next iteration to retry + next + else + # Terminate loop if there are no more items to import + break if learning_objects.empty? + + # Increment offset, to get new items on next iteration + offset = offset + limit + + learning_objects.each do |lo| + + users_views = [] + users_likes = [] + + users.each do |user| + # Randomize "Views" + if random_check(30) + users_views << user. id + # Randomize "Likes" + if random_check(70) + users_likes << user.id + end + end + end + + MassiveViewsCreatorWorker.perform_async(lo.id, users_views) + MassiveLikesCreatorWorker.perform_async(lo.id, users_likes) + + end + + end + + end + + end + + private + + def random_check(threshold) + if rand(1..100) <= threshold + return true + else + return false + end + end + +end