use of io.cdap.cdap.api.data.format.StructuredRecord in project cdap by caskdata.
the class RecordPutTransformerTest method testRowKeyNotPresent.
@Test(expected = IllegalArgumentException.class)
public void testRowKeyNotPresent() {
Schema schema = Schema.recordOf("record", Schema.Field.of("KEY", Schema.of(Schema.Type.STRING)), Schema.Field.of("Key", Schema.nullableOf(Schema.of(Schema.Type.BYTES))));
RecordPutTransformer transformer = new RecordPutTransformer("key", schema);
StructuredRecord record = StructuredRecord.builder(schema).set("KEY", "someKey").set("Key", "someOtherKey").build();
transformer.toPut(record);
}
use of io.cdap.cdap.api.data.format.StructuredRecord in project cdap by caskdata.
the class RecordPutTransformerTest method testNullableSchema.
@Test
public void testNullableSchema() throws Exception {
// tests that null can be passed in for the schema (in which case it will pickup the schema from the record
Schema schema = Schema.recordOf("record", Schema.Field.of("key", Schema.of(Schema.Type.INT)), Schema.Field.of("nullable", Schema.nullableOf(Schema.of(Schema.Type.STRING))), Schema.Field.of("non_nullable", Schema.of(Schema.Type.STRING)));
RecordPutTransformer transformer = new RecordPutTransformer("key", null);
// valid record
StructuredRecord record = StructuredRecord.builder(schema).set("key", 1).set("non_nullable", "foo").build();
Put transformed = transformer.toPut(record);
Assert.assertEquals(1, Bytes.toInt(transformed.getRow()));
// expect a null value for the nullable field
Assert.assertEquals(2, transformed.getValues().size());
Assert.assertEquals("foo", Bytes.toString(transformed.getValues().get(Bytes.toBytes("non_nullable"))));
Assert.assertNull(transformed.getValues().get(Bytes.toBytes("nullable")));
}
use of io.cdap.cdap.api.data.format.StructuredRecord in project cdap by caskdata.
the class RecordPutTransformerTest method testNullableFields.
@Test
public void testNullableFields() throws Exception {
Schema schema = Schema.recordOf("record", Schema.Field.of("key", Schema.of(Schema.Type.INT)), Schema.Field.of("nullable", Schema.nullableOf(Schema.of(Schema.Type.STRING))), Schema.Field.of("non_nullable", Schema.of(Schema.Type.STRING)));
RecordPutTransformer transformer = new RecordPutTransformer("key", schema);
// valid record
StructuredRecord record = StructuredRecord.builder(schema).set("key", 1).set("non_nullable", "foo").build();
Put transformed = transformer.toPut(record);
Assert.assertEquals(1, Bytes.toInt(transformed.getRow()));
// expect a null value for the nullable field
Assert.assertEquals(2, transformed.getValues().size());
Assert.assertEquals("foo", Bytes.toString(transformed.getValues().get(Bytes.toBytes("non_nullable"))));
Assert.assertNull(transformed.getValues().get(Bytes.toBytes("nullable")));
}
use of io.cdap.cdap.api.data.format.StructuredRecord in project cdap by caskdata.
the class RecordPutTransformerTest method testTransform.
@Test
public void testTransform() throws Exception {
Schema schema = Schema.recordOf("record", Schema.Field.of("boolField", Schema.nullableOf(Schema.of(Schema.Type.BOOLEAN))), Schema.Field.of("intField", Schema.nullableOf(Schema.of(Schema.Type.INT))), Schema.Field.of("longField", Schema.nullableOf(Schema.of(Schema.Type.LONG))), Schema.Field.of("floatField", Schema.nullableOf(Schema.of(Schema.Type.FLOAT))), Schema.Field.of("doubleField", Schema.nullableOf(Schema.of(Schema.Type.DOUBLE))), Schema.Field.of("bytesField", Schema.nullableOf(Schema.of(Schema.Type.BYTES))), Schema.Field.of("stringField", Schema.of(Schema.Type.STRING)));
RecordPutTransformer transformer = new RecordPutTransformer("stringField", schema);
StructuredRecord record = StructuredRecord.builder(schema).set("boolField", true).set("intField", 5).set("longField", 10L).set("floatField", 3.14f).set("doubleField", 3.14).set("bytesField", Bytes.toBytes("foo")).set("stringField", "key").build();
Put transformed = transformer.toPut(record);
Assert.assertEquals("key", Bytes.toString(transformed.getRow()));
Map<byte[], byte[]> values = transformed.getValues();
Assert.assertTrue(Bytes.toBoolean(values.get(Bytes.toBytes("boolField"))));
Assert.assertEquals(5, Bytes.toInt(values.get(Bytes.toBytes("intField"))));
Assert.assertEquals(10L, Bytes.toLong(values.get(Bytes.toBytes("longField"))));
Assert.assertTrue(Math.abs(3.14f - Bytes.toFloat(values.get(Bytes.toBytes("floatField")))) < 0.000001);
Assert.assertTrue(Math.abs(3.14 - Bytes.toDouble(values.get(Bytes.toBytes("doubleField")))) < 0.000001);
Assert.assertArrayEquals(Bytes.toBytes("foo"), values.get(Bytes.toBytes("bytesField")));
}
use of io.cdap.cdap.api.data.format.StructuredRecord in project cdap by caskdata.
the class RecordPutTransformerTest method testNullRowkeyThrowsException.
@Test(expected = IllegalArgumentException.class)
public void testNullRowkeyThrowsException() throws Exception {
Schema schema = Schema.recordOf("record", Schema.Field.of("key", Schema.nullableOf(Schema.of(Schema.Type.STRING))));
RecordPutTransformer transformer = new RecordPutTransformer("key", schema);
StructuredRecord record = StructuredRecord.builder(schema).build();
transformer.toPut(record);
}
Aggregations