test(member-live): keep deadlock-prone member tests synchronous
These member/group/custom-field LiveView tests stay async: false. With the foreign keys now deferrable the create_member deadlock no longer forces it, so the rationale is updated: they remain synchronous as a deferred scope decision, and index_groups_url_params/member_filter_component additionally have separate async-isolation issues that must be fixed before they can run in parallel.
This commit is contained in:
parent
5e84c342b7
commit
c0f40a13ce
12 changed files with 48 additions and 13 deletions
|
|
@ -8,7 +8,10 @@ defmodule MvWeb.Components.MemberFilterComponentTest do
|
||||||
- Button label and badge logic
|
- Button label and badge logic
|
||||||
- Filtering to show only boolean custom fields
|
- Filtering to show only boolean custom fields
|
||||||
"""
|
"""
|
||||||
# async: false to prevent PostgreSQL deadlocks when running LiveView tests against DB
|
# Kept async: false. The deferrable-FK migration removed the concurrent
|
||||||
|
# create_member deadlock, but this file additionally showed an async-isolation
|
||||||
|
# failure under load (filtered members from a parallel test leaking in), so it
|
||||||
|
# is not trivially async-safe; resolving that is a separate follow-up.
|
||||||
use MvWeb.ConnCase, async: false
|
use MvWeb.ConnCase, async: false
|
||||||
|
|
||||||
import Phoenix.LiveViewTest
|
import Phoenix.LiveViewTest
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,10 @@ defmodule MvWeb.MemberLive.IndexCustomFieldsDisplayTest do
|
||||||
- Custom field values are correctly formatted for different types
|
- Custom field values are correctly formatted for different types
|
||||||
- Members without custom field values show empty cell or "-"
|
- Members without custom field values show empty cell or "-"
|
||||||
"""
|
"""
|
||||||
# async: false to prevent PostgreSQL deadlocks when creating members and custom fields
|
# Kept async: false as a deferred scope decision. The deferrable-FK migration
|
||||||
|
# removed the concurrent-create_member deadlock that previously forced this, so
|
||||||
|
# re-flipping this members/custom-fields suite to async is a possible follow-up
|
||||||
|
# rather than part of the original change.
|
||||||
use MvWeb.ConnCase, async: false
|
use MvWeb.ConnCase, async: false
|
||||||
import Phoenix.LiveViewTest
|
import Phoenix.LiveViewTest
|
||||||
require Ash.Query
|
require Ash.Query
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,10 @@ defmodule MvWeb.MemberLive.IndexFieldVisibilityTest do
|
||||||
- Integration with member list display
|
- Integration with member list display
|
||||||
- Custom fields visibility
|
- Custom fields visibility
|
||||||
"""
|
"""
|
||||||
# async: false to prevent PostgreSQL deadlocks when creating members and custom fields
|
# Kept async: false as a deferred scope decision. The deferrable-FK migration
|
||||||
|
# removed the concurrent-create_member deadlock that previously forced this, so
|
||||||
|
# re-flipping this members/custom-fields suite to async is a possible follow-up
|
||||||
|
# rather than part of the original change.
|
||||||
use MvWeb.ConnCase, async: false
|
use MvWeb.ConnCase, async: false
|
||||||
|
|
||||||
import Phoenix.LiveViewTest
|
import Phoenix.LiveViewTest
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,10 @@ defmodule MvWeb.MemberLive.IndexGroupsAccessibilityTest do
|
||||||
- Sort header has aria-label for screen reader
|
- Sort header has aria-label for screen reader
|
||||||
- Keyboard navigation works (Tab through filter, sort header)
|
- Keyboard navigation works (Tab through filter, sort header)
|
||||||
"""
|
"""
|
||||||
# async: false to prevent PostgreSQL deadlocks when creating members and groups
|
# Kept async: false as a deferred scope decision. The deferrable-FK migration
|
||||||
|
# removed the concurrent-create_member deadlock that previously forced this, so
|
||||||
|
# re-flipping this members/groups suite to async is a possible follow-up rather
|
||||||
|
# than part of the original change.
|
||||||
use MvWeb.ConnCase, async: false
|
use MvWeb.ConnCase, async: false
|
||||||
import Phoenix.LiveViewTest
|
import Phoenix.LiveViewTest
|
||||||
require Ash.Query
|
require Ash.Query
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,10 @@ defmodule MvWeb.MemberLive.IndexGroupsDisplayTest do
|
||||||
- No badge for members without groups
|
- No badge for members without groups
|
||||||
- Badge shows group name correctly
|
- Badge shows group name correctly
|
||||||
"""
|
"""
|
||||||
# async: false to prevent PostgreSQL deadlocks when creating members and groups
|
# Kept async: false as a deferred scope decision. The deferrable-FK migration
|
||||||
|
# removed the concurrent-create_member deadlock that previously forced this, so
|
||||||
|
# re-flipping this members/groups suite to async is a possible follow-up rather
|
||||||
|
# than part of the original change.
|
||||||
use MvWeb.ConnCase, async: false
|
use MvWeb.ConnCase, async: false
|
||||||
import Phoenix.LiveViewTest
|
import Phoenix.LiveViewTest
|
||||||
require Ash.Query
|
require Ash.Query
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,10 @@ defmodule MvWeb.MemberLive.IndexGroupsFilterTest do
|
||||||
All / Yes / No (per group). Multiple active group filters combine with AND
|
All / Yes / No (per group). Multiple active group filters combine with AND
|
||||||
(member must match all selected group conditions).
|
(member must match all selected group conditions).
|
||||||
"""
|
"""
|
||||||
# async: false to prevent PostgreSQL deadlocks when creating members and groups
|
# Kept async: false as a deferred scope decision. The deferrable-FK migration
|
||||||
|
# removed the concurrent-create_member deadlock that previously forced this, so
|
||||||
|
# re-flipping this members/groups suite to async is a possible follow-up rather
|
||||||
|
# than part of the original change.
|
||||||
use MvWeb.ConnCase, async: false
|
use MvWeb.ConnCase, async: false
|
||||||
import Phoenix.LiveViewTest
|
import Phoenix.LiveViewTest
|
||||||
require Ash.Query
|
require Ash.Query
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,10 @@ defmodule MvWeb.MemberLive.IndexGroupsIntegrationTest do
|
||||||
- Groups work with existing search (but not testing search integration itself)
|
- Groups work with existing search (but not testing search integration itself)
|
||||||
- Member index search by group name returns members in that group (Issue #375)
|
- Member index search by group name returns members in that group (Issue #375)
|
||||||
"""
|
"""
|
||||||
# async: false to prevent PostgreSQL deadlocks when creating members and groups
|
# Kept async: false as a deferred scope decision. The deferrable-FK migration
|
||||||
|
# removed the concurrent-create_member deadlock that previously forced this, so
|
||||||
|
# re-flipping this members/groups suite to async is a possible follow-up rather
|
||||||
|
# than part of the original change.
|
||||||
use MvWeb.ConnCase, async: false
|
use MvWeb.ConnCase, async: false
|
||||||
import Phoenix.LiveViewTest
|
import Phoenix.LiveViewTest
|
||||||
require Ash.Query
|
require Ash.Query
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,10 @@ defmodule MvWeb.MemberLive.IndexGroupsPerformanceTest do
|
||||||
- Filter works at database level (not in-memory)
|
- Filter works at database level (not in-memory)
|
||||||
- Sort runs in-memory but uses preloaded group data (no extra DB queries)
|
- Sort runs in-memory but uses preloaded group data (no extra DB queries)
|
||||||
"""
|
"""
|
||||||
# async: false to prevent PostgreSQL deadlocks when creating members and groups
|
# Kept async: false as a deferred scope decision. The deferrable-FK migration
|
||||||
|
# removed the concurrent-create_member deadlock that previously forced this, so
|
||||||
|
# re-flipping this members/groups suite to async is a possible follow-up rather
|
||||||
|
# than part of the original change.
|
||||||
use MvWeb.ConnCase, async: false
|
use MvWeb.ConnCase, async: false
|
||||||
import Phoenix.LiveViewTest
|
import Phoenix.LiveViewTest
|
||||||
require Ash.Query
|
require Ash.Query
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,10 @@ defmodule MvWeb.MemberLive.IndexGroupsSortingTest do
|
||||||
@moduledoc """
|
@moduledoc """
|
||||||
Tests for sorting by groups in the member overview.
|
Tests for sorting by groups in the member overview.
|
||||||
"""
|
"""
|
||||||
# async: false to prevent PostgreSQL deadlocks when creating members and groups
|
# Kept async: false as a deferred scope decision. The deferrable-FK migration
|
||||||
|
# removed the concurrent-create_member deadlock that previously forced this, so
|
||||||
|
# re-flipping this members/groups suite to async is a possible follow-up rather
|
||||||
|
# than part of the original change.
|
||||||
use MvWeb.ConnCase, async: false
|
use MvWeb.ConnCase, async: false
|
||||||
import Phoenix.LiveViewTest
|
import Phoenix.LiveViewTest
|
||||||
require Ash.Query
|
require Ash.Query
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,10 @@ defmodule MvWeb.MemberLive.IndexGroupsUrlParamsTest do
|
||||||
- URL parameters work with other parameters (query, sort_field, etc.)
|
- URL parameters work with other parameters (query, sort_field, etc.)
|
||||||
- URL is bookmarkable (filter/sorting persist)
|
- URL is bookmarkable (filter/sorting persist)
|
||||||
"""
|
"""
|
||||||
# async: false to prevent PostgreSQL deadlocks when creating members and groups
|
# Kept async: false. The deferrable-FK migration removed the concurrent
|
||||||
|
# create_member deadlock, but this file additionally showed an async-isolation
|
||||||
|
# failure under load (filtered members from a parallel test leaking in), so it
|
||||||
|
# is not trivially async-safe; resolving that is a separate follow-up.
|
||||||
use MvWeb.ConnCase, async: false
|
use MvWeb.ConnCase, async: false
|
||||||
import Phoenix.LiveViewTest
|
import Phoenix.LiveViewTest
|
||||||
require Ash.Query
|
require Ash.Query
|
||||||
|
|
|
||||||
|
|
@ -10,8 +10,10 @@ defmodule MvWeb.MemberLive.ShowGroupsDisplayTest do
|
||||||
- Accessibility: group links have aria-label for screen readers
|
- Accessibility: group links have aria-label for screen readers
|
||||||
|
|
||||||
## Note on async
|
## Note on async
|
||||||
async: false to avoid PostgreSQL deadlocks when creating members and groups
|
Kept async: false as a deferred scope decision. The deferrable-FK migration
|
||||||
in the same test run (same as IndexGroupsDisplayTest).
|
removed the concurrent-create_member deadlock that previously forced this, so
|
||||||
|
re-flipping this members/groups suite to async is a possible follow-up rather
|
||||||
|
than part of the original change.
|
||||||
"""
|
"""
|
||||||
use MvWeb.ConnCase, async: false
|
use MvWeb.ConnCase, async: false
|
||||||
import Phoenix.LiveViewTest
|
import Phoenix.LiveViewTest
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,8 @@
|
||||||
defmodule MvWeb.UserLive.FormTest do
|
defmodule MvWeb.UserLive.FormTest do
|
||||||
# async: false to prevent PostgreSQL deadlocks when creating members and users
|
# Kept async: false as a deferred scope decision. The deferrable-FK migration
|
||||||
|
# removed the concurrent-create_member deadlock that previously forced this, so
|
||||||
|
# re-flipping this members/users suite to async is a possible follow-up rather
|
||||||
|
# than part of the original change.
|
||||||
use MvWeb.ConnCase, async: false
|
use MvWeb.ConnCase, async: false
|
||||||
import Phoenix.LiveViewTest
|
import Phoenix.LiveViewTest
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue