fix(traffic): сохранять историю отключённых интерфейсов
This commit is contained in:
1 parent
c69d99ba80
commit
a40b26c3c5
16 files changed
+1763
-14
No files matched your search
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"date": "2026-10-12",
|
||||
"block": "12.5.184",
|
||||
"version": "1.0.0-test.history184",
|
||||
"passed": true,
|
||||
"method": "Read-only actual application volume API; no new native RouterOS commands; exact edge values covered separately by owned SQL",
|
||||
"cases": [
|
||||
{
|
||||
"sourceId": "1",
|
||||
"volumeUnit": "GiB",
|
||||
"rxTotalGiB": 0.013438726775348186,
|
||||
"txTotalGiB": 0.0019880058243870735,
|
||||
"currentState": "current"
|
||||
},
|
||||
{
|
||||
"sourceId": "2",
|
||||
"volumeUnit": "GiB",
|
||||
"rxTotalGiB": 0.0022225677967071533,
|
||||
"txTotalGiB": 0.002511531114578247,
|
||||
"currentState": "current"
|
||||
}
|
||||
],
|
||||
"newRouterOSCommands": 0,
|
||||
"passwordChanges": 0,
|
||||
"messages": 0
|
||||
}
|
||||
@@ -0,0 +1,235 @@
|
||||
{
|
||||
"date": "2026-10-12",
|
||||
"block": "12.5.184",
|
||||
"kind": "Read-only reproduction; defect is open, not accepted",
|
||||
"sourceSha256": "f18772f98921c044db7ad2ba1167a5691a1c67cb42ca2fc7073381ce2da28f43",
|
||||
"runtimeWrites": 0,
|
||||
"routerCommands": 0,
|
||||
"cases": [
|
||||
{
|
||||
"state": "inactive",
|
||||
"inputs": [
|
||||
{
|
||||
"interfaceName": "ether1",
|
||||
"sampledAt": "2026-10-12T12:00:00.000Z",
|
||||
"rxBytes": 0,
|
||||
"txBytes": 0,
|
||||
"rxBps": 0,
|
||||
"txBps": 0,
|
||||
"running": true,
|
||||
"disabled": false,
|
||||
"countersKnown": true
|
||||
},
|
||||
{
|
||||
"interfaceName": "ether1",
|
||||
"sampledAt": "2026-10-12T12:00:30.000Z",
|
||||
"rxBytes": 1024,
|
||||
"txBytes": 1024,
|
||||
"rxBps": 0,
|
||||
"txBps": 0,
|
||||
"running": true,
|
||||
"disabled": false,
|
||||
"countersKnown": true
|
||||
},
|
||||
{
|
||||
"interfaceName": "ether1",
|
||||
"sampledAt": "2026-10-12T12:01:00.000Z",
|
||||
"rxBytes": 2048,
|
||||
"txBytes": 2048,
|
||||
"rxBps": 0,
|
||||
"txBps": 0,
|
||||
"running": false,
|
||||
"disabled": false,
|
||||
"countersKnown": true
|
||||
},
|
||||
{
|
||||
"interfaceName": "ether2",
|
||||
"sampledAt": "2026-10-12T12:00:00.000Z",
|
||||
"rxBytes": 0,
|
||||
"txBytes": 0,
|
||||
"rxBps": 0,
|
||||
"txBps": 0,
|
||||
"running": true,
|
||||
"disabled": false,
|
||||
"countersKnown": true
|
||||
},
|
||||
{
|
||||
"interfaceName": "ether2",
|
||||
"sampledAt": "2026-10-12T12:00:30.000Z",
|
||||
"rxBytes": 0,
|
||||
"txBytes": 0,
|
||||
"rxBps": 0,
|
||||
"txBps": 0,
|
||||
"running": true,
|
||||
"disabled": false,
|
||||
"countersKnown": true
|
||||
},
|
||||
{
|
||||
"interfaceName": "ether2",
|
||||
"sampledAt": "2026-10-12T12:01:00.000Z",
|
||||
"rxBytes": 0,
|
||||
"txBytes": 0,
|
||||
"rxBps": 0,
|
||||
"txBps": 0,
|
||||
"running": true,
|
||||
"disabled": false,
|
||||
"countersKnown": true
|
||||
}
|
||||
],
|
||||
"aggregateBytes": 0,
|
||||
"detailBytes": 2048,
|
||||
"aggregateHasKnownHistory": true,
|
||||
"omittedKnownBytes": 2048
|
||||
},
|
||||
{
|
||||
"state": "disabled",
|
||||
"inputs": [
|
||||
{
|
||||
"interfaceName": "ether1",
|
||||
"sampledAt": "2026-10-12T12:00:00.000Z",
|
||||
"rxBytes": 0,
|
||||
"txBytes": 0,
|
||||
"rxBps": 0,
|
||||
"txBps": 0,
|
||||
"running": true,
|
||||
"disabled": false,
|
||||
"countersKnown": true
|
||||
},
|
||||
{
|
||||
"interfaceName": "ether1",
|
||||
"sampledAt": "2026-10-12T12:00:30.000Z",
|
||||
"rxBytes": 1024,
|
||||
"txBytes": 1024,
|
||||
"rxBps": 0,
|
||||
"txBps": 0,
|
||||
"running": true,
|
||||
"disabled": false,
|
||||
"countersKnown": true
|
||||
},
|
||||
{
|
||||
"interfaceName": "ether1",
|
||||
"sampledAt": "2026-10-12T12:01:00.000Z",
|
||||
"rxBytes": 2048,
|
||||
"txBytes": 2048,
|
||||
"rxBps": 0,
|
||||
"txBps": 0,
|
||||
"running": true,
|
||||
"disabled": true,
|
||||
"countersKnown": true
|
||||
},
|
||||
{
|
||||
"interfaceName": "ether2",
|
||||
"sampledAt": "2026-10-12T12:00:00.000Z",
|
||||
"rxBytes": 0,
|
||||
"txBytes": 0,
|
||||
"rxBps": 0,
|
||||
"txBps": 0,
|
||||
"running": true,
|
||||
"disabled": false,
|
||||
"countersKnown": true
|
||||
},
|
||||
{
|
||||
"interfaceName": "ether2",
|
||||
"sampledAt": "2026-10-12T12:00:30.000Z",
|
||||
"rxBytes": 0,
|
||||
"txBytes": 0,
|
||||
"rxBps": 0,
|
||||
"txBps": 0,
|
||||
"running": true,
|
||||
"disabled": false,
|
||||
"countersKnown": true
|
||||
},
|
||||
{
|
||||
"interfaceName": "ether2",
|
||||
"sampledAt": "2026-10-12T12:01:00.000Z",
|
||||
"rxBytes": 0,
|
||||
"txBytes": 0,
|
||||
"rxBps": 0,
|
||||
"txBps": 0,
|
||||
"running": true,
|
||||
"disabled": false,
|
||||
"countersKnown": true
|
||||
}
|
||||
],
|
||||
"aggregateBytes": 0,
|
||||
"detailBytes": 2048,
|
||||
"aggregateHasKnownHistory": true,
|
||||
"omittedKnownBytes": 2048
|
||||
},
|
||||
{
|
||||
"state": "active",
|
||||
"inputs": [
|
||||
{
|
||||
"interfaceName": "ether1",
|
||||
"sampledAt": "2026-10-12T12:00:00.000Z",
|
||||
"rxBytes": 0,
|
||||
"txBytes": 0,
|
||||
"rxBps": 0,
|
||||
"txBps": 0,
|
||||
"running": true,
|
||||
"disabled": false,
|
||||
"countersKnown": true
|
||||
},
|
||||
{
|
||||
"interfaceName": "ether1",
|
||||
"sampledAt": "2026-10-12T12:00:30.000Z",
|
||||
"rxBytes": 1024,
|
||||
"txBytes": 1024,
|
||||
"rxBps": 0,
|
||||
"txBps": 0,
|
||||
"running": true,
|
||||
"disabled": false,
|
||||
"countersKnown": true
|
||||
},
|
||||
{
|
||||
"interfaceName": "ether1",
|
||||
"sampledAt": "2026-10-12T12:01:00.000Z",
|
||||
"rxBytes": 2048,
|
||||
"txBytes": 2048,
|
||||
"rxBps": 0,
|
||||
"txBps": 0,
|
||||
"running": true,
|
||||
"disabled": false,
|
||||
"countersKnown": true
|
||||
},
|
||||
{
|
||||
"interfaceName": "ether2",
|
||||
"sampledAt": "2026-10-12T12:00:00.000Z",
|
||||
"rxBytes": 0,
|
||||
"txBytes": 0,
|
||||
"rxBps": 0,
|
||||
"txBps": 0,
|
||||
"running": true,
|
||||
"disabled": false,
|
||||
"countersKnown": true
|
||||
},
|
||||
{
|
||||
"interfaceName": "ether2",
|
||||
"sampledAt": "2026-10-12T12:00:30.000Z",
|
||||
"rxBytes": 0,
|
||||
"txBytes": 0,
|
||||
"rxBps": 0,
|
||||
"txBps": 0,
|
||||
"running": true,
|
||||
"disabled": false,
|
||||
"countersKnown": true
|
||||
},
|
||||
{
|
||||
"interfaceName": "ether2",
|
||||
"sampledAt": "2026-10-12T12:01:00.000Z",
|
||||
"rxBytes": 0,
|
||||
"txBytes": 0,
|
||||
"rxBps": 0,
|
||||
"txBps": 0,
|
||||
"running": true,
|
||||
"disabled": false,
|
||||
"countersKnown": true
|
||||
}
|
||||
],
|
||||
"aggregateBytes": 2048,
|
||||
"detailBytes": 2048,
|
||||
"aggregateHasKnownHistory": true,
|
||||
"omittedKnownBytes": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"date": "2026-10-12",
|
||||
"block": "12.5.184",
|
||||
"runtime": {
|
||||
"backend": "ux-history184",
|
||||
"frontend": "ux-warning183"
|
||||
},
|
||||
"apis": [
|
||||
{
|
||||
"path": "/api/traffic/servers",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"path": "/api/traffic/users",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"path": "/api/traffic/bound-interfaces",
|
||||
"status": 200
|
||||
}
|
||||
],
|
||||
"cases": [
|
||||
{
|
||||
"width": 1440,
|
||||
"trafficServers200": true,
|
||||
"attemptProvenanceVisible": true,
|
||||
"actualLiveSample": true,
|
||||
"backendReceiptLabel": true,
|
||||
"pageErrors": 0,
|
||||
"noOverflow": true
|
||||
},
|
||||
{
|
||||
"width": 320,
|
||||
"trafficServers200": true,
|
||||
"attemptProvenanceVisible": true,
|
||||
"actualLiveSample": true,
|
||||
"backendReceiptLabel": true,
|
||||
"pageErrors": 0,
|
||||
"noOverflow": true
|
||||
}
|
||||
],
|
||||
"bounds": [
|
||||
"Read-only smoke; error/stale/legacy branches proven by owned SQL and UI fixtures",
|
||||
"No manual production scheduler/config/password/message writes"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,235 @@
|
||||
{
|
||||
"date": "2026-10-12",
|
||||
"block": "12.5.184",
|
||||
"kind": "Read-only fixed formulas; SQL acceptance required",
|
||||
"sourceSha256": "b5d93f8d6118bb7a3bd442e624719da4a049878e4424447a7c9d5f7a72da0029",
|
||||
"runtimeWrites": 0,
|
||||
"routerCommands": 0,
|
||||
"cases": [
|
||||
{
|
||||
"state": "inactive",
|
||||
"inputs": [
|
||||
{
|
||||
"interfaceName": "ether1",
|
||||
"sampledAt": "2026-10-12T12:00:00.000Z",
|
||||
"rxBytes": 0,
|
||||
"txBytes": 0,
|
||||
"rxBps": 0,
|
||||
"txBps": 0,
|
||||
"running": true,
|
||||
"disabled": false,
|
||||
"countersKnown": true
|
||||
},
|
||||
{
|
||||
"interfaceName": "ether1",
|
||||
"sampledAt": "2026-10-12T12:00:30.000Z",
|
||||
"rxBytes": 1024,
|
||||
"txBytes": 1024,
|
||||
"rxBps": 0,
|
||||
"txBps": 0,
|
||||
"running": true,
|
||||
"disabled": false,
|
||||
"countersKnown": true
|
||||
},
|
||||
{
|
||||
"interfaceName": "ether1",
|
||||
"sampledAt": "2026-10-12T12:01:00.000Z",
|
||||
"rxBytes": 2048,
|
||||
"txBytes": 2048,
|
||||
"rxBps": 0,
|
||||
"txBps": 0,
|
||||
"running": false,
|
||||
"disabled": false,
|
||||
"countersKnown": true
|
||||
},
|
||||
{
|
||||
"interfaceName": "ether2",
|
||||
"sampledAt": "2026-10-12T12:00:00.000Z",
|
||||
"rxBytes": 0,
|
||||
"txBytes": 0,
|
||||
"rxBps": 0,
|
||||
"txBps": 0,
|
||||
"running": true,
|
||||
"disabled": false,
|
||||
"countersKnown": true
|
||||
},
|
||||
{
|
||||
"interfaceName": "ether2",
|
||||
"sampledAt": "2026-10-12T12:00:30.000Z",
|
||||
"rxBytes": 0,
|
||||
"txBytes": 0,
|
||||
"rxBps": 0,
|
||||
"txBps": 0,
|
||||
"running": true,
|
||||
"disabled": false,
|
||||
"countersKnown": true
|
||||
},
|
||||
{
|
||||
"interfaceName": "ether2",
|
||||
"sampledAt": "2026-10-12T12:01:00.000Z",
|
||||
"rxBytes": 0,
|
||||
"txBytes": 0,
|
||||
"rxBps": 0,
|
||||
"txBps": 0,
|
||||
"running": true,
|
||||
"disabled": false,
|
||||
"countersKnown": true
|
||||
}
|
||||
],
|
||||
"aggregateBytes": 2048,
|
||||
"detailBytes": 2048,
|
||||
"aggregateHasKnownHistory": true,
|
||||
"omittedKnownBytes": 0
|
||||
},
|
||||
{
|
||||
"state": "disabled",
|
||||
"inputs": [
|
||||
{
|
||||
"interfaceName": "ether1",
|
||||
"sampledAt": "2026-10-12T12:00:00.000Z",
|
||||
"rxBytes": 0,
|
||||
"txBytes": 0,
|
||||
"rxBps": 0,
|
||||
"txBps": 0,
|
||||
"running": true,
|
||||
"disabled": false,
|
||||
"countersKnown": true
|
||||
},
|
||||
{
|
||||
"interfaceName": "ether1",
|
||||
"sampledAt": "2026-10-12T12:00:30.000Z",
|
||||
"rxBytes": 1024,
|
||||
"txBytes": 1024,
|
||||
"rxBps": 0,
|
||||
"txBps": 0,
|
||||
"running": true,
|
||||
"disabled": false,
|
||||
"countersKnown": true
|
||||
},
|
||||
{
|
||||
"interfaceName": "ether1",
|
||||
"sampledAt": "2026-10-12T12:01:00.000Z",
|
||||
"rxBytes": 2048,
|
||||
"txBytes": 2048,
|
||||
"rxBps": 0,
|
||||
"txBps": 0,
|
||||
"running": true,
|
||||
"disabled": true,
|
||||
"countersKnown": true
|
||||
},
|
||||
{
|
||||
"interfaceName": "ether2",
|
||||
"sampledAt": "2026-10-12T12:00:00.000Z",
|
||||
"rxBytes": 0,
|
||||
"txBytes": 0,
|
||||
"rxBps": 0,
|
||||
"txBps": 0,
|
||||
"running": true,
|
||||
"disabled": false,
|
||||
"countersKnown": true
|
||||
},
|
||||
{
|
||||
"interfaceName": "ether2",
|
||||
"sampledAt": "2026-10-12T12:00:30.000Z",
|
||||
"rxBytes": 0,
|
||||
"txBytes": 0,
|
||||
"rxBps": 0,
|
||||
"txBps": 0,
|
||||
"running": true,
|
||||
"disabled": false,
|
||||
"countersKnown": true
|
||||
},
|
||||
{
|
||||
"interfaceName": "ether2",
|
||||
"sampledAt": "2026-10-12T12:01:00.000Z",
|
||||
"rxBytes": 0,
|
||||
"txBytes": 0,
|
||||
"rxBps": 0,
|
||||
"txBps": 0,
|
||||
"running": true,
|
||||
"disabled": false,
|
||||
"countersKnown": true
|
||||
}
|
||||
],
|
||||
"aggregateBytes": 2048,
|
||||
"detailBytes": 2048,
|
||||
"aggregateHasKnownHistory": true,
|
||||
"omittedKnownBytes": 0
|
||||
},
|
||||
{
|
||||
"state": "active",
|
||||
"inputs": [
|
||||
{
|
||||
"interfaceName": "ether1",
|
||||
"sampledAt": "2026-10-12T12:00:00.000Z",
|
||||
"rxBytes": 0,
|
||||
"txBytes": 0,
|
||||
"rxBps": 0,
|
||||
"txBps": 0,
|
||||
"running": true,
|
||||
"disabled": false,
|
||||
"countersKnown": true
|
||||
},
|
||||
{
|
||||
"interfaceName": "ether1",
|
||||
"sampledAt": "2026-10-12T12:00:30.000Z",
|
||||
"rxBytes": 1024,
|
||||
"txBytes": 1024,
|
||||
"rxBps": 0,
|
||||
"txBps": 0,
|
||||
"running": true,
|
||||
"disabled": false,
|
||||
"countersKnown": true
|
||||
},
|
||||
{
|
||||
"interfaceName": "ether1",
|
||||
"sampledAt": "2026-10-12T12:01:00.000Z",
|
||||
"rxBytes": 2048,
|
||||
"txBytes": 2048,
|
||||
"rxBps": 0,
|
||||
"txBps": 0,
|
||||
"running": true,
|
||||
"disabled": false,
|
||||
"countersKnown": true
|
||||
},
|
||||
{
|
||||
"interfaceName": "ether2",
|
||||
"sampledAt": "2026-10-12T12:00:00.000Z",
|
||||
"rxBytes": 0,
|
||||
"txBytes": 0,
|
||||
"rxBps": 0,
|
||||
"txBps": 0,
|
||||
"running": true,
|
||||
"disabled": false,
|
||||
"countersKnown": true
|
||||
},
|
||||
{
|
||||
"interfaceName": "ether2",
|
||||
"sampledAt": "2026-10-12T12:00:30.000Z",
|
||||
"rxBytes": 0,
|
||||
"txBytes": 0,
|
||||
"rxBps": 0,
|
||||
"txBps": 0,
|
||||
"running": true,
|
||||
"disabled": false,
|
||||
"countersKnown": true
|
||||
},
|
||||
{
|
||||
"interfaceName": "ether2",
|
||||
"sampledAt": "2026-10-12T12:01:00.000Z",
|
||||
"rxBytes": 0,
|
||||
"txBytes": 0,
|
||||
"rxBps": 0,
|
||||
"txBps": 0,
|
||||
"running": true,
|
||||
"disabled": false,
|
||||
"countersKnown": true
|
||||
}
|
||||
],
|
||||
"aggregateBytes": 2048,
|
||||
"detailBytes": 2048,
|
||||
"aggregateHasKnownHistory": true,
|
||||
"omittedKnownBytes": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"date": "2026-10-12",
|
||||
"block": "12.5.184",
|
||||
"secretEnvCopied": false,
|
||||
"rollbackTags": {
|
||||
"MMAPP_IMAGE_TAG": "ux-warning183",
|
||||
"BACKEND_IMAGE_TAG": "ux-warning183"
|
||||
},
|
||||
"services": {
|
||||
"backend": {
|
||||
"image": "mmapp-test/backend:ux-history184",
|
||||
"imageId": "sha256:c418eb2464ab3e306e12a6774296955c51da6ca14fab3844a6616598f232908d",
|
||||
"state": "running",
|
||||
"health": "healthy",
|
||||
"matchedVerifiedImage": true
|
||||
},
|
||||
"frontend": {
|
||||
"image": "mmapp-test/frontend:ux-warning183",
|
||||
"imageId": "sha256:4cf0549a212bfdc75c0107f3725686a9a9746a46ed6493ac73f608a0a335a586",
|
||||
"state": "running",
|
||||
"health": null,
|
||||
"matchedVerifiedImage": true
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"date": "2026-10-12",
|
||||
"block": "12.5.184",
|
||||
"matched": {
|
||||
"backend": 455,
|
||||
"frontend": 524
|
||||
},
|
||||
"different": [],
|
||||
"missing": []
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"date": "2026-10-12",
|
||||
"block": "12.5.184",
|
||||
"passed": true,
|
||||
"profiles": [
|
||||
{
|
||||
"date": "2026-10-12",
|
||||
"block": "12.5.184",
|
||||
"database": "mm_accept_166_1791820617652",
|
||||
"scope": "ephemeral role and precreated owned database; no copied production credentials",
|
||||
"tests": [
|
||||
{
|
||||
"command": "npm --prefix backend run test:traffic-rate",
|
||||
"passed": true,
|
||||
"durationMs": 36245,
|
||||
"ownedTrafficSqlCases": 9,
|
||||
"ownedHistorySqlCases": 14,
|
||||
"ownedLiveSqlCases": 10,
|
||||
"ownedVolumeSqlCases": 8,
|
||||
"ownedStatusSqlCases": 14,
|
||||
"postgresUnavailableSkip": false
|
||||
}
|
||||
],
|
||||
"scopedRoleVerified": true,
|
||||
"passed": true,
|
||||
"databaseRemoved": true,
|
||||
"roleRemoved": true,
|
||||
"testContainerRemoved": true
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in new issue
Block a user