From cbb4f9f0fc3f634685d5939f5c1149db8566dfc1 Mon Sep 17 00:00:00 2001 From: Denozordec Date: Wed, 14 Oct 2026 03:09:09 +0700 Subject: [PATCH] =?UTF-8?q?chore(test):=20=D1=81=D0=BE=D1=85=D1=80=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D1=82=D1=8C=20=D0=BA=D0=BE=D1=80=D0=BE=D1=82=D0=BA?= =?UTF-8?q?=D0=BE=D0=B5=20=D0=BD=D0=B0=D0=B1=D0=BB=D1=8E=D0=B4=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20REST=20=D1=82=D0=B5=D1=81=D1=82=D0=BE=D0=B2?= =?UTF-8?q?=D1=8B=D1=85=20CHR?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../acceptance/chr-rest-observation.mjs | 12 + docs/ux-ui-external-acceptance.md | 6 +- docs/ux-ui-plan.md | 2 +- docs/ux-ui-progress.md | 12 +- docs/ux-ui-remaining-acceptance.md | 8 +- docs/ux-ui-stage-12.md | 11 +- docs/ux-ui-test-server.md | 6 +- .../chr224-rest-observation-2026-10-14.json | 1157 +++++++++++++++++ 8 files changed, 1206 insertions(+), 8 deletions(-) create mode 100644 backend/scripts/acceptance/chr-rest-observation.mjs create mode 100644 docs/ux-ui/acceptance/chr224-rest-observation-2026-10-14.json diff --git a/backend/scripts/acceptance/chr-rest-observation.mjs b/backend/scripts/acceptance/chr-rest-observation.mjs new file mode 100644 index 00000000..48a21790 --- /dev/null +++ b/backend/scripts/acceptance/chr-rest-observation.mjs @@ -0,0 +1,12 @@ +import assert from 'node:assert/strict' +import fs from 'node:fs' +const hosts=(process.env.MMAPP_TEST_CHR_HOSTS??'').split(',');assert.deepEqual(hosts,['194.226.121.150','104.165.244.7'],'Explicit owned lab hosts required') +const username=process.env.MMAPP_TEST_CHR_USER,password=process.env.MMAPP_TEST_CHR_PASSWORD;assert(username&&password,'Explicit test credentials required') +const authorization='Basic '+Buffer.from(username+':'+password).toString('base64'),paths=['/system/resource','/interface/gre','/routing/bgp/session','/routing/ospf/neighbor'],cases=[],start=Date.now(),deadline=start+360000,samples=20,periodMs=10000 +const sleep=ms=>new Promise(r=>setTimeout(r,ms)),output='docs/ux-ui/acceptance/chr224-rest-observation-2026-10-14.json' +function save(completed){const failed=cases.filter(c=>c.status!==200);fs.writeFileSync(output,JSON.stringify({date:'2026-10-14',block:'12.5.224',startedAt:new Date(start).toISOString(),completedAt:new Date().toISOString(),plannedSamples:samples,completedSamples:completed,periodMs,requests:cases.length,failedRequests:failed.length,cases,configurationWrites:0,passwordChanges:0,scope:'Low-rate direct native REST with Connection close; short window, no burst/load/physical WAN/SLA/root-cause proof'},null,2)+'\n')} +for(let sample=1;sample<=samples;sample++){ + if(Date.now()>deadline)break + for(const host of hosts)for(const path of paths){const began=Date.now();try{const r=await fetch('http://'+host+'/rest'+path,{headers:{authorization,Connection:'close'},signal:AbortSignal.timeout(8000)});await r.arrayBuffer();cases.push({sample,host,path,status:r.status,durationMs:Date.now()-began})}catch(e){cases.push({sample,host,path,status:null,errorName:e.name,durationMs:Date.now()-began})}await sleep(150)} + save(sample);console.log(JSON.stringify({completedSamples:sample,requests:cases.length,failedRequests:cases.filter(c=>c.status!==200).length}));if(sample