/** 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(); }
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(); }
@Test public void testProperties() { 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(); NodeRoleDimensionBean bean = new NodeRoleDimensionBean(nodeRoleDimension, snapshot, nodes); assertThat(bean.name, equalTo(dimension)); assertThat(bean.roles, equalTo(ImmutableSet.of(new NodeRoleBean(nodeRole, nodes)))); assertThat(bean.snapshot, equalTo(snapshot)); assertThat(bean.type, equalTo(NodeRoleDimension.Type.CUSTOM)); }
NodeRoleDimension.builder().setName("dim").setRoles(roles).build();
@Test public void testGetNetworkNodeRolesUnchangedOnceSet() throws IOException { String network = "network1"; String snapshot = "snapshot1"; String node = "node1"; _manager.initNetwork(network, null); NetworkId networkId = _idManager.getNetworkId(network); NodeRolesData manualRoles = NodeRolesData.builder().build(); _manager.putNetworkNodeRoles(manualRoles, network); WorkMgrTestUtils.uploadTestSnapshot(network, snapshot, node, _folder); SnapshotId snapshotId = _idManager.getSnapshotId(snapshot, networkId); NodeRolesId snapshotNodeRolesId = _idManager.getSnapshotNodeRolesId(networkId, snapshotId); NodeRolesData snapshotInferredNodeRoles = NodeRolesData.builder() .setRoleDimensions( ImmutableSortedSet.of( NodeRoleDimension.builder() .setName("dim1") .setRoles(ImmutableSet.of(new NodeRole("role1", node))) .build())) .build(); _manager.getStorage().storeNodeRoles(snapshotInferredNodeRoles, snapshotNodeRolesId); SnapshotMetadataMgr.updateInitializationStatus( networkId, snapshotId, ProcessingStatus.PARSED, null); // network node roles should not have changed since they had already been set assertThat(_manager.getNetworkNodeRoles(network), equalTo(manualRoles)); }
@Test public void testGetNetworkNodeRolesGoodSnapshot() throws IOException { String network = "network1"; String snapshot = "snapshot1"; String node = "node1"; _manager.initNetwork(network, null); NetworkId networkId = _idManager.getNetworkId(network); WorkMgrTestUtils.uploadTestSnapshot(network, snapshot, node, _folder); SnapshotId snapshotId = _idManager.getSnapshotId(snapshot, networkId); NodeRolesId snapshotNodeRolesId = _idManager.getSnapshotNodeRolesId(networkId, snapshotId); NodeRolesData snapshotInferredNodeRoles = NodeRolesData.builder() .setRoleDimensions( ImmutableSortedSet.of( NodeRoleDimension.builder() .setName("dim1") .setRoles(ImmutableSet.of(new NodeRole("role1", node))) .build())) .build(); _manager.getStorage().storeNodeRoles(snapshotInferredNodeRoles, snapshotNodeRolesId); SnapshotMetadataMgr.updateInitializationStatus( networkId, snapshotId, ProcessingStatus.PARSED, null); // inferred roles for first snapshot should have been set network-wide assertThat(_manager.getNetworkNodeRoles(network), equalTo(snapshotInferredNodeRoles)); }
@Test public void testGetNetworkNodeRolesNoGoodSnapshots() throws IOException { String network = "network1"; String snapshot = "snapshot1"; String node = "node1"; _manager.initNetwork(network, null); NetworkId networkId = _idManager.getNetworkId(network); WorkMgrTestUtils.uploadTestSnapshot(network, snapshot, node, _folder); SnapshotId snapshotId = _idManager.getSnapshotId(snapshot, networkId); NodeRolesId snapshotNodeRolesId = _idManager.getSnapshotNodeRolesId(networkId, snapshotId); NodeRolesData snapshotInferredNodeRoles = NodeRolesData.builder() .setRoleDimensions( ImmutableSortedSet.of( NodeRoleDimension.builder() .setName("dim1") .setRoles(ImmutableSet.of(new NodeRole("role1", node))) .build())) .build(); _manager.getStorage().storeNodeRoles(snapshotInferredNodeRoles, snapshotNodeRolesId); SnapshotMetadataMgr.updateInitializationStatus( networkId, snapshotId, ProcessingStatus.PARSING_FAIL, null); // should return empty node roles since snapshot parsing failed assertThat(_manager.getNetworkNodeRoles(network), equalTo(NodeRolesData.builder().build())); }
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 testPutNodeRolesDuplicateDimensions() { String network = "someContainer"; Main.getWorkMgr().initNetwork(network, null); 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()); Response response = getNodeRolesTarget(network) .put(Entity.entity(nodeRolesDataBean, MediaType.APPLICATION_JSON)); assertThat(response.getStatus(), equalTo(BAD_REQUEST.getStatusCode())); }
@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()); } }
@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)); }