xref: /aosp_15_r20/external/grpc-grpc-java/interop-testing/build.gradle (revision e07d83d3ffcef9ecfc9f7f475418ec639ff0e5fe)
1plugins {
2    id "application"
3    id "java"
4    id "maven-publish"
5
6    id "com.google.protobuf"
7    id "ru.vyarus.animalsniffer"
8}
9
10description = "gRPC: Integration Testing"
11
12configurations {
13    alpnagent
14}
15
16dependencies {
17    implementation project(path: ':grpc-alts', configuration: 'shadow'),
18            project(':grpc-auth'),
19            project(':grpc-census'),
20            project(':grpc-core'),
21            project(':grpc-googleapis'),
22            project(':grpc-netty'),
23            project(':grpc-okhttp'),
24            project(':grpc-protobuf'),
25            project(':grpc-rls'),
26            project(':grpc-services'),
27            project(':grpc-stub'),
28            project(':grpc-testing'),
29            project(path: ':grpc-xds', configuration: 'shadow'),
30            libraries.hdrhistogram,
31            libraries.junit,
32            libraries.truth,
33            libraries.opencensus.contrib.grpc.metrics,
34            libraries.google.auth.oauth2Http
35    compileOnly libraries.javax.annotation
36    // TODO(sergiitk): replace with com.google.cloud:google-cloud-logging
37    // Used instead of google-cloud-logging because it's failing
38    // due to a circular dependency on grpc.
39    // https://cloud.google.com/logging/docs/setup/java#the_javautillogging_handler
40    // Error example: "java.util.logging.ErrorManager: 1"
41    // Latest failing version com.google.cloud:google-cloud-logging:2.1.2
42    runtimeOnly group: 'io.github.devatherock', name: 'jul-jsonformatter', version: '1.1.0'
43    runtimeOnly libraries.opencensus.impl,
44            libraries.netty.tcnative,
45            libraries.netty.tcnative.classes,
46            project(':grpc-grpclb'),
47            project(':grpc-rls')
48    testImplementation testFixtures(project(':grpc-context')),
49            testFixtures(project(':grpc-api')),
50            testFixtures(project(':grpc-core')),
51            libraries.mockito.core,
52            libraries.okhttp
53    alpnagent libraries.jetty.alpn.agent
54
55    signature libraries.signature.java
56    signature libraries.signature.android
57}
58
59configureProtoCompilation()
60
61import net.ltgt.gradle.errorprone.CheckSeverity
62
63tasks.named("compileJava").configure {
64    // This isn't a library; it can use beta APIs
65    options.errorprone.check("BetaApi", CheckSeverity.OFF)
66}
67tasks.named("test").configure {
68    // For the automated tests, use Jetty ALPN.
69    jvmArgs "-javaagent:" + configurations.alpnagent.asPath
70}
71
72// For the generated scripts, use Netty tcnative (i.e. OpenSSL).
73// Note that OkHttp currently only supports ALPN, so OpenSSL version >= 1.0.2 is required.
74
75def test_client = tasks.register("test_client", CreateStartScripts) {
76    mainClass = "io.grpc.testing.integration.TestServiceClient"
77    applicationName = "test-client"
78    defaultJvmOpts = [
79        "-javaagent:JAVAAGENT_APP_HOME" + configurations.alpnagent.singleFile.name
80    ]
81    outputDir = new File(project.buildDir, 'tmp/scripts/' + name)
82    classpath = startScripts.classpath
83    doLast {
84        unixScript.text = unixScript.text.replace('JAVAAGENT_APP_HOME', '\'"\$APP_HOME"\'/lib/')
85        windowsScript.text = windowsScript.text.replace('JAVAAGENT_APP_HOME', '%APP_HOME%\\lib\\')
86    }
87}
88
89def test_server = tasks.register("test_server", CreateStartScripts) {
90    mainClass = "io.grpc.testing.integration.TestServiceServer"
91    applicationName = "test-server"
92    outputDir = new File(project.buildDir, 'tmp/scripts/' + name)
93    classpath = startScripts.classpath
94}
95
96def reconnect_test_client = tasks.register("reconnect_test_client", CreateStartScripts) {
97    mainClass = "io.grpc.testing.integration.ReconnectTestClient"
98    applicationName = "reconnect-test-client"
99    outputDir = new File(project.buildDir, 'tmp/scripts/' + name)
100    classpath = startScripts.classpath
101}
102
103def stresstest_client = tasks.register("stresstest_client", CreateStartScripts) {
104    mainClass = "io.grpc.testing.integration.StressTestClient"
105    applicationName = "stresstest-client"
106    outputDir = new File(project.buildDir, 'tmp/scripts/' + name)
107    classpath = startScripts.classpath
108    defaultJvmOpts = [
109        "-verbose:gc",
110        "-XX:+PrintFlagsFinal"
111    ]
112}
113
114def http2_client = tasks.register("http2_client", CreateStartScripts) {
115    mainClass = "io.grpc.testing.integration.Http2Client"
116    applicationName = "http2-client"
117    outputDir = new File(project.buildDir, 'tmp/scripts/' + name)
118    classpath = startScripts.classpath
119}
120
121def grpclb_long_lived_affinity_test_client = tasks.register("grpclb_long_lived_affinity_test_client", CreateStartScripts) {
122    mainClass = "io.grpc.testing.integration.GrpclbLongLivedAffinityTestClient"
123    applicationName = "grpclb-long-lived-affinity-test-client"
124    outputDir = new File(project.buildDir, 'tmp/scripts/' + name)
125    classpath = startScripts.classpath
126    defaultJvmOpts = [
127        "-Dio.grpc.internal.DnsNameResolverProvider.enable_service_config=true"
128    ]
129}
130
131def grpclb_fallback_test_client = tasks.register("grpclb_fallback_test_client", CreateStartScripts) {
132    mainClass = "io.grpc.testing.integration.GrpclbFallbackTestClient"
133    applicationName = "grpclb-fallback-test-client"
134    outputDir = new File(project.buildDir, 'tmp/scripts/' + name)
135    classpath = startScripts.classpath
136    defaultJvmOpts = [
137        "-Dio.grpc.internal.DnsNameResolverProvider.enable_service_config=true"
138    ]
139}
140
141def xds_test_client = tasks.register("xds_test_client", CreateStartScripts) {
142    mainClass = "io.grpc.testing.integration.XdsTestClient"
143    applicationName = "xds-test-client"
144    outputDir = new File(project.buildDir, 'tmp/scripts/' + name)
145    classpath = startScripts.classpath
146}
147
148def xds_test_server = tasks.register("xds_test_server", CreateStartScripts) {
149    mainClass = "io.grpc.testing.integration.XdsTestServer"
150    applicationName = "xds-test-server"
151    outputDir = new File(project.buildDir, 'tmp/scripts/' + name)
152    classpath = startScripts.classpath
153}
154
155def xds_federation_test_client = tasks.register("xds_federation_test_client", CreateStartScripts) {
156    mainClass = "io.grpc.testing.integration.XdsFederationTestClient"
157    applicationName = "xds-federation-test-client"
158    outputDir = new File(project.buildDir, 'tmp/scripts/' + name)
159    classpath = startScripts.classpath
160}
161
162applicationDistribution.into("bin") {
163    from(test_client)
164    from(test_server)
165    from(reconnect_test_client)
166    from(stresstest_client)
167    from(http2_client)
168    from(grpclb_long_lived_affinity_test_client)
169    from(grpclb_fallback_test_client)
170    from(xds_test_client)
171    from(xds_test_server)
172    from(xds_federation_test_client)
173    fileMode = 0755
174}
175
176applicationDistribution.into("lib") {
177    from(configurations.alpnagent)
178}
179
180publishing {
181    publications {
182        maven(MavenPublication) {
183            artifact distZip
184            artifact distTar
185        }
186    }
187}
188