summaryrefslogtreecommitdiff
path: root/lib/load_testing/fetcher.ex
diff options
context:
space:
mode:
Diffstat (limited to 'lib/load_testing/fetcher.ex')
-rw-r--r--lib/load_testing/fetcher.ex122
1 files changed, 62 insertions, 60 deletions
diff --git a/lib/load_testing/fetcher.ex b/lib/load_testing/fetcher.ex
index 70c0fcd0c..ed744db9b 100644
--- a/lib/load_testing/fetcher.ex
+++ b/lib/load_testing/fetcher.ex
@@ -4,33 +4,18 @@ defmodule Pleroma.LoadTesting.Fetcher do
def fetch_user(user) do
IO.puts("=================================")
- {time, _value} = :timer.tc(fn -> Repo.get_by(User, id: user.id) end)
-
- IO.puts("Query user by id: #{to_sec(time)} sec.")
-
- {time, _value} =
- :timer.tc(fn ->
- Repo.get_by(User, ap_id: user.ap_id)
- end)
-
- IO.puts("Query user by ap_id: #{to_sec(time)} sec.")
-
- {time, _value} =
- :timer.tc(fn ->
- Repo.get_by(User, email: user.email)
- end)
-
- IO.puts("Query user by email: #{to_sec(time)} sec.")
-
- {time, _value} = :timer.tc(fn -> Repo.get_by(User, nickname: user.nickname) end)
-
- IO.puts("Query user by nickname: #{to_sec(time)} sec.")
+ Benchee.run(%{
+ "By id" => fn -> Repo.get_by(User, id: user.id) end,
+ "By ap_id" => fn -> Repo.get_by(User, ap_id: user.ap_id) end,
+ "By email" => fn -> Repo.get_by(User, email: user.email) end,
+ "By nickname" => fn -> Repo.get_by(User, nickname: user.nickname) end
+ })
end
def query_timelines(user) do
IO.puts("\n=================================")
- params = %{
+ home_timeline_params = %{
"count" => 20,
"with_muted" => true,
"type" => ["Create", "Announce"],
@@ -39,14 +24,7 @@ defmodule Pleroma.LoadTesting.Fetcher do
"user" => user
}
- {time, _} =
- :timer.tc(fn ->
- ActivityPub.ActivityPub.fetch_activities([user.ap_id | user.following], params)
- end)
-
- IO.puts("Query user home timeline: #{to_sec(time)} sec.")
-
- params = %{
+ mastodon_public_timeline_params = %{
"count" => 20,
"local_only" => true,
"only_media" => "false",
@@ -56,14 +34,7 @@ defmodule Pleroma.LoadTesting.Fetcher do
"muting_user" => user
}
- {time, _} =
- :timer.tc(fn ->
- ActivityPub.ActivityPub.fetch_public_activities(params)
- end)
-
- IO.puts("Query user mastodon public timeline: #{to_sec(time)} sec.")
-
- params = %{
+ mastodon_federated_timeline_params = %{
"count" => 20,
"only_media" => "false",
"type" => ["Create", "Announce"],
@@ -72,45 +43,76 @@ defmodule Pleroma.LoadTesting.Fetcher do
"muting_user" => user
}
- {time, _} =
- :timer.tc(fn ->
- ActivityPub.ActivityPub.fetch_public_activities(params)
- end)
-
- IO.puts("Query user mastodon federated public timeline: #{to_sec(time)} sec.")
+ Benchee.run(%{
+ "User home timeline" => fn ->
+ Pleroma.Web.ActivityPub.ActivityPub.fetch_activities(
+ [user.ap_id | user.following],
+ home_timeline_params
+ )
+ end,
+ "User mastodon public timeline" => fn ->
+ ActivityPub.ActivityPub.fetch_public_activities(mastodon_public_timeline_params)
+ end,
+ "User mastodon federated public timeline" => fn ->
+ ActivityPub.ActivityPub.fetch_public_activities(mastodon_federated_timeline_params)
+ end
+ })
end
def query_notifications(user) do
IO.puts("\n=================================")
- params = %{"count" => "20", "with_muted" => "false"}
-
- {time, _} =
- :timer.tc(fn -> Pleroma.Web.MastodonAPI.MastodonAPI.get_notifications(user, params) end)
-
- IO.puts("Query user notifications with out muted: #{to_sec(time)} sec.")
+ without_muted_params = %{"count" => "20", "with_muted" => "false"}
+ with_muted_params = %{"count" => "20", "with_muted" => "true"}
+
+ Benchee.run(%{
+ "Notifications without muted" => fn ->
+ Pleroma.Web.MastodonAPI.MastodonAPI.get_notifications(user, without_muted_params)
+ end,
+ "Notifications with muted" => fn ->
+ Pleroma.Web.MastodonAPI.MastodonAPI.get_notifications(user, with_muted_params)
+ end
+ })
+ end
- params = %{"count" => "20", "with_muted" => "true"}
+ def query_dms(user) do
+ IO.puts("\n=================================")
- {time, _} =
- :timer.tc(fn -> Pleroma.Web.MastodonAPI.MastodonAPI.get_notifications(user, params) end)
+ params = %{
+ "count" => "20",
+ "with_muted" => "true",
+ "type" => "Create",
+ "blocking_user" => user,
+ "user" => user,
+ visibility: "direct"
+ }
- IO.puts("Query user notifications with muted: #{to_sec(time)} sec.")
+ Benchee.run(%{
+ "Direct messages with muted" => fn ->
+ Pleroma.Web.ActivityPub.ActivityPub.fetch_activities_query([user.ap_id], params)
+ |> Pleroma.Pagination.fetch_paginated(params)
+ end,
+ "Direct messages without muted" => fn ->
+ Pleroma.Web.ActivityPub.ActivityPub.fetch_activities_query([user.ap_id], params)
+ |> Pleroma.Pagination.fetch_paginated(Map.put(params, "with_muted", false))
+ end
+ })
end
def query_long_thread(user, activity) do
IO.puts("\n=================================")
- {time, replies} =
- :timer.tc(fn ->
+ Benchee.run(%{
+ "Fetch main post" => fn -> Activity.get_by_id_with_object(activity.id) end,
+ "Fetch context of main post" => fn ->
Pleroma.Web.ActivityPub.ActivityPub.fetch_activities_for_context(
activity.data["context"],
%{
"blocking_user" => user,
- "user" => user
+ "user" => user,
+ "exclude_id" => activity.id
}
)
- end)
-
- IO.puts("Query long thread with #{length(replies)} replies: #{to_sec(time)} sec.")
+ end
+ })
end
end