0e8f1ca03a
Добавить структурированные журналы, метрики, трассировку и безопасный канал критических ошибок. Усилить границы рантайма, тесты, проверку зависимостей и сценарии развёртывания.
43 lines
1.1 KiB
Rust
43 lines
1.1 KiB
Rust
use crank_observability::RequestId;
|
|
use uuid::Version;
|
|
|
|
#[test]
|
|
fn preserves_valid_opaque_request_id() {
|
|
let request_id = RequestId::resolve(Some("req_test-123/abc"));
|
|
|
|
assert_eq!(request_id.as_str(), "req_test-123/abc");
|
|
}
|
|
|
|
#[test]
|
|
fn replaces_missing_and_invalid_values_with_uuid_v7() {
|
|
for candidate in [
|
|
None,
|
|
Some(""),
|
|
Some("bad value"),
|
|
Some(" leading"),
|
|
Some("trailing "),
|
|
Some("bad,value"),
|
|
Some("bad;value"),
|
|
Some("я"),
|
|
] {
|
|
let request_id = RequestId::resolve(candidate);
|
|
let parsed = uuid::Uuid::parse_str(request_id.as_str()).expect("generated UUID");
|
|
|
|
assert_eq!(parsed.get_version(), Some(Version::SortRand));
|
|
}
|
|
}
|
|
|
|
#[test]
|
|
fn rejects_values_over_the_shared_limit() {
|
|
let oversized = "x".repeat(RequestId::MAX_LEN + 1);
|
|
let request_id = RequestId::resolve(Some(&oversized));
|
|
|
|
assert_ne!(request_id.as_str(), oversized);
|
|
assert_eq!(
|
|
uuid::Uuid::parse_str(request_id.as_str())
|
|
.expect("generated UUID")
|
|
.get_version(),
|
|
Some(Version::SortRand)
|
|
);
|
|
}
|