private Schema toKsqlArraySchema(final Schema schema) { return SchemaBuilder.array( toKsqlFieldSchema(schema.valueSchema()) ).optional().build(); }
@Test public void shouldDeserializeConnectMapWithBooleanKey() { shouldDeserializeConnectTypeCorrectly( SchemaBuilder.map(Schema.BOOLEAN_SCHEMA, Schema.INT32_SCHEMA).optional().build(), ImmutableMap.of( true, 10, false, 20), SchemaBuilder.map( Schema.OPTIONAL_STRING_SCHEMA, Schema.OPTIONAL_INT32_SCHEMA ).optional().build(), ImmutableMap.of("true", 10, "false", 20) ); }
@Test public void shouldDeserializeConnectMapWithInt8Key() { shouldDeserializeConnectTypeCorrectly( SchemaBuilder.map(Schema.INT8_SCHEMA, Schema.INT32_SCHEMA).optional().build(), ImmutableMap.of((byte) 1, 10, (byte) 2, 20, (byte) 3, 30), SchemaBuilder.map( Schema.OPTIONAL_STRING_SCHEMA, Schema.OPTIONAL_INT32_SCHEMA ).optional().build(), ImmutableMap.of("1", 10, "2", 20, "3", 30) ); }
@Test public void shouldDeserializeConnectMapWithInt32Key() { shouldDeserializeConnectTypeCorrectly( SchemaBuilder.map(Schema.INT32_SCHEMA, Schema.INT32_SCHEMA).optional().build(), ImmutableMap.of(1, 10, 2, 20, 3, 30), SchemaBuilder.map( Schema.OPTIONAL_STRING_SCHEMA, Schema.OPTIONAL_INT32_SCHEMA ).optional().build(), ImmutableMap.of("1", 10, "2", 20, "3", 30) ); }
@Test public void shouldDeserializeConnectMapWithInt16Key() { shouldDeserializeConnectTypeCorrectly( SchemaBuilder.map(Schema.INT16_SCHEMA, Schema.INT32_SCHEMA).optional().build(), ImmutableMap.of((short) 1, 10, (short) 2, 20, (short) 3, 30), SchemaBuilder.map( Schema.OPTIONAL_STRING_SCHEMA, Schema.OPTIONAL_INT32_SCHEMA ).optional().build(), ImmutableMap.of("1", 10, "2", 20, "3", 30) ); }
@Test public void shouldDeserializeConnectMapWithInt64Key() { shouldDeserializeConnectTypeCorrectly( SchemaBuilder.map(Schema.INT64_SCHEMA, Schema.INT32_SCHEMA).optional().build(), ImmutableMap.of( 1L, 10, 2L, 20, 3L, 30), SchemaBuilder.map( Schema.OPTIONAL_STRING_SCHEMA, Schema.OPTIONAL_INT32_SCHEMA ).optional().build(), ImmutableMap.of("1", 10, "2", 20, "3", 30) ); }
@Test public void shouldGetTheCorrectJavaTypeForMap() { final Schema schema = SchemaBuilder.map(Schema.OPTIONAL_STRING_SCHEMA, Schema.OPTIONAL_FLOAT64_SCHEMA).optional().build(); final Class javaClass = SchemaUtil.getJavaType(schema); assertThat(javaClass, equalTo(Map.class)); }
@Test public void shouldGetCorrectMapKsqlType() throws Exception { final Schema mapSchema = SchemaBuilder.map(Schema.OPTIONAL_STRING_SCHEMA, Schema.OPTIONAL_FLOAT64_SCHEMA).optional().build(); final Type type = TypeUtil.getKsqlType(mapSchema); assertThat(type.getKsqlType(), equalTo(Type.KsqlType.MAP)); assertThat(type, instanceOf(Map.class)); assertThat(((Map) type).getValueType().getKsqlType(), equalTo(Type.KsqlType.DOUBLE)); }
@Test public void shouldGetCorrectSqlTypeNameForMap() { assertThat(SchemaUtil.getSqlTypeName(SchemaBuilder.map(Schema.OPTIONAL_STRING_SCHEMA, Schema.OPTIONAL_FLOAT64_SCHEMA).optional().build()), equalTo("MAP<VARCHAR,DOUBLE>")); }
@Test public void shouldGetCorrectArrayKsqlType() throws Exception { final Schema arraySchema = SchemaBuilder.array(Schema.OPTIONAL_FLOAT64_SCHEMA).optional().build(); final Type type = TypeUtil.getKsqlType(arraySchema); assertThat(type.getKsqlType(), equalTo(Type.KsqlType.ARRAY)); assertThat(type, instanceOf(Array.class)); assertThat(((Array) type).getItemType().getKsqlType(), equalTo(Type.KsqlType.DOUBLE)); }
@Test public void shouldGetCorrectJavaClassForArray() { final Class arrayClazz = SchemaUtil.getJavaType(SchemaBuilder.array(Schema.OPTIONAL_FLOAT64_SCHEMA).optional().build()); assertThat(arrayClazz, equalTo(List.class)); }
@Test public void shouldGetCorrectJavaClassForMap() { final Class mapClazz = SchemaUtil.getJavaType(SchemaBuilder.map(Schema.OPTIONAL_STRING_SCHEMA, Schema.OPTIONAL_FLOAT64_SCHEMA).optional().build()); assertThat(mapClazz, equalTo(Map.class)); }
@Test public void shouldGetCorrectSqlTypeNameForArray() { assertThat(SchemaUtil.getSqlTypeName(SchemaBuilder.array(Schema.OPTIONAL_FLOAT64_SCHEMA).optional().build()), equalTo("ARRAY<DOUBLE>")); }
@Test public void shouldGetTheCorrectJavaTypeForArray() { final Schema schema = SchemaBuilder.array(Schema.OPTIONAL_FLOAT64_SCHEMA).optional().build(); final Class javaClass = SchemaUtil.getJavaType(schema); assertThat(javaClass, equalTo(List.class)); }
private static Schema buildStructSchema(final Struct struct) { final SchemaBuilder structSchemaBuilder = SchemaBuilder.struct(); for (final Pair<String, Type> field: struct.getItems()) { structSchemaBuilder.field(field.getLeft(), getTypeSchema(field.getRight())); } return structSchemaBuilder.optional().build(); } }
@Test public void shouldTranslateNullValueCorrectly() { final Schema rowSchema = SchemaBuilder.struct() .field("INT", SchemaBuilder.OPTIONAL_INT32_SCHEMA) .optional() .build(); final Struct connectStruct = new Struct(rowSchema); final ConnectDataTranslator connectToKsqlTranslator = new ConnectDataTranslator(rowSchema); final GenericRow row = connectToKsqlTranslator.toKsqlRow(rowSchema, connectStruct); assertThat(row.getColumns().size(), equalTo(1)); assertThat(row.getColumnValue(0), is(nullValue())); }
private Schema toKsqlMapSchema(final Schema schema) { final Schema keySchema = toKsqlFieldSchema(schema.keySchema()); checkMapKeyType(keySchema.type()); return SchemaBuilder.map( Schema.OPTIONAL_STRING_SCHEMA, toKsqlFieldSchema(schema.valueSchema()) ).optional().build(); }
@Test public void shouldDeserializeMapToMap() { shouldDeserializeTypeCorrectly( org.apache.avro.SchemaBuilder.map().values().intType(), ImmutableMap.of("one", 1, "two", 2, "three", 3), SchemaBuilder.map( Schema.OPTIONAL_STRING_SCHEMA, Schema.OPTIONAL_INT32_SCHEMA ).optional().build() ); }
@Test public void shouldDeserializeArrayToArray() { shouldDeserializeTypeCorrectly( org.apache.avro.SchemaBuilder.array().items().intType(), ImmutableList.of(1, 2, 3, 4, 5, 6), SchemaBuilder.array(Schema.OPTIONAL_INT32_SCHEMA).optional().build() ); }
@Test public void shouldSerializeArray() { shouldSerializeTypeCorrectly( SchemaBuilder.array(Schema.OPTIONAL_INT32_SCHEMA).optional().build(), ImmutableList.of(1, 2, 3), org.apache.avro.SchemaBuilder.array().items( org.apache.avro.SchemaBuilder.builder() .unionOf().nullType().and().intType().endUnion()) ); }