use of org.finra.herd.model.api.xml.S3PropertiesLocation in project herd by FINRAOS.
the class JobServiceTest method testSignalJobWithS3PropertiesPrecedenceRequestParamsOverridesS3.
/**
* Signals job with both S3 properties and request parameters set. If there are name clashes, the request parameter should take precedence.
*
* @throws Exception
*/
@Test
public void testSignalJobWithS3PropertiesPrecedenceRequestParamsOverridesS3() throws Exception {
jobDefinitionServiceTestHelper.createJobDefinition(ACTIVITI_XML_TEST_RECEIVE_TASK_WITH_CLASSPATH);
Parameter s3Parameter = new Parameter("testName", "testValue");
Parameter requestParameter = new Parameter("testName", "expectedValue");
S3PropertiesLocation s3PropertiesLocation = getS3PropertiesLocation("s3BucketName", "s3ObjectKey", s3Parameter);
// Start the job.
Job job = jobService.createAndStartJob(jobServiceTestHelper.createJobCreateRequest(TEST_ACTIVITI_NAMESPACE_CD, TEST_ACTIVITI_JOB_NAME));
JobSignalRequest jobSignalRequest = new JobSignalRequest(job.getId(), "receivetask1", null, null);
jobSignalRequest.setS3PropertiesLocation(s3PropertiesLocation);
jobSignalRequest.setParameters(Arrays.asList(requestParameter));
Job signalJob = jobService.signalJob(jobSignalRequest);
assertParameterEquals(requestParameter, signalJob.getParameters());
}
use of org.finra.herd.model.api.xml.S3PropertiesLocation in project herd by FINRAOS.
the class JobServiceTest method testCreateJobWithS3PropertiesCreateRequestObjectKeyNotFoundThrows.
/**
* Creates a job where the request's S3 object key does not exist. It should throw a not found exception.
*
* @throws Exception
*/
@Test
public void testCreateJobWithS3PropertiesCreateRequestObjectKeyNotFoundThrows() throws Exception {
Parameter jobDefinitionS3Parameter = new Parameter("name1", "value1");
Parameter jobCreateRequestS3Parameter = new Parameter("name2", "value2");
String s3BucketName = "s3BucketName";
S3PropertiesLocation jobDefinitionS3PropertiesLocation = getS3PropertiesLocation(s3BucketName, "jobDefinitionObjectKey", jobDefinitionS3Parameter);
S3PropertiesLocation jobCreateRequestS3PropertiesLocation = getS3PropertiesLocation(s3BucketName, "jobCreationObjectKey", jobCreateRequestS3Parameter);
jobCreateRequestS3PropertiesLocation.setKey("NOT_FOUND");
try {
createJobWithParameters(jobDefinitionS3PropertiesLocation, null, jobCreateRequestS3PropertiesLocation, null);
Assert.fail("expected ObjectNotFoundException, but no exception was thrown");
} catch (Exception e) {
Assert.assertEquals("thrown exception type", ObjectNotFoundException.class, e.getClass());
Assert.assertEquals("thrown exception message", "Specified S3 object key '" + jobCreateRequestS3PropertiesLocation.getKey() + "' does not exist.", e.getMessage());
}
}
use of org.finra.herd.model.api.xml.S3PropertiesLocation in project herd by FINRAOS.
the class JobServiceTest method testCreateJobWithS3PropertiesValidationBucketNameRequired.
/**
* Creates a job where the request's S3 properties is given, but bucket name is not. It should throw a bad request exception.
*
* @throws Exception
*/
@Test
public void testCreateJobWithS3PropertiesValidationBucketNameRequired() throws Exception {
Parameter jobCreateRequestS3Parameter = new Parameter("name2", "value2");
String s3BucketName = "s3BucketName";
S3PropertiesLocation jobCreateRequestS3PropertiesLocation = getS3PropertiesLocation(s3BucketName, "jobCreationObjectKey", jobCreateRequestS3Parameter);
jobCreateRequestS3PropertiesLocation.setBucketName(null);
try {
createJobWithParameters(null, null, jobCreateRequestS3PropertiesLocation, null);
Assert.fail("expected IllegalArgumentException, but no exception was thrown");
} catch (Exception e) {
Assert.assertEquals("thrown exception type", IllegalArgumentException.class, e.getClass());
Assert.assertEquals("thrown exception message", "S3 properties location bucket name must be specified.", e.getMessage());
}
}
use of org.finra.herd.model.api.xml.S3PropertiesLocation in project herd by FINRAOS.
the class JdbcServiceTest method testExecuteJdbcWithS3PropertiesSuccess.
/**
* Execute JDBC using S3 properties file. Unfortunately, not many assertions that can be done through the service layer. Asserts that no errors are thrown,
* and that the response SQL does not expose the secrets.
*/
@Test
public void testExecuteJdbcWithS3PropertiesSuccess() {
String s3BucketName = "test_bucket";
String s3ObjectKey = "test_key";
String content = "foo=bar";
putS3Object(s3BucketName, s3ObjectKey, content);
JdbcExecutionRequest jdbcExecutionRequest = jdbcServiceTestHelper.createDefaultUpdateJdbcExecutionRequest();
jdbcExecutionRequest.getConnection().setUrl("test_url_${foo}");
jdbcExecutionRequest.getConnection().setUsername("test_username_${foo}");
jdbcExecutionRequest.getConnection().setPassword("test_password_${foo}");
JdbcStatement jdbcStatement = jdbcExecutionRequest.getStatements().get(0);
jdbcStatement.setSql("test_sql_${foo}");
jdbcExecutionRequest.setS3PropertiesLocation(new S3PropertiesLocation(s3BucketName, s3ObjectKey));
try {
JdbcExecutionResponse jdbcExecutionResponse = jdbcService.executeJdbc(jdbcExecutionRequest);
Assert.assertEquals("jdbc execution response statement [0] sql", "test_sql_${foo}", jdbcExecutionResponse.getStatements().get(0).getSql());
} catch (Exception e) {
Assert.fail("unexpected exception was thrown. " + e);
}
}
use of org.finra.herd.model.api.xml.S3PropertiesLocation in project herd by FINRAOS.
the class JdbcServiceTest method testExecuteJdbcWithS3PropertiesParamSqlBlankAfterReplace.
/**
* If the result of replacing SQL using S3 properties is blank, throws a validation error.
*/
@Test
public void testExecuteJdbcWithS3PropertiesParamSqlBlankAfterReplace() {
String s3BucketName = "test_bucket";
String s3ObjectKey = "test_key";
String content = "foo=";
putS3Object(s3BucketName, s3ObjectKey, content);
JdbcExecutionRequest jdbcExecutionRequest = jdbcServiceTestHelper.createDefaultUpdateJdbcExecutionRequest();
jdbcExecutionRequest.getStatements().get(0).setSql("${foo}");
jdbcExecutionRequest.setS3PropertiesLocation(new S3PropertiesLocation(s3BucketName, s3ObjectKey));
try {
jdbcService.executeJdbc(jdbcExecutionRequest);
Assert.fail("expected an IllegalArgumentException, but no exception was thrown");
} catch (Exception e) {
Assert.assertEquals("thrown exception type", IllegalArgumentException.class, e.getClass());
Assert.assertEquals("thrown exception message", "JDBC statement [0] SQL is required", e.getMessage());
}
}
Aggregations