/** * 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); } }
/** Checks if we properly populate the nodes field */ @Test public void constructor() { NodeRoleBean role = new NodeRoleBean(new NodeRole("name", "a.*"), ImmutableSet.of("a", "b")); assertThat(role.nodes, equalTo(ImmutableSet.of("a"))); }
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 matches() { NodeRole role = new NodeRole("hello", "a.*"); assertThat(role.matches("a1"), equalTo(true)); assertThat(role.matches("b1"), equalTo(false)); } }
@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)); }
@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 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 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()); } }
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 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())); }
@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)); }