diff options
Diffstat (limited to 'benchmarks')
| -rw-r--r-- | benchmarks/load_testing/activities.ex | 4 | ||||
| -rw-r--r-- | benchmarks/load_testing/fetcher.ex | 76 | ||||
| -rw-r--r-- | benchmarks/mix/tasks/pleroma/load_testing.ex | 1 | 
3 files changed, 73 insertions, 8 deletions
| diff --git a/benchmarks/load_testing/activities.ex b/benchmarks/load_testing/activities.ex index 23ee2b987..482e42fc1 100644 --- a/benchmarks/load_testing/activities.ex +++ b/benchmarks/load_testing/activities.ex @@ -279,7 +279,7 @@ defmodule Pleroma.LoadTesting.Activities do      actor = get_actor(group, user, friends, non_friends)      with activity_id when not is_nil(activity_id) <- get_random_create_activity_id(), -         {:ok, _activity, _object} <- CommonAPI.favorite(activity_id, actor) do +         {:ok, _activity} <- CommonAPI.favorite(actor, activity_id) do        :ok      else        {:error, _} -> @@ -313,7 +313,7 @@ defmodule Pleroma.LoadTesting.Activities do      tasks = get_reply_tasks(visibility, group)      {:ok, activity} = -      CommonAPI.post(user, %{"status" => "Simple status", "visibility" => "unlisted"}) +      CommonAPI.post(user, %{"status" => "Simple status", "visibility" => visibility})      acc = {activity.id, ["@" <> actor.nickname, "reply to status"]}      insert_replies(tasks, visibility, user, friends, non_friends, acc) diff --git a/benchmarks/load_testing/fetcher.ex b/benchmarks/load_testing/fetcher.ex index bd65ac84f..12c30f6f5 100644 --- a/benchmarks/load_testing/fetcher.ex +++ b/benchmarks/load_testing/fetcher.ex @@ -41,6 +41,7 @@ defmodule Pleroma.LoadTesting.Fetcher do      fetch_notifications(user)      fetch_favourites(user)      fetch_long_thread(user) +    fetch_timelines_with_reply_filtering(user)    end    defp render_views(user) do @@ -386,47 +387,56 @@ defmodule Pleroma.LoadTesting.Fetcher do      favourites = ActivityPub.fetch_favourites(user) +    output_relationships = +      !!Pleroma.Config.get([:extensions, :output_relationships_in_statuses_by_default]) +      Benchee.run(        %{          "Rendering home timeline" => fn ->            StatusView.render("index.json", %{              activities: home_activities,              for: user, -            as: :activity +            as: :activity, +            skip_relationships: !output_relationships            })          end,          "Rendering direct timeline" => fn ->            StatusView.render("index.json", %{              activities: direct_activities,              for: user, -            as: :activity +            as: :activity, +            skip_relationships: !output_relationships            })          end,          "Rendering public timeline" => fn ->            StatusView.render("index.json", %{              activities: public_activities,              for: user, -            as: :activity +            as: :activity, +            skip_relationships: !output_relationships            })          end,          "Rendering tag timeline" => fn ->            StatusView.render("index.json", %{              activities: tag_activities,              for: user, -            as: :activity +            as: :activity, +            skip_relationships: !output_relationships            })          end,          "Rendering notifications" => fn ->            Pleroma.Web.MastodonAPI.NotificationView.render("index.json", %{              notifications: notifications, -            for: user +            for: user, +            skip_relationships: !output_relationships            })          end,          "Rendering favourites timeline" => fn ->            StatusView.render("index.json", %{              activities: favourites,              for: user, -            as: :activity +            as: :activity, +            skip_relationships: !output_relationships            })          end        }, @@ -486,4 +496,58 @@ defmodule Pleroma.LoadTesting.Fetcher do        formatters: formatters()      )    end + +  defp fetch_timelines_with_reply_filtering(user) do +    public_params = opts_for_public_timeline(user) + +    Benchee.run( +      %{ +        "Public timeline without reply filtering" => fn -> +          ActivityPub.fetch_public_activities(public_params) +        end, +        "Public timeline with reply filtering - following" => fn -> +          public_params +          |> Map.put("reply_visibility", "following") +          |> Map.put("reply_filtering_user", user) +          |> ActivityPub.fetch_public_activities() +        end, +        "Public timeline with reply filtering - self" => fn -> +          public_params +          |> Map.put("reply_visibility", "self") +          |> Map.put("reply_filtering_user", user) +          |> ActivityPub.fetch_public_activities() +        end +      }, +      formatters: formatters() +    ) + +    private_params = opts_for_home_timeline(user) + +    recipients = [user.ap_id | User.following(user)] + +    Benchee.run( +      %{ +        "Home timeline without reply filtering" => fn -> +          ActivityPub.fetch_activities(recipients, private_params) +        end, +        "Home timeline with reply filtering - following" => fn -> +          private_params = +            private_params +            |> Map.put("reply_filtering_user", user) +            |> Map.put("reply_visibility", "following") + +          ActivityPub.fetch_activities(recipients, private_params) +        end, +        "Home timeline with reply filtering - self" => fn -> +          private_params = +            private_params +            |> Map.put("reply_filtering_user", user) +            |> Map.put("reply_visibility", "self") + +          ActivityPub.fetch_activities(recipients, private_params) +        end +      }, +      formatters: formatters() +    ) +  end  end diff --git a/benchmarks/mix/tasks/pleroma/load_testing.ex b/benchmarks/mix/tasks/pleroma/load_testing.ex index 72b225f09..388883240 100644 --- a/benchmarks/mix/tasks/pleroma/load_testing.ex +++ b/benchmarks/mix/tasks/pleroma/load_testing.ex @@ -44,6 +44,7 @@ defmodule Mix.Tasks.Pleroma.LoadTesting do    ]    def run(args) do +    Logger.configure(level: :error)      Mix.Pleroma.start_pleroma()      clean_tables()      {opts, _} = OptionParser.parse!(args, strict: @switches, aliases: @aliases) | 
