Merge branch 'fix/remove-useless-sleep' into 'develop'

Remove useless sleeping/reduce it

See merge request pleroma/pleroma!2069
This commit is contained in:
lain 2019-12-16 17:07:13 +00:00
commit 804b961d3c
5 changed files with 39 additions and 37 deletions

View File

@ -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)

View File

@ -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

View File

@ -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)

View File

@ -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",

View File

@ -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