summaryrefslogtreecommitdiff
path: root/benchmarks
diff options
context:
space:
mode:
authorAlexander Strizhakov <alex.strizhakov@gmail.com>2020-03-31 16:53:11 +0300
committerAlexander Strizhakov <alex.strizhakov@gmail.com>2020-07-06 09:30:42 +0300
commitda509487b21bbb627e5fdac6815ad9b3e4e4728b (patch)
treeff1bde6de0da05e62184a5553c74ae2d16149991 /benchmarks
parent20c27bef4083330a2415f1c0a04e4cad128b267a (diff)
adding benchmarks in new format
Diffstat (limited to 'benchmarks')
-rw-r--r--benchmarks/load_testing/activities.ex10
-rw-r--r--benchmarks/load_testing/fetcher.ex34
2 files changed, 42 insertions, 2 deletions
diff --git a/benchmarks/load_testing/activities.ex b/benchmarks/load_testing/activities.ex
index 074ded457..f5c7bfce8 100644
--- a/benchmarks/load_testing/activities.ex
+++ b/benchmarks/load_testing/activities.ex
@@ -24,6 +24,7 @@ defmodule Pleroma.LoadTesting.Activities do
@visibility ~w(public private direct unlisted)
@types [
:simple,
+ :simple_filtered,
:emoji,
:mentions,
:hell_thread,
@@ -242,6 +243,15 @@ defmodule Pleroma.LoadTesting.Activities do
insert_local_activity(visibility, group, users, "Simple status")
end
+ defp insert_activity(:simple_filtered, visibility, group, users, _opts)
+ when group in @remote_groups do
+ insert_remote_activity(visibility, group, users, "Remote status which must be filtered")
+ end
+
+ defp insert_activity(:simple_filtered, visibility, group, users, _opts) do
+ insert_local_activity(visibility, group, users, "Simple status which must be filtered")
+ end
+
defp insert_activity(:emoji, visibility, group, users, _opts)
when group in @remote_groups do
insert_remote_activity(visibility, group, users, "Remote status with emoji :firefox:")
diff --git a/benchmarks/load_testing/fetcher.ex b/benchmarks/load_testing/fetcher.ex
index 15fd06c3d..dfbd916be 100644
--- a/benchmarks/load_testing/fetcher.ex
+++ b/benchmarks/load_testing/fetcher.ex
@@ -32,10 +32,22 @@ defmodule Pleroma.LoadTesting.Fetcher do
)
end
+ defp create_filter(user) do
+ Pleroma.Filter.create(%Pleroma.Filter{
+ user_id: user.id,
+ phrase: "must be filtered",
+ hide: true
+ })
+ end
+
+ defp delete_filter(filter), do: Repo.delete(filter)
+
defp fetch_timelines(user) do
fetch_home_timeline(user)
+ fetch_home_timeline_with_filter(user)
fetch_direct_timeline(user)
fetch_public_timeline(user)
+ fetch_public_timeline_with_filter(user)
fetch_public_timeline(user, :with_blocks)
fetch_public_timeline(user, :local)
fetch_public_timeline(user, :tag)
@@ -61,7 +73,7 @@ defmodule Pleroma.LoadTesting.Fetcher do
}
end
- defp fetch_home_timeline(user) do
+ defp fetch_home_timeline(user, title_end \\ "") do
opts = opts_for_home_timeline(user)
recipients = [user.ap_id | User.following(user)]
@@ -84,9 +96,11 @@ defmodule Pleroma.LoadTesting.Fetcher do
|> Enum.reverse()
|> List.last()
+ title = "home timeline " <> title_end
+
Benchee.run(
%{
- "home timeline" => fn opts -> ActivityPub.fetch_activities(recipients, opts) end
+ title => fn opts -> ActivityPub.fetch_activities(recipients, opts) end
},
inputs: %{
"1 page" => opts,
@@ -108,6 +122,14 @@ defmodule Pleroma.LoadTesting.Fetcher do
)
end
+ defp fetch_home_timeline_with_filter(user) do
+ {:ok, filter} = create_filter(user)
+
+ fetch_home_timeline(user, "with filters")
+
+ delete_filter(filter)
+ end
+
defp opts_for_direct_timeline(user) do
%{
visibility: "direct",
@@ -210,6 +232,14 @@ defmodule Pleroma.LoadTesting.Fetcher do
fetch_public_timeline(opts, "public timeline")
end
+ defp fetch_public_timeline_with_filter(user) do
+ {:ok, filter} = create_filter(user)
+ opts = opts_for_public_timeline(user)
+
+ fetch_public_timeline(opts, "public timeline with filters")
+ delete_filter(filter)
+ end
+
defp fetch_public_timeline(user, :local) do
opts = opts_for_public_timeline(user, :local)