blob: 0506aa6cff709743b25722647eb021dc20144558 [file] [log] [blame]
Alex Volanis7004a612018-01-24 10:30:13 -05001/*
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
20// Following Gradle best practices to keep build logic organized
21
22// Generated code locations for Unit tests
23ext.genSrc = file("$buildDir/gen-java")
24ext.genBeanSrc = file("$buildDir/gen-javabean")
25ext.genReuseSrc = file("$buildDir/gen-javareuse")
26ext.genFullCamelSrc = file("$buildDir/gen-fullcamel")
Jiayu Liu1eb361a2022-02-21 13:36:44 +010027ext.genOptionTypeJdk8Src = file("$buildDir/gen-option-type-jdk8")
Ben Podgursky50bfc562018-04-16 23:21:46 -070028ext.genUnsafeSrc = file("$buildDir/gen-unsafe")
Hernan Silbermand5c66972022-06-08 11:29:43 -070029ext.genStructOrderTestASrc = file("$buildDir/resources/test/struct-order-test/a")
30ext.genStructOrderTestBSrc = file("$buildDir/resources/test/struct-order-test/b")
Alex Volanis7004a612018-01-24 10:30:13 -050031
32// Add the generated code directories to the test source set
33sourceSets {
Jiayu Liu1eb361a2022-02-21 13:36:44 +010034 test.java.srcDirs genSrc, genBeanSrc, genReuseSrc, genFullCamelSrc, genUnsafeSrc, genOptionTypeJdk8Src
Alex Volanis7004a612018-01-24 10:30:13 -050035}
36
37// ----------------------------------------------------------------------------
38// Code generation for Unit Testing
39
40// A callable closure to make this easier
41ext.thriftCompile = { Task task, String thriftFileName, String generator = 'java', File outputDir = genSrc ->
42 def thriftFile = file("$thriftRoot/test/$thriftFileName")
Jiayu Liu1eb361a2022-02-21 13:36:44 +010043 if (!thriftFile.exists()) {
Jiayu Liueac51032022-03-11 04:55:13 +010044 thriftFile = file("$projectDir/src/test/resources/$thriftFileName")
Jiayu Liu1eb361a2022-02-21 13:36:44 +010045 assert thriftFile.exists(), "can't find $thriftFile"
46 }
Alex Volanis7004a612018-01-24 10:30:13 -050047
48 task.inputs.file thriftFile
49 task.outputs.dir outputDir
50
51 task.doLast {
52 outputDir.mkdirs()
53 def result = exec {
54 executable file(thriftCompiler)
55 args '--gen', generator
56 args '-out', outputDir
57 args thriftFile
58 standardOutput = task.outputBuffer
59 errorOutput = task.outputBuffer
60 ignoreExitValue = true
61 }
62 if (result.exitValue != 0) {
63 // Only show the Thrift compiler output on failures, cuts down on noise!
64 println task.outputBuffer.toString()
65 result.rethrowFailure()
66 }
67 }
68}
69
70task generate(group: 'Build') {
71 description = 'Generate all unit test Thrift sources'
72 compileTestJava.dependsOn it
73}
74
75task generateJava(group: 'Build') {
76 description = 'Generate the thrift gen-java source'
77 generate.dependsOn it
78
79 ext.outputBuffer = new ByteArrayOutputStream()
80
81 thriftCompile(it, 'ThriftTest.thrift')
82 thriftCompile(it, 'JavaTypes.thrift')
83 thriftCompile(it, 'DebugProtoTest.thrift')
Ozan Can Altioke46419b2018-03-20 15:02:28 +030084 thriftCompile(it, 'DoubleConstantsTest.thrift')
Alex Volanis7004a612018-01-24 10:30:13 -050085 thriftCompile(it, 'OptionalRequiredTest.thrift')
86 thriftCompile(it, 'ManyOptionals.thrift')
87 thriftCompile(it, 'JavaDeepCopyTest.thrift')
88 thriftCompile(it, 'EnumContainersTest.thrift')
Ewan Higgsb3745ee2019-09-20 17:15:04 +020089 thriftCompile(it, 'JavaBinaryDefault.thrift')
Alex Kormukhinc9b7bd72022-02-18 21:04:14 +030090 thriftCompile(it, 'VoidMethExceptionsTest.thrift')
Jiayu Liuada08652022-05-06 03:19:57 +080091 thriftCompile(it, 'AnnotationTest.thrift')
kpandit5a9d1392021-11-20 00:56:17 +010092 thriftCompile(it, 'partial/thrift_test_schema.thrift')
Alex Volanis7004a612018-01-24 10:30:13 -050093}
94
Jiayu Liu1eb361a2022-02-21 13:36:44 +010095task generateOptionalTypeJava(group: 'Build') {
96 description = 'Generate the thrift gen-option-type-jdk8 source'
97 generate.dependsOn it
98
99 ext.outputBuffer = new ByteArrayOutputStream()
100
101 thriftCompile(it, 'JavaOptionTypeJdk8Test.thrift', 'java:option_type=jdk8', genOptionTypeJdk8Src)
102}
103
Alex Volanis7004a612018-01-24 10:30:13 -0500104task generateBeanJava(group: 'Build') {
105 description = 'Generate the thrift gen-javabean source'
106 generate.dependsOn it
107
108 ext.outputBuffer = new ByteArrayOutputStream()
109
Jiayu Liuaa822142022-04-12 22:42:10 +0800110 thriftCompile(it, 'JavaBeansTest.thrift', 'java:beans,nocamel,future_iface', genBeanSrc)
Alex Volanis7004a612018-01-24 10:30:13 -0500111}
112
113task generateReuseJava(group: 'Build') {
114 description = 'Generate the thrift gen-javareuse source'
115 generate.dependsOn it
116
117 ext.outputBuffer = new ByteArrayOutputStream()
118
Jiayu Liuaa822142022-04-12 22:42:10 +0800119 thriftCompile(it, 'FullCamelTest.thrift', 'java:fullcamel,future_iface', genFullCamelSrc)
Alex Volanis7004a612018-01-24 10:30:13 -0500120}
121
122task generateFullCamelJava(group: 'Build') {
123 description = 'Generate the thrift gen-fullcamel source'
124 generate.dependsOn it
125
126 ext.outputBuffer = new ByteArrayOutputStream()
127
Jiayu Liu5a44db82022-02-22 23:17:06 +0800128 thriftCompile(it, 'ReuseObjects.thrift', 'java:reuse_objects', genReuseSrc)
Alex Volanis7004a612018-01-24 10:30:13 -0500129}
Ben Podgursky50bfc562018-04-16 23:21:46 -0700130
131task generateUnsafeBinariesJava(group: 'Build') {
132 description = 'Generate the thrift gen-unsafebinaries source'
133 generate.dependsOn it
134
135 ext.outputBuffer = new ByteArrayOutputStream()
136
137 thriftCompile(it, 'UnsafeTypes.thrift', 'java:unsafe_binaries', genUnsafeSrc)
138}
Jiayu Liuada08652022-05-06 03:19:57 +0800139
140task generateWithAnnotationMetadata(group: 'Build') {
141 description = 'Generate with annotation enabled and add to the default source'
142 generate.dependsOn it
143
144 ext.outputBuffer = new ByteArrayOutputStream()
145
146 thriftCompile(it, 'JavaAnnotationTest.thrift', 'java:annotations_as_metadata', genSrc)
147}
Hernan Silbermand5c66972022-06-08 11:29:43 -0700148
149task generateJavaStructOrderTestJava(group: 'Build') {
150 description = 'Generate structs defined in different order and add to build dir so we can compare them'
151 generate.dependsOn it
152
153 ext.outputBuffer = new ByteArrayOutputStream()
154
155 thriftCompile(it, 'JavaStructOrderA.thrift', 'java', genStructOrderTestASrc)
156 thriftCompile(it, 'JavaStructOrderB.thrift', 'java', genStructOrderTestBSrc)
157}