[MM-62408] Server Code Coverage with Fully Parallel Tests (#30078)

* TestPool

* Store infra

* Store tests updates

* Bump maximum concurrent postgres connections

* More infra

* channels/jobs

* channels/app

* channels/api4

* Protect i18n from concurrent access

* Replace some use of os.Setenv

* Remove debug

* Lint fixes

* Fix more linting

* Fix test

* Remove use of Setenv in drafts tests

* Fix flaky TestWebHubCloseConnOnDBFail

* Fix merge

* [MM-62408] Add CI job to generate test coverage (#30284)

* Add CI job to generate test coverage

* Remove use of Setenv in drafts tests

* Fix flaky TestWebHubCloseConnOnDBFail

* Fix more Setenv usage

* Fix more potential flakyness

* Remove parallelism from flaky test

* Remove conflicting env var

* Fix

* Disable parallelism

* Test atomic covermode

* Disable parallelism

* Enable parallelism

* Add upload coverage step

* Fix codecov.yml

* Add codecov.yml

* Remove redundant workspace field

* Add Parallel() util methods and refactor

* Fix formatting

* More formatting fixes

* Fix reporting
Этот коммит содержится в:
Claudio Costa
2025-05-30 05:58:26 -06:00
коммит произвёл GitHub
родитель 1cf2f08108
Коммит 611b2a8e79
191 изменённых файлов: 2719 добавлений и 496 удалений

Просмотреть файл

@@ -29,6 +29,7 @@ import (
)
func TestPermanentDeleteChannel(t *testing.T) {
mainHelper.Parallel(t)
th := Setup(t).InitBasic()
defer th.TearDown()
@@ -86,6 +87,7 @@ func TestPermanentDeleteChannel(t *testing.T) {
}
func TestRemoveAllDeactivatedMembersFromChannel(t *testing.T) {
mainHelper.Parallel(t)
th := Setup(t).InitBasic()
defer th.TearDown()
var appErr *model.AppError
@@ -122,6 +124,7 @@ func TestRemoveAllDeactivatedMembersFromChannel(t *testing.T) {
}
func TestMoveChannel(t *testing.T) {
mainHelper.Parallel(t)
t.Run("should move channels between teams", func(t *testing.T) {
th := Setup(t).InitBasic()
defer th.TearDown()
@@ -304,6 +307,7 @@ func TestMoveChannel(t *testing.T) {
}
func TestRemoveUsersFromChannelNotMemberOfTeam(t *testing.T) {
mainHelper.Parallel(t)
th := Setup(t).InitBasic()
defer th.TearDown()
@@ -345,6 +349,7 @@ func TestRemoveUsersFromChannelNotMemberOfTeam(t *testing.T) {
}
func TestJoinDefaultChannelsCreatesChannelMemberHistoryRecordTownSquare(t *testing.T) {
mainHelper.Parallel(t)
th := Setup(t).InitBasic()
defer th.TearDown()
@@ -377,6 +382,7 @@ func TestJoinDefaultChannelsCreatesChannelMemberHistoryRecordTownSquare(t *testi
}
func TestJoinDefaultChannelsCreatesChannelMemberHistoryRecordOffTopic(t *testing.T) {
mainHelper.Parallel(t)
th := Setup(t).InitBasic()
defer th.TearDown()
@@ -409,6 +415,7 @@ func TestJoinDefaultChannelsCreatesChannelMemberHistoryRecordOffTopic(t *testing
}
func TestJoinDefaultChannelsExperimentalDefaultChannels(t *testing.T) {
mainHelper.Parallel(t)
th := Setup(t).InitBasic()
defer th.TearDown()
@@ -435,6 +442,7 @@ func TestJoinDefaultChannelsExperimentalDefaultChannels(t *testing.T) {
}
func TestJoinDefaultChannelsExperimentalDefaultChannelsMissing(t *testing.T) {
mainHelper.Parallel(t)
th := Setup(t).InitBasic()
defer th.TearDown()
@@ -465,6 +473,7 @@ func TestJoinDefaultChannelsExperimentalDefaultChannelsMissing(t *testing.T) {
}
func TestCreateChannelPublicCreatesChannelMemberHistoryRecord(t *testing.T) {
mainHelper.Parallel(t)
th := Setup(t).InitBasic()
defer th.TearDown()
@@ -480,6 +489,7 @@ func TestCreateChannelPublicCreatesChannelMemberHistoryRecord(t *testing.T) {
}
func TestCreateChannelPrivateCreatesChannelMemberHistoryRecord(t *testing.T) {
mainHelper.Parallel(t)
th := Setup(t).InitBasic()
defer th.TearDown()
@@ -493,7 +503,9 @@ func TestCreateChannelPrivateCreatesChannelMemberHistoryRecord(t *testing.T) {
assert.Equal(t, th.BasicUser.Id, histories[0].UserId)
assert.Equal(t, privateChannel.Id, histories[0].ChannelId)
}
func TestCreateChannelDisplayNameTrimsWhitespace(t *testing.T) {
mainHelper.Parallel(t)
th := Setup(t).InitBasic()
defer th.TearDown()
@@ -507,6 +519,7 @@ func TestCreateChannelDisplayNameTrimsWhitespace(t *testing.T) {
}
func TestUpdateChannelPrivacy(t *testing.T) {
mainHelper.Parallel(t)
th := Setup(t).InitBasic()
defer th.TearDown()
@@ -520,6 +533,7 @@ func TestUpdateChannelPrivacy(t *testing.T) {
}
func TestGetOrCreateDirectChannel(t *testing.T) {
mainHelper.Parallel(t)
th := Setup(t).InitBasic()
defer th.TearDown()
@@ -574,6 +588,7 @@ func TestGetOrCreateDirectChannel(t *testing.T) {
}
func TestCreateGroupChannel(t *testing.T) {
mainHelper.Parallel(t)
th := Setup(t).InitBasic()
defer th.TearDown()
@@ -597,6 +612,7 @@ func TestCreateGroupChannel(t *testing.T) {
}
func TestCreateGroupChannelCreatesChannelMemberHistoryRecord(t *testing.T) {
mainHelper.Parallel(t)
th := Setup(t).InitBasic()
defer th.TearDown()
@@ -627,6 +643,7 @@ func TestCreateGroupChannelCreatesChannelMemberHistoryRecord(t *testing.T) {
}
func TestCreateDirectChannelCreatesChannelMemberHistoryRecord(t *testing.T) {
mainHelper.Parallel(t)
th := Setup(t)
defer th.TearDown()
@@ -653,6 +670,7 @@ func TestCreateDirectChannelCreatesChannelMemberHistoryRecord(t *testing.T) {
}
func TestGetDirectChannelCreatesChannelMemberHistoryRecord(t *testing.T) {
mainHelper.Parallel(t)
th := Setup(t)
defer th.TearDown()
@@ -681,6 +699,7 @@ func TestGetDirectChannelCreatesChannelMemberHistoryRecord(t *testing.T) {
}
func TestAddUserToChannelCreatesChannelMemberHistoryRecord(t *testing.T) {
mainHelper.Parallel(t)
th := Setup(t).InitBasic().DeleteBots()
defer th.TearDown()
@@ -711,6 +730,7 @@ func TestAddUserToChannelCreatesChannelMemberHistoryRecord(t *testing.T) {
}
func TestUsersAndPostsCreateActivityInChannel(t *testing.T) {
mainHelper.Parallel(t)
th := Setup(t).InitBasic().DeleteBots()
defer th.TearDown()
@@ -793,6 +813,7 @@ func TestUsersAndPostsCreateActivityInChannel(t *testing.T) {
}
func TestLeaveDefaultChannel(t *testing.T) {
mainHelper.Parallel(t)
th := Setup(t).InitBasic()
defer th.TearDown()
@@ -852,6 +873,7 @@ func TestLeaveDefaultChannel(t *testing.T) {
}
func TestLeaveChannel(t *testing.T) {
mainHelper.Parallel(t)
th := Setup(t).InitBasic()
defer th.TearDown()
@@ -911,6 +933,7 @@ func TestLeaveChannel(t *testing.T) {
}
func TestLeaveLastChannel(t *testing.T) {
mainHelper.Parallel(t)
th := Setup(t).InitBasic()
defer th.TearDown()
@@ -940,6 +963,7 @@ func TestLeaveLastChannel(t *testing.T) {
}
func TestAddChannelMemberNoUserRequestor(t *testing.T) {
mainHelper.Parallel(t)
th := Setup(t).InitBasic()
defer th.TearDown()
@@ -981,6 +1005,7 @@ func TestAddChannelMemberNoUserRequestor(t *testing.T) {
}
func TestAddChannelMemberDeletedUser(t *testing.T) {
mainHelper.Parallel(t)
th := Setup(t).InitBasic()
defer th.TearDown()
@@ -997,6 +1022,7 @@ func TestAddChannelMemberDeletedUser(t *testing.T) {
}
func TestAppUpdateChannelScheme(t *testing.T) {
mainHelper.Parallel(t)
th := Setup(t).InitBasic()
defer th.TearDown()
@@ -1013,6 +1039,7 @@ func TestAppUpdateChannelScheme(t *testing.T) {
}
func TestSetChannelsMuted(t *testing.T) {
mainHelper.Parallel(t)
t.Run("should mute and unmute the given channels", func(t *testing.T) {
th := Setup(t).InitBasic()
defer th.TearDown()
@@ -1064,6 +1091,7 @@ func TestSetChannelsMuted(t *testing.T) {
}
func TestFillInChannelProps(t *testing.T) {
mainHelper.Parallel(t)
th := Setup(t).InitBasic()
defer th.TearDown()
@@ -1284,6 +1312,7 @@ func TestFillInChannelProps(t *testing.T) {
}
func TestRenameChannel(t *testing.T) {
mainHelper.Parallel(t)
th := Setup(t).InitBasic()
defer th.TearDown()
@@ -1351,6 +1380,7 @@ func TestRenameChannel(t *testing.T) {
}
func TestGetChannelMembersTimezones(t *testing.T) {
mainHelper.Parallel(t)
th := Setup(t).InitBasic()
defer th.TearDown()
@@ -1394,6 +1424,7 @@ func TestGetChannelMembersTimezones(t *testing.T) {
}
func TestGetChannelsForUser(t *testing.T) {
mainHelper.Parallel(t)
th := Setup(t).InitBasic()
channel := &model.Channel{
DisplayName: "Public",
@@ -1438,6 +1469,7 @@ func TestGetChannelsForUser(t *testing.T) {
}
func TestGetPublicChannelsForTeam(t *testing.T) {
mainHelper.Parallel(t)
th := Setup(t)
team := th.CreateTeam()
defer th.TearDown()
@@ -1485,6 +1517,7 @@ func TestGetPublicChannelsForTeam(t *testing.T) {
}
func TestGetPrivateChannelsForTeam(t *testing.T) {
mainHelper.Parallel(t)
th := Setup(t)
team := th.CreateTeam()
defer th.TearDown()
@@ -1521,6 +1554,7 @@ func TestGetPrivateChannelsForTeam(t *testing.T) {
}
func TestUpdateChannelMemberRolesChangingGuest(t *testing.T) {
mainHelper.Parallel(t)
th := Setup(t).InitBasic()
defer th.TearDown()
@@ -1599,6 +1633,7 @@ func TestUpdateChannelMemberRolesChangingGuest(t *testing.T) {
}
func TestDefaultChannelNames(t *testing.T) {
mainHelper.Parallel(t)
th := Setup(t)
defer th.TearDown()
@@ -1616,6 +1651,7 @@ func TestDefaultChannelNames(t *testing.T) {
}
func TestSearchChannelsForUser(t *testing.T) {
mainHelper.Parallel(t)
th := Setup(t).InitBasic()
defer th.TearDown()
@@ -1673,6 +1709,7 @@ func TestSearchChannelsForUser(t *testing.T) {
}
func TestMarkChannelAsUnreadFromPost(t *testing.T) {
mainHelper.Parallel(t)
th := Setup(t).InitBasic()
defer th.TearDown()
@@ -1829,6 +1866,7 @@ func TestMarkChannelAsUnreadFromPost(t *testing.T) {
}
func TestAddUserToChannel(t *testing.T) {
mainHelper.Parallel(t)
th := Setup(t).InitBasic()
defer th.TearDown()
@@ -1923,6 +1961,7 @@ func TestAddUserToChannel(t *testing.T) {
}
func TestRemoveUserFromChannel(t *testing.T) {
mainHelper.Parallel(t)
th := Setup(t).InitBasic()
defer th.TearDown()
@@ -1982,6 +2021,7 @@ func TestRemoveUserFromChannel(t *testing.T) {
}
func TestPatchChannelModerationsForChannel(t *testing.T) {
mainHelper.Parallel(t)
th := Setup(t).InitBasic()
defer th.TearDown()
@@ -2461,6 +2501,7 @@ func TestPatchChannelModerationsForChannel(t *testing.T) {
}
func TestClearChannelMembersCache(t *testing.T) {
mainHelper.Parallel(t)
th := SetupWithStoreMock(t)
defer th.TearDown()
@@ -2476,7 +2517,8 @@ func TestClearChannelMembersCache(t *testing.T) {
mockChannelStore.On("GetMembers", "channelID", 100, 100).Return(model.ChannelMembers{
model.ChannelMember{
ChannelId: "1",
}}, nil)
},
}, nil)
mockStore.On("Channel").Return(&mockChannelStore)
mockStore.On("GetDBSchemaVersion").Return(1, nil)
@@ -2484,6 +2526,7 @@ func TestClearChannelMembersCache(t *testing.T) {
}
func TestGetMemberCountsByGroup(t *testing.T) {
mainHelper.Parallel(t)
th := SetupWithStoreMock(t)
defer th.TearDown()
@@ -2506,6 +2549,7 @@ func TestGetMemberCountsByGroup(t *testing.T) {
}
func TestGetChannelsMemberCount(t *testing.T) {
mainHelper.Parallel(t)
th := SetupWithStoreMock(t)
defer th.TearDown()
@@ -2524,6 +2568,7 @@ func TestGetChannelsMemberCount(t *testing.T) {
}
func TestViewChannelCollapsedThreadsTurnedOff(t *testing.T) {
mainHelper.Parallel(t)
th := Setup(t).InitBasic()
defer th.TearDown()
@@ -2602,6 +2647,7 @@ func TestViewChannelCollapsedThreadsTurnedOff(t *testing.T) {
}
func TestMarkChannelAsUnreadFromPostCollapsedThreadsTurnedOff(t *testing.T) {
mainHelper.Parallel(t)
// Enable CRT
th := Setup(t).InitBasic()
@@ -2689,6 +2735,7 @@ func TestMarkChannelAsUnreadFromPostCollapsedThreadsTurnedOff(t *testing.T) {
}
func TestMarkUnreadCRTOffUpdatesThreads(t *testing.T) {
mainHelper.Parallel(t)
th := Setup(t).InitBasic()
defer th.TearDown()
th.App.UpdateConfig(func(cfg *model.Config) {
@@ -2729,6 +2776,7 @@ func TestMarkUnreadCRTOffUpdatesThreads(t *testing.T) {
}
func TestIsCRTEnabledForUser(t *testing.T) {
mainHelper.Parallel(t)
type preference struct {
val string
err error
@@ -2808,6 +2856,7 @@ func TestIsCRTEnabledForUser(t *testing.T) {
}
func TestGetGroupMessageMembersCommonTeams(t *testing.T) {
mainHelper.Parallel(t)
th := SetupWithStoreMock(t)
defer th.TearDown()
@@ -2874,6 +2923,7 @@ func TestGetGroupMessageMembersCommonTeams(t *testing.T) {
}
func TestConvertGroupMessageToChannel(t *testing.T) {
mainHelper.Parallel(t)
th := SetupWithStoreMock(t)
defer th.TearDown()
@@ -3022,6 +3072,7 @@ func TestConvertGroupMessageToChannel(t *testing.T) {
}
func TestPatchChannelMembersNotifyProps(t *testing.T) {
mainHelper.Parallel(t)
th := Setup(t).InitBasic()
defer th.TearDown()