def verify_prefix( node_list, prefix, prefix_len=64, stable=True, priority='med', on_mesh=False, slaac=False, dhcp=False, configure=False, default_route=False, preferred=False, ): """ This function verifies that the `prefix` is present on all nodes in the `node_list`. """ for node in node_list: prefixes = wpan.parse_on_mesh_prefix_result( node.get(wpan.WPAN_THREAD_ON_MESH_PREFIXES)) for p in prefixes: if p.prefix == prefix: if (int(p.prefix_len) == prefix_len and p.is_stable() == stable and p.is_on_mesh() == on_mesh and p.is_def_route() == default_route and p.is_slaac() == slaac and p.is_dhcp() == dhcp and p.is_config() == configure and p.is_preferred() == preferred and p.priority == priority): break else: raise wpan.VerifyError("Did not find prefix {} on node {}".format( prefix, node))
def verify_prefix(node_list, prefix, rloc16, prefix_len=64, stable=True, priority='med', on_mesh=False, slaac=False, dhcp=False, configure=False, default_route=False, preferred=True): """ This function verifies that the `prefix` is present on all the nodes in the `node_list`. It also verifies that the `prefix` is associated with the given `rloc16` (as an integer). """ for node in node_list: prefixes = wpan.parse_on_mesh_prefix_result( node.get(wpan.WPAN_THREAD_ON_MESH_PREFIXES)) for p in prefixes: if p.prefix == prefix and p.origin == "ncp" and int(p.rloc16(), 0) == rloc16: verify(int(p.prefix_len) == prefix_len) verify(p.is_stable() == stable) verify(p.is_on_mesh() == on_mesh) verify(p.is_def_route() == default_route) verify(p.is_slaac() == slaac) verify(p.is_dhcp() == dhcp) verify(p.is_config() == configure) verify(p.is_preferred() == preferred) verify(p.priority == priority) break else: raise wpan.VerifyError("Did not find prefix {} on node {}".format( prefix, node))
def check_addresses_and_prefixes(): # Verify that the addresses are present in "IPv6:AllAddresses" wpantund property on the corresponding node. verify(r2.find_ip6_address_with_prefix(IP6_PREFIX_1) == IP6_ADDR_1) verify(fed1.find_ip6_address_with_prefix(IP6_PREFIX_2) == IP6_ADDR_2) verify(sed2.find_ip6_address_with_prefix(IP6_PREFIX_3) == IP6_ADDR_3) # Verify that all prefixes are present in network data on all nodes (with correct flags). for prefix in [IP6_PREFIX_1, IP6_PREFIX_2, IP6_PREFIX_3]: for node in all_nodes: prefixes = wpan.parse_on_mesh_prefix_result(node.get(wpan.WPAN_THREAD_ON_MESH_PREFIXES)) for p in prefixes: if p.prefix == prefix: verify(p.prefix_len == '64') verify(p.is_stable()) verify(p.is_on_mesh() == True) verify(p.is_preferred() == True) verify(p.is_def_route() == False) verify(p.is_slaac() == False) verify(p.is_dhcp() == False) verify(p.is_config() == False) verify(p.priority == "med") break else: # `for` loop finished without finding the prefix. raise wpan.VerifyError('Did not find prefix {} on node {}'.format(prefix, node)) # Verify that IPv6 address of `sed2` is present on `r2` (its parent) "Thread:ChildTable:Addresses". addr_str = r2.get(wpan.WPAN_THREAD_CHILD_TABLE_ADDRESSES) # search for index on address in the `addr_str` and ensure it is non-negative. verify(addr_str.find(IP6_ADDR_3) >= 0)
def check_addresses_and_prefixes(): # Verify that the addresses are present in "IPv6:AllAddresses" wpantund # property on the corresponding node. verify(r2.find_ip6_address_with_prefix(IP6_PREFIX_1) == IP6_ADDR_1) verify(fed1.find_ip6_address_with_prefix(IP6_PREFIX_2) == IP6_ADDR_2) verify(sed2.find_ip6_address_with_prefix(IP6_PREFIX_3) == IP6_ADDR_3) # Verify that all prefixes are present in network data on all nodes (with # correct flags). for prefix in [IP6_PREFIX_1, IP6_PREFIX_2, IP6_PREFIX_3]: for node in all_nodes: prefixes = wpan.parse_on_mesh_prefix_result( node.get(wpan.WPAN_THREAD_ON_MESH_PREFIXES)) for p in prefixes: if p.prefix == prefix: verify(p.prefix_len == '64') verify(p.is_stable()) verify(p.is_on_mesh()) verify(p.is_preferred()) verify(p.is_def_route() is False) verify(p.is_slaac() is False) verify(p.is_dhcp() is False) verify(p.is_config() is False) verify(p.priority == "med") break else: # `for` loop finished without finding the prefix. raise wpan.VerifyError( 'Did not find prefix {} on node {}'.format(prefix, node)) # Verify that IPv6 address of `sed2` is present on `r2` (its parent) # "Thread:ChildTable:Addresses". addr_str = r2.get(wpan.WPAN_THREAD_CHILD_TABLE_ADDRESSES) # search for index on address in the `addr_str` and ensure it is # non-negative. verify(addr_str.find(IP6_ADDR_3) >= 0)
def verify_no_prefix(node_list, prefix): """ This function verifies that the `prefix` is NOT present on any node in the `node_list`. """ for node in node_list: prefixes = wpan.parse_on_mesh_prefix_result(node.get(wpan.WPAN_THREAD_ON_MESH_PREFIXES)) for p in prefixes: verify(not p.prefix == prefix)
def check_address_prefix_removed(): # Verify that address is removed from r2 verify(r2.find_ip6_address_with_prefix(IP6_PREFIX_1) == '') # Verify that the related prefix is also removed on all nodes for node in all_nodes: prefixes = wpan.parse_on_mesh_prefix_result(node.get(wpan.WPAN_THREAD_ON_MESH_PREFIXES)) for p in prefixes: verify(p.prefix != IP6_PREFIX_1)
def verify_no_prefix(node_list, prefix): """ This function verifies that the `prefix` is NOT present on any node in the `node_list`. """ for node in node_list: prefixes = wpan.parse_on_mesh_prefix_result(node.get(wpan.WPAN_THREAD_ON_MESH_PREFIXES)) for p in prefixes: verify(not p.prefix == prefix)
def verify_no_prefix(node_list, prefix, rloc16): """ This function verifies that none of the nodes in `node_list` contains the on-mesh `prefix` associated with the given `rloc16`. """ for node in node_list: prefixes = wpan.parse_on_mesh_prefix_result(node.get(wpan.WPAN_THREAD_ON_MESH_PREFIXES)) for p in prefixes: if p.prefix == prefix and p.origin == "ncp" and int(p.rloc16(), 0) == rloc16: raise wpan.VerifyError("Did find prefix {} with rloc {} on node {}".format(prefix, hex(rloc16), node))
def check_prefix(): for node in [r1, r2]: prefixes = wpan.parse_on_mesh_prefix_result(node.get(wpan.WPAN_THREAD_ON_MESH_PREFIXES)) for p in prefixes: if p.prefix == IP6_PREFIX: if (p.origin == 'ncp' and p.prefix_len == '64' and p.is_stable() and p.is_on_mesh() and p.is_preferred() and not p.is_def_route() and not p.is_slaac() and not p.is_dhcp() and not p.is_config() and p.priority == "med"): break else: # `for` loop finished without finding the prefix. raise wpan.VerifyError('Did not find prefix {} on node {}'.format(IP6_PREFIX, r1))
def check_prefix(): for node in [r1, r2]: prefixes = wpan.parse_on_mesh_prefix_result(node.get(wpan.WPAN_THREAD_ON_MESH_PREFIXES)) for p in prefixes: if p.prefix == IP6_PREFIX: if (p.origin == 'ncp' and p.prefix_len == '64' and p.is_stable() and p.is_on_mesh() and p.is_preferred() and not p.is_def_route() and not p.is_slaac() and not p.is_dhcp() and not p.is_config() and p.priority == "med"): break else: # `for` loop finished without finding the prefix. raise wpan.VerifyError('Did not find prefix {} on node {}'.format(IP6_PREFIX, r1))
def verify_no_prefix(node_list, prefix, rloc16): """ This function verifies that none of the nodes in `node_list` contains the on-mesh `prefix` associated with the given `rloc16`. """ for node in node_list: prefixes = wpan.parse_on_mesh_prefix_result( node.get(wpan.WPAN_THREAD_ON_MESH_PREFIXES)) for p in prefixes: if p.prefix == prefix and p.origin == "ncp" and int(p.rloc16(), 0) == rloc16: raise wpan.VerifyError( "Did find prefix {} with rloc {} on node {}".format( prefix, hex(rloc16), node))
def verify_prefix(node_list, prefix, on_mesh=True, slaac=True, def_route=False, priority='med'): """ This function verifies that all the nodes in the given `node_list` contain an IPv6 address with the given prefix, and that the given prefix is present in the on-mesh prefixes list with the given flags (on-mesh, slaac, etc). """ for node in node_list: all_addrs = wpan.parse_list(node.get(wpan.WPAN_IP6_ALL_ADDRESSES)) verify(any([addr.startswith(prefix[:-1]) for addr in all_addrs])) prefixes = wpan.parse_on_mesh_prefix_result(node.get(wpan.WPAN_THREAD_ON_MESH_PREFIXES)) for p in prefixes: if p.prefix == prefix: verify(p.prefix_len == '64') verify(p.is_stable()) verify(p.is_on_mesh() == on_mesh) verify(p.is_def_route() == def_route) verify(p.is_slaac() == slaac) verify(p.is_dhcp() == False) verify(p.priority == priority)
def verify_prefix(node_list, prefix, prefix_len=64, stable=True, priority='med', on_mesh=False, slaac=False, dhcp=False, configure=False, default_route=False, preferred=False): """ This function verifies that the `prefix` is present on all nodes in the `node_list`. """ for node in node_list: prefixes = wpan.parse_on_mesh_prefix_result(node.get(wpan.WPAN_THREAD_ON_MESH_PREFIXES)) for p in prefixes: if p.prefix == prefix: if int(p.prefix_len) == prefix_len and \ p.is_stable() == stable and \ p.is_on_mesh() == on_mesh and \ p.is_def_route() == default_route and \ p.is_slaac() == slaac and \ p.is_dhcp() == dhcp and \ p.is_config() == configure and \ p.is_preferred() == preferred and \ p.priority == priority: break else: raise wpan.VerifyError("Did not find prefix {} on node {}".format(prefix, node))
def verify_prefix(node_list, prefix, rloc16, prefix_len=64, stable=True, priority='med', on_mesh=False, slaac=False, dhcp=False, configure=False, default_route=False, preferred=True): """ This function verifies that the `prefix` is present on all the nodes in the `node_list`. It also verifies that the `prefix` is associated with the given `rloc16` (as an integer). """ for node in node_list: prefixes = wpan.parse_on_mesh_prefix_result(node.get(wpan.WPAN_THREAD_ON_MESH_PREFIXES)) for p in prefixes: if p.prefix == prefix and p.origin == "ncp" and int(p.rloc16(), 0) == rloc16: verify(int(p.prefix_len) == prefix_len) verify(p.is_stable() == stable) verify(p.is_on_mesh() == on_mesh) verify(p.is_def_route() == default_route) verify(p.is_slaac() == slaac) verify(p.is_dhcp() == dhcp) verify(p.is_config() == configure) verify(p.is_preferred() == preferred) verify(p.priority == priority) break else: raise wpan.VerifyError("Did not find prefix {} on node {}".format(prefix, node))
def check_empty_prefix_list(): for node in [r1, r2]: prefixes = wpan.parse_on_mesh_prefix_result( node.get(wpan.WPAN_THREAD_ON_MESH_PREFIXES)) verify(len(prefixes) == 0)
def check_empty_prefix_list(): for node in [r1, r2]: prefixes = wpan.parse_on_mesh_prefix_result(node.get(wpan.WPAN_THREAD_ON_MESH_PREFIXES)) verify(len(prefixes) == 0)