1 defmodule Mix.Tasks.Pleroma.Benchmarks.Tags do
4 alias Pleroma.LoadTesting.Generator
8 Mix.Pleroma.start_pleroma()
9 activities_count = Repo.aggregate(from(a in Pleroma.Activity), :count, :id)
11 if activities_count == 0 do
12 IO.puts("Did not find any activities, cleaning and generating")
14 Generator.generate_users(users_max: 10)
15 Generator.generate_tagged_activities()
17 IO.puts("Found #{activities_count} activities, won't generate new ones")
20 tags = Enum.map(0..20, fn i -> {"For #tag_#{i}", "tag_#{i}"} end)
22 Enum.each(tags, fn {_, tag} ->
24 from(o in Pleroma.Object,
25 where: fragment("(?)->'tag' \\? (?)", o.data, ^tag)
28 count = Repo.aggregate(query, :count, :id)
29 IO.puts("Database contains #{count} posts tagged with #{tag}")
32 user = Repo.all(Pleroma.User) |> List.first()
36 "Hashtag fetching" => fn tag ->
37 Pleroma.Web.MastodonAPI.TimelineController.hashtag_fetching(
52 IO.puts("Deleting old data...\n")
53 Ecto.Adapters.SQL.query!(Repo, "TRUNCATE users CASCADE;")
54 Ecto.Adapters.SQL.query!(Repo, "TRUNCATE activities CASCADE;")
55 Ecto.Adapters.SQL.query!(Repo, "TRUNCATE objects CASCADE;")