benchmarks/ added favourites timeline

This commit is contained in:
Maksim Pechnikov 2019-11-19 21:11:15 +03:00
parent bf89e0bf38
commit 1fcd579b6d
3 changed files with 34 additions and 1 deletions

View File

@ -57,6 +57,9 @@ defmodule Pleroma.LoadTesting.Fetcher do
Pleroma.Web.ActivityPub.ActivityPub.fetch_public_activities( Pleroma.Web.ActivityPub.ActivityPub.fetch_public_activities(
mastodon_federated_timeline_params mastodon_federated_timeline_params
) )
end,
"User favourites timeline" => fn ->
Pleroma.Web.ActivityPub.ActivityPub.fetch_favourites(user)
end end
}) })
@ -74,6 +77,8 @@ defmodule Pleroma.LoadTesting.Fetcher do
mastodon_federated_timeline_params mastodon_federated_timeline_params
) )
user_favourites = Pleroma.Web.ActivityPub.ActivityPub.fetch_favourites(user)
Benchee.run(%{ Benchee.run(%{
"Rendering home timeline" => fn -> "Rendering home timeline" => fn ->
Pleroma.Web.MastodonAPI.StatusView.render("index.json", %{ Pleroma.Web.MastodonAPI.StatusView.render("index.json", %{
@ -95,7 +100,13 @@ defmodule Pleroma.LoadTesting.Fetcher do
for: user, for: user,
as: :activity as: :activity
}) })
end end,
"Rendering favorites timeline" => fn ->
Pleroma.Web.MastodonAPI.StatusView.render("index.json", %{
activities: user_favourites,
for: user,
as: :activity})
end,
}) })
end end

View File

@ -2,6 +2,24 @@ defmodule Pleroma.LoadTesting.Generator do
use Pleroma.LoadTesting.Helper use Pleroma.LoadTesting.Helper
alias Pleroma.Web.CommonAPI 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 def generate_users(opts) do
IO.puts("Starting generating #{opts[:users_max]} users...") IO.puts("Starting generating #{opts[:users_max]} users...")
{time, _} = :timer.tc(fn -> do_generate_users(opts) end) {time, _} = :timer.tc(fn -> do_generate_users(opts) end)

View File

@ -100,6 +100,10 @@ defmodule Mix.Tasks.Pleroma.LoadTesting do
generate_remote_activities(user, remote_users) generate_remote_activities(user, remote_users)
generate_like_activities(
user, Pleroma.Repo.all(Pleroma.Activity.Queries.by_type("Create"))
)
generate_dms(user, users, opts) generate_dms(user, users, opts)
{:ok, activity} = generate_long_thread(user, users, opts) {:ok, activity} = generate_long_thread(user, users, opts)