@Test public void testGetInstanceGroupConfigsWhenInstanceDefinitionsObjectIsEmpty() { // Create objects required for testing. final InstanceDefinitions instanceDefinitions = new InstanceDefinitions(); // Mock the external calls. when(emrHelper.isInstanceDefinitionsEmpty(instanceDefinitions)).thenReturn(true); // Call the method under test. List<InstanceGroupConfig> result = emrDaoImpl.getInstanceGroupConfigs(instanceDefinitions); // Verify the external calls. verify(emrHelper).isInstanceDefinitionsEmpty(instanceDefinitions); verifyNoMoreInteractionsHelper(); // Validate the results. assertNull(result); }
private void terminateCluster(String namespace, String clusterDefinitionName, String clusterName) { try { String fullClusterName = emrHelper.buildEmrClusterName(namespace, clusterDefinitionName, clusterName); AwsParamsDto awsParams = emrHelper.getAwsParamsDto(); emrDao.terminateEmrCluster(fullClusterName, true, awsParams); } catch (Exception e) { /* * Ignore the error. * Most of the cases the failures are because the cluster terminated by itself, in which case what this method was trying to achieve has been * accomplished. * If cluster termination legitimately fails, it is not part of this test suite. */ LOGGER.warn(String .format("Failed to terminate cluster namespace = %s, clusterDefinitionName = %s, clusterName = %s", namespace, clusterDefinitionName, clusterName)); } }
@Test public void testGetActiveEmrClusterIdAssertErrorWhenBothIdAndNameNotSpecified() { EmrDao originalEmrDao = emrHelper.getEmrDao(); EmrDao mockEmrDao = mock(EmrDao.class); emrHelper.setEmrDao(mockEmrDao); try { String emrClusterId = null; String emrClusterName = null; try { emrHelper.getActiveEmrClusterId(emrClusterId, emrClusterName, null); fail(); } catch (IllegalArgumentException e) { assertEquals("One of EMR cluster ID or EMR cluster name must be specified.", e.getMessage()); } verifyNoMoreInteractions(mockEmrDao); } finally { emrHelper.setEmrDao(originalEmrDao); } }
/** * Get the AWS Params DTO for the account Id if no account id is specified, use the default * * @param accountId account Id * * @return AwsParamsDto */ public AwsParamsDto getAwsParamsDtoByAccountId(String accountId) { AwsParamsDto awsParamsDto = getAwsParamsDto(); if (StringUtils.isNotBlank(accountId)) { updateAwsParamsForCrossAccountAccess(awsParamsDto, accountId.trim()); } return awsParamsDto; }
AwsParamsDto awsParamsDto = getAwsParamsDtoByAccountId(accountId); Assert.isTrue(isActiveEmrState(emrClusterState), String .format("The cluster with ID \"%s\" is not active. The cluster state must be in one of %s. Current state is \"%s\"", emrClusterIdTrimmed, Arrays.toString(getActiveEmrClusterStates()), emrClusterState));
String accountId) AwsParamsDto awsParamsDto = emrHelper.getAwsParamsDtoByAccountId(accountId); String clusterName = emrHelper.buildEmrClusterName(emrClusterDefinitionEntity.getNamespace().getCode(), emrClusterDefinitionEntity.getName(), emrClusterAlternateKeyDto.getEmrClusterName()); try clusterId = emrHelper.getActiveEmrClusterId(emrClusterId, clusterName, accountId); emrDao.terminateEmrCluster(clusterId, overrideTerminationProtection, awsParamsDto);
EmrClusterAlternateKeyDto emrClusterAlternateKeyDto) AwsParamsDto awsParamsDto = emrHelper.getAwsParamsDtoByAccountId(emrClusterDefinition.getAccountId()); if (!emrHelper.isInstanceDefinitionsEmpty(emrClusterDefinition.getInstanceDefinitions())) .buildEmrClusterName(emrClusterAlternateKeyDto.getNamespace(), emrClusterAlternateKeyDto.getEmrClusterDefinitionName(), emrClusterAlternateKeyDto.getEmrClusterName()); try
String accountId, Boolean retrieveInstanceFleets) AwsParamsDto awsParamsDto = emrHelper.getAwsParamsDtoByAccountId(accountId); String clusterName = emrHelper.buildEmrClusterName(emrClusterDefinitionEntity.getNamespace().getCode(), emrClusterDefinitionEntity.getName(), emrClusterAlternateKeyDto.getEmrClusterName()); try if (emrHelper.isActiveEmrState(emrCluster.getStatus())) emrCluster.setInstanceFleets(emrHelper.buildEmrClusterInstanceFleetFromAwsResult(listInstanceFleetsResult));
@Test public void testGetS3StagingLocation() throws Exception { String s3StagingLocation = emrHelper.getS3StagingLocation(); assertNotNull("s3 staging location is null", s3StagingLocation); }
@Override public StepConfig getEmrStepConfig(Object step) { EmrHadoopJarStep hadoopJarStep = (EmrHadoopJarStep) step; return emrHelper.getEmrHadoopJarStepConfig(hadoopJarStep.getStepName(), hadoopJarStep.getJarLocation(), hadoopJarStep.getMainClass(), hadoopJarStep.getScriptArguments(), hadoopJarStep.isContinueOnError()); }
@Test public void testEmrCreateClusterAwsSpecificStepsImplDryRun() { // Create an AWS params DTO AwsParamsDto awsParamsDto = new AwsParamsDto(); // Create an EMR cluster definition object EmrClusterDefinition emrClusterDefinition = new EmrClusterDefinition(); emrClusterDefinition.setAccountId(AWS_ACCOUNT_ID); emrClusterDefinition.setInstanceDefinitions(new InstanceDefinitions()); // Create an EMR cluster create request EmrClusterCreateRequest emrClusterCreateRequest = new EmrClusterCreateRequest(NAMESPACE, EMR_CLUSTER_DEFINITION_NAME, EMR_CLUSTER_NAME, DRY_RUN, emrClusterDefinition); emrClusterCreateRequest.setEmrClusterDefinitionOverride(emrClusterDefinition); // Create an EMR cluster alternate key DTO EmrClusterAlternateKeyDto emrClusterAlternateKeyDto = new EmrClusterAlternateKeyDto(NAMESPACE, EMR_CLUSTER_DEFINITION_NAME, EMR_CLUSTER_NAME); // Create a cluster summary object ClusterSummary clusterSummary = new ClusterSummary(); clusterSummary.setId(EMR_CLUSTER_ID); // Mock the external calls. when(emrHelper.getAwsParamsDtoByAccountId(emrClusterDefinition.getAccountId())).thenReturn(awsParamsDto); when(emrHelper.isInstanceDefinitionsEmpty(emrClusterDefinition.getInstanceDefinitions())).thenReturn(false); // Call the method under test. emrHelperServiceImpl.emrCreateClusterAwsSpecificSteps(emrClusterCreateRequest, emrClusterDefinition, emrClusterAlternateKeyDto); // Verify the external calls. verify(emrHelper).getAwsParamsDtoByAccountId(emrClusterDefinition.getAccountId()); verify(emrHelper).isInstanceDefinitionsEmpty(emrClusterDefinition.getInstanceDefinitions()); verify(emrPricingHelper).updateEmrClusterDefinitionWithBestPrice(emrClusterAlternateKeyDto, emrClusterDefinition, awsParamsDto); verifyNoMoreInteractionsHelper(); }
/** * This method tests the blank cluster id for finding cluster status */ @Test public void testGetEmrClusterStatusByIdWithBlank() throws Exception { // Send blank for cluster id, and this method returns null for describeClusterResult emrDao.getEmrClusterStatusById(EMR_CLUSTER_DEFINITION_NAME, emrHelper.getAwsParamsDto()); }
@Test public void testIsActiveEmrState() throws Exception { boolean isActive = emrHelper.isActiveEmrState("RUNNING"); assertTrue("not active", isActive); }
@Test public void testBuildEmrClusterName() throws Exception { String clusterName = emrHelper.buildEmrClusterName(NAMESPACE, EMR_CLUSTER_DEFINITION_NAME, EMR_CLUSTER_NAME); assertEquals(NAMESPACE + "." + EMR_CLUSTER_DEFINITION_NAME + "." + EMR_CLUSTER_NAME, clusterName); }
assertNull(emrHelper.buildEmrClusterInstanceFleetFromAwsResult(listInstanceFleetsResult)); assertNull(emrHelper.buildEmrClusterInstanceFleetFromAwsResult(listInstanceFleetsResult)); assertEquals(Arrays.asList(expectedEmrInstanceFleet), emrHelper.buildEmrClusterInstanceFleetFromAwsResult(listInstanceFleetsResult)); assertEquals(Arrays.asList(expectedEmrInstanceFleet), emrHelper.buildEmrClusterInstanceFleetFromAwsResult(listInstanceFleetsResult)); assertEquals(Arrays.asList(expectedEmrInstanceFleet), emrHelper.buildEmrClusterInstanceFleetFromAwsResult(listInstanceFleetsResult)); assertEquals(Arrays.asList(expectedEmrInstanceFleet), emrHelper.buildEmrClusterInstanceFleetFromAwsResult(listInstanceFleetsResult)); emrClusterEbsBlockDevice.setDevice(device); emrClusterInstanceTypeSpecification.setEbsBlockDevices(Arrays.asList(emrClusterEbsBlockDevice)); assertEquals(Arrays.asList(expectedEmrInstanceFleet), emrHelper.buildEmrClusterInstanceFleetFromAwsResult(listInstanceFleetsResult)); emrClusterVolumeSpecification.setVolumeType(volumeType); emrClusterEbsBlockDevice.setVolumeSpecification(emrClusterVolumeSpecification); assertEquals(Arrays.asList(expectedEmrInstanceFleet), emrHelper.buildEmrClusterInstanceFleetFromAwsResult(listInstanceFleetsResult)); assertEquals(Arrays.asList(expectedEmrInstanceFleet), emrHelper.buildEmrClusterInstanceFleetFromAwsResult(listInstanceFleetsResult)); assertEquals(Arrays.asList(expectedEmrInstanceFleet), emrHelper.buildEmrClusterInstanceFleetFromAwsResult(listInstanceFleetsResult)); assertEquals(Arrays.asList(expectedEmrInstanceFleet), emrHelper.buildEmrClusterInstanceFleetFromAwsResult(listInstanceFleetsResult)); assertEquals(Arrays.asList(expectedEmrInstanceFleet), emrHelper.buildEmrClusterInstanceFleetFromAwsResult(listInstanceFleetsResult));
String accountId) AwsParamsDto awsParamsDto = emrHelper.getAwsParamsDtoByAccountId(accountId); String clusterName = emrHelper.buildEmrClusterName(emrClusterDefinitionEntity.getNamespace().getCode(), emrClusterDefinitionEntity.getName(), emrClusterAlternateKeyDto.getEmrClusterName()); try clusterId = emrHelper.getActiveEmrClusterId(emrClusterId, clusterName, accountId); emrDao.terminateEmrCluster(clusterId, overrideTerminationProtection, awsParamsDto);
EmrClusterAlternateKeyDto emrClusterAlternateKeyDto) AwsParamsDto awsParamsDto = emrHelper.getAwsParamsDtoByAccountId(emrClusterDefinition.getAccountId()); if (!emrHelper.isInstanceDefinitionsEmpty(emrClusterDefinition.getInstanceDefinitions())) .buildEmrClusterName(emrClusterAlternateKeyDto.getNamespace(), emrClusterAlternateKeyDto.getEmrClusterDefinitionName(), emrClusterAlternateKeyDto.getEmrClusterName()); try
String accountId, Boolean retrieveInstanceFleets) AwsParamsDto awsParamsDto = emrHelper.getAwsParamsDtoByAccountId(accountId); String clusterName = emrHelper.buildEmrClusterName(emrClusterDefinitionEntity.getNamespace().getCode(), emrClusterDefinitionEntity.getName(), emrClusterAlternateKeyDto.getEmrClusterName()); try if (emrHelper.isActiveEmrState(emrCluster.getStatus())) emrCluster.setInstanceFleets(emrHelper.buildEmrClusterInstanceFleetFromAwsResult(listInstanceFleetsResult));
@Override public Object buildResponseFromRequest(Object stepRequest) { EmrPigStepAddRequest emrPigStepAddRequest = (EmrPigStepAddRequest) stepRequest; EmrPigStep step = new EmrPigStep(); step.setNamespace(emrPigStepAddRequest.getNamespace()); step.setEmrClusterDefinitionName(emrPigStepAddRequest.getEmrClusterDefinitionName()); step.setEmrClusterName(emrPigStepAddRequest.getEmrClusterName()); step.setStepName(emrPigStepAddRequest.getStepName().trim()); step.setScriptLocation(emrPigStepAddRequest.getScriptLocation().trim().replaceAll(getS3ManagedReplaceString(), emrHelper.getS3StagingLocation())); // Add the script arguments if (!CollectionUtils.isEmpty(emrPigStepAddRequest.getScriptArguments())) { List<String> scriptArguments = new ArrayList<>(); step.setScriptArguments(scriptArguments); for (String argument : emrPigStepAddRequest.getScriptArguments()) { scriptArguments.add(argument.trim()); } } step.setContinueOnError(emrPigStepAddRequest.isContinueOnError()); return step; }
AwsParamsDto awsParamsDto = getAwsParamsDtoByAccountId(accountId); Assert.isTrue(isActiveEmrState(emrClusterState), String .format("The cluster with ID \"%s\" is not active. The cluster state must be in one of %s. Current state is \"%s\"", emrClusterIdTrimmed, Arrays.toString(getActiveEmrClusterStates()), emrClusterState));