summaryrefslogtreecommitdiff
path: root/benchmarks
diff options
context:
space:
mode:
authorMaksim Pechnikov <parallel588@gmail.com>2019-11-19 21:11:15 +0300
committerMaksim Pechnikov <parallel588@gmail.com>2019-11-19 21:11:15 +0300
commit1fcd579b6d8c26557dcc6f9d3c9f247d03e7b5a4 (patch)
tree6c8f6ba88bd4801849f5c639ca942139102eecc4 /benchmarks
parentbf89e0bf38d9709f6dd331f5d9b326575994423d (diff)
benchmarks/ added favourites timeline
Diffstat (limited to 'benchmarks')
-rw-r--r--benchmarks/load_testing/fetcher.ex13
-rw-r--r--benchmarks/load_testing/generator.ex18
-rw-r--r--benchmarks/mix/tasks/pleroma/load_testing.ex4
3 files changed, 34 insertions, 1 deletions
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)