forked from AkkomaGang/akkoma
Merge branch 'benchmarks/favourites_timeline' into 'develop'
Benchmarks: favourites timeline See merge request pleroma/pleroma!2027
This commit is contained in:
commit
b21738d4c0
3 changed files with 52 additions and 1 deletions
|
@ -95,7 +95,36 @@ def query_timelines(user) do
|
||||||
for: user,
|
for: user,
|
||||||
as: :activity
|
as: :activity
|
||||||
})
|
})
|
||||||
end
|
end,
|
||||||
|
"Rendering favorites timeline" => fn ->
|
||||||
|
conn = Phoenix.ConnTest.build_conn(:get, "http://localhost:4001/api/v1/favourites", nil)
|
||||||
|
Pleroma.Web.MastodonAPI.StatusController.favourites(
|
||||||
|
%Plug.Conn{conn |
|
||||||
|
assigns: %{user: user},
|
||||||
|
query_params: %{"limit" => "0"},
|
||||||
|
body_params: %{},
|
||||||
|
cookies: %{},
|
||||||
|
params: %{},
|
||||||
|
path_params: %{},
|
||||||
|
private: %{
|
||||||
|
Pleroma.Web.Router => {[], %{}},
|
||||||
|
phoenix_router: Pleroma.Web.Router,
|
||||||
|
phoenix_action: :favourites,
|
||||||
|
phoenix_controller: Pleroma.Web.MastodonAPI.StatusController,
|
||||||
|
phoenix_endpoint: Pleroma.Web.Endpoint,
|
||||||
|
phoenix_format: "json",
|
||||||
|
phoenix_layout: {Pleroma.Web.LayoutView, "app.html"},
|
||||||
|
phoenix_recycled: true,
|
||||||
|
|
||||||
|
phoenix_view: Pleroma.Web.MastodonAPI.StatusView,
|
||||||
|
plug_session: %{"user_id" => user.id},
|
||||||
|
plug_session_fetch: :done,
|
||||||
|
plug_session_info: :write,
|
||||||
|
plug_skip_csrf_protection: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
%{})
|
||||||
|
end,
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -100,6 +100,10 @@ def run(args) 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)
|
||||||
|
|
Loading…
Reference in a new issue