Files
bsodfather 0e8f1ca03a
CI / Rust Checks (push) Failing after 4m28s
CI / UI Checks (push) Has been skipped
CI / Frontend E2E (push) Has been skipped
CI / Community Image Smoke (push) Has been skipped
CI / Deploy (push) Has been skipped
наблюдаемость: завершить базовый контур Community
Добавить структурированные журналы, метрики, трассировку и безопасный канал критических ошибок. Усилить границы рантайма, тесты, проверку зависимостей и сценарии развёртывания.
2026-07-31 01:01:14 +03:00

45 lines
1.5 KiB
Rust

use crank_registry::PostgresRegistry;
use sqlx::Row;
#[tokio::test]
async fn core_migration_is_versioned_and_safe_under_concurrent_startup() {
let database_url = crank_test_support::postgres_schema_url("test_core_migration").await;
let (first, second) = tokio::join!(
PostgresRegistry::connect(&database_url),
PostgresRegistry::connect(&database_url),
);
let first = first.expect("first service startup must apply the migration");
second.expect("second service startup must observe the applied migration");
let rows = sqlx::query(
"select version, description, checksum from __crank_core_migrations order by version",
)
.fetch_all(first.pool())
.await
.expect("migration ledger must be readable");
assert_eq!(rows.len(), 1);
assert_eq!(rows[0].get::<i32, _>("version"), 1);
assert_eq!(
rows[0].get::<String, _>("description"),
"community baseline"
);
assert_eq!(
rows[0].get::<String, _>("checksum"),
"crank-community-baseline-v1"
);
let approval_columns = sqlx::query(
"select column_name
from information_schema.columns
where table_schema = current_schema()
and table_name = 'approval_requests'
and column_name in ('execution_started_at', 'execution_attempts', 'request_fingerprint')",
)
.fetch_all(first.pool())
.await
.expect("approval schema must be readable");
assert_eq!(approval_columns.len(), 3);
}