Search in sources :

Example 11 with Cause

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));
    }
}
Also used : MockTransformContext(io.cdap.cdap.etl.mock.transform.MockTransformContext) ValidationException(io.cdap.cdap.etl.api.validation.ValidationException) TransformContext(io.cdap.cdap.etl.api.TransformContext) MockTransformContext(io.cdap.cdap.etl.mock.transform.MockTransformContext) MockEmitter(io.cdap.cdap.etl.mock.common.MockEmitter) Schema(io.cdap.cdap.api.data.schema.Schema) Cause(io.cdap.cdap.etl.api.validation.ValidationFailure.Cause) StructuredRecord(io.cdap.cdap.api.data.format.StructuredRecord) Test(org.junit.Test)

Example 12 with Cause

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));
    }
}
Also used : ValidationException(io.cdap.cdap.etl.api.validation.ValidationException) MockPipelineConfigurer(io.cdap.cdap.etl.mock.common.MockPipelineConfigurer) Schema(io.cdap.cdap.api.data.schema.Schema) Cause(io.cdap.cdap.etl.api.validation.ValidationFailure.Cause) Test(org.junit.Test)

Example 13 with Cause

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));
    }
}
Also used : ValidationException(io.cdap.cdap.etl.api.validation.ValidationException) MockPipelineConfigurer(io.cdap.cdap.etl.mock.common.MockPipelineConfigurer) Schema(io.cdap.cdap.api.data.schema.Schema) Cause(io.cdap.cdap.etl.api.validation.ValidationFailure.Cause) Test(org.junit.Test)

Example 14 with Cause

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));
    }
}
Also used : ValidationException(io.cdap.cdap.etl.api.validation.ValidationException) Cause(io.cdap.cdap.etl.api.validation.ValidationFailure.Cause) MockFailureCollector(io.cdap.cdap.etl.mock.validation.MockFailureCollector) FailureCollector(io.cdap.cdap.etl.api.FailureCollector) MockFailureCollector(io.cdap.cdap.etl.mock.validation.MockFailureCollector) ValidationFailure(io.cdap.cdap.etl.api.validation.ValidationFailure) Test(org.junit.Test)

Example 15 with Cause

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));
    }
}
Also used : JoinStage(io.cdap.cdap.etl.api.join.JoinStage) ValidationException(io.cdap.cdap.etl.api.validation.ValidationException) HashMap(java.util.HashMap) Schema(io.cdap.cdap.api.data.schema.Schema) AutoJoinerContext(io.cdap.cdap.etl.api.join.AutoJoinerContext) Cause(io.cdap.cdap.etl.api.validation.ValidationFailure.Cause) MockFailureCollector(io.cdap.cdap.etl.mock.validation.MockFailureCollector) FailureCollector(io.cdap.cdap.etl.api.FailureCollector) MockFailureCollector(io.cdap.cdap.etl.mock.validation.MockFailureCollector) Test(org.junit.Test)

Aggregations

Cause (io.cdap.cdap.etl.api.validation.ValidationFailure.Cause)24 Test (org.junit.Test)24 ValidationException (io.cdap.cdap.etl.api.validation.ValidationException)17 Schema (io.cdap.cdap.api.data.schema.Schema)13 FailureCollector (io.cdap.cdap.etl.api.FailureCollector)12 MockPipelineConfigurer (io.cdap.cdap.etl.mock.common.MockPipelineConfigurer)12 MockFailureCollector (io.cdap.cdap.etl.mock.validation.MockFailureCollector)9 StructuredRecord (io.cdap.cdap.api.data.format.StructuredRecord)3 TransformContext (io.cdap.cdap.etl.api.TransformContext)3 AutoJoinerContext (io.cdap.cdap.etl.api.join.AutoJoinerContext)3 MockTransformContext (io.cdap.cdap.etl.mock.transform.MockTransformContext)3 ETLBatchConfig (io.cdap.cdap.etl.proto.v2.ETLBatchConfig)3 JoinStage (io.cdap.cdap.etl.api.join.JoinStage)2 ValidationFailure (io.cdap.cdap.etl.api.validation.ValidationFailure)2 HashMap (java.util.HashMap)2 PipelineConfigurer (io.cdap.cdap.etl.api.PipelineConfigurer)1 MockEmitter (io.cdap.cdap.etl.mock.common.MockEmitter)1