package scheduler import ( "strings" "testing" ) func TestBatchDeleteSQLUsesBoundedSkipLockedDelete(t *testing.T) { sql := batchDeleteSQL("monitoring_collect_tasks", "id", "business_date < $1::date", "business_date ASC, id ASC") for _, want := range []string{ "LIMIT $2", "FOR UPDATE SKIP LOCKED", "DELETE FROM monitoring_collect_tasks t", "USING doomed", "WHERE t.id = doomed.id", } { if !strings.Contains(sql, want) { t.Fatalf("batchDeleteSQL missing %q in SQL:\n%s", want, sql) } } if strings.Contains(sql, "COUNT(*) FROM monitoring_collect_tasks") { t.Fatalf("batchDeleteSQL must not count full candidate set:\n%s", sql) } } func TestBatchProbeSQLCapsDryRunProbe(t *testing.T) { sql := batchProbeSQL("monitoring_collect_tasks", "id", "business_date < $1::date", "business_date ASC, id ASC") if !strings.Contains(sql, "LIMIT $2") { t.Fatalf("batchProbeSQL should cap dry-run probe:\n%s", sql) } if !strings.Contains(sql, "SELECT COUNT(*)::bigint") { t.Fatalf("batchProbeSQL should count only the limited candidate subquery:\n%s", sql) } }