You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@beam.apache.org by "ASF GitHub Bot (Jira)" <ji...@apache.org> on 2020/02/11 06:09:00 UTC
[jira] [Work logged] (BEAM-8561) Add ThriftIO to Support IO for
Thrift Files
[ https://issues.apache.org/jira/browse/BEAM-8561?focusedWorklogId=384985&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-384985 ]
ASF GitHub Bot logged work on BEAM-8561:
----------------------------------------
Author: ASF GitHub Bot
Created on: 11/Feb/20 06:08
Start Date: 11/Feb/20 06:08
Worklog Time Spent: 10m
Work Description: pabloem commented on pull request #10290: [BEAM-8561] Add ThriftIO to support IO for Thrift files
URL: https://github.com/apache/beam/pull/10290#discussion_r377457203
##########
File path: sdks/java/io/thrift/src/test/java/org/apache/beam/sdk/io/thrift/ThriftIOTest.java
##########
@@ -0,0 +1,233 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.beam.sdk.io.thrift;
+
+import java.io.Serializable;
+import java.nio.ByteBuffer;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import org.apache.beam.repackaged.core.org.apache.commons.lang3.RandomStringUtils;
+import org.apache.beam.repackaged.core.org.apache.commons.lang3.RandomUtils;
+import org.apache.beam.sdk.coders.StringUtf8Coder;
+import org.apache.beam.sdk.io.FileIO;
+import org.apache.beam.sdk.testing.PAssert;
+import org.apache.beam.sdk.testing.TestPipeline;
+import org.apache.beam.sdk.transforms.Create;
+import org.apache.beam.sdk.values.PCollection;
+import org.apache.beam.vendor.guava.v26_0_jre.com.google.common.collect.ImmutableList;
+import org.apache.beam.vendor.guava.v26_0_jre.com.google.common.io.Resources;
+import org.apache.thrift.protocol.TBinaryProtocol;
+import org.apache.thrift.protocol.TCompactProtocol;
+import org.apache.thrift.protocol.TJSONProtocol;
+import org.apache.thrift.protocol.TProtocolFactory;
+import org.apache.thrift.protocol.TSimpleJSONProtocol;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+/** Tests for {@link ThriftIO}. */
+@RunWith(JUnit4.class)
+public class ThriftIOTest implements Serializable {
+
+ private static final String RESOURCE_DIR = "ThriftIOTest/";
+
+ private static final String THRIFT_DIR = Resources.getResource(RESOURCE_DIR).getPath();
+ private static final String ALL_THRIFT_STRING =
+ Resources.getResource(RESOURCE_DIR).getPath() + "*";
+ private static final TestThriftStruct TEST_THRIFT_STRUCT = new TestThriftStruct();
+ private static List<TestThriftStruct> testThriftStructs;
+ private final TProtocolFactory tBinaryProtoFactory = new TBinaryProtocol.Factory();
+ private final TProtocolFactory tJsonProtocolFactory = new TJSONProtocol.Factory();
+ private final TProtocolFactory tSimpleJsonProtocolFactory = new TSimpleJSONProtocol.Factory();
+ private final TProtocolFactory tCompactProtocolFactory = new TCompactProtocol.Factory();
+ @Rule public transient TestPipeline mainPipeline = TestPipeline.create();
+ @Rule public transient TestPipeline readPipeline = TestPipeline.create();
+ @Rule public transient TestPipeline writePipeline = TestPipeline.create();
+ @Rule public transient TemporaryFolder temporaryFolder = new TemporaryFolder();
+
+ @Before
+ public void setUp() throws Exception {
+ byte[] bytes = new byte[10];
+ ByteBuffer buffer = ByteBuffer.wrap(bytes);
+
+ TEST_THRIFT_STRUCT.testByte = 100;
+ TEST_THRIFT_STRUCT.testShort = 200;
+ TEST_THRIFT_STRUCT.testInt = 2500;
+ TEST_THRIFT_STRUCT.testLong = 79303L;
+ TEST_THRIFT_STRUCT.testDouble = 25.007;
+ TEST_THRIFT_STRUCT.testBool = true;
+ TEST_THRIFT_STRUCT.stringIntMap = new HashMap<>();
+ TEST_THRIFT_STRUCT.stringIntMap.put("first", (short) 1);
+ TEST_THRIFT_STRUCT.stringIntMap.put("second", (short) 2);
+ TEST_THRIFT_STRUCT.testBinary = buffer;
+
+ testThriftStructs = ImmutableList.copyOf(generateTestObjects(1000L));
+ }
+
+ /** Tests {@link ThriftIO#readFiles(Class)} with {@link TBinaryProtocol}. */
+ @Test
Review comment:
There doesn't seem to be a test for `read().from(...)` - should there be one? (and it's okay if the answer is 'don't need one') : )
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Issue Time Tracking
-------------------
Worklog Id: (was: 384985)
Time Spent: 10h (was: 9h 50m)
> Add ThriftIO to Support IO for Thrift Files
> -------------------------------------------
>
> Key: BEAM-8561
> URL: https://issues.apache.org/jira/browse/BEAM-8561
> Project: Beam
> Issue Type: New Feature
> Components: io-java-files
> Reporter: Chris Larsen
> Assignee: Chris Larsen
> Priority: Major
> Time Spent: 10h
> Remaining Estimate: 0h
>
> Similar to AvroIO it would be very useful to support reading and writing to/from Thrift files with a native connector.
> Functionality would include:
> # read() - Reading from one or more Thrift files.
> # write() - Writing to one or more Thrift files.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)