Files
geo/server/internal/tenant/app/desktop_task_service_test.go
T

64 lines
1.6 KiB
Go
Raw Normal View History

package app
import (
"regexp"
"strings"
"testing"
)
func TestDesktopTaskRecoverySelectQueryMatchesRecoveredLeaseScanOrder(t *testing.T) {
t.Parallel()
query := desktopTaskRecoverySelectQuery(desktopTaskRecoveryModeStartup)
gotColumns := recoverDesktopTaskSelectColumns(query)
wantColumns := []string{
"desktop_id",
"workspace_id",
"kind",
"status",
"active_attempt_id",
}
if len(gotColumns) != len(wantColumns) {
t.Fatalf("recover select columns = %v, want %v", gotColumns, wantColumns)
}
for index := range wantColumns {
if gotColumns[index] != wantColumns[index] {
t.Fatalf("recover select columns = %v, want %v", gotColumns, wantColumns)
}
}
}
func TestDesktopTaskRecoverySelectQueryLeaseExpiryFiltersExpiredLeases(t *testing.T) {
t.Parallel()
query := desktopTaskRecoverySelectQuery(desktopTaskRecoveryModeLeaseExpiry)
for _, fragment := range []string{
"AND lease_expires_at IS NOT NULL",
"AND lease_expires_at < NOW()",
"FOR UPDATE",
} {
if !strings.Contains(query, fragment) {
t.Fatalf("recover lease-expiry query missing %q: %s", fragment, query)
}
}
}
func recoverDesktopTaskSelectColumns(query string) []string {
re := regexp.MustCompile(`(?is)select\s+(.*?)\s+from\s+desktop_tasks`)
match := re.FindStringSubmatch(query)
if len(match) != 2 {
return nil
}
rawColumns := strings.Split(match[1], ",")
columns := make([]string, 0, len(rawColumns))
for _, rawColumn := range rawColumns {
column := strings.TrimSpace(rawColumn)
column = strings.Fields(column)[0]
columns = append(columns, column)
}
return columns
}