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
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')
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)
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
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")
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)
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)
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
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))
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")])
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])
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))