from unittest import TestCase from station.node_inventory import inventory, node_group class NodeInventoryTest(TestCase): def test_namespaces_duplicates_and_discovery_do_not_imply_ownership_or_health(self): result = inventory({'node_paths':['/left/servo_node','/right/servo_node','/left/servo_node','/_ros2cli_1']}, {'motion:89':{'pid':123,'running':True,'owner':'station'}}, [], {'89':{'pose_live':False,'enabled':None}}, {}) left = next(n for n in result['nodes'] if n['name']=='/left/servo_node') self.assertEqual(left['instances'],2) self.assertEqual(left['owner'],'unverified') self.assertEqual(result['duplicates'],['/left/servo_node']) self.assertEqual(result['devices'][0]['health'],'offline') self.assertEqual(result['processes'][0]['owner'],'station') self.assertEqual(node_group('/right/rizon_arm_controller'),'运动控制') self.assertEqual(node_group('/perception_node'),'算法任务') self.assertEqual(node_group('/realsense_color_pub'),'设备驱动')