|
12 | 12 | import io.kafbat.ui.util.jsonschema.JsonAvroConversion; |
13 | 13 | import java.io.ByteArrayOutputStream; |
14 | 14 | import java.io.IOException; |
| 15 | +import java.math.BigDecimal; |
15 | 16 | import java.nio.ByteBuffer; |
| 17 | +import java.time.Instant; |
| 18 | +import java.time.LocalDate; |
| 19 | +import java.time.LocalDateTime; |
| 20 | +import java.time.LocalTime; |
| 21 | +import java.time.ZoneOffset; |
16 | 22 | import java.util.List; |
17 | 23 | import java.util.Map; |
| 24 | +import java.util.UUID; |
18 | 25 | import lombok.SneakyThrows; |
19 | 26 | import net.bytebuddy.utility.RandomString; |
| 27 | +import org.apache.avro.generic.GenericData; |
20 | 28 | import org.apache.avro.generic.GenericDatumWriter; |
21 | 29 | import org.apache.avro.io.Encoder; |
22 | 30 | import org.apache.avro.io.EncoderFactory; |
@@ -361,24 +369,27 @@ void avroLogicalTypesRepresentationIsConsistentForSerializationAndDeserializatio |
361 | 369 | }""" |
362 | 370 | ); |
363 | 371 |
|
364 | | - String jsonPayload = """ |
365 | | - { |
366 | | - "lt_date":"1991-08-14", |
367 | | - "lt_decimal": 2.1617413862327545E11, |
368 | | - "lt_time_millis": "10:15:30.001", |
369 | | - "lt_time_micros": "10:15:30.123456", |
370 | | - "lt_uuid": "a37b75ca-097c-5d46-6119-f0637922e908", |
371 | | - "lt_timestamp_millis": "2007-12-03T10:15:30.123Z", |
372 | | - "lt_timestamp_micros": "2007-12-03T10:15:30.123456Z", |
373 | | - "lt_timestamp_nanos": "2007-12-03T10:15:30.123456789Z", |
374 | | - "lt_local_timestamp_millis": "2017-12-03T10:15:30.123", |
375 | | - "lt_local_timestamp_micros": "2017-12-03T10:15:30.123456", |
376 | | - "lt_local_timestamp_nanos": "2017-12-03T10:15:30.123456789" |
377 | | - } |
378 | | - """; |
| 372 | + Instant instant = Instant.parse("2007-12-03T10:15:30.123456789Z"); |
| 373 | + long timestampNanos = instant.getEpochSecond() * 1_000_000_000L + instant.getNano(); |
| 374 | + |
| 375 | + instant = LocalDateTime.parse("2017-12-03T10:15:30.123456789").toInstant(ZoneOffset.UTC); |
| 376 | + long localTimestampNanos = instant.getEpochSecond() * 1_000_000_000L + instant.getNano(); |
| 377 | + |
| 378 | + GenericData.Record inputRecord = new GenericData.Record(schema.rawSchema()); |
| 379 | + inputRecord.put("lt_date", LocalDate.of(1991, 8, 14)); |
| 380 | + inputRecord.put("lt_uuid", UUID.fromString("a37b75ca-097c-5d46-6119-f0637922e908")); |
| 381 | + inputRecord.put("lt_decimal", new BigDecimal("2.16")); |
| 382 | + inputRecord.put("lt_time_millis", LocalTime.parse("10:15:30.001")); |
| 383 | + inputRecord.put("lt_time_micros", LocalTime.parse("10:15:30.123456")); |
| 384 | + inputRecord.put("lt_timestamp_millis", Instant.parse("2007-12-03T10:15:30.123Z")); |
| 385 | + inputRecord.put("lt_timestamp_micros", Instant.parse("2007-12-03T10:15:30.123456Z")); |
| 386 | + inputRecord.put("lt_timestamp_nanos", timestampNanos); |
| 387 | + inputRecord.put("lt_local_timestamp_millis", LocalDateTime.parse("2017-12-03T10:15:30.123")); |
| 388 | + inputRecord.put("lt_local_timestamp_micros", LocalDateTime.parse("2017-12-03T10:15:30.123456")); |
| 389 | + inputRecord.put("lt_local_timestamp_nanos", localTimestampNanos); |
379 | 390 |
|
380 | 391 | registryClient.register("test-value", schema); |
381 | | - assertSerdeCycle("test", jsonPayload); |
| 392 | + assertSerdeCycle("test", inputRecord.toString()); |
382 | 393 | } |
383 | 394 |
|
384 | 395 | // 1. serialize input json to binary |
|
0 commit comments