Pārlūkot izejas kodu

use in timelines benchmark new user generator

feature/add-subject-to-text-search
Alexander Strizhakov pirms 4 gadiem
vecāks
revīzija
96e2796557
Šim parakstam datu bāzē netika atrasta zināma atslēga GPG atslēgas ID: 22896A53AEF1381
3 mainītis faili ar 14 papildinājumiem un 19 dzēšanām
  1. +1
    -1
      benchmarks/load_testing/activities.ex
  2. +5
    -4
      benchmarks/load_testing/users.ex
  3. +8
    -14
      benchmarks/mix/tasks/pleroma/benchmarks/timelines.ex

+ 1
- 1
benchmarks/load_testing/activities.ex Parādīt failu

@@ -81,7 +81,7 @@ defmodule Pleroma.LoadTesting.Activities do
)
end)

IO.puts("Generating iterations of activities take #{to_sec(time)} sec.\n")
IO.puts("Generating iterations of activities took #{to_sec(time)} sec.\n")
:ok
end



+ 5
- 4
benchmarks/load_testing/users.ex Parādīt failu

@@ -33,7 +33,7 @@ defmodule Pleroma.LoadTesting.Users do
def generate_users(max) do
IO.puts("Starting generating #{max} users...")

{time, _} =
{time, users} =
:timer.tc(fn ->
Task.async_stream(
1..max,
@@ -41,10 +41,11 @@ defmodule Pleroma.LoadTesting.Users do
max_concurrency: @max_concurrency,
timeout: 30_000
)
|> Stream.run()
|> Enum.to_list()
end)

IO.puts("Generating users take #{to_sec(time)} sec.\n")
IO.puts("Generating users took #{to_sec(time)} sec.\n")
users
end

defp generate_user(i) do
@@ -104,7 +105,7 @@ defmodule Pleroma.LoadTesting.Users do
|> run_stream(main_user)
end)

IO.puts("Making friends take #{to_sec(time)} sec.\n")
IO.puts("Making friends took #{to_sec(time)} sec.\n")
end

def make_friends(%User{} = main_user, %User{} = user) do


+ 8
- 14
benchmarks/mix/tasks/pleroma/benchmarks/timelines.ex Parādīt failu

@@ -1,9 +1,10 @@
defmodule Mix.Tasks.Pleroma.Benchmarks.Timelines do
use Mix.Task
alias Pleroma.Repo
alias Pleroma.LoadTesting.Generator
import Pleroma.LoadTesting.Helper, only: [clean_tables: 0]

alias Pleroma.Web.CommonAPI
alias Plug.Conn

def run(_args) do
Mix.Pleroma.start_pleroma()
@@ -11,7 +12,7 @@ defmodule Mix.Tasks.Pleroma.Benchmarks.Timelines do
# Cleaning tables
clean_tables()

[{:ok, user} | users] = Generator.generate_users(users_max: 1000)
[{:ok, user} | users] = Pleroma.LoadTesting.Users.generate_users(1000)

# Let the user make 100 posts

@@ -38,8 +39,8 @@ defmodule Mix.Tasks.Pleroma.Benchmarks.Timelines do
"user timeline, no followers" => fn reading_user ->
conn =
Phoenix.ConnTest.build_conn()
|> Plug.Conn.assign(:user, reading_user)
|> Plug.Conn.assign(:skip_link_headers, true)
|> Conn.assign(:user, reading_user)
|> Conn.assign(:skip_link_headers, true)

Pleroma.Web.MastodonAPI.AccountController.statuses(conn, %{"id" => user.id})
end
@@ -56,8 +57,8 @@ defmodule Mix.Tasks.Pleroma.Benchmarks.Timelines do
"user timeline, all following" => fn reading_user ->
conn =
Phoenix.ConnTest.build_conn()
|> Plug.Conn.assign(:user, reading_user)
|> Plug.Conn.assign(:skip_link_headers, true)
|> Conn.assign(:user, reading_user)
|> Conn.assign(:skip_link_headers, true)

Pleroma.Web.MastodonAPI.AccountController.statuses(conn, %{"id" => user.id})
end
@@ -66,11 +67,4 @@ defmodule Mix.Tasks.Pleroma.Benchmarks.Timelines do
time: 60
)
end

defp clean_tables do
IO.puts("Deleting old data...\n")
Ecto.Adapters.SQL.query!(Repo, "TRUNCATE users CASCADE;")
Ecto.Adapters.SQL.query!(Repo, "TRUNCATE activities CASCADE;")
Ecto.Adapters.SQL.query!(Repo, "TRUNCATE objects CASCADE;")
end
end

Notiek ielāde…
Atcelt
Saglabāt