Skip to content

Commit 6b1c976

Browse files
committed
BE: Serde: Impl Avro type for timestamp-nanos and local-timestamp-nanos logical types
fix test
1 parent a8103d6 commit 6b1c976

File tree

1 file changed

+27
-16
lines changed

1 file changed

+27
-16
lines changed

api/src/test/java/io/kafbat/ui/serdes/builtin/sr/SchemaRegistrySerdeTest.java

Lines changed: 27 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,19 @@
1212
import io.kafbat.ui.util.jsonschema.JsonAvroConversion;
1313
import java.io.ByteArrayOutputStream;
1414
import java.io.IOException;
15+
import java.math.BigDecimal;
1516
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;
1622
import java.util.List;
1723
import java.util.Map;
24+
import java.util.UUID;
1825
import lombok.SneakyThrows;
1926
import net.bytebuddy.utility.RandomString;
27+
import org.apache.avro.generic.GenericData;
2028
import org.apache.avro.generic.GenericDatumWriter;
2129
import org.apache.avro.io.Encoder;
2230
import org.apache.avro.io.EncoderFactory;
@@ -361,24 +369,27 @@ void avroLogicalTypesRepresentationIsConsistentForSerializationAndDeserializatio
361369
}"""
362370
);
363371

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);
379390

380391
registryClient.register("test-value", schema);
381-
assertSerdeCycle("test", jsonPayload);
392+
assertSerdeCycle("test", inputRecord.toString());
382393
}
383394

384395
// 1. serialize input json to binary

0 commit comments

Comments
 (0)