From: Maksim Pechnikov <parallel588@gmail.com>
Date: Tue, 19 Nov 2019 18:11:15 +0000 (+0300)
Subject: benchmarks/ added favourites timeline
X-Git-Url: https://git.squeep.com/?a=commitdiff_plain;h=1fcd579b6d8c26557dcc6f9d3c9f247d03e7b5a4;p=akkoma

benchmarks/ added favourites timeline
---

diff --git a/benchmarks/load_testing/fetcher.ex b/benchmarks/load_testing/fetcher.ex
index cdc073b2e..776105d34 100644
--- a/benchmarks/load_testing/fetcher.ex
+++ b/benchmarks/load_testing/fetcher.ex
@@ -57,6 +57,9 @@ defmodule Pleroma.LoadTesting.Fetcher do
         Pleroma.Web.ActivityPub.ActivityPub.fetch_public_activities(
           mastodon_federated_timeline_params
         )
+      end,
+      "User favourites timeline" => fn ->
+        Pleroma.Web.ActivityPub.ActivityPub.fetch_favourites(user)
       end
     })
 
@@ -74,6 +77,8 @@ defmodule Pleroma.LoadTesting.Fetcher do
         mastodon_federated_timeline_params
       )
 
+    user_favourites = Pleroma.Web.ActivityPub.ActivityPub.fetch_favourites(user)
+
     Benchee.run(%{
       "Rendering home timeline" => fn ->
         Pleroma.Web.MastodonAPI.StatusView.render("index.json", %{
@@ -95,7 +100,13 @@ defmodule Pleroma.LoadTesting.Fetcher do
           for: user,
           as: :activity
         })
-      end
+      end,
+      "Rendering favorites timeline" => fn ->
+        Pleroma.Web.MastodonAPI.StatusView.render("index.json", %{
+              activities: user_favourites,
+              for: user,
+              as: :activity})
+      end,
     })
   end
 
diff --git a/benchmarks/load_testing/generator.ex b/benchmarks/load_testing/generator.ex
index b4432bdb7..f42fd363e 100644
--- a/benchmarks/load_testing/generator.ex
+++ b/benchmarks/load_testing/generator.ex
@@ -2,6 +2,24 @@ defmodule Pleroma.LoadTesting.Generator do
   use Pleroma.LoadTesting.Helper
   alias Pleroma.Web.CommonAPI
 
+  def generate_like_activities(user, posts) do
+    count_likes = Kernel.trunc(length(posts) / 4)
+    IO.puts("Starting generating #{count_likes} like activities...")
+
+    {time, _} =
+      :timer.tc(fn ->
+        Task.async_stream(
+           Enum.take_random(posts, count_likes),
+          fn post -> {:ok, _, _} = CommonAPI.favorite(post.id, user) end,
+          max_concurrency: 10,
+          timeout: 30_000
+        )
+        |> Stream.run()
+      end)
+
+    IO.puts("Inserting like activities take #{to_sec(time)} sec.\n")
+  end
+
   def generate_users(opts) do
     IO.puts("Starting generating #{opts[:users_max]} users...")
     {time, _} = :timer.tc(fn -> do_generate_users(opts) end)
diff --git a/benchmarks/mix/tasks/pleroma/load_testing.ex b/benchmarks/mix/tasks/pleroma/load_testing.ex
index 4fa3eec49..0a751adac 100644
--- a/benchmarks/mix/tasks/pleroma/load_testing.ex
+++ b/benchmarks/mix/tasks/pleroma/load_testing.ex
@@ -100,6 +100,10 @@ defmodule Mix.Tasks.Pleroma.LoadTesting do
 
     generate_remote_activities(user, remote_users)
 
+    generate_like_activities(
+      user, Pleroma.Repo.all(Pleroma.Activity.Queries.by_type("Create"))
+    )
+
     generate_dms(user, users, opts)
 
     {:ok, activity} = generate_long_thread(user, users, opts)