Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 24 additions & 7 deletions lib/src/test/java/io/cloudquery/helper/ArrowHelperTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,15 @@

import com.google.protobuf.ByteString;
import io.cloudquery.schema.Column;
import io.cloudquery.schema.Resource;
import io.cloudquery.schema.Table;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import org.apache.arrow.vector.types.pojo.ArrowType;
import org.apache.arrow.vector.types.pojo.Field;
import org.apache.arrow.vector.types.pojo.Schema;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

public class ArrowHelperTest {
Expand All @@ -32,20 +34,21 @@ public class ArrowHelperTest {
.columns(
List.of(
Column.builder()
.name("column1")
.name("string_column1")
.type(ArrowType.Utf8.INSTANCE)
.unique(true)
.incrementalKey(true)
.primaryKey(true)
.build(),
Column.builder().name("column2").type(ArrowType.Utf8.INSTANCE).build()))
Column.builder().name("string_column2").type(ArrowType.Utf8.INSTANCE).build(),
Column.builder().name("boolean_column").type(ArrowType.Bool.INSTANCE).build()))
.build();

@Test
public void testToArrowSchema() {
Schema arrowSchema = ArrowHelper.toArrowSchema(TEST_TABLE);

assertEquals(arrowSchema.getFields().get(0).getName(), "column1");
assertEquals(arrowSchema.getFields().get(0).getName(), "string_column1");
assertEquals(
arrowSchema.getFields().get(0).getMetadata(),
Map.of(
Expand All @@ -55,7 +58,7 @@ public void testToArrowSchema() {
"true",
CQ_EXTENSION_PRIMARY_KEY,
"true"));
assertEquals(arrowSchema.getFields().get(1).getName(), "column2");
assertEquals(arrowSchema.getFields().get(1).getName(), "string_column2");
assertEquals(
arrowSchema.getFields().get(1).getMetadata(),
Map.of(
Expand All @@ -80,8 +83,8 @@ public void testToArrowSchema() {
public void testFromArrowSchema() {
List<Field> fields =
List.of(
Field.nullable("column1", ArrowType.Utf8.INSTANCE),
Field.nullable("column2", ArrowType.Utf8.INSTANCE));
Field.nullable("string_column1", ArrowType.Utf8.INSTANCE),
Field.nullable("string_column2", ArrowType.Utf8.INSTANCE));

Schema schema = new Schema(fields, Map.of(CQ_TABLE_NAME, "table1"));

Expand All @@ -97,7 +100,7 @@ public void testFromArrowSchema() {
}

@Test
public void testRoundTrip() throws IOException {
public void testRoundTripTableEncoding() throws IOException {
ByteString byteString = ArrowHelper.encode(TEST_TABLE);
Table table = ArrowHelper.decode(byteString);

Expand All @@ -111,4 +114,18 @@ public void testRoundTrip() throws IOException {
assertEquals(TEST_TABLE.getColumns().get(i).getType(), table.getColumns().get(i).getType());
}
}

@Test
public void testRoundTripResourceEncoding() throws Exception {
Resource resource = Resource.builder().table(TEST_TABLE).build();
resource.set("string_column1", "test_data");
resource.set("string_column2", "test_data2");
resource.set("boolean_column", true);

Assertions.assertDoesNotThrow(
() -> {
ByteString byteString = ArrowHelper.encode(resource);
ArrowHelper.decodeResource(byteString);
});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -100,10 +100,15 @@ private static Write.Request generateMigrateTableMessage() throws IOException {
}

private Write.Request generateInsertMessage() throws IOException, ValidationException {
Column column = Column.builder().name("test_column").type(ArrowType.Utf8.INSTANCE).build();
Table table = Table.builder().name("test").columns(List.of(column)).build();
Column stringColumn =
Column.builder().name("test_column").type(ArrowType.Utf8.INSTANCE).build();
Column booleanColumn =
Column.builder().name("boolean_column").type(ArrowType.Bool.INSTANCE).build();
Table table =
Table.builder().name("test").columns(List.of(stringColumn, booleanColumn)).build();
Resource resource = Resource.builder().table(table).build();
resource.set("test_column", "test_data");
resource.set("boolean_column", true);
ByteString byteString = ArrowHelper.encode(resource);
MessageInsert messageInsert = MessageInsert.newBuilder().setRecord(byteString).build();
return Write.Request.newBuilder().setInsert(messageInsert).build();
Expand Down