use of io.cdap.cdap.etl.api.validation.ValidationFailure.Cause in project hydrator-plugins by cdapio.
the class ProjectionTransformTest method testInvalidConversion.
@Test
public void testInvalidConversion() throws Exception {
ProjectionTransform.ProjectionTransformConfig config = new ProjectionTransform.ProjectionTransformConfig(null, null, "x:int", null);
Transform<StructuredRecord, StructuredRecord> transform = new ProjectionTransform(config);
TransformContext transformContext = new MockTransformContext();
try {
transform.initialize(transformContext);
Schema schema = Schema.recordOf("record", Schema.Field.of("x", Schema.of(Schema.Type.LONG)));
StructuredRecord input = StructuredRecord.builder(schema).set("x", 5L).build();
MockEmitter<StructuredRecord> emitter = new MockEmitter<>();
transform.transform(input, emitter);
Assert.fail();
} catch (ValidationException e) {
Assert.assertEquals(1, e.getFailures().size());
Assert.assertEquals(1, e.getFailures().get(0).getCauses().size());
Cause expectedCause = new Cause();
expectedCause.addAttribute(CauseAttributes.STAGE_CONFIG, ProjectionTransform.ProjectionTransformConfig.CONVERT);
expectedCause.addAttribute(CauseAttributes.CONFIG_ELEMENT, "x:int");
expectedCause.addAttribute(STAGE, MOCK_STAGE);
Assert.assertEquals(expectedCause, e.getFailures().get(0).getCauses().get(0));
}
}
use of io.cdap.cdap.etl.api.validation.ValidationFailure.Cause in project hydrator-plugins by cdapio.
the class ProjectionTransformTest method testRenameFieldsValidations.
@Test
public void testRenameFieldsValidations() {
Schema schema = Schema.recordOf("three", Schema.Field.of("x", Schema.of(Schema.Type.INT)), Schema.Field.of("y", Schema.of(Schema.Type.DOUBLE)), Schema.Field.of("z", Schema.arrayOf(Schema.of(Schema.Type.INT))));
MockPipelineConfigurer mockConfigurer = new MockPipelineConfigurer(schema, Collections.emptyMap());
ProjectionTransform.ProjectionTransformConfig config = new ProjectionTransform.ProjectionTransformConfig(null, "n:m", null, "x");
try {
new ProjectionTransform(config).configurePipeline(mockConfigurer);
} catch (ValidationException e) {
Assert.assertEquals(1, e.getFailures().size());
Assert.assertEquals(1, e.getFailures().get(0).getCauses().size());
Cause expectedCause = new Cause();
expectedCause.addAttribute(CauseAttributes.STAGE_CONFIG, ProjectionTransform.ProjectionTransformConfig.RENAME);
expectedCause.addAttribute(CauseAttributes.CONFIG_ELEMENT, "n:m");
expectedCause.addAttribute(STAGE, MOCK_STAGE);
Assert.assertEquals(expectedCause, e.getFailures().get(0).getCauses().get(0));
}
}
use of io.cdap.cdap.etl.api.validation.ValidationFailure.Cause in project hydrator-plugins by cdapio.
the class ProjectionTransformTest method testKeepFieldsValidations.
@Test
public void testKeepFieldsValidations() {
Schema schema = Schema.recordOf("three", Schema.Field.of("x", Schema.of(Schema.Type.INT)), Schema.Field.of("y", Schema.of(Schema.Type.DOUBLE)), Schema.Field.of("z", Schema.arrayOf(Schema.of(Schema.Type.INT))));
MockPipelineConfigurer mockConfigurer = new MockPipelineConfigurer(schema, Collections.emptyMap());
ProjectionTransform.ProjectionTransformConfig config = new ProjectionTransform.ProjectionTransformConfig(null, null, null, "n");
try {
new ProjectionTransform(config).configurePipeline(mockConfigurer);
Assert.fail();
} catch (ValidationException e) {
Assert.assertEquals(1, e.getFailures().size());
Assert.assertEquals(1, e.getFailures().get(0).getCauses().size());
Cause expectedCause = new Cause();
expectedCause.addAttribute(CauseAttributes.STAGE_CONFIG, ProjectionTransform.ProjectionTransformConfig.KEEP);
expectedCause.addAttribute(CauseAttributes.CONFIG_ELEMENT, "n");
expectedCause.addAttribute(STAGE, MOCK_STAGE);
Assert.assertEquals(expectedCause, e.getFailures().get(0).getCauses().get(0));
}
}
use of io.cdap.cdap.etl.api.validation.ValidationFailure.Cause in project hydrator-plugins by cdapio.
the class JoinerConfigTest method testJoinerConfigWithWrongJoinKeys.
@Test
public void testJoinerConfigWithWrongJoinKeys() {
JoinerConfig config = new JoinerConfig("film.film_id=filmCategory.film_id&" + "film.film_name=filmActor.film_name=filmCategory.film_name", SELECTED_FIELDS, "film,filmActor,filmCategory");
FailureCollector failureCollector = new MockFailureCollector();
try {
config.getJoinKeys(failureCollector);
Assert.fail();
} catch (ValidationException e) {
Assert.assertEquals(1, e.getFailures().size());
ValidationFailure failure = e.getFailures().get(0);
Assert.assertEquals(1, failure.getCauses().size());
ValidationFailure.Cause cause = failure.getCauses().get(0);
Assert.assertEquals(JoinerConfig.JOIN_KEYS, cause.getAttribute(CauseAttributes.STAGE_CONFIG));
}
}
use of io.cdap.cdap.etl.api.validation.ValidationFailure.Cause in project hydrator-plugins by cdapio.
the class JoinerConfigTest method testOutputSchemaForInvalidKeys.
@Test
public void testOutputSchemaForInvalidKeys() {
// film_id is Long but it should be String, OutputSchema call should throw an exception
Schema filmCategorySchema = Schema.recordOf("filmCategory", Schema.Field.of("film_id", Schema.of(Schema.Type.LONG)), Schema.Field.of("film_name", Schema.of(Schema.Type.STRING)), Schema.Field.of("category_name", Schema.of(Schema.Type.STRING)));
String joinKeys = "film.film_id=filmActor.film_id=filmCategory.film_id";
String selectedFields = "film.film_id, film.film_name, filmActor.actor_name as renamed_actor, " + "filmCategory.category_name as renamed_category";
String requiredInputs = "film,filmActor,filmCategory";
JoinerConfig config = new JoinerConfig(joinKeys, selectedFields, requiredInputs);
Joiner joiner = new Joiner(config);
FailureCollector collector = new MockFailureCollector();
Map<String, JoinStage> inputStages = new HashMap<>();
inputStages.put("film", JoinStage.builder("film", FILM_SCHEMA).build());
inputStages.put("filmActor", JoinStage.builder("filmActor", FILM_ACTOR_SCHEMA).build());
inputStages.put("filmCategory", JoinStage.builder("filmCategory", filmCategorySchema).build());
AutoJoinerContext autoJoinerContext = new MockAutoJoinerContext(inputStages, collector);
try {
joiner.define(autoJoinerContext);
Assert.fail();
} catch (ValidationException e) {
Assert.assertEquals(2, e.getFailures().size());
// Assert first failure
Assert.assertEquals(1, e.getFailures().get(0).getCauses().size());
Cause expectedCause = new Cause();
expectedCause.addAttribute(CauseAttributes.STAGE_CONFIG, JoinerConfig.JOIN_KEYS);
expectedCause.addAttribute(STAGE, MOCK_STAGE);
Assert.assertEquals(expectedCause, e.getFailures().get(0).getCauses().get(0));
// Assert second failure
Assert.assertEquals(1, e.getFailures().get(1).getCauses().size());
Assert.assertEquals(expectedCause, e.getFailures().get(1).getCauses().get(0));
}
}
Aggregations