test.proto 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343
  1. syntax = "proto3";
  2. import 'google/protobuf/any.proto';
  3. import 'google/protobuf/wrappers.proto';
  4. import 'google/protobuf/struct.proto';
  5. import 'proto/test_include.proto';
  6. import 'proto/test_no_namespace.proto';
  7. import 'proto/test_php_namespace.proto';
  8. import 'proto/test_empty_php_namespace.proto';
  9. import 'proto/test_prefix.proto';
  10. package foo;
  11. message TestMessage {
  12. // Singular
  13. int32 optional_int32 = 1;
  14. int64 optional_int64 = 2;
  15. uint32 optional_uint32 = 3;
  16. uint64 optional_uint64 = 4;
  17. sint32 optional_sint32 = 5;
  18. sint64 optional_sint64 = 6;
  19. fixed32 optional_fixed32 = 7;
  20. fixed64 optional_fixed64 = 8;
  21. sfixed32 optional_sfixed32 = 9;
  22. sfixed64 optional_sfixed64 = 10;
  23. float optional_float = 11;
  24. double optional_double = 12;
  25. bool optional_bool = 13;
  26. string optional_string = 14;
  27. bytes optional_bytes = 15;
  28. TestEnum optional_enum = 16;
  29. Sub optional_message = 17;
  30. bar.TestInclude optional_included_message = 18;
  31. TestMessage recursive = 19;
  32. // True optional
  33. optional int32 true_optional_int32 = 201;
  34. optional int64 true_optional_int64 = 202;
  35. optional uint32 true_optional_uint32 = 203;
  36. optional uint64 true_optional_uint64 = 204;
  37. optional sint32 true_optional_sint32 = 205;
  38. optional sint64 true_optional_sint64 = 206;
  39. optional fixed32 true_optional_fixed32 = 207;
  40. optional fixed64 true_optional_fixed64 = 208;
  41. optional sfixed32 true_optional_sfixed32 = 209;
  42. optional sfixed64 true_optional_sfixed64 = 210;
  43. optional float true_optional_float = 211;
  44. optional double true_optional_double = 212;
  45. optional bool true_optional_bool = 213;
  46. optional string true_optional_string = 214;
  47. optional bytes true_optional_bytes = 215;
  48. optional TestEnum true_optional_enum = 216;
  49. optional Sub true_optional_message = 217;
  50. optional bar.TestInclude true_optional_included_message = 218;
  51. // Repeated
  52. repeated int32 repeated_int32 = 31;
  53. repeated int64 repeated_int64 = 32;
  54. repeated uint32 repeated_uint32 = 33;
  55. repeated uint64 repeated_uint64 = 34;
  56. repeated sint32 repeated_sint32 = 35;
  57. repeated sint64 repeated_sint64 = 36;
  58. repeated fixed32 repeated_fixed32 = 37;
  59. repeated fixed64 repeated_fixed64 = 38;
  60. repeated sfixed32 repeated_sfixed32 = 39;
  61. repeated sfixed64 repeated_sfixed64 = 40;
  62. repeated float repeated_float = 41;
  63. repeated double repeated_double = 42;
  64. repeated bool repeated_bool = 43;
  65. repeated string repeated_string = 44;
  66. repeated bytes repeated_bytes = 45;
  67. repeated TestEnum repeated_enum = 46;
  68. repeated Sub repeated_message = 47;
  69. repeated TestMessage repeated_recursive = 48;
  70. oneof my_oneof {
  71. int32 oneof_int32 = 51;
  72. int64 oneof_int64 = 52;
  73. uint32 oneof_uint32 = 53;
  74. uint64 oneof_uint64 = 54;
  75. uint32 oneof_sint32 = 55;
  76. uint64 oneof_sint64 = 56;
  77. uint32 oneof_fixed32 = 57;
  78. uint64 oneof_fixed64 = 58;
  79. uint32 oneof_sfixed32 = 59;
  80. uint64 oneof_sfixed64 = 60;
  81. double oneof_double = 61;
  82. float oneof_float = 62;
  83. bool oneof_bool = 63;
  84. string oneof_string = 64;
  85. bytes oneof_bytes = 65;
  86. TestEnum oneof_enum = 66;
  87. Sub oneof_message = 67;
  88. }
  89. map<int32, int32> map_int32_int32 = 71;
  90. map<int64, int64> map_int64_int64 = 72;
  91. map<uint32, uint32> map_uint32_uint32 = 73;
  92. map<uint64, uint64> map_uint64_uint64 = 74;
  93. map<sint32, sint32> map_sint32_sint32 = 75;
  94. map<sint64, sint64> map_sint64_sint64 = 76;
  95. map<fixed32, fixed32> map_fixed32_fixed32 = 77;
  96. map<fixed64, fixed64> map_fixed64_fixed64 = 78;
  97. map<sfixed32, sfixed32> map_sfixed32_sfixed32 = 79;
  98. map<sfixed64, sfixed64> map_sfixed64_sfixed64 = 80;
  99. map<int32, float> map_int32_float = 81;
  100. map<int32, double> map_int32_double = 82;
  101. map<bool, bool> map_bool_bool = 83;
  102. map<string, string> map_string_string = 84;
  103. map<int32, bytes> map_int32_bytes = 85;
  104. map<int32, TestEnum> map_int32_enum = 86;
  105. map<int32, Sub> map_int32_message = 87;
  106. map<int32, TestMessage> map_recursive = 88;
  107. message Sub {
  108. int32 a = 1;
  109. repeated int32 b = 2;
  110. }
  111. // Reserved for non-existing field test.
  112. // int32 non_exist = 89;
  113. NoNamespaceMessage optional_no_namespace_message = 91;
  114. NoNamespaceEnum optional_no_namespace_enum = 92;
  115. repeated NoNamespaceMessage repeated_no_namespace_message = 93;
  116. repeated NoNamespaceEnum repeated_no_namespace_enum = 94;
  117. enum NestedEnum {
  118. ZERO = 0;
  119. }
  120. NestedEnum optional_nested_enum = 101;
  121. // Test prefix for reserved words.
  122. message Empty {
  123. int32 a = 1;
  124. }
  125. reserved 111;
  126. // Test map with missing message value
  127. map<string, TestMessage> map_string_message = 121;
  128. map<string, google.protobuf.Any> map_string_any = 122;
  129. map<string, google.protobuf.ListValue> map_string_list = 123;
  130. map<string, google.protobuf.Struct> map_string_struct = 124;
  131. // deprecated field
  132. int32 deprecated_optional_int32 = 125 [deprecated=true];
  133. }
  134. enum TestEnum {
  135. ZERO = 0;
  136. ONE = 1;
  137. TWO = 2;
  138. ECHO = 3; // Test reserved name.
  139. }
  140. // Test prefix for reserved words.
  141. message Empty {
  142. int32 a = 1;
  143. }
  144. message ARRAY {
  145. int32 a = 1;
  146. }
  147. message TestPackedMessage {
  148. repeated int32 repeated_int32 = 90 [packed = true];
  149. repeated int64 repeated_int64 = 91 [packed = true];
  150. repeated uint32 repeated_uint32 = 92 [packed = true];
  151. repeated uint64 repeated_uint64 = 93 [packed = true];
  152. repeated sint32 repeated_sint32 = 94 [packed = true];
  153. repeated sint64 repeated_sint64 = 95 [packed = true];
  154. repeated fixed32 repeated_fixed32 = 96 [packed = true];
  155. repeated fixed64 repeated_fixed64 = 97 [packed = true];
  156. repeated sfixed32 repeated_sfixed32 = 98 [packed = true];
  157. repeated sfixed64 repeated_sfixed64 = 99 [packed = true];
  158. repeated float repeated_float = 100 [packed = true];
  159. repeated double repeated_double = 101 [packed = true];
  160. repeated bool repeated_bool = 102 [packed = true];
  161. repeated TestEnum repeated_enum = 103 [packed = true];
  162. }
  163. // Need to be in sync with TestPackedMessage.
  164. message TestUnpackedMessage {
  165. repeated int32 repeated_int32 = 90 [packed = false];
  166. repeated int64 repeated_int64 = 91 [packed = false];
  167. repeated uint32 repeated_uint32 = 92 [packed = false];
  168. repeated uint64 repeated_uint64 = 93 [packed = false];
  169. repeated sint32 repeated_sint32 = 94 [packed = false];
  170. repeated sint64 repeated_sint64 = 95 [packed = false];
  171. repeated fixed32 repeated_fixed32 = 96 [packed = false];
  172. repeated fixed64 repeated_fixed64 = 97 [packed = false];
  173. repeated sfixed32 repeated_sfixed32 = 98 [packed = false];
  174. repeated sfixed64 repeated_sfixed64 = 99 [packed = false];
  175. repeated float repeated_float = 100 [packed = false];
  176. repeated double repeated_double = 101 [packed = false];
  177. repeated bool repeated_bool = 102 [packed = false];
  178. repeated TestEnum repeated_enum = 103 [packed = false];
  179. }
  180. // /**/@<>&\{
  181. message TestPhpDoc {
  182. int32 a = 1;
  183. }
  184. message TestIncludePrefixMessage {
  185. TestPrefix prefix_message = 1;
  186. }
  187. message TestIncludeNamespaceMessage {
  188. TestNamespace namespace_message = 1;
  189. TestEmptyNamespace empty_namespace_message = 2;
  190. }
  191. // This will cause upb fields not ordered by the order in the generated code.
  192. message TestRandomFieldOrder {
  193. int64 tag13 = 150;
  194. string tag14 = 160;
  195. }
  196. message TestLargeFieldNumber {
  197. int32 large_field_number = 536870911;
  198. }
  199. message TestReverseFieldOrder {
  200. repeated int32 a = 2;
  201. string b = 1;
  202. }
  203. message testLowerCaseMessage {
  204. }
  205. enum testLowerCaseEnum {
  206. VALUE = 0;
  207. }
  208. message TestAny {
  209. google.protobuf.Any any = 1;
  210. }
  211. message TestInt32Value {
  212. google.protobuf.Int32Value field = 1;
  213. repeated google.protobuf.Int32Value repeated_field = 2;
  214. oneof oneof_fields {
  215. google.protobuf.Int32Value oneof_field = 3;
  216. int32 int32_field = 4;
  217. }
  218. }
  219. message TestInt64Value {
  220. google.protobuf.Int64Value field = 1;
  221. repeated google.protobuf.Int64Value repeated_field = 2;
  222. oneof oneof_fields {
  223. google.protobuf.Int64Value oneof_field = 3;
  224. int32 int32_field = 4;
  225. }
  226. }
  227. message TestUInt32Value {
  228. google.protobuf.UInt32Value field = 1;
  229. repeated google.protobuf.UInt32Value repeated_field = 2;
  230. oneof oneof_fields {
  231. google.protobuf.UInt32Value oneof_field = 3;
  232. int32 int32_field = 4;
  233. }
  234. }
  235. message TestUInt64Value {
  236. google.protobuf.UInt64Value field = 1;
  237. repeated google.protobuf.UInt64Value repeated_field = 2;
  238. oneof oneof_fields {
  239. google.protobuf.UInt64Value oneof_field = 3;
  240. int32 int32_field = 4;
  241. }
  242. }
  243. message TestBoolValue {
  244. google.protobuf.BoolValue field = 1;
  245. repeated google.protobuf.BoolValue repeated_field = 2;
  246. oneof oneof_fields {
  247. google.protobuf.BoolValue oneof_field = 3;
  248. int32 int32_field = 4;
  249. }
  250. }
  251. message TestStringValue {
  252. google.protobuf.StringValue field = 1;
  253. repeated google.protobuf.StringValue repeated_field = 2;
  254. oneof oneof_fields {
  255. google.protobuf.StringValue oneof_field = 3;
  256. int32 int32_field = 4;
  257. }
  258. map<int32, google.protobuf.StringValue> map_field = 5;
  259. }
  260. message TestBytesValue {
  261. google.protobuf.BytesValue field = 1;
  262. repeated google.protobuf.BytesValue repeated_field = 2;
  263. oneof oneof_fields {
  264. google.protobuf.BytesValue oneof_field = 3;
  265. int32 int32_field = 4;
  266. }
  267. }
  268. message Test32Fields {
  269. optional uint32 id = 1;
  270. optional uint32 random_name_a0 = 2;
  271. optional uint32 random_name_a1 = 3;
  272. optional uint32 random_name_a2 = 4;
  273. optional uint32 random_name_a3 = 5;
  274. optional uint32 random_name_a4 = 6;
  275. optional uint32 random_name_a5 = 7;
  276. optional uint32 random_name_a6 = 8;
  277. optional uint32 random_name_a7 = 9;
  278. optional uint32 random_name_a8 = 10;
  279. optional uint32 random_name_a9 = 11;
  280. optional uint32 random_name_b0 = 12;
  281. optional uint32 random_name_b1 = 13;
  282. optional uint32 random_name_b2 = 14;
  283. optional uint32 random_name_b3 = 15;
  284. optional uint32 random_name_b4 = 16;
  285. optional uint32 random_name_b5 = 17;
  286. optional uint32 random_name_b6 = 18;
  287. optional uint32 random_name_b7 = 19;
  288. optional uint32 random_name_b8 = 20;
  289. optional uint32 random_name_b9 = 21;
  290. optional uint32 random_name_c0 = 22;
  291. optional uint32 random_name_c1 = 23;
  292. optional uint32 random_name_c2 = 24;
  293. optional uint32 random_name_c3 = 25;
  294. optional uint32 random_name_c4 = 26;
  295. optional uint32 random_name_c5 = 27;
  296. optional uint32 random_name_c6 = 28;
  297. optional uint32 random_name_c7 = 29;
  298. optional uint32 random_name_c8 = 30;
  299. optional uint32 random_name_c9 = 31;
  300. optional string version = 32;
  301. }