Skip to content

Commit 7be75a0

Browse files
authored
all: let interop test use shaded dependency correctly take 2
First rolls forward #6791, then fixes the issue of missing transitive dependency for the shadow configuration.
1 parent f85843b commit 7be75a0

File tree

5 files changed

+49
-37
lines changed

5 files changed

+49
-37
lines changed

alts/build.gradle

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,23 @@ dependencies {
1616
compile project(':grpc-auth'),
1717
project(':grpc-core'),
1818
project(':grpc-grpclb'),
19-
project(':grpc-netty'),
2019
project(':grpc-protobuf'),
2120
project(':grpc-stub'),
2221
libraries.lang,
2322
libraries.protobuf,
2423
libraries.conscrypt
24+
def nettyDependency = compile project(':grpc-netty')
2525
compile (libraries.google_auth_oauth2_http) {
2626
// prefer our own versions instead of google-auth-oauth2-http's dependency
2727
exclude group: 'com.google.guava', module: 'guava'
2828
// we'll always be more up-to-date
2929
exclude group: 'io.grpc', module: 'grpc-context'
3030
}
3131
compileOnly libraries.javax_annotation
32+
33+
shadow configurations.compile.getDependencies().minus(nettyDependency)
34+
shadow project(path: ':grpc-netty-shaded', configuration: 'shadow')
35+
3236
testCompile project(':grpc-testing'),
3337
project(':grpc-testing-proto'),
3438
libraries.guava,
@@ -81,14 +85,16 @@ publishing {
8185
artifacts.remove(originalJar)
8286

8387
pom.withXml {
84-
// Swap our dependency to grpc-netty-shaded. Projects depending on this via
85-
// project(':grpc-alts') will still be using the non-shaded form.
86-
asNode().dependencies.'*'.findAll() { dep ->
87-
dep.artifactId.text() == 'grpc-netty'
88-
}.each() { netty ->
89-
netty.artifactId*.value = 'grpc-netty-shaded'
90-
netty.version*.value = "[" + netty.version.text() + "]"
88+
def dependenciesNode = new Node(null, 'dependencies')
89+
project.configurations.shadow.allDependencies.each { dep ->
90+
def dependencyNode = dependenciesNode.appendNode('dependency')
91+
dependencyNode.appendNode('groupId', dep.group)
92+
dependencyNode.appendNode('artifactId', dep.name)
93+
def version = (dep.name == 'grpc-netty-shaded') ? '[' + dep.version + ']' : dep.version
94+
dependencyNode.appendNode('version', version)
95+
dependencyNode.appendNode('scope', 'compile')
9196
}
97+
asNode().dependencies[0].replaceNode(dependenciesNode)
9298
}
9399
}
94100
}

gae-interop-testing/gae-jdk8/build.gradle

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,9 @@ dependencies {
5050
compile project(":grpc-okhttp")
5151
compile project(":grpc-protobuf")
5252
compile project(":grpc-stub")
53-
compile project(":grpc-interop-testing")
53+
compile (project(":grpc-interop-testing")) {
54+
exclude group: "io.grpc", module: "grpc-netty-shaded"
55+
}
5456
compile libraries.netty_tcnative
5557
}
5658

interop-testing/build.gradle

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ configurations {
1616
evaluationDependsOn(project(':grpc-context').path)
1717

1818
dependencies {
19-
compile project(':grpc-alts'),
19+
compile project(path: ':grpc-alts', configuration: 'shadow'),
2020
project(':grpc-auth'),
2121
project(':grpc-census'),
2222
project(':grpc-core'),
@@ -113,21 +113,13 @@ task grpclb_long_lived_affinity_test_client(type: CreateStartScripts) {
113113
}
114114

115115
task xds_test_client(type: CreateStartScripts) {
116-
// Use task dependsOn instead of depending on project(':grpc-xds') in configurations because
117-
// grpc-xds is not published yet and we don't want grpc-interop-testin to depend on it in maven.
118-
dependsOn ':grpc-xds:shadowJar'
119-
// Add all other dependencies that grpc-xds needs.
120-
dependencies { compile project(':grpc-services'), libraries.netty_epoll }
121116
mainClassName = "io.grpc.testing.integration.XdsTestClient"
122117
applicationName = "xds-test-client"
123-
outputDir = new File(project.buildDir, 'tmp')
124-
classpath = startScripts.classpath + fileTree("${project(':grpc-xds').buildDir}/libs")
125-
doLast {
126-
unixScript.text = unixScript.text.replace(
127-
'\$APP_HOME/lib/grpc-xds', "${project(':grpc-xds').buildDir}/libs/grpc-xds")
128-
windowsScript.text = windowsScript.text.replace(
129-
'%APP_HOME%\\lib\\grpc-xds', "${project(':grpc-xds').buildDir}\\libs\\grpc-xds")
118+
dependencies {
119+
runtime project(path: ':grpc-xds', configuration: 'shadow')
130120
}
121+
outputDir = new File(project.buildDir, 'tmp')
122+
classpath = startScripts.classpath
131123
}
132124

133125
task xds_test_server(type: CreateStartScripts) {

interop-testing/src/test/java/io/grpc/ChannelAndServerBuilderTest.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,11 @@ public static Collection<Object[]> params() throws Exception {
5959
}
6060
List<Object[]> classes = new ArrayList<>();
6161
for (ClassInfo classInfo : classInfos) {
62-
Class<?> clazz = Class.forName(classInfo.getName(), false /*initialize*/, loader);
62+
String className = classInfo.getName();
63+
if (className.contains("io.grpc.netty.shaded.io.netty")) {
64+
continue;
65+
}
66+
Class<?> clazz = Class.forName(className, false /*initialize*/, loader);
6367
if (ServerBuilder.class.isAssignableFrom(clazz) && clazz != ServerBuilder.class) {
6468
classes.add(new Object[]{clazz});
6569
} else if (ManagedChannelBuilder.class.isAssignableFrom(clazz)

xds/build.gradle

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,14 @@ dependencies {
2222
compile project(':grpc-protobuf'),
2323
project(':grpc-stub'),
2424
project(':grpc-core'),
25-
project(':grpc-netty'),
2625
project(':grpc-services'),
27-
project(':grpc-alts'),
28-
libraries.netty_epoll
29-
30-
compile (libraries.pgv) {
26+
project(path: ':grpc-alts', configuration: 'shadow')
27+
def nettyDependency = compile project(':grpc-netty')
28+
def pgvDependency = compile (libraries.pgv) {
3129
// PGV depends on com.google.protobuf:protobuf-java 3.6.1 conflicting with :grpc-protobuf
3230
exclude group: 'com.google.protobuf'
3331
}
32+
3433
compile (libraries.protobuf_util) {
3534
// prefer our own versions instead of protobuf-util's dependency
3635
exclude group: 'com.google.guava', module: 'guava'
@@ -39,11 +38,18 @@ dependencies {
3938

4039
testCompile project(':grpc-core').sourceSets.test.output
4140

42-
compileOnly libraries.javax_annotation
41+
compileOnly libraries.javax_annotation,
42+
// At runtime use the epoll included in grpc-netty-shaded
43+
libraries.netty_epoll
4344

4445
testCompile project(':grpc-testing'),
4546
project(':grpc-testing-proto'),
46-
libraries.guava_testlib
47+
libraries.guava_testlib,
48+
libraries.netty_epoll
49+
50+
shadow configurations.compile.getDependencies().minus([nettyDependency, pgvDependency])
51+
shadow project(path: ':grpc-netty-shaded', configuration: 'shadow')
52+
4753
signature "org.codehaus.mojo.signature:java17:1.0@signature"
4854
testRuntime libraries.netty_tcnative
4955
}
@@ -87,14 +93,16 @@ publishing {
8793
artifacts.removeAll { it.classifier == 'original' }
8894

8995
pom.withXml {
90-
// Swap our dependency to grpc-netty-shaded. Projects depending on this via
91-
// project(':grpc-xds') will still be using the non-shaded form.
92-
asNode().dependencies.'*'.findAll() { dep ->
93-
dep.artifactId.text() == 'grpc-netty'
94-
}.each() { netty ->
95-
netty.artifactId*.value = 'grpc-netty-shaded'
96-
netty.version*.value = "[" + netty.version.text() + "]"
96+
def dependenciesNode = new Node(null, 'dependencies')
97+
project.configurations.shadow.allDependencies.each { dep ->
98+
def dependencyNode = dependenciesNode.appendNode('dependency')
99+
dependencyNode.appendNode('groupId', dep.group)
100+
dependencyNode.appendNode('artifactId', dep.name)
101+
def version = (dep.name == 'grpc-netty-shaded') ? '[' + dep.version + ']' : dep.version
102+
dependencyNode.appendNode('version', version)
103+
dependencyNode.appendNode('scope', 'compile')
97104
}
105+
asNode().dependencies[0].replaceNode(dependenciesNode)
98106
}
99107
}
100108
}

0 commit comments

Comments
 (0)