diff options
author | kpandit <kpandit@pinterest.com> | 2021-11-20 00:56:17 +0100 |
---|---|---|
committer | Jens Geyer <jensg@apache.org> | 2021-11-20 00:57:57 +0100 |
commit | 5a9d139be4ef1a790da4c6f25377b8ab6573a325 (patch) | |
tree | 0377e631e8faada4e4c7cb1db3e47af89518a650 /test | |
parent | 2c0927826d1e7f7e902f29a925e22058f949f535 (diff) | |
download | thrift-5a9d139be4ef1a790da4c6f25377b8ab6573a325.tar.gz |
THRIFT-5443: add support for partial Thrift deserialization
Client: java
Patch: Bhalchandra Pandit
This closes #2439
Diffstat (limited to 'test')
-rw-r--r-- | test/partial/thrift_test_schema.thrift | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/test/partial/thrift_test_schema.thrift b/test/partial/thrift_test_schema.thrift new file mode 100644 index 000000000..311bd68d7 --- /dev/null +++ b/test/partial/thrift_test_schema.thrift @@ -0,0 +1,134 @@ +/* + * 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. + */ + +namespace java org.apache.thrift.partial + +// This thrift file is meant for testing partial deserialization. +// It includes all field types and most combinations of complex types. +// Those fields help ensure correctness of partial deserialization. + +enum TstEnum { + UNKNOWN = 0, + E_ONE = 1, + E_TWO = 2 +} + +struct SmallStruct { + // Primitive fields + 1: optional byte byteField; + 2: optional i16 i16Field; + 3: optional i32 i32Field; + 4: optional i64 i64Field; + 5: optional double doubleField; + 6: optional string stringField; + + // Enum + 7: optional TstEnum enumField; +} + +// TODO(kpandit): Need to add bool field +struct TestStruct { + // Primitive fields + 1: optional byte byteField; + 2: optional i16 i16Field; + 3: optional i32 i32Field; + 4: optional i64 i64Field; + 5: optional double doubleField; + 6: optional string stringField; + + // Enum + 7: optional TstEnum enumField; + + 8: optional binary binaryField; + + // List + 10: optional list<byte> byteList; + 11: optional list<i16> i16List; + 12: optional list<i32> i32List; + 13: optional list<i64> i64List; + 14: optional list<double> doubleList; + 15: optional list<string> stringList; + 16: optional list<TstEnum> enumList; + 17: optional list<list<i32>> listList; + 18: optional list<set<i32>> setList; + 19: optional list<map<string, i32>> mapList; + 20: optional list<SmallStruct> structList; + 21: optional list<binary> binaryList; + + // Set + 30: optional set<byte> byteSet; + 31: optional set<i16> i16Set; + 32: optional set<i32> i32Set; + 33: optional set<i64> i64Set; + 34: optional set<double> doubleSet; + 35: optional set<string> stringSet; + 36: optional set<TstEnum> enumSet; + 37: optional set<list<i32>> listSet (nolint = "set.value.type"); + 38: optional set<set<i32>> setSet (nolint = "set.value.type"); + 39: optional set<map<string, i32>> mapSet (nolint = "set.value.type"); + 40: optional set<SmallStruct> structSet (nolint = "set.value.type"); + 41: optional set<binary> binarySet; + + // Map + 50: optional map<byte, byte> byteMap; + 51: optional map<i16, i16> i16Map; + 52: optional map<i32, i32> i32Map; + 53: optional map<i64, i64> i64Map; + 54: optional map<double, double> doubleMap; + 55: optional map<string, string> stringMap; + 56: optional map<TstEnum, TstEnum> enumMap; + 57: optional map<i32, list<i32>> listMap; + 58: optional map<i32, set<i32>> setMap; + 59: optional map<i32, map<i32, i32>> mapMap; + 60: optional map<SmallStruct, SmallStruct> structMap (nolint = "map.key.type"); + 61: optional map<i32, binary> binaryMap; + + 70: optional SmallStruct structField; +} + +struct InnermostStruct { + 1: optional string value; + 2: optional i32 intValue; +} + +struct InnerStruct { + 1: optional InnermostStruct value; + 2: optional i32 intValue; +} + +struct OuterStruct { + 1: optional InnerStruct value; + 2: optional map<string, InnerStruct> structMap; +} + +union SimpleUnion { + 1: optional i32 intValue; + 2: optional string stringValue; +} + +struct StructWithUnions { + 1: optional i32 intValue; + 2: optional SmallStruct smallStruct; + 3: optional SimpleUnion simpleUnion; + 4: optional list<SimpleUnion> unionList; + 5: optional set<SimpleUnion> unionSet (nolint = "set.value.type"); + 6: optional map<SimpleUnion, string> keyUnionMap (nolint = "map.key.type"); + 7: optional map<string, SimpleUnion> valUnionMap; + 8: optional map<SimpleUnion, SimpleUnion> unionMap (nolint = "map.key.type"); +} |