use of io.cdap.cdap.etl.mock.common.MockEmitter in project hydrator-plugins by cdapio.
the class ProjectionTransformTest method testConvertFromBytes.
@Test
public void testConvertFromBytes() throws Exception {
Schema schema = Schema.recordOf("record", Schema.Field.of("booleanField", Schema.of(Schema.Type.BYTES)), Schema.Field.of("intField", Schema.of(Schema.Type.BYTES)), Schema.Field.of("longField", Schema.of(Schema.Type.BYTES)), Schema.Field.of("floatField", Schema.of(Schema.Type.BYTES)), Schema.Field.of("doubleField", Schema.of(Schema.Type.BYTES)), Schema.Field.of("bytesField", Schema.of(Schema.Type.BYTES)), Schema.Field.of("stringField", Schema.of(Schema.Type.BYTES)));
StructuredRecord input = StructuredRecord.builder(schema).set("booleanField", Bytes.toBytes(true)).set("intField", Bytes.toBytes(28)).set("longField", Bytes.toBytes(99L)).set("floatField", Bytes.toBytes(2.71f)).set("doubleField", Bytes.toBytes(3.14)).set("bytesField", Bytes.toBytes("foo")).set("stringField", Bytes.toBytes("bar")).build();
ProjectionTransform.ProjectionTransformConfig config = new ProjectionTransform.ProjectionTransformConfig(null, null, "booleanField:boolean,intField:int,longField:long,floatField:float," + "doubleField:double,bytesField:bytes,stringField:string", 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(SIMPLE_TYPES_SCHEMA.getRecordName() + ".projected", SIMPLE_TYPES_SCHEMA.getFields());
Assert.assertEquals(expectedSchema, output.getSchema());
Assert.assertTrue((Boolean) output.get("booleanField"));
Assert.assertEquals(28, output.<Integer>get("intField").intValue());
Assert.assertEquals(99L, output.<Long>get("longField").longValue());
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.mock.common.MockEmitter in project hydrator-plugins by cdapio.
the class ProjectionTransformTest method testConvertToString.
@Test
public void testConvertToString() throws Exception {
ProjectionTransform.ProjectionTransformConfig config = new ProjectionTransform.ProjectionTransformConfig(null, null, "booleanField:string,intField:string,longField:string,floatField:string," + "doubleField:string,bytesField:string,stringField:string", 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.STRING)), Schema.Field.of("intField", Schema.of(Schema.Type.STRING)), Schema.Field.of("longField", Schema.of(Schema.Type.STRING)), Schema.Field.of("floatField", Schema.of(Schema.Type.STRING)), Schema.Field.of("doubleField", Schema.of(Schema.Type.STRING)), Schema.Field.of("bytesField", Schema.of(Schema.Type.STRING)), Schema.Field.of("stringField", Schema.of(Schema.Type.STRING)));
Assert.assertEquals(expectedSchema, output.getSchema());
Assert.assertEquals("true", output.get("booleanField"));
Assert.assertEquals("28", output.get("intField"));
Assert.assertEquals("99", output.get("longField"));
Assert.assertEquals("2.71", output.get("floatField"));
Assert.assertEquals("3.14", output.get("doubleField"));
Assert.assertEquals("foo", output.get("bytesField"));
Assert.assertEquals("bar", output.get("stringField"));
}
use of io.cdap.cdap.etl.mock.common.MockEmitter in project hydrator-plugins by cdapio.
the class DBSinkTest method testIdentity.
@Test
public void testIdentity() throws Exception {
final DBSink.DBSinkConfig config = new DBSink.DBSinkConfig();
config.columns = "ts,body";
config.tableName = "foo";
DBSink sink = new DBSink(config);
sink.setColumns(ImmutableList.copyOf(Splitter.on(",").split(config.columns)));
StructuredRecord input = StructuredRecord.builder(Schema.recordOf("foo", Schema.Field.of("ts", Schema.of(Schema.Type.LONG)), Schema.Field.of("body", Schema.of(Schema.Type.STRING)))).set("ts", 123).set("body", "sdfsdf").build();
MockEmitter<KeyValue<DBRecord, NullWritable>> emitter = new MockEmitter<>();
sink.transform(input, emitter);
Assert.assertEquals(1, emitter.getEmitted().size());
Assert.assertEquals(getRecordFields(input), getRecordFields(emitter.getEmitted().get(0).getKey().getRecord()));
}
use of io.cdap.cdap.etl.mock.common.MockEmitter in project hydrator-plugins by cdapio.
the class DBSinkTest method testFailure.
@Test
public void testFailure() throws Exception {
final DBSink.DBSinkConfig config = new DBSink.DBSinkConfig();
config.columns = "body,ts,missing";
config.tableName = "foo";
DBSink sink = new DBSink(config);
sink.setColumns(ImmutableList.copyOf(Splitter.on(",").split(config.columns)));
StructuredRecord input = StructuredRecord.builder(Schema.recordOf("foo", Schema.Field.of("ts", Schema.of(Schema.Type.LONG)), Schema.Field.of("headers", Schema.mapOf(Schema.of(Schema.Type.STRING), Schema.of(Schema.Type.STRING))), Schema.Field.of("body", Schema.of(Schema.Type.STRING)))).set("ts", 123).set("headers", ImmutableMap.of("hello", "zzz")).set("body", "sdfsdf").build();
MockEmitter<KeyValue<DBRecord, NullWritable>> emitter = new MockEmitter<>();
try {
sink.transform(input, emitter);
Assert.fail("Expected NullPointerException");
} catch (NullPointerException e) {
// expected
}
}
use of io.cdap.cdap.etl.mock.common.MockEmitter in project hydrator-plugins by cdapio.
the class DBSinkTest method testDropColumn.
@Test
public void testDropColumn() throws Exception {
final DBSink.DBSinkConfig config = new DBSink.DBSinkConfig();
config.columns = "body,ts";
config.tableName = "foo";
DBSink sink = new DBSink(config);
sink.setColumns(ImmutableList.copyOf(Splitter.on(",").split(config.columns)));
StructuredRecord input = StructuredRecord.builder(Schema.recordOf("foo", Schema.Field.of("ts", Schema.of(Schema.Type.LONG)), Schema.Field.of("headers", Schema.mapOf(Schema.of(Schema.Type.STRING), Schema.of(Schema.Type.STRING))), Schema.Field.of("body", Schema.of(Schema.Type.STRING)))).set("ts", 123).set("headers", ImmutableMap.of("hello", "zzz")).set("body", "sdfsdf").build();
StructuredRecord output = StructuredRecord.builder(Schema.recordOf("foo", Schema.Field.of("body", Schema.of(Schema.Type.STRING)), Schema.Field.of("ts", Schema.of(Schema.Type.LONG)))).set("body", "sdfsdf").set("ts", 123).build();
MockEmitter<KeyValue<DBRecord, NullWritable>> emitter = new MockEmitter<>();
sink.transform(input, emitter);
Assert.assertEquals(1, emitter.getEmitted().size());
Assert.assertEquals(getRecordFields(output), getRecordFields(emitter.getEmitted().get(0).getKey().getRecord()));
}
Aggregations