use of io.cdap.cdap.etl.api.TransformContext in project hydrator-plugins by cdapio.
the class ProjectionTransformTest method testRenameFields.
@Test
public void testRenameFields() throws Exception {
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))));
StructuredRecord input = StructuredRecord.builder(schema).set("x", 1).set("y", 3.14).set("z", new int[] { 1, 2, 3 }).build();
ProjectionTransform.ProjectionTransformConfig config = new ProjectionTransform.ProjectionTransformConfig(null, "x:y,y:z,z:x", null, null);
Transform<StructuredRecord, StructuredRecord> transform = new ProjectionTransform(config);
TransformContext transformContext = new MockTransformContext();
transform.initialize(transformContext);
MockEmitter<StructuredRecord> emitter = new MockEmitter<>();
transform.transform(input, emitter);
StructuredRecord output = emitter.getEmitted().get(0);
Schema expectedSchema = Schema.recordOf("three.projected", Schema.Field.of("y", Schema.of(Schema.Type.INT)), Schema.Field.of("z", Schema.of(Schema.Type.DOUBLE)), Schema.Field.of("x", Schema.arrayOf(Schema.of(Schema.Type.INT))));
Assert.assertEquals(expectedSchema, output.getSchema());
Assert.assertEquals(1, output.<Integer>get("y").intValue());
Assert.assertTrue(Math.abs(3.14 - (Double) output.get("z")) < 0.000001);
Assert.assertArrayEquals(new int[] { 1, 2, 3 }, (int[]) output.get("x"));
}
use of io.cdap.cdap.etl.api.TransformContext in project hydrator-plugins by cdapio.
the class ProjectionTransformTest method testConvertToFloat.
@Test
public void testConvertToFloat() throws Exception {
ProjectionTransform.ProjectionTransformConfig config = new ProjectionTransform.ProjectionTransformConfig(null, null, "intField:float,longField:float", null);
Transform<StructuredRecord, StructuredRecord> transform = new ProjectionTransform(config);
TransformContext transformContext = new MockTransformContext();
transform.initialize(transformContext);
MockEmitter<StructuredRecord> emitter = new MockEmitter<>();
transform.transform(SIMPLE_TYPES_RECORD, emitter);
StructuredRecord output = emitter.getEmitted().get(0);
Schema expectedSchema = Schema.recordOf("record.projected", Schema.Field.of("booleanField", Schema.of(Schema.Type.BOOLEAN)), Schema.Field.of("intField", Schema.of(Schema.Type.FLOAT)), Schema.Field.of("longField", Schema.of(Schema.Type.FLOAT)), Schema.Field.of("floatField", Schema.of(Schema.Type.FLOAT)), Schema.Field.of("doubleField", Schema.of(Schema.Type.DOUBLE)), Schema.Field.of("bytesField", Schema.of(Schema.Type.BYTES)), Schema.Field.of("stringField", Schema.of(Schema.Type.STRING)));
Assert.assertEquals(expectedSchema, output.getSchema());
Assert.assertTrue((Boolean) output.get("booleanField"));
Assert.assertEquals(28f, output.get("intField"), 0.0001f);
Assert.assertEquals(99f, output.get("longField"), 0.0001f);
Assert.assertTrue(Math.abs(2.71f - (Float) output.get("floatField")) < 0.000001);
Assert.assertTrue(Math.abs(3.14 - (Double) output.get("doubleField")) < 0.000001);
Assert.assertArrayEquals(Bytes.toBytes("foo"), (byte[]) output.get("bytesField"));
Assert.assertEquals("bar", output.get("stringField"));
}
use of io.cdap.cdap.etl.api.TransformContext in project hydrator-plugins by cdapio.
the class ProjectionTransformTest method testDropFields.
@Test
public void testDropFields() throws Exception {
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))));
StructuredRecord input = StructuredRecord.builder(schema).set("x", 1).set("y", 3.14).set("z", new int[] { 1, 2, 3 }).build();
ProjectionTransform.ProjectionTransformConfig config = new ProjectionTransform.ProjectionTransformConfig("y, z", null, null, null);
Transform<StructuredRecord, StructuredRecord> transform = new ProjectionTransform(config);
TransformContext transformContext = new MockTransformContext();
transform.initialize(transformContext);
MockEmitter<StructuredRecord> emitter = new MockEmitter<>();
transform.transform(input, emitter);
StructuredRecord output = emitter.getEmitted().get(0);
Schema expectedSchema = Schema.recordOf("three.projected", Schema.Field.of("x", Schema.of(Schema.Type.INT)));
Assert.assertEquals(expectedSchema, output.getSchema());
Assert.assertEquals(1, output.<Integer>get("x").intValue());
}
use of io.cdap.cdap.etl.api.TransformContext in project hydrator-plugins by cdapio.
the class ProjectionTransformTest method testConvertToLong.
@Test
public void testConvertToLong() throws Exception {
ProjectionTransform.ProjectionTransformConfig config = new ProjectionTransform.ProjectionTransformConfig(null, null, "intField:long,floatField:long,doubleField:long", null);
Transform<StructuredRecord, StructuredRecord> transform = new ProjectionTransform(config);
TransformContext transformContext = new MockTransformContext();
transform.initialize(transformContext);
MockEmitter<StructuredRecord> emitter = new MockEmitter<>();
transform.transform(SIMPLE_TYPES_RECORD, emitter);
StructuredRecord output = emitter.getEmitted().get(0);
Schema expectedSchema = Schema.recordOf("record.projected", Schema.Field.of("booleanField", Schema.of(Schema.Type.BOOLEAN)), Schema.Field.of("intField", Schema.of(Schema.Type.LONG)), Schema.Field.of("longField", Schema.of(Schema.Type.LONG)), Schema.Field.of("floatField", Schema.of(Schema.Type.LONG)), Schema.Field.of("doubleField", Schema.of(Schema.Type.LONG)), Schema.Field.of("bytesField", Schema.of(Schema.Type.BYTES)), Schema.Field.of("stringField", Schema.of(Schema.Type.STRING)));
Assert.assertEquals(expectedSchema, output.getSchema());
Assert.assertTrue((Boolean) output.get("booleanField"));
Assert.assertEquals(28L, output.<Long>get("intField").longValue());
Assert.assertEquals(99L, output.<Long>get("longField").longValue());
Assert.assertEquals(3, output.<Long>get("floatField").longValue());
Assert.assertEquals(3, output.<Long>get("doubleField").longValue());
Assert.assertArrayEquals(Bytes.toBytes("foo"), (byte[]) output.get("bytesField"));
Assert.assertEquals("bar", output.get("stringField"));
}
use of io.cdap.cdap.etl.api.TransformContext in project hydrator-plugins by cdapio.
the class DecoderTest method testBase32Decoder.
@Test
public void testBase32Decoder() throws Exception {
String test = "This is a test for testing base32 decoding";
Transform<StructuredRecord, StructuredRecord> encoder = new Encoder(new Encoder.Config("a:BASE32", OUTPUT.toString()));
TransformContext encoderContext = new MockTransformContext();
encoder.initialize(encoderContext);
MockEmitter<StructuredRecord> emitterEncoded = new MockEmitter<>();
encoder.transform(StructuredRecord.builder(INPUT).set("a", test).set("b", "2").set("c", "3").set("d", "4").set("e", "5").build(), emitterEncoded);
Base32 base32 = new Base32();
byte[] expected = base32.encode(test.getBytes("UTF-8"));
byte[] actual = emitterEncoded.getEmitted().get(0).get("a");
Assert.assertEquals(2, emitterEncoded.getEmitted().get(0).getSchema().getFields().size());
Assert.assertArrayEquals(expected, actual);
Transform<StructuredRecord, StructuredRecord> decoder = new Decoder(new Decoder.Config("a:BASE32", OUTPUTSTR.toString()));
MockTransformContext context = new MockTransformContext();
decoder.initialize(context);
MockEmitter<StructuredRecord> emitterDecoded = new MockEmitter<>();
decoder.transform(emitterEncoded.getEmitted().get(0), emitterDecoded);
Assert.assertEquals(2, emitterDecoded.getEmitted().get(0).getSchema().getFields().size());
Assert.assertEquals(test, emitterDecoded.getEmitted().get(0).get("a"));
Assert.assertEquals(0, encoderContext.getFailureCollector().getValidationFailures().size());
}
Aggregations