use of com.sequenceiq.cloudbreak.domain.HostGroup in project cloudbreak by hortonworks.
the class HdfConfigProviderTest method testNifiNodeIdentitiesWhenMasterIsAvailable.
@Test
public void testNifiNodeIdentitiesWhenMasterIsAvailable() throws IOException {
// GIVEN
String blueprintText = FileReaderUtils.readFileFromClasspath("blueprints-jackson/bp-kerberized-test.bp");
Set<HostGroup> hostGroups = new HashSet<>();
hostGroups.add(TestUtil.hostGroup("master", 2));
hostGroups.add(TestUtil.hostGroup("worker", 2));
hostGroups.add(TestUtil.hostGroup("compute", 2));
Map<String, List<InstanceMetaData>> groupInstanes = new HashMap<>();
for (HostGroup hg : hostGroups) {
groupInstanes.put(hg.getName(), new ArrayList<>(hg.getConstraint().getInstanceGroup().getInstanceMetaData()));
}
when(blueprintProcessor.getHostGroupsWithComponent("NIFI_MASTER")).thenReturn(Sets.newHashSet("master"));
when(blueprintProcessor.pathValue("configurations", "nifi-ambari-config", "nifi.node.ssl.port")).thenReturn(Optional.of("9091"));
when(blueprintProcessorFactory.get(anyString())).thenReturn(blueprintProcessor);
// WHEN
HdfConfigs hdfConfigs = underTest.createHdfConfig(hostGroups, groupInstanes, blueprintText);
// THEN
StringBuilder expectedNodeEntities = new StringBuilder();
int i = 0;
for (InstanceMetaData instance : groupInstanes.get("master")) {
expectedNodeEntities.append("<property name=\"Node Identity " + ++i + "\">CN=" + instance.getDiscoveryFQDN() + ", OU=NIFI</property>");
}
Assert.assertEquals(expectedNodeEntities.toString(), hdfConfigs.getNodeEntities());
Assert.assertEquals(Optional.of(groupInstanes.get("master").stream().map(im -> im.getPublicIp() + ":9091").collect(Collectors.joining(","))), hdfConfigs.getProxyHosts());
verify(blueprintProcessor, times(1)).getHostGroupsWithComponent("NIFI_MASTER");
}
use of com.sequenceiq.cloudbreak.domain.HostGroup in project cloudbreak by hortonworks.
the class BlueprintValidatorTest method testHostGroupScalingThrowsBadRequestExceptionWhenNodeCountIsMoreThanMax.
@Test
public void testHostGroupScalingThrowsBadRequestExceptionWhenNodeCountIsMoreThanMax() throws IOException {
// GIVEN
Blueprint blueprint = createBlueprint();
JsonNode blueprintJsonTree = createJsonTree();
InstanceGroup instanceGroup = createInstanceGroup(GROUP3, 3);
HostGroup hostGroup = createHostGroup(instanceGroup.getGroupName(), instanceGroup);
BDDMockito.given(objectMapper.readTree(BLUEPRINT_STRING)).willReturn(blueprintJsonTree);
thrown.expect(BlueprintValidationException.class);
thrown.expectMessage("The node count '4' for hostgroup 'group3' cannot be less than '1' or more than '3' because of 'mastercomp3' component");
// WHEN
underTest.validateHostGroupScalingRequest(blueprint, hostGroup, 1);
// THEN throw exception
}
use of com.sequenceiq.cloudbreak.domain.HostGroup in project cloudbreak by hortonworks.
the class BlueprintValidatorTest method testValidateBlueprintForStackShouldThrowBadRequestExceptionWhenNotEnoughGroupDefinedInBlueprint.
@Test
public void testValidateBlueprintForStackShouldThrowBadRequestExceptionWhenNotEnoughGroupDefinedInBlueprint() throws IOException {
// GIVEN
Blueprint blueprint = createBlueprint();
Set<InstanceGroup> instanceGroups = createInstanceGroups();
Set<HostGroup> hostGroups = createHostGroups(instanceGroups);
JsonNode blueprintJsonTree = createJsonTreeWithNotEnoughGroup();
BDDMockito.given(objectMapper.readTree(BLUEPRINT_STRING)).willReturn(blueprintJsonTree);
thrown.expect(BlueprintValidationException.class);
thrown.expectMessage(Matchers.startsWith("The host groups in the validation"));
// WHEN
underTest.validateBlueprintForStack(blueprint, hostGroups, instanceGroups);
// THEN throw exception
}
use of com.sequenceiq.cloudbreak.domain.HostGroup in project cloudbreak by hortonworks.
the class BlueprintValidatorTest method testValidateBlueprintForStackShouldThrowBadRequestExceptionWhenComponentIsLessThanMin.
@Test
public void testValidateBlueprintForStackShouldThrowBadRequestExceptionWhenComponentIsLessThanMin() throws IOException {
// GIVEN
Blueprint blueprint = createBlueprint();
Set<InstanceGroup> instanceGroups = createInstanceGroups();
Set<HostGroup> hostGroups = createHostGroups(instanceGroups);
instanceGroups.add(createInstanceGroup("gateway", 1));
JsonNode blueprintJsonTree = createJsonTreeWithComponentIsLess();
BDDMockito.given(objectMapper.readTree(BLUEPRINT_STRING)).willReturn(blueprintJsonTree);
thrown.expect(BlueprintValidationException.class);
thrown.expectMessage("Incorrect number of 'slavecomp2' components are in '[group3]' hostgroups: count: 3, min: 5 max: 6");
// WHEN
underTest.validateBlueprintForStack(blueprint, hostGroups, instanceGroups);
// THEN throw exception
}
use of com.sequenceiq.cloudbreak.domain.HostGroup in project cloudbreak by hortonworks.
the class BlueprintValidatorTest method testKnoxWithKerberosAndNonGwHasKnox.
@Test
public void testKnoxWithKerberosAndNonGwHasKnox() throws IOException {
// GIVEN
Blueprint blueprint = createBlueprint();
Set<InstanceGroup> instanceGroups = new HashSet<>();
instanceGroups.add(createInstanceGroup("gateway1", 1, InstanceGroupType.GATEWAY));
instanceGroups.add(createInstanceGroup("gateway2", 1, InstanceGroupType.GATEWAY));
instanceGroups.add(createInstanceGroup("master", 1, InstanceGroupType.CORE));
Set<HostGroup> hostGroups = createHostGroups(instanceGroups);
JsonNodeFactory jsonNodeFactory = JsonNodeFactory.instance;
ObjectNode rootNode = jsonNodeFactory.objectNode();
ArrayNode hostGroupsNode = rootNode.putArray("host_groups");
addHostGroup(hostGroupsNode, "gateway1", SL_MIN0_MAX3, MA_MIN1_MAX3);
addHostGroup(hostGroupsNode, "gateway2", SL_MIN0_MAX3, MA_MIN1_MAX3);
addHostGroup(hostGroupsNode, "master", SL_MIN0_MAX3, KNOX);
BDDMockito.given(objectMapper.readTree(BLUEPRINT_STRING)).willReturn(rootNode);
Cluster cluster = new Cluster();
cluster.setSecure(true);
Gateway gateway = new Gateway();
gateway.setEnableGateway(true);
cluster.setGateway(gateway);
thrown.expect(BlueprintValidationException.class);
thrown.expectMessage("In case of Knox and Kerberos each 'Ambari Server' node must include the 'KNOX_GATEWAY' service. " + "The following host groups are missing the service: gateway1,gateway2");
// WHEN
underTest.validateBlueprintForStack(cluster, blueprint, hostGroups, instanceGroups);
// THEN exception thrown
}
Aggregations