t23-real-probe.mjs 2.1 KB

12345678910111213141516171819202122232425262728293031
  1. // Real read-only probe (GET only, no writes, no deploy). Verifies token paging and eight-bucket status contract.
  2. const base = 'http://192.168.110.96:8301/api/cockpit/v1'
  3. const get = async (path) => {
  4. const response = await fetch(`${base}${path}`)
  5. let body = null
  6. try { body = await response.json() } catch { body = null }
  7. return { status: response.status, body }
  8. }
  9. const bucket = (r) => (r.body && r.body.data) || {}
  10. const first = await get('/map-snapshot?page=1&pageSize=2')
  11. const token = bucket(first).snapshotAt
  12. console.log('page1', { status: first.status, snapshotAt: token, total: bucket(first).total, hasDistribution: 'pointStatusDistribution' in bucket(first), mapFilterKeys: Object.keys(bucket(first).mapFilter || {}) })
  13. const withToken = await get(`/map-snapshot?page=2&pageSize=2${token ? `&snapshotAt=${encodeURIComponent(token)}` : ''}`)
  14. console.log('page2-with-token', { status: withToken.status, code: withToken.body && withToken.body.code })
  15. const withoutToken = await get('/map-snapshot?page=2&pageSize=2')
  16. console.log('page2-no-token', { status: withoutToken.status, code: withoutToken.body && withoutToken.body.code, category: withoutToken.body && withoutToken.body.data && withoutToken.body.data.category })
  17. const noFilter = await get('/map-snapshot?page=1&pageSize=500')
  18. const alarm = await get('/map-snapshot?page=1&pageSize=500&pointStatus=ALARM')
  19. console.log('status-filter', { noFilterTotal: bucket(noFilter).total, alarmTotal: bucket(alarm).total, echo: bucket(alarm).mapFilter && bucket(alarm).mapFilter.pointStatus })
  20. for (const value of ['UNKNOWN', 'UNASSOCIATED', 'BOGUS']) {
  21. const response = await get(`/map-snapshot?page=1&pageSize=5&pointStatus=${value}`)
  22. console.log(`status-${value}`, { status: response.status, code: response.body && response.body.code })
  23. }
  24. const distribution = await get('/monitoring/distribution?mode=WARNING&pointStatus=UNKNOWN')
  25. console.log('distribution-UNKNOWN', { status: distribution.status, code: distribution.body && distribution.body.code })
  26. console.log('distribution-buckets', Object.keys(bucket(distribution).pointStatusDistribution || {}))