Files
DenozordecandCursor f8e0520817 feat(httpapi): harden control plane and speed up prefix refresh
Очередь job получила lease и fencing, телеметрия и прогресс deploy сохраняются, ревизия пишет manifest входов. Обновление префиксов не переписывает неизменённый снимок, большие наборы идут через COPY, а устаревшая ревизия не попадает в deploy. Бандл ноды кэшируется, prune и постановка job больше не держат горячий путь.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-11-02 17:23:59 +07:00

64 lines
1.6 KiB
Go

package db
import (
"io/fs"
"path"
"strings"
"testing"
"evobgp/migrations"
)
func TestPostgresEmbeddedMigrationsTransactional(t *testing.T) {
entries, err := fs.ReadDir(migrations.Postgres, "postgres")
if err != nil {
t.Fatal(err)
}
for _, entry := range entries {
if !strings.HasSuffix(entry.Name(), ".up.sql") {
continue
}
body, err := fs.ReadFile(migrations.Postgres, path.Join("postgres", entry.Name()))
if err != nil {
t.Fatal(err)
}
if bad := unsupportedMigrationStatement(string(body)); bad != "" {
t.Errorf("%s contains unsupported transaction control or DDL: %q", entry.Name(), bad)
}
}
}
func TestPostgresMigrationRejectsTransactionControl(t *testing.T) {
for _, statement := range []string{
"COMMIT;", "END;", "ROLLBACK;", "ABORT;", "BEGIN;",
"CREATE INDEX CONCURRENTLY idx ON t (id);", "VACUUM t;",
"CREATE TABLE t(id int); /* boundary */ COMMIT; SELECT 1/0;",
"/* comment */COMMIT;",
"-- comment\nCOMMIT;",
"/* nested /* comment */ still comment */ END;",
"CREATE TABLE foo$tag$ (id int); COMMIT; -- $tag$",
"-- comment\rCOMMIT;",
`foo$E'abc\'; COMMIT;`,
`éE'abc\'; COMMIT;`,
} {
if unsupportedMigrationStatement(statement) == "" {
t.Errorf("did not reject %q", statement)
}
}
}
func TestPostgresMigrationIgnoresQuotedControlWords(t *testing.T) {
for _, statement := range []string{
"SELECT 'COMMIT;'::text;",
"SELECT $$COMMIT;$$;",
"SELECT $tag$END;$tag$;",
"SELECT E'ABORT;\\'';",
"SELECT \"ROLLBACK\" FROM t;",
"-- COMMIT;\nSELECT 1;",
} {
if bad := unsupportedMigrationStatement(statement); bad != "" {
t.Errorf("rejected quoted or commented SQL %q: %s", statement, bad)
}
}
}