Beispiel #1
0
def test_noderolesdata_construction_empty():
    """Check that we construct empty node role data properly."""
    empty = NodeRolesData(defaultDimension=None,
                          roleDimensionOrder=[],
                          roleMappings=[])

    assert NodeRolesData() == empty
    assert NodeRolesData(None) == empty
    assert NodeRolesData(None, []) == empty
    assert NodeRolesData(None, [], []) == empty
Beispiel #2
0
def test_noderolesdata_construction_list():
    """Check that we construct node role data where sub-props are lists."""
    dimension = "dim"
    data = NodeRolesData(defaultDimension=None,
                         roleDimensionOrder=[dimension],
                         roleMappings=[])

    assert data.roleDimensionOrder == [dimension]

    mapping = RoleMapping(None, "", {}, {})
    data = NodeRolesData(defaultDimension=None,
                         roleDimensionOrder=[],
                         roleMappings=[mapping])

    assert data.roleMappings == [mapping]
def test_noderolesdata():
    """Check proper deserialization for a node roles data."""
    dict = {
        "roleDimensions": [
            {
                "name":
                "dim1",
                "type":
                "CUSTOM",
                "roles": [
                    {
                        "name": "role1",
                        "regex": "regex",
                    },
                    {
                        "name": "role2",
                        "regex": "regex",
                    },
                ]
            },
        ]
    }
    nodeRoleData = NodeRolesData.from_dict(dict)

    assert len(nodeRoleData.roleDimensions) == 1
    assert len(nodeRoleData.roleDimensions[0].roles) == 2
    assert nodeRoleData.roleDimensions[0].roles[0].name == "role1"
def test_get_node_roles():
    try:
        network_name = 'n1'
        bf_set_network(network_name)
        assert bf_get_node_roles() == NodeRolesData([])
    finally:
        bf_delete_network(network_name)
def test_get_snapshot_node_role_dimension(network, roles_snapshot):
    bf_set_network(network)
    bf_set_snapshot(roles_snapshot)
    node_roles = NodeRolesData([NodeRoleDimension('dim1')])
    bf_put_node_roles(node_roles)
    # should not crash
    bf_get_snapshot_node_role_dimension('dim1')
Beispiel #6
0
def test_noderolesdata():
    """Check proper deserialization for a node roles data."""
    dict = {"roleDimensionOrder": ["dim1", "dim2"], "roleMappings": []}
    nodeRoleData = NodeRolesData.from_dict(dict)

    assert nodeRoleData.defaultDimension is None
    assert nodeRoleData.roleDimensionOrder == ["dim1", "dim2"]
    assert nodeRoleData.roleMappings == []
def test_put_node_roles():
    try:
        network_name = 'n1'
        bf_set_network(network_name)
        node_roles = NodeRolesData([NodeRoleDimension('dim1')])
        bf_put_node_roles(node_roles)
        assert bf_get_node_roles() == node_roles
    finally:
        bf_delete_network(network_name)
Beispiel #8
0
def test_noderolesdata_construction_item():
    """Check that we construct node role data when sub-props are not a list."""
    dimension = "dim"
    expected = NodeRolesData(defaultDimension=None,
                             roleDimensionOrder=[dimension],
                             roleMappings=[])
    actual = NodeRolesData(defaultDimension=None,
                           roleDimensionOrder=dimension,
                           roleMappings=[])
    assert actual == expected

    mapping = RoleMapping(None, "", {}, {})
    expected = NodeRolesData(defaultDimension=None,
                             roleDimensionOrder=[],
                             roleMappings=[mapping])
    actual = NodeRolesData(defaultDimension=None,
                           roleDimensionOrder=[],
                           roleMappings=mapping)
    assert actual == expected
def test_get_snapshot_node_roles(network, roles_snapshot):
    bf_set_network(network)
    bf_set_snapshot(roles_snapshot)
    dimension_name = 'dim1'
    node_roles = NodeRolesData([NodeRoleDimension(dimension_name)])
    bf_put_node_roles(node_roles)
    # there should be 1 role dimension
    snapshot_node_roles = bf_get_snapshot_node_roles()
    assert len(snapshot_node_roles.roleDimensions) == 1
    assert snapshot_node_roles.roleDimensions[0].name == dimension_name
Beispiel #10
0
def test_get_snapshot_node_role_dimension(network, roles_snapshot):
    bf_set_network(network)
    bf_set_snapshot(roles_snapshot)
    mapping = RoleMapping(name="mapping",
                          regex="regex",
                          roleDimensionGroups={"dim1": [1]})
    node_roles = NodeRolesData(roleDimensionOrder=["dim1"],
                               roleMappings=[mapping])
    bf_put_node_roles(node_roles)
    # should not crash
    bf_get_snapshot_node_role_dimension("dim1")
Beispiel #11
0
def test_add_node_roles_data():
    try:
        network_name = "n1"
        bf_set_network(network_name)
        mappings = [
            RoleMapping("mapping1", "(.*)-(.*)", {"type": [1], "index": [2]}, {})
        ]
        roles_data = NodeRolesData(None, ["type", "index"], mappings)
        bf_put_node_roles(roles_data)
        assert bf_get_node_roles() == roles_data
    finally:
        bf_delete_network(network_name)
Beispiel #12
0
def test_put_node_roles():
    try:
        network_name = "n1"
        bf_set_network(network_name)
        mapping = RoleMapping(
            name="mapping", regex="(regex)", roleDimensionGroups={"dim1": [1]}
        )
        node_roles = NodeRolesData(
            defaultDimension="dim1", roleDimensionOrder=["dim1"], roleMappings=[mapping]
        )
        bf_put_node_roles(node_roles)
        assert bf_get_node_roles() == node_roles
    finally:
        bf_delete_network(network_name)
Beispiel #13
0
def test_get_snapshot_node_roles(network, roles_snapshot):
    bf_set_network(network)
    bf_set_snapshot(roles_snapshot)
    dimension_name = "dim1"
    mapping = RoleMapping(name="mapping",
                          regex="regex",
                          roleDimensionGroups={dimension_name: [1]})
    node_roles = NodeRolesData(roleDimensionOrder=[dimension_name],
                               roleMappings=[mapping])
    bf_put_node_roles(node_roles)
    # there should be 1 role dimension
    snapshot_node_roles = bf_get_snapshot_node_roles()
    assert len(snapshot_node_roles.roleDimensionOrder) == 1
    assert snapshot_node_roles.roleDimensionOrder[0] == dimension_name
def test_noderolesdata():
    """Check proper deserialization for a node roles data."""
    dict = {
        "roleDimensions": [
            {
                "name":
                "dim1",
                "type":
                "CUSTOM",
                "roles": [
                    {
                        "name": "role1",
                        "regex": "regex",
                    },
                    {
                        "name": "role2",
                        "regex": "regex",
                    },
                ],
                "roleDimensionMappings": [{
                    "regex": "regex",
                }, {
                    "regex": "regex2",
                    "groups": [],
                    "canonicalRoleNames": {},
                    "caseSensitive": True
                }]
            },
        ]
    }
    nodeRoleData = NodeRolesData.from_dict(dict)

    assert len(nodeRoleData.roleDimensions) == 1
    assert len(nodeRoleData.roleDimensions[0].roles) == 2
    assert nodeRoleData.roleDimensions[0].roles[0].name == "role1"
    assert len(nodeRoleData.roleDimensions[0].roleDimensionMappings) == 2
    assert nodeRoleData.roleDimensions[0].roleDimensionMappings[
        0].regex == "regex"
    assert nodeRoleData.roleDimensions[0].roleDimensionMappings[0].groups == [
        1
    ]
    assert nodeRoleData.roleDimensions[0].roleDimensionMappings[
        0].canonicalRoleNames == {}
    assert nodeRoleData.roleDimensions[0].roleDimensionMappings[
        0].caseSensitive is False
def test_noderolesdata_construction_empty():
    """Check that we construct empty node role data properly."""
    empty = NodeRolesData(roleDimensions=[])

    assert NodeRolesData() == empty
    assert NodeRolesData(None) == empty
Beispiel #16
0
def bf_get_snapshot_node_roles():
    # type: () -> NodeRolesData
    """Returns the definitions and assignments of node roles for the active network and snapshot."""
    return NodeRolesData.from_dict(
        restv2helper.get_snapshot_node_roles(bf_session))
Beispiel #17
0
def bf_get_snapshot_inferred_node_roles():
    # type: () -> NodeRolesData
    """Gets suggested definitions and hypothetical assignments of node roles for the active network and snapshot."""
    return NodeRolesData.from_dict(
        restv2helper.get_snapshot_inferred_node_roles(bf_session))
def test_noderolesdata_construction_list():
    """Check that we construct node role data where sub-props are lists."""
    dimension = NodeRoleDimension("a", "b")
    data = NodeRolesData(roleDimensions=[dimension])

    assert data.roleDimensions == [dimension]
def test_noderolesdata_construction_item():
    """Check that we construct node role data when sub-props are not a list."""
    dimension = NodeRoleDimension("a", "b")
    data = NodeRolesData(roleDimensions=[dimension])
    assert NodeRolesData(roleDimensions=dimension) == data
def test_noderolesdata_construction_badtype():
    """Check that we throw an error when node role data is built with wrong type."""
    with pytest.raises(ValueError):
        NodeRolesData(roleDimensions="i1")
    with pytest.raises(ValueError):
        NodeRolesData(roleDimensions=["ag", NodeRoleDimension("a")])
Beispiel #21
0
def test_noderolesdata_construction_badtype():
    """Check that we throw an error when node role data is built with wrong type."""
    with pytest.raises(ValueError):
        NodeRolesData("", [1], [])
    with pytest.raises(ValueError):
        NodeRolesData("", [], [1])
Beispiel #22
0
def bf_get_node_roles():
    # type: () -> NodeRolesData
    """Returns the set of node roles for the active network."""
    return NodeRolesData(**restv2helper.get_node_roles(bf_session))