forked from AkkomaGang/akkoma
Merge branch 'fix/remove-useless-sleep' into 'develop'
Remove useless sleeping/reduce it See merge request pleroma/pleroma!2069
This commit is contained in:
commit
804b961d3c
5 changed files with 39 additions and 37 deletions
|
@ -5,7 +5,9 @@
|
||||||
defmodule Pleroma.Conversation.ParticipationTest do
|
defmodule Pleroma.Conversation.ParticipationTest do
|
||||||
use Pleroma.DataCase
|
use Pleroma.DataCase
|
||||||
import Pleroma.Factory
|
import Pleroma.Factory
|
||||||
|
alias Pleroma.Conversation
|
||||||
alias Pleroma.Conversation.Participation
|
alias Pleroma.Conversation.Participation
|
||||||
|
alias Pleroma.Repo
|
||||||
alias Pleroma.User
|
alias Pleroma.User
|
||||||
alias Pleroma.Web.CommonAPI
|
alias Pleroma.Web.CommonAPI
|
||||||
|
|
||||||
|
@ -98,7 +100,9 @@ test "it creates a participation for a conversation and a user" do
|
||||||
assert participation.user_id == user.id
|
assert participation.user_id == user.id
|
||||||
assert participation.conversation_id == conversation.id
|
assert participation.conversation_id == conversation.id
|
||||||
|
|
||||||
|
# Needed because updated_at is accurate down to a second
|
||||||
:timer.sleep(1000)
|
:timer.sleep(1000)
|
||||||
|
|
||||||
# Creating again returns the same participation
|
# Creating again returns the same participation
|
||||||
{:ok, %Participation{} = participation_two} =
|
{:ok, %Participation{} = participation_two} =
|
||||||
Participation.create_for_user_and_conversation(user, conversation)
|
Participation.create_for_user_and_conversation(user, conversation)
|
||||||
|
@ -150,9 +154,7 @@ test "it marks all the user's participations as read" do
|
||||||
test "gets all the participations for a user, ordered by updated at descending" do
|
test "gets all the participations for a user, ordered by updated at descending" do
|
||||||
user = insert(:user)
|
user = insert(:user)
|
||||||
{:ok, activity_one} = CommonAPI.post(user, %{"status" => "x", "visibility" => "direct"})
|
{:ok, activity_one} = CommonAPI.post(user, %{"status" => "x", "visibility" => "direct"})
|
||||||
:timer.sleep(1000)
|
|
||||||
{:ok, activity_two} = CommonAPI.post(user, %{"status" => "x", "visibility" => "direct"})
|
{:ok, activity_two} = CommonAPI.post(user, %{"status" => "x", "visibility" => "direct"})
|
||||||
:timer.sleep(1000)
|
|
||||||
|
|
||||||
{:ok, activity_three} =
|
{:ok, activity_three} =
|
||||||
CommonAPI.post(user, %{
|
CommonAPI.post(user, %{
|
||||||
|
@ -161,6 +163,17 @@ test "gets all the participations for a user, ordered by updated at descending"
|
||||||
"in_reply_to_status_id" => activity_one.id
|
"in_reply_to_status_id" => activity_one.id
|
||||||
})
|
})
|
||||||
|
|
||||||
|
# Offset participations because the accuracy of updated_at is down to a second
|
||||||
|
|
||||||
|
for {activity, offset} <- [{activity_two, 1}, {activity_three, 2}] do
|
||||||
|
conversation = Conversation.get_for_ap_id(activity.data["context"])
|
||||||
|
participation = Participation.for_user_and_conversation(user, conversation)
|
||||||
|
updated_at = NaiveDateTime.add(Map.get(participation, :updated_at), offset)
|
||||||
|
|
||||||
|
Ecto.Changeset.change(participation, %{updated_at: updated_at})
|
||||||
|
|> Repo.update!()
|
||||||
|
end
|
||||||
|
|
||||||
assert [participation_one, participation_two] = Participation.for_user(user)
|
assert [participation_one, participation_two] = Participation.for_user(user)
|
||||||
|
|
||||||
object2 = Pleroma.Object.normalize(activity_two)
|
object2 = Pleroma.Object.normalize(activity_two)
|
||||||
|
|
|
@ -145,9 +145,9 @@ test "are restricted based on remote IP" do
|
||||||
test "can have limits seperate from unauthenticated connections" do
|
test "can have limits seperate from unauthenticated connections" do
|
||||||
limiter_name = :test_authenticated
|
limiter_name = :test_authenticated
|
||||||
|
|
||||||
scale = 1000
|
scale = 50
|
||||||
limit = 5
|
limit = 5
|
||||||
Pleroma.Config.put([:rate_limit, limiter_name], [{1, 10}, {scale, limit}])
|
Pleroma.Config.put([:rate_limit, limiter_name], [{1000, 1}, {scale, limit}])
|
||||||
|
|
||||||
opts = RateLimiter.init(name: limiter_name)
|
opts = RateLimiter.init(name: limiter_name)
|
||||||
|
|
||||||
|
@ -164,16 +164,6 @@ test "can have limits seperate from unauthenticated connections" do
|
||||||
|
|
||||||
assert %{"error" => "Throttled"} = Phoenix.ConnTest.json_response(conn, :too_many_requests)
|
assert %{"error" => "Throttled"} = Phoenix.ConnTest.json_response(conn, :too_many_requests)
|
||||||
assert conn.halted
|
assert conn.halted
|
||||||
|
|
||||||
Process.sleep(1550)
|
|
||||||
|
|
||||||
conn = conn(:get, "/") |> assign(:user, user)
|
|
||||||
conn = RateLimiter.call(conn, opts)
|
|
||||||
assert {1, 4} = RateLimiter.inspect_bucket(conn, limiter_name, opts)
|
|
||||||
|
|
||||||
refute conn.status == Plug.Conn.Status.code(:too_many_requests)
|
|
||||||
refute conn.resp_body
|
|
||||||
refute conn.halted
|
|
||||||
end
|
end
|
||||||
|
|
||||||
test "diffrerent users are counted independently" do
|
test "diffrerent users are counted independently" do
|
||||||
|
|
|
@ -1639,13 +1639,10 @@ test "returns a favourite activities sorted by adds to favorite" do
|
||||||
|
|
||||||
{:ok, _, _} = CommonAPI.favorite(a4.id, user)
|
{:ok, _, _} = CommonAPI.favorite(a4.id, user)
|
||||||
{:ok, _, _} = CommonAPI.favorite(a3.id, other_user)
|
{:ok, _, _} = CommonAPI.favorite(a3.id, other_user)
|
||||||
Process.sleep(1000)
|
|
||||||
{:ok, _, _} = CommonAPI.favorite(a3.id, user)
|
{:ok, _, _} = CommonAPI.favorite(a3.id, user)
|
||||||
{:ok, _, _} = CommonAPI.favorite(a5.id, other_user)
|
{:ok, _, _} = CommonAPI.favorite(a5.id, other_user)
|
||||||
Process.sleep(1000)
|
|
||||||
{:ok, _, _} = CommonAPI.favorite(a5.id, user)
|
{:ok, _, _} = CommonAPI.favorite(a5.id, user)
|
||||||
{:ok, _, _} = CommonAPI.favorite(a4.id, other_user)
|
{:ok, _, _} = CommonAPI.favorite(a4.id, other_user)
|
||||||
Process.sleep(1000)
|
|
||||||
{:ok, _, _} = CommonAPI.favorite(a1.id, user)
|
{:ok, _, _} = CommonAPI.favorite(a1.id, user)
|
||||||
{:ok, _, _} = CommonAPI.favorite(a1.id, other_user)
|
{:ok, _, _} = CommonAPI.favorite(a1.id, other_user)
|
||||||
result = ActivityPub.fetch_favourites(user)
|
result = ActivityPub.fetch_favourites(user)
|
||||||
|
|
|
@ -16,6 +16,10 @@ defmodule Pleroma.Web.StreamerTest do
|
||||||
alias Pleroma.Web.Streamer.Worker
|
alias Pleroma.Web.Streamer.Worker
|
||||||
|
|
||||||
@moduletag needs_streamer: true, capture_log: true
|
@moduletag needs_streamer: true, capture_log: true
|
||||||
|
|
||||||
|
@streamer_timeout 150
|
||||||
|
@streamer_start_wait 10
|
||||||
|
|
||||||
clear_config_all([:instance, :skip_thread_containment])
|
clear_config_all([:instance, :skip_thread_containment])
|
||||||
|
|
||||||
describe "user streams" do
|
describe "user streams" do
|
||||||
|
@ -28,7 +32,7 @@ defmodule Pleroma.Web.StreamerTest do
|
||||||
test "it sends notify to in the 'user' stream", %{user: user, notify: notify} do
|
test "it sends notify to in the 'user' stream", %{user: user, notify: notify} do
|
||||||
task =
|
task =
|
||||||
Task.async(fn ->
|
Task.async(fn ->
|
||||||
assert_receive {:text, _}, 4_000
|
assert_receive {:text, _}, @streamer_timeout
|
||||||
end)
|
end)
|
||||||
|
|
||||||
Streamer.add_socket(
|
Streamer.add_socket(
|
||||||
|
@ -43,7 +47,7 @@ test "it sends notify to in the 'user' stream", %{user: user, notify: notify} do
|
||||||
test "it sends notify to in the 'user:notification' stream", %{user: user, notify: notify} do
|
test "it sends notify to in the 'user:notification' stream", %{user: user, notify: notify} do
|
||||||
task =
|
task =
|
||||||
Task.async(fn ->
|
Task.async(fn ->
|
||||||
assert_receive {:text, _}, 4_000
|
assert_receive {:text, _}, @streamer_timeout
|
||||||
end)
|
end)
|
||||||
|
|
||||||
Streamer.add_socket(
|
Streamer.add_socket(
|
||||||
|
@ -61,7 +65,7 @@ test "it doesn't send notify to the 'user:notification' stream when a user is bl
|
||||||
blocked = insert(:user)
|
blocked = insert(:user)
|
||||||
{:ok, _user_relationship} = User.block(user, blocked)
|
{:ok, _user_relationship} = User.block(user, blocked)
|
||||||
|
|
||||||
task = Task.async(fn -> refute_receive {:text, _}, 4_000 end)
|
task = Task.async(fn -> refute_receive {:text, _}, @streamer_timeout end)
|
||||||
|
|
||||||
Streamer.add_socket(
|
Streamer.add_socket(
|
||||||
"user:notification",
|
"user:notification",
|
||||||
|
@ -79,7 +83,7 @@ test "it doesn't send notify to the 'user:notification' stream when a thread is
|
||||||
user: user
|
user: user
|
||||||
} do
|
} do
|
||||||
user2 = insert(:user)
|
user2 = insert(:user)
|
||||||
task = Task.async(fn -> refute_receive {:text, _}, 4_000 end)
|
task = Task.async(fn -> refute_receive {:text, _}, @streamer_timeout end)
|
||||||
|
|
||||||
Streamer.add_socket(
|
Streamer.add_socket(
|
||||||
"user:notification",
|
"user:notification",
|
||||||
|
@ -97,7 +101,7 @@ test "it doesn't send notify to the 'user:notification' stream' when a domain is
|
||||||
user: user
|
user: user
|
||||||
} do
|
} do
|
||||||
user2 = insert(:user, %{ap_id: "https://hecking-lewd-place.com/user/meanie"})
|
user2 = insert(:user, %{ap_id: "https://hecking-lewd-place.com/user/meanie"})
|
||||||
task = Task.async(fn -> refute_receive {:text, _}, 4_000 end)
|
task = Task.async(fn -> refute_receive {:text, _}, @streamer_timeout end)
|
||||||
|
|
||||||
Streamer.add_socket(
|
Streamer.add_socket(
|
||||||
"user:notification",
|
"user:notification",
|
||||||
|
@ -116,7 +120,9 @@ test "it sends follow activities to the 'user:notification' stream", %{
|
||||||
user: user
|
user: user
|
||||||
} do
|
} do
|
||||||
user2 = insert(:user)
|
user2 = insert(:user)
|
||||||
task = Task.async(fn -> assert_receive {:text, _}, 4_000 end)
|
task = Task.async(fn -> assert_receive {:text, _}, @streamer_timeout end)
|
||||||
|
|
||||||
|
Process.sleep(@streamer_start_wait)
|
||||||
|
|
||||||
Streamer.add_socket(
|
Streamer.add_socket(
|
||||||
"user:notification",
|
"user:notification",
|
||||||
|
@ -137,7 +143,7 @@ test "it sends to public" do
|
||||||
|
|
||||||
task =
|
task =
|
||||||
Task.async(fn ->
|
Task.async(fn ->
|
||||||
assert_receive {:text, _}, 4_000
|
assert_receive {:text, _}, @streamer_timeout
|
||||||
end)
|
end)
|
||||||
|
|
||||||
fake_socket = %StreamerSocket{
|
fake_socket = %StreamerSocket{
|
||||||
|
@ -164,7 +170,7 @@ test "it sends to public" do
|
||||||
}
|
}
|
||||||
|> Jason.encode!()
|
|> Jason.encode!()
|
||||||
|
|
||||||
assert_receive {:text, received_event}, 4_000
|
assert_receive {:text, received_event}, @streamer_timeout
|
||||||
assert received_event == expected_event
|
assert received_event == expected_event
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
@ -458,9 +464,7 @@ test "it doesn't send posts from muted threads" do
|
||||||
|
|
||||||
{:ok, activity} = CommonAPI.add_mute(user2, activity)
|
{:ok, activity} = CommonAPI.add_mute(user2, activity)
|
||||||
|
|
||||||
task = Task.async(fn -> refute_receive {:text, _}, 4_000 end)
|
task = Task.async(fn -> refute_receive {:text, _}, @streamer_timeout end)
|
||||||
|
|
||||||
Process.sleep(4000)
|
|
||||||
|
|
||||||
Streamer.add_socket(
|
Streamer.add_socket(
|
||||||
"user",
|
"user",
|
||||||
|
@ -482,7 +486,7 @@ test "it sends conversation update to the 'direct' stream", %{} do
|
||||||
|
|
||||||
task =
|
task =
|
||||||
Task.async(fn ->
|
Task.async(fn ->
|
||||||
assert_receive {:text, received_event}, 4_000
|
assert_receive {:text, received_event}, @streamer_timeout
|
||||||
|
|
||||||
assert %{"event" => "conversation", "payload" => received_payload} =
|
assert %{"event" => "conversation", "payload" => received_payload} =
|
||||||
Jason.decode!(received_event)
|
Jason.decode!(received_event)
|
||||||
|
@ -518,13 +522,13 @@ test "it doesn't send conversation update to the 'direct' stream when the last m
|
||||||
|
|
||||||
task =
|
task =
|
||||||
Task.async(fn ->
|
Task.async(fn ->
|
||||||
assert_receive {:text, received_event}, 4_000
|
assert_receive {:text, received_event}, @streamer_timeout
|
||||||
assert %{"event" => "delete", "payload" => _} = Jason.decode!(received_event)
|
assert %{"event" => "delete", "payload" => _} = Jason.decode!(received_event)
|
||||||
|
|
||||||
refute_receive {:text, _}, 4_000
|
refute_receive {:text, _}, @streamer_timeout
|
||||||
end)
|
end)
|
||||||
|
|
||||||
Process.sleep(1000)
|
Process.sleep(@streamer_start_wait)
|
||||||
|
|
||||||
Streamer.add_socket(
|
Streamer.add_socket(
|
||||||
"direct",
|
"direct",
|
||||||
|
@ -555,10 +559,10 @@ test "it sends conversation update to the 'direct' stream when a message is dele
|
||||||
|
|
||||||
task =
|
task =
|
||||||
Task.async(fn ->
|
Task.async(fn ->
|
||||||
assert_receive {:text, received_event}, 4_000
|
assert_receive {:text, received_event}, @streamer_timeout
|
||||||
assert %{"event" => "delete", "payload" => _} = Jason.decode!(received_event)
|
assert %{"event" => "delete", "payload" => _} = Jason.decode!(received_event)
|
||||||
|
|
||||||
assert_receive {:text, received_event}, 4_000
|
assert_receive {:text, received_event}, @streamer_timeout
|
||||||
|
|
||||||
assert %{"event" => "conversation", "payload" => received_payload} =
|
assert %{"event" => "conversation", "payload" => received_payload} =
|
||||||
Jason.decode!(received_event)
|
Jason.decode!(received_event)
|
||||||
|
@ -567,7 +571,7 @@ test "it sends conversation update to the 'direct' stream when a message is dele
|
||||||
assert last_status["id"] == to_string(create_activity.id)
|
assert last_status["id"] == to_string(create_activity.id)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
Process.sleep(1000)
|
Process.sleep(@streamer_start_wait)
|
||||||
|
|
||||||
Streamer.add_socket(
|
Streamer.add_socket(
|
||||||
"direct",
|
"direct",
|
||||||
|
|
|
@ -898,8 +898,6 @@ test "with credentials and valid password", %{conn: conn, user: current_user} do
|
||||||
|> post("/api/pleroma/delete_account", %{"password" => "test"})
|
|> post("/api/pleroma/delete_account", %{"password" => "test"})
|
||||||
|
|
||||||
assert json_response(conn, 200) == %{"status" => "success"}
|
assert json_response(conn, 200) == %{"status" => "success"}
|
||||||
# Wait a second for the started task to end
|
|
||||||
:timer.sleep(1000)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue