def verify_neighbor_table(node, neighbors): """ This function verifies that the neighbor table of a given `node` contains the node in the `neighbors` list. """ neighbor_table = wpan.parse_neighbor_table_result(node.get(wpan.WPAN_THREAD_NEIGHBOR_TABLE)) for neighbor in neighbors: ext_addr = neighbor.get(wpan.WPAN_EXT_ADDRESS)[1:-1] for entry in neighbor_table: if entry.ext_address == ext_addr: break else: raise wpan.VerifyError('Failed to find a neighbor entry for extended address {} in table'.format(ext_addr))
for num in range(1, NUM_ROUTERS): ed[num].join_node(routers[num], wpan.JOIN_TYPE_END_DEVICE) for num in range(NUM_CHILDREN): children[num].join_node(routers[0], wpan.JOIN_TYPE_SLEEPY_END_DEVICE) children[num].set(wpan.WPAN_POLL_INTERVAL, '300') # ----------------------------------------------------------------------------------------------------------------------- # Test implementation for router in routers[1:]: verify(router.get(wpan.WPAN_NODE_TYPE) == wpan.NODE_TYPE_ROUTER) # Get and parse the neighbor table on routers[0]. neighbor_table = wpan.parse_neighbor_table_result(routers[0].get( wpan.WPAN_THREAD_NEIGHBOR_TABLE)) verify(len(neighbor_table) == NUM_ROUTERS - 1 + NUM_CHILDREN) # Verify that all children are seen in the neighbor table for child in children: ext_addr = child.get(wpan.WPAN_EXT_ADDRESS)[1:-1] for entry in neighbor_table: if entry.ext_address == ext_addr: break else: raise wpan.VerifyError( 'Failed to find a child entry for extended address {} in table'. format(ext_addr)) verify(
for num in range(1, NUM_ROUTERS): ed[num].join_node(routers[num], wpan.JOIN_TYPE_END_DEVICE) for num in range(NUM_CHILDREN): children[num].join_node(routers[0], wpan.JOIN_TYPE_SLEEPY_END_DEVICE) children[num].set(wpan.WPAN_POLL_INTERVAL,'300') #----------------------------------------------------------------------------------------------------------------------- # Test implementation for router in routers[1:]: verify(router.get(wpan.WPAN_NODE_TYPE) == wpan.NODE_TYPE_ROUTER) # Get and parse the neighbor table on routers[0]. neighbor_table = wpan.parse_neighbor_table_result(routers[0].get(wpan.WPAN_THREAD_NEIGHBOR_TABLE)) verify(len(neighbor_table) == NUM_ROUTERS - 1 + NUM_CHILDREN) # Verify that all children are seen in the neighbor table for child in children: ext_addr = child.get(wpan.WPAN_EXT_ADDRESS)[1:-1] for entry in neighbor_table: if entry.ext_address == ext_addr: break; else: raise wpan.VerifyError('Failed to find a child entry for extended address {} in table'.format(ext_addr)) verify(int(entry.rloc16, 16) == int(child.get(wpan.WPAN_THREAD_RLOC16), 16)) verify(entry.is_rx_on_when_idle() == False) verify(entry.is_ftd() == False)
def check_all_children_are_attached(): neighbor_table = wpan.parse_neighbor_table_result( parent.get(wpan.WPAN_THREAD_NEIGHBOR_TABLE)) verify(len(neighbor_table) == 3)