| | |
| | | @Test |
| | | void topologyPushMakesChannelsCandidatesWithTheirOwnLatestDataTime() |
| | | { |
| | | ingest("{\"kind\":\"TOPOLOGY\",\"rows\":[{\"channel\":26},{\"channel\":18}]}"); |
| | | // 拓扑行里可以带 channelNo:来源自己软件里显示的通道号(现场核对:22 所界面号 = 表名号 + 1) |
| | | ingest("{\"kind\":\"TOPOLOGY\",\"rows\":[{\"channel\":26,\"channelNo\":27},{\"channel\":18}]}"); |
| | | ingest(BATCH); |
| | | PushIngestAdapter adapter = adapter(NOW); |
| | | |
| | |
| | | assertTrue(active.available()); |
| | | // 候选的机器地址取实例配置:登记时会被带进检测柜的 IP 字段。 |
| | | assertEquals("127.0.0.1", active.serverIp()); |
| | | // 来源自己的通道叫法随候选一起交出(界面与登记用它显示),身份仍是表名里的号。 |
| | | assertEquals("27", active.sourceDisplayNo()); |
| | | assertEquals(26, active.identity().chlid()); |
| | | // 登记范围由操作员决定:没有采样行的通道照样出现在候选里,只是没有最近数据时间。 |
| | | assertNull(channels.stream().filter(channel -> channel.identity().chlid() == 18).findFirst() |
| | | .orElseThrow().lastDataAt()); |
| | | // 来源没报叫法的通道保持为空,界面回退到「单元-通道」。 |
| | | assertNull(channels.stream().filter(channel -> channel.identity().chlid() == 18).findFirst() |
| | | .orElseThrow().sourceDisplayNo()); |
| | | } |
| | | |
| | | /** 心跳缺失或过期即来源不可达:发现路径明确失败,业务侧据此把已登记设备置为离线并撤下旧快照。 */ |