/** * Gets a {@link NodeRole} object from this bean. * * <p>Name and regex may be null in the bean. Error handling happens inside the NodeRole * constructor. */ public NodeRole toNodeRole() { return new NodeRole(name, regex); } }
private NodeRoleDimension regexToNodeRoleDimension(String regex, String dimName) { SortedSet<NodeRole> inferredRoles = new TreeSet<>(); Set<String> roles = regexToRoleNodesMap(regex, _nodes).keySet(); for (String role : roles) { inferredRoles.add(new NodeRole(role, specializeRegexForRole(role, regex), _caseSensitive)); } return NodeRoleDimension.builder() .setName(dimName) .setRoles(inferredRoles) .setType(Type.AUTO) .setRoleRegexes(ImmutableList.of(regex)) .build(); }
@Override public int hashCode() { return Objects.hash(_name, _roleRegexes, _roles, _type.ordinal()); }
@Test public void testNoDuplicateDimensionsSameName() { String name = "auto0"; NodeRolesDataBean nodeRolesDataBean = new NodeRolesDataBean( NodeRolesData.builder() .setRoleDimensions( ImmutableSortedSet.of( NodeRoleDimension.builder() .setName(name) .setRoles(ImmutableSortedSet.of(new NodeRole("foo", "bar"))) .build(), NodeRoleDimension.builder().setName(name).build())) .build(), null, ImmutableSet.of()); assertThat(noDuplicateDimensions(nodeRolesDataBean), equalTo(false)); }
@Test public void testNoDuplicateDimensionsValid() { String name1 = "auto0"; String name2 = "manual0"; NodeRolesDataBean nodeRolesDataBean = new NodeRolesDataBean( NodeRolesData.builder() .setRoleDimensions( ImmutableSortedSet.of( NodeRoleDimension.builder().setName(name1).build(), NodeRoleDimension.builder().setName(name2).build())) .build(), null, ImmutableSet.of()); assertThat(noDuplicateDimensions(nodeRolesDataBean), equalTo(true)); }
/** Returns a {@link NodeRoleDimension} object corresponding to this bean */ public NodeRoleDimension toNodeRoleDimension() { SortedSet<NodeRole> nodeRoles = roles == null ? ImmutableSortedSet.of() : roles.stream() .map(NodeRoleBean::toNodeRole) .collect(ImmutableSortedSet.toImmutableSortedSet(NodeRole::compareTo)); return NodeRoleDimension.builder().setName(name).setRoles(nodeRoles).setType(type).build(); }
public @Nonnull NodeRolesData toNodeRolesData() { return NodeRolesData.builder() .setDefaultDimension(defaultDimension) .setRoleDimensions( roleDimensions.stream() .map(NodeRoleDimensionBean::toNodeRoleDimension) .collect(ImmutableSortedSet.toImmutableSortedSet(Ordering.natural()))) .build(); }
@Test public void toNodeRoleDimension() { NodeRoleDimensionBean dimBean = new NodeRoleDimensionBean("name", null, null, Type.CUSTOM); NodeRoleDimension dim = dimBean.toNodeRoleDimension(); // we should get the expected object assertThat(dim, equalTo(NodeRoleDimension.builder().setName("name").build())); } }
/** * Instantiate this bean from {@code role} and picking the subset of nodes in {@code fromNodes} * that match it. */ public NodeRoleBean(NodeRole role, Set<String> fromNodes) { name = role.getName(); regex = role.getRegex(); nodes = fromNodes.stream().filter(role::matches).collect(ImmutableSet.toImmutableSet()); }
private NodeRoleDimension toNodeRoleDimension( Pair<Integer, Double> bestRegexAndScore, List<List<String>> candidates, String dimName) { List<String> bestRegexTokens = candidates.get(bestRegexAndScore.getFirst()); String bestRegex = regexTokensToRegex(bestRegexTokens); return regexToNodeRoleDimension(bestRegex, dimName); }
public static @Nonnull Builder builder() { return new Builder(); }
public static @Nonnull Builder builder() { return new Builder(); }
public @Nonnull NodeRolesData build() { return new NodeRolesData(_defaultDimension, _roleDimensions); }
private static Map<String, OutliersHypothesis> buildMap() { ImmutableMap.Builder<String, OutliersHypothesis> map = ImmutableMap.builder(); for (OutliersHypothesis value : OutliersHypothesis.values()) { String name = value._name; map.put(name, value); } return map.build(); }
private Optional<NodeRoleDimension> toPrimaryNodeRoleDimensionIfAboveThreshold( Pair<Integer, Double> bestRegexAndScore, List<List<String>> candidates) { if (bestRegexAndScore.getSecond() >= ROLE_THRESHOLD) { NodeRoleDimension bestNRD = toNodeRoleDimension( bestRegexAndScore, candidates, NodeRoleDimension.AUTO_DIMENSION_PRIMARY); return Optional.of(bestNRD); } else { return Optional.empty(); } }
private NodeRolesData initNodeRoleData() { NodeRoleDimension dim1 = NodeRoleDimension.builder() .setName("dim10") .setRoles( new ImmutableSortedSet.Builder<>(NodeRole::compareTo) .add(new NodeRole("role1", ".*")) .add(new NodeRole("role2", ".*")) .build()) .build(); NodeRoleDimension dim2 = NodeRoleDimension.builder() .setName("dim20") .setRoles( new ImmutableSortedSet.Builder<>(NodeRole::compareTo) .add(new NodeRole("role1", ".*")) .add(new NodeRole("role2", ".*")) .build()) .build(); SortedSet<NodeRoleDimension> roleDimensions = new ImmutableSortedSet.Builder<>(NodeRoleDimension::compareTo).add(dim1).add(dim2).build(); return NodeRolesData.builder().setRoleDimensions(roleDimensions).build(); }
@Test public void testNoDuplicateDimensionsSameNameDifferentCase() { String name1 = "auto0"; String name2 = "AuTo0"; NodeRolesDataBean nodeRolesDataBean = new NodeRolesDataBean( NodeRolesData.builder() .setRoleDimensions( ImmutableSortedSet.of( NodeRoleDimension.builder().setName(name1).build(), NodeRoleDimension.builder().setName(name2).build())) .build(), null, ImmutableSet.of()); assertThat(noDuplicateDimensions(nodeRolesDataBean), equalTo(false)); }
@Test public void testProperties() throws IOException { String snapshot = "snapshot1"; String dimension = "someDimension"; String role = "someRole"; Set<String> nodes = ImmutableSet.of("a", "b"); NodeRole nodeRole = new NodeRole(role, "a.*"); NodeRoleDimension nodeRoleDimension = NodeRoleDimension.builder() .setName(dimension) .setRoles(ImmutableSortedSet.of(nodeRole)) .build(); NodeRolesData data = NodeRolesData.builder().setRoleDimensions(ImmutableSortedSet.of(nodeRoleDimension)).build(); NodeRolesDataBean bean = new NodeRolesDataBean(data, snapshot, nodes); assertThat( bean.roleDimensions, equalTo(ImmutableSet.of(new NodeRoleDimensionBean(nodeRoleDimension, snapshot, nodes)))); assertThat(bean.defaultDimension, nullValue()); } }