fix(traffic): подтверждать свежесть статусов привязанных интерфейсов
This commit is contained in:
1 parent
2b3d583e3b
commit
b4d0733cfa
27 files changed
+1463
-36
No files matched your search
@@ -0,0 +1,9 @@
|
||||
import assert from "node:assert/strict"
|
||||
import { projectTrafficBindingStatus } from "./traffic-binding-status.js"
|
||||
const at=Date.parse("2026-10-12T12:00:00Z"),s=new Date(at).toISOString(),expiry=new Date(at+90_000).toISOString()
|
||||
assert.equal(projectTrafficBindingStatus("online",s,expiry,at),"online")
|
||||
assert.equal(projectTrafficBindingStatus("offline",s,expiry,at),"offline")
|
||||
assert.equal(projectTrafficBindingStatus("online",undefined,undefined,at),"unknown")
|
||||
assert.equal(projectTrafficBindingStatus("online",s,expiry,at+90_001),"unknown")
|
||||
assert.equal(projectTrafficBindingStatus("online",s,"bad",at),"unknown")
|
||||
console.log("binding status legacy/expiry projection tests ok")
|
||||
@@ -0,0 +1,6 @@
|
||||
export function projectTrafficBindingStatus(status: unknown, observedAt: unknown, expiresAt: unknown, now = Date.now()): "online" | "offline" | "unknown" {
|
||||
if ((status !== "online" && status !== "offline") || typeof observedAt !== "string" || typeof expiresAt !== "string") return "unknown"
|
||||
const observed = Date.parse(observedAt), expires = Date.parse(expiresAt)
|
||||
if (!Number.isFinite(observed) || !Number.isFinite(expires) || observed >= expires || now > expires || observed > now + (expires-observed)/3) return "unknown"
|
||||
return status
|
||||
}
|
||||
Reference in new issue
Block a user