@Test public void testValidateEmrClusterDefinitionConfigurationCoreInstancesNotSpecified() { EmrClusterDefinition emrClusterDefinition = createValidEmrClusterDefinition(); emrClusterDefinition.getInstanceDefinitions().setCoreInstances(null); try { emrClusterDefinitionHelper.validateEmrClusterDefinitionConfiguration(emrClusterDefinition); } catch (Exception e) { fail("expected no exception, but " + e.getClass() + " was thrown. " + e); } }
emrClusterDefinition.getInstanceDefinitions().setCoreInstances(null);
emrClusterDefinition.getInstanceDefinitions().setCoreInstances(null);
new MasterInstanceDefinition(10, "masterInstanceType", NO_EMR_CLUSTER_DEFINITION_EBS_CONFIGURATION, NO_INSTANCE_SPOT_PRICE, NO_INSTANCE_MAX_SEARCH_PRICE, NO_INSTANCE_ON_DEMAND_THRESHOLD)); instanceDefinitions.setCoreInstances( new InstanceDefinition(20, "coreInstanceType", NO_EMR_CLUSTER_DEFINITION_EBS_CONFIGURATION, NO_INSTANCE_SPOT_PRICE, NO_INSTANCE_MAX_SEARCH_PRICE, NO_INSTANCE_ON_DEMAND_THRESHOLD));
new MasterInstanceDefinition(10, "masterInstanceType", NO_EMR_CLUSTER_DEFINITION_EBS_CONFIGURATION, NO_INSTANCE_SPOT_PRICE, NO_INSTANCE_MAX_SEARCH_PRICE, NO_INSTANCE_ON_DEMAND_THRESHOLD)); instanceDefinitions.setCoreInstances( new InstanceDefinition(20, "coreInstanceType", NO_EMR_CLUSTER_DEFINITION_EBS_CONFIGURATION, NO_INSTANCE_SPOT_PRICE, NO_INSTANCE_MAX_SEARCH_PRICE, NO_INSTANCE_ON_DEMAND_THRESHOLD));
new MasterInstanceDefinition(10, "masterInstanceType", NO_EMR_CLUSTER_DEFINITION_EBS_CONFIGURATION, NO_INSTANCE_SPOT_PRICE, NO_INSTANCE_MAX_SEARCH_PRICE, NO_INSTANCE_ON_DEMAND_THRESHOLD)); instanceDefinitions.setCoreInstances( new InstanceDefinition(20, "coreInstanceType", NO_EMR_CLUSTER_DEFINITION_EBS_CONFIGURATION, NO_INSTANCE_SPOT_PRICE, NO_INSTANCE_MAX_SEARCH_PRICE, NO_INSTANCE_ON_DEMAND_THRESHOLD));
/** * Asserts that when a negative number is specified for core instance count, a validation exception is thrown. */ @Test public void testCreateEmrClusterDefinitionCoreInstanceCountNegativeAssertException() throws Exception { // Create and persist the namespace entity. namespaceDaoTestHelper.createNamespaceEntity(NAMESPACE); // Create an EMR cluster definition create request. EmrClusterDefinitionCreateRequest request = createEmrClusterDefinitionCreateRequest(NAMESPACE, EMR_CLUSTER_DEFINITION_NAME, getTestEmrClusterDefinitionConfiguration(EMR_CLUSTER_DEFINITION_XML_FILE_WITH_CLASSPATH)); InstanceDefinition coreInstanceDefinition = new InstanceDefinition(-1, "m1.medium", NO_EMR_CLUSTER_DEFINITION_EBS_CONFIGURATION, NO_INSTANCE_SPOT_PRICE, NO_INSTANCE_MAX_SEARCH_PRICE, NO_INSTANCE_ON_DEMAND_THRESHOLD); request.getEmrClusterDefinition().getInstanceDefinitions().setCoreInstances(coreInstanceDefinition); // Create an EMR cluster definition. try { emrClusterDefinitionService.createEmrClusterDefinition(request); fail(); } catch (IllegalArgumentException e) { assertEquals("At least 0 core instance must be specified.", e.getMessage()); } }
@Test public void testCreateEmrClusterOverrideExistingCoreInstanceToNullAssertSuccess() throws Exception { // Create the namespace entity. NamespaceEntity namespaceEntity = namespaceDaoTestHelper.createNamespaceEntity(NAMESPACE); String definitionXml = IOUtils.toString(resourceLoader.getResource(EMR_CLUSTER_DEFINITION_XML_FILE_WITH_CLASSPATH).getInputStream()); EmrClusterDefinition emrClusterDefinition = xmlHelper.unmarshallXmlToObject(EmrClusterDefinition.class, definitionXml); emrClusterDefinition.getInstanceDefinitions().getCoreInstances().setInstanceCount(1); emrClusterDefinitionDaoTestHelper .createEmrClusterDefinitionEntity(namespaceEntity, EMR_CLUSTER_DEFINITION_NAME, xmlHelper.objectToXml(emrClusterDefinition)); // Create a new EMR cluster create request EmrClusterCreateRequest request = getNewEmrClusterCreateRequest(); EmrClusterDefinition emrClusterDefinitionOverride = new EmrClusterDefinition(); emrClusterDefinitionOverride.setInstanceDefinitions(emrClusterDefinition.getInstanceDefinitions()); emrClusterDefinitionOverride.getInstanceDefinitions().setCoreInstances(null); request.setEmrClusterDefinitionOverride(emrClusterDefinitionOverride); EmrCluster emrClusterCreateResponse = emrService.createCluster(request); assertNull(emrClusterCreateResponse.getEmrClusterDefinition().getInstanceDefinitions().getCoreInstances()); }
sourceCoreInstances = this.getCoreInstances(); InstanceDefinition copyCoreInstances = ((InstanceDefinition) strategy.copy(LocatorUtils.property(locator, "coreInstances", sourceCoreInstances), sourceCoreInstances, (this.coreInstances!= null))); copy.setCoreInstances(copyCoreInstances); } else { if (coreInstancesShouldBeCopiedAndSet == Boolean.FALSE) {
sourceCoreInstances = this.getCoreInstances(); InstanceDefinition copyCoreInstances = ((InstanceDefinition) strategy.copy(LocatorUtils.property(locator, "coreInstances", sourceCoreInstances), sourceCoreInstances, (this.coreInstances!= null))); copy.setCoreInstances(copyCoreInstances); } else { if (coreInstancesShouldBeCopiedAndSet == Boolean.FALSE) {
sourceCoreInstances = this.getCoreInstances(); InstanceDefinition copyCoreInstances = ((InstanceDefinition) strategy.copy(LocatorUtils.property(locator, "coreInstances", sourceCoreInstances), sourceCoreInstances, (this.coreInstances!= null))); copy.setCoreInstances(copyCoreInstances); } else { if (coreInstancesShouldBeCopiedAndSet == Boolean.FALSE) {
/** * Creates a new EMR cluster definition using the specified parameters, updates it with best price algorithm, and returns the definition. * * @param subnetId Subnet ID. Optional. * @param masterInstanceDefinition The master instance definition * @param coreInstanceDefinition The core instance definition * @param taskInstanceDefinition The task instance definition. Optional. * * @return Updated EMR cluster definition. */ private EmrClusterDefinition updateEmrClusterDefinitionWithBestPrice(String subnetId, MasterInstanceDefinition masterInstanceDefinition, InstanceDefinition coreInstanceDefinition, InstanceDefinition taskInstanceDefinition) { EmrClusterDefinition emrClusterDefinition = new EmrClusterDefinition(); emrClusterDefinition.setSubnetId(subnetId); InstanceDefinitions instanceDefinitions = new InstanceDefinitions(); instanceDefinitions.setMasterInstances(masterInstanceDefinition); instanceDefinitions.setCoreInstances(coreInstanceDefinition); instanceDefinitions.setTaskInstances(taskInstanceDefinition); emrClusterDefinition.setInstanceDefinitions(instanceDefinitions); emrPricingHelper.updateEmrClusterDefinitionWithBestPrice(new EmrClusterAlternateKeyDto(), emrClusterDefinition, new AwsParamsDto(NO_AWS_ACCESS_KEY, NO_AWS_SECRET_KEY, NO_SESSION_TOKEN, NO_HTTP_PROXY_HOST, NO_HTTP_PROXY_PORT, AWS_REGION_NAME_US_EAST_1)); return emrClusterDefinition; } }
coreInstanceDefinition.setInstanceCount(1); coreInstanceDefinition.setInstanceType(MockEc2OperationsImpl.INSTANCE_TYPE_1); instanceDefinitions.setCoreInstances(coreInstanceDefinition);
/** * Asserts that when 0 is specified for core instance count, no validation exception is thrown. */ @Test public void testCreateEmrClusterDefinitionCoreInstanceCount0AssertResponseCoreInstanceDefinitionIsNull() throws Exception { // Create and persist the namespace entity. namespaceDaoTestHelper.createNamespaceEntity(NAMESPACE); // Create an EMR cluster definition create request. EmrClusterDefinitionCreateRequest request = createEmrClusterDefinitionCreateRequest(NAMESPACE, EMR_CLUSTER_DEFINITION_NAME, getTestEmrClusterDefinitionConfiguration(EMR_CLUSTER_DEFINITION_XML_FILE_WITH_CLASSPATH)); InstanceDefinition coreInstanceDefinition = new InstanceDefinition(0, "m1.medium", NO_EMR_CLUSTER_DEFINITION_EBS_CONFIGURATION, NO_INSTANCE_SPOT_PRICE, NO_INSTANCE_MAX_SEARCH_PRICE, NO_INSTANCE_ON_DEMAND_THRESHOLD); request.getEmrClusterDefinition().getInstanceDefinitions().setCoreInstances(coreInstanceDefinition); // Create an EMR cluster definition. EmrClusterDefinitionInformation emrClusterDefinitionInformation = emrClusterDefinitionService.createEmrClusterDefinition(request); assertNull(emrClusterDefinitionInformation.getEmrClusterDefinition().getInstanceDefinitions().getCoreInstances()); }
new MasterInstanceDefinition(10, "masterInstanceType", NO_EMR_CLUSTER_DEFINITION_EBS_CONFIGURATION, NO_INSTANCE_SPOT_PRICE, NO_INSTANCE_MAX_SEARCH_PRICE, NO_INSTANCE_ON_DEMAND_THRESHOLD)); instanceDefinitions.setCoreInstances( new InstanceDefinition(20, "coreInstanceType", NO_EMR_CLUSTER_DEFINITION_EBS_CONFIGURATION, BigDecimal.ONE, NO_INSTANCE_MAX_SEARCH_PRICE, NO_INSTANCE_ON_DEMAND_THRESHOLD));