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))
示例#2
0
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)
示例#5
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))
示例#11
0
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)