blob: 48df1fc8cdaf6114d8173350ccc48de67c1039fa [file] [log] [blame]
David Reissea2cba82009-03-30 21:35:00 +00001/*
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied. See the License for the
16 * specific language governing permissions and limitations
17 * under the License.
18 */
19
David Reiss2a4bfd62008-04-07 23:45:00 +000020namespace cpp thrift.test.debug
David Reiss3b15ebc2008-03-02 06:29:19 +000021namespace java thrift.test
David Reiss00dcccf2007-07-21 01:18:10 +000022
David Reissdb0ea152008-02-18 01:49:37 +000023struct Doubles {
24 1: double nan,
25 2: double inf,
26 3: double neginf,
27 4: double repeating,
28 5: double big,
29 6: double small,
30 7: double zero,
31 8: double negzero,
32}
33
David Reiss00dcccf2007-07-21 01:18:10 +000034struct OneOfEach {
35 1: bool im_true,
36 2: bool im_false,
David Reissa8efac82008-12-16 20:28:13 +000037 3: byte a_bite = 200,
38 4: i16 integer16 = 33000,
David Reiss00dcccf2007-07-21 01:18:10 +000039 5: i32 integer32,
David Reissa8efac82008-12-16 20:28:13 +000040 6: i64 integer64 = 10000000000,
David Reiss00dcccf2007-07-21 01:18:10 +000041 7: double double_precision,
42 8: string some_characters,
43 9: string zomg_unicode,
44 10: bool what_who,
David Reissdb0ea152008-02-18 01:49:37 +000045 11: binary base64,
David Reissa8efac82008-12-16 20:28:13 +000046 12: list<byte> byte_list = [1, 2, 3],
47 13: list<i16> i16_list = [1,2,3],
48 14: list<i64> i64_list = [1,2,3]
David Reiss00dcccf2007-07-21 01:18:10 +000049}
50
51struct Bonk {
52 1: i32 type,
53 2: string message,
54}
55
56struct Nesting {
57 1: Bonk my_bonk,
58 2: OneOfEach my_ooe,
59}
60
61struct HolyMoley {
62 1: list<OneOfEach> big,
63 2: set<list<string>> contain,
64 3: map<string,list<Bonk>> bonks,
65}
David Reiss382fc302007-08-25 18:01:30 +000066
67struct Backwards {
68 2: i32 first_tag2,
69 1: i32 second_tag1,
70}
71
72struct Empty {
73}
74
75struct Wrapper {
76 1: Empty foo
77}
78
79struct RandomStuff {
80 1: i32 a,
81 2: i32 b,
82 3: i32 c,
83 4: i32 d,
84 5: list<i32> myintlist,
85 6: map<i32,Wrapper> maps,
86 7: i64 bigint,
87 8: double triple,
88}
89
David Reiss4a8f46c2008-03-07 20:12:07 +000090struct Base64 {
91 1: i32 a,
92 2: binary b1,
93 3: binary b2,
94 4: binary b3,
95 5: binary b4,
96 6: binary b5,
97 7: binary b6,
98}
99
Bryan Duxbury538e3442009-02-10 04:49:39 +0000100struct CompactProtoTestStruct {
101 // primitive fields
David Reissfe5b77d2009-04-07 20:51:48 +0000102 1: byte a_byte;
103 2: i16 a_i16;
104 3: i32 a_i32;
105 4: i64 a_i64;
106 5: double a_double;
107 6: string a_string;
Bryan Duxbury538e3442009-02-10 04:49:39 +0000108 7: binary a_binary;
David Reissfe5b77d2009-04-07 20:51:48 +0000109 8: bool true_field;
110 9: bool false_field;
111 10: Empty empty_struct_field;
Bryan Duxbury538e3442009-02-10 04:49:39 +0000112
113 // primitives in lists
David Reissfe5b77d2009-04-07 20:51:48 +0000114 11: list<byte> byte_list;
115 12: list<i16> i16_list;
116 13: list<i32> i32_list;
117 14: list<i64> i64_list;
118 15: list<double> double_list;
119 16: list<string> string_list;
Bryan Duxbury538e3442009-02-10 04:49:39 +0000120 17: list<binary> binary_list;
David Reissfe5b77d2009-04-07 20:51:48 +0000121 18: list<bool> boolean_list;
122 19: list<Empty> struct_list;
Bryan Duxbury538e3442009-02-10 04:49:39 +0000123
124 // primitives in sets
David Reissfe5b77d2009-04-07 20:51:48 +0000125 20: set<byte> byte_set;
126 21: set<i16> i16_set;
127 22: set<i32> i32_set;
128 23: set<i64> i64_set;
129 24: set<double> double_set;
130 25: set<string> string_set;
Bryan Duxbury538e3442009-02-10 04:49:39 +0000131 26: set<binary> binary_set;
David Reissfe5b77d2009-04-07 20:51:48 +0000132 27: set<bool> boolean_set;
133 28: set<Empty> struct_set;
Bryan Duxbury538e3442009-02-10 04:49:39 +0000134
135 // maps
136 // primitives as keys
David Reissfe5b77d2009-04-07 20:51:48 +0000137 29: map<byte, byte> byte_byte_map;
138 30: map<i16, byte> i16_byte_map;
139 31: map<i32, byte> i32_byte_map;
140 32: map<i64, byte> i64_byte_map;
141 33: map<double, byte> double_byte_map;
142 34: map<string, byte> string_byte_map;
Bryan Duxbury538e3442009-02-10 04:49:39 +0000143 35: map<binary, byte> binary_byte_map;
David Reissfe5b77d2009-04-07 20:51:48 +0000144 36: map<bool, byte> boolean_byte_map;
Bryan Duxbury538e3442009-02-10 04:49:39 +0000145 // primitives as values
David Reissfe5b77d2009-04-07 20:51:48 +0000146 37: map<byte, i16> byte_i16_map;
147 38: map<byte, i32> byte_i32_map;
148 39: map<byte, i64> byte_i64_map;
149 40: map<byte, double> byte_double_map;
150 41: map<byte, string> byte_string_map;
Bryan Duxbury538e3442009-02-10 04:49:39 +0000151 42: map<byte, binary> byte_binary_map;
David Reissfe5b77d2009-04-07 20:51:48 +0000152 43: map<byte, bool> byte_boolean_map;
Bryan Duxbury538e3442009-02-10 04:49:39 +0000153 // collections as keys
David Reissfe5b77d2009-04-07 20:51:48 +0000154 44: map<list<byte>, byte> list_byte_map;
155 45: map<set<byte>, byte> set_byte_map;
156 46: map<map<byte,byte>, byte> map_byte_map;
Bryan Duxbury538e3442009-02-10 04:49:39 +0000157 // collections as values
David Reissfe5b77d2009-04-07 20:51:48 +0000158 47: map<byte, map<byte,byte>> byte_map_map;
159 48: map<byte, set<byte>> byte_set_map;
160 49: map<byte, list<byte>> byte_list_map;
161}
162
163
164const CompactProtoTestStruct COMPACT_TEST = {
165 'a_byte' : 127,
166 'a_i16' : 32000,
167 'a_i32' : 1000000000,
168 'a_i64' : 0xffffffffff,
169 'a_double' : 5.6789,
170 'a_string' : "my string",
171//'a_binary,'
172 'true_field' : 1,
173 'false_field' : 0,
174 'empty_struct_field' : {},
175 'byte_list' : [-127, -1, 0, 1, 127],
176 'i16_list' : [-1, 0, 1, 0x7fff],
177 'i32_list' : [-1, 0, 0xff, 0xffff, 0xffffff, 0x7fffffff],
178 'i64_list' : [-1, 0, 0xff, 0xffff, 0xffffff, 0xffffffff, 0xffffffffff, 0xffffffffffff, 0xffffffffffffff, 0x7fffffffffffffff],
179 'double_list' : [0.1, 0.2, 0.3],
180 'string_list' : ["first", "second", "third"],
181//'binary_list,'
182 'boolean_list' : [1, 1, 1, 0, 0, 0],
183 'struct_list' : [{}, {}],
184 'byte_set' : [-127, -1, 0, 1, 127],
185 'i16_set' : [-1, 0, 1, 0x7fff],
186 'i32_set' : [1, 2, 3],
187 'i64_set' : [-1, 0, 0xff, 0xffff, 0xffffff, 0xffffffff, 0xffffffffff, 0xffffffffffff, 0xffffffffffffff, 0x7fffffffffffffff],
188 'double_set' : [0.1, 0.2, 0.3],
189 'string_set' : ["first", "second", "third"],
190//'binary_set,'
191 'boolean_set' : [1, 0],
192 'struct_set' : [{}],
193 'byte_byte_map' : {1 : 2},
194 'i16_byte_map' : {1 : 1, -1 : 1, 0x7fff : 1},
195 'i32_byte_map' : {1 : 1, -1 : 1, 0x7fffffff : 1},
196 'i64_byte_map' : {0 : 1, 1 : 1, -1 : 1, 0x7fffffffffffffff : 1},
197 'double_byte_map' : {-1.1 : 1, 1.1 : 1},
198 'string_byte_map' : {"first" : 1, "second" : 2, "third" : 3, "" : 0},
199//'binary_byte_map,'
200 'boolean_byte_map' : {1 : 1, 0 : 0},
201 'byte_i16_map' : {1 : 1, 2 : -1, 3 : 0x7fff},
202 'byte_i32_map' : {1 : 1, 2 : -1, 3 : 0x7fffffff},
203 'byte_i64_map' : {1 : 1, 2 : -1, 3 : 0x7fffffffffffffff},
204 'byte_double_map' : {1 : 0.1, 2 : -0.1, 3 : 1000000.1},
205 'byte_string_map' : {1 : "", 2 : "blah", 3 : "loooooooooooooong string"},
206//'byte_binary_map,'
207 'byte_boolean_map' : {1 : 1, 2 : 0},
208 'list_byte_map' : {[1, 2, 3] : 1, [0, 1] : 2, [] : 0},
209 'set_byte_map' : {[1, 2, 3] : 1, [0, 1] : 2, [] : 0},
210 'map_byte_map' : {{1 : 1} : 1, {2 : 2} : 2, {} : 0},
211 'byte_map_map' : {0 : {}, 1 : {1 : 1}, 2 : {1 : 1, 2 : 2}},
212 'byte_set_map' : {0 : [], 1 : [1], 2 : [1, 2]},
213 'byte_list_map' : {0 : [], 1 : [1], 2 : [1, 2]},
Bryan Duxbury538e3442009-02-10 04:49:39 +0000214}
Bryan Duxbury5b8b4842009-04-01 20:10:15 +0000215
216
217
218service Srv {
David Reiss689c9ad2009-04-02 19:24:02 +0000219 i32 Janky(1: i32 arg);
Bryan Duxbury5b8b4842009-04-01 20:10:15 +0000220
221 // return type only methods
222
223 void voidMethod();
224 i32 primitiveMethod();
225 CompactProtoTestStruct structMethod();
226}
227
228service Inherited extends Srv {
David Reiss689c9ad2009-04-02 19:24:02 +0000229 i32 identity(1: i32 arg)
Bryan Duxbury5b8b4842009-04-01 20:10:15 +0000230}
231
232service EmptyService {}
233
234// The only purpose of this thing is to increase the size of the generated code
235// so that ZlibTest has more highly compressible data to play with.
236struct BlowUp {
237 1: map<list<i32>,set<map<i32,string>>> b1;
238 2: map<list<i32>,set<map<i32,string>>> b2;
239 3: map<list<i32>,set<map<i32,string>>> b3;
240 4: map<list<i32>,set<map<i32,string>>> b4;
241}
242
Bryan Duxburyff219ac2009-04-10 21:51:00 +0000243
244struct ReverseOrderStruct {
245 4: string first;
246 3: i16 second;
247 2: i32 third;
248 1: i64 fourth;
249}
250
251service ReverseOrderService {
252 void myMethod(4: string first, 3: i16 second, 2: i32 third, 1: i64 fourth);
Bryan Duxburyab3666e2009-09-01 23:03:47 +0000253}
254
255union TestUnion {
256 /**
257 * A doc string
258 */
259 1: string string_field;
260 2: i32 i32_field;
261 3: OneOfEach struct_field;
262 4: list<RandomStuff> struct_list;
263 5: i32 other_i32_field;
264}
265
266struct StructWithAUnion {
267 1: TestUnion test_union;
Bryan Duxbury51f28802009-10-01 20:53:45 +0000268}
269
270struct PrimitiveThenStruct {
271 1: i32 blah;
272 2: i32 blah2;
273 3: Backwards bw;
Bryan Duxbury2845b162009-11-09 15:55:22 +0000274}
275
276typedef map<i32,i32> SomeMap
277
278struct StructWithASomemap {
279 1: required SomeMap somemap_field;
Bryan Duxburyff219ac2009-04-10 21:51:00 +0000280}