This is an automated email from the ASF dual-hosted git repository. amashenkov pushed a commit to branch ignite-18015 in repository https://gitbox.apache.org/repos/asf/ignite-3.git
commit 095328a64c97e9f770c50369455d58fb24ec849d Author: amashenkov <[email protected]> AuthorDate: Tue Nov 8 13:21:18 2022 +0300 wip. add tests. --- .../internal/table/MutableRowTupleAdapterTest.java | 109 ++++++++++++++++++++- 1 file changed, 107 insertions(+), 2 deletions(-) diff --git a/modules/table/src/test/java/org/apache/ignite/internal/table/MutableRowTupleAdapterTest.java b/modules/table/src/test/java/org/apache/ignite/internal/table/MutableRowTupleAdapterTest.java index 05ac2df910..a87088864b 100644 --- a/modules/table/src/test/java/org/apache/ignite/internal/table/MutableRowTupleAdapterTest.java +++ b/modules/table/src/test/java/org/apache/ignite/internal/table/MutableRowTupleAdapterTest.java @@ -66,6 +66,7 @@ import org.apache.ignite.internal.table.impl.DummySchemaManagerImpl; import org.apache.ignite.internal.testframework.IgniteTestUtils; import org.apache.ignite.table.Tuple; import org.jetbrains.annotations.NotNull; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; /** @@ -351,7 +352,7 @@ public class MutableRowTupleAdapterTest { TupleMarshaller marshaller = new TupleMarshallerImpl(new DummySchemaManagerImpl(fullSchema)); - Tuple tuple = Tuple.create() + Tuple tuple = Tuple.create() .set("valByteCol", (byte) 1) .set("valShortCol", (short) 2) .set("valIntCol", 3) @@ -543,6 +544,110 @@ public class MutableRowTupleAdapterTest { assertEquals(val1, val2); } + @Test + void testTemporalValuesPrecisionWidening() throws Exception { + SchemaDescriptor schemaDescriptor = new SchemaDescriptor(1, + new Column[]{new Column("key", NativeTypes.INT32, false)}, + new Column[]{ + new Column("time", NativeTypes.time(3), true), + new Column("datetime", NativeTypes.datetime(4), true), + new Column("timestamp", NativeTypes.timestamp(5), true) + } + ); + + TupleMarshaller marshaller = new TupleMarshallerImpl(new DummySchemaManagerImpl(schemaDescriptor)); + + Tuple tuple = Tuple.create().set("key", 1) + .set("time", LocalTime.of(1, 2)) + .set("datetime", LocalDateTime.of(2022, 1, 2, 3, 4)) + .set("timestamp", Instant.ofEpochSecond(123)); + + Row row = new Row(schemaDescriptor, new ByteBufferRow(marshaller.marshal(tuple).bytes())); + + Tuple tuple1 = deserializeTuple(serializeTuple(TableRow.tuple(row))); + + assertEquals(tuple, tuple1); + } + + @Test + void testTemporalValuesPrecisionNarrowing() throws Exception { + SchemaDescriptor schemaDescriptor = new SchemaDescriptor(1, + new Column[]{new Column("key", NativeTypes.INT32, false)}, + new Column[]{ + new Column("time", NativeTypes.time(3), true), + new Column("datetime", NativeTypes.datetime(3), true), + new Column("timestamp", NativeTypes.timestamp(3), true) + } + ); + + Tuple tuple = Tuple.create().set("key", 1) + .set("time", LocalTime.of(1, 2, 3, 456_700_000)) + .set("datetime", LocalDateTime.of(2022, 1, 2, 3, 4, 5, 678_900_000)) + .set("timestamp", Instant.ofEpochSecond(123, 456_700_000)); + Tuple expected = Tuple.create().set("key", 1) + .set("time", LocalTime.of(1, 2, 3, 456_000_000)) + .set("datetime", LocalDateTime.of(2022, 1, 2, 3, 4, 5, 678_000_000)) + .set("timestamp", Instant.ofEpochSecond(123, 456_000_000)); + + TupleMarshaller marshaller = new TupleMarshallerImpl(new DummySchemaManagerImpl(schemaDescriptor)); + + Row row = new Row(schemaDescriptor, new ByteBufferRow(marshaller.marshal(tuple).bytes())); + + Tuple tuple1 = deserializeTuple(serializeTuple(TableRow.tuple(row))); + + assertEquals(expected, tuple1); + } + + @Test + void testVarlenValuesLengthWidening() throws Exception { + SchemaDescriptor schemaDescriptor = new SchemaDescriptor(1, + new Column[]{new Column("key", NativeTypes.INT32, false)}, + new Column[]{ + new Column("string", NativeTypes.stringOf(5), true), + new Column("bytes", NativeTypes.blobOf(5), true), + } + ); + + TupleMarshaller marshaller = new TupleMarshallerImpl(new DummySchemaManagerImpl(schemaDescriptor)); + + Tuple tuple = Tuple.create().set("key", 1) + .set("string", "abc") + .set("bytes", new byte[]{1, 2, 3}); + + Row row = new Row(schemaDescriptor, new ByteBufferRow(marshaller.marshal(tuple).bytes())); + + Tuple tuple1 = deserializeTuple(serializeTuple(TableRow.tuple(row))); + + assertEquals(tuple, tuple1); + } + + //TODO: Fix varlen types truncation. + @Test + void testVarlenValuesLengthNarrowing() throws Exception { + SchemaDescriptor schemaDescriptor = new SchemaDescriptor(1, + new Column[]{new Column("key", NativeTypes.INT32, false)}, + new Column[]{ + new Column("string", NativeTypes.stringOf(5), true), + new Column("bytes", NativeTypes.blobOf(5), true), + } + ); + + Tuple tuple = Tuple.create().set("key", 1) + .set("string", "abcefghi") + .set("bytes", new byte[]{1, 2, 3, 4, 5, 6, 7, 8}); + Tuple expected = Tuple.create().set("key", 1) + .set("string", "abcef") + .set("bytes", new byte[]{1, 2, 3, 4, 5}); + + TupleMarshaller marshaller = new TupleMarshallerImpl(new DummySchemaManagerImpl(schemaDescriptor)); + + Row row = new Row(schemaDescriptor, new ByteBufferRow(marshaller.marshal(tuple).bytes())); + + Tuple tuple1 = deserializeTuple(serializeTuple(TableRow.tuple(row))); + + assertEquals(expected, tuple1); + } + private <T extends Temporal> T truncateToDefaultPrecision(T temporal) { int precision = temporal instanceof Instant ? ColumnType.TemporalColumnType.DEFAULT_TIMESTAMP_PRECISION : ColumnType.TemporalColumnType.DEFAULT_TIME_PRECISION; @@ -610,7 +715,7 @@ public class MutableRowTupleAdapterTest { /** * Returns random BitSet. * - * @param rnd Random generator. + * @param rnd Random generator. * @param bits Amount of bits in bitset. */ private static BitSet randomBitSet(Random rnd, int bits) {
