fix: Order database queries for templates (#3249)

* fix: Order database queries for templates

Fixes a race in a test where the order of templates varies.

* fix: Add sorting to databasefake as well
This commit is contained in:
Mathias Fredriksson
2022-07-27 18:04:29 +03:00
committed by GitHub
parent 5802c29c38
commit cef622d77c
3 changed files with 23 additions and 3 deletions

View File

@ -626,7 +626,8 @@ func (q *fakeQuerier) GetLatestWorkspaceBuildsByWorkspaceIDs(_ context.Context,
}
func (q *fakeQuerier) GetWorkspaceBuildByWorkspaceID(_ context.Context,
params database.GetWorkspaceBuildByWorkspaceIDParams) ([]database.WorkspaceBuild, error) {
params database.GetWorkspaceBuildByWorkspaceIDParams,
) ([]database.WorkspaceBuild, error) {
q.mutex.RLock()
defer q.mutex.RUnlock()
@ -893,6 +894,12 @@ func (q *fakeQuerier) GetTemplatesWithFilter(_ context.Context, arg database.Get
templates = append(templates, template)
}
if len(templates) > 0 {
slices.SortFunc(templates, func(i, j database.Template) bool {
if !i.CreatedAt.Before(j.CreatedAt) {
return false
}
return i.ID.String() < j.ID.String()
})
return templates, nil
}
@ -1069,7 +1076,15 @@ func (q *fakeQuerier) GetTemplates(_ context.Context) ([]database.Template, erro
q.mutex.RLock()
defer q.mutex.RUnlock()
return q.templates[:], nil
templates := slices.Clone(q.templates)
slices.SortFunc(templates, func(i, j database.Template) bool {
if !i.CreatedAt.Before(j.CreatedAt) {
return false
}
return i.ID.String() < j.ID.String()
})
return templates, nil
}
func (q *fakeQuerier) GetOrganizationMemberByUserID(_ context.Context, arg database.GetOrganizationMemberByUserIDParams) (database.OrganizationMember, error) {

View File

@ -1889,6 +1889,7 @@ func (q *sqlQuerier) GetTemplateByOrganizationAndName(ctx context.Context, arg G
const getTemplates = `-- name: GetTemplates :many
SELECT id, created_at, updated_at, organization_id, deleted, name, provisioner, active_version_id, description, max_ttl, min_autostart_interval, created_by FROM templates
ORDER BY (created_at, id) ASC
`
func (q *sqlQuerier) GetTemplates(ctx context.Context) ([]Template, error) {
@ -1953,6 +1954,7 @@ WHERE
id = ANY($4)
ELSE true
END
ORDER BY (created_at, id) ASC
`
type GetTemplatesWithFilterParams struct {

View File

@ -34,6 +34,7 @@ WHERE
id = ANY(@ids)
ELSE true
END
ORDER BY (created_at, id) ASC
;
-- name: GetTemplateByOrganizationAndName :one
@ -49,7 +50,9 @@ LIMIT
1;
-- name: GetTemplates :many
SELECT * FROM templates;
SELECT * FROM templates
ORDER BY (created_at, id) ASC
;
-- name: InsertTemplate :one
INSERT INTO