Skip to content

Commit a993c46

Browse files
j-sandydbyron-sf
authored andcommitted
refactor(tests): replace HashSet.Of() and HashMap.Of() with inherited static methods from its interfaces during upgrade to spring boot 2.7.x
While upgrading spring boot 2.7.18, encounter below errors during test compilation of fiat-roles module: ``` No signature of method: static java.util.HashSet.of() is applicable for argument types: (com.netflix.spinnaker.fiat.model.resources.Role) values: [Role(resourceType=role, name=role1, source=null)] Possible solutions: is(java.lang.Object), max(), any(), sort(), sum(), min() groovy.lang.MissingMethodException: No signature of method: static java.util.HashSet.of() is applicable for argument types: (com.netflix.spinnaker.fiat.model.resources.Role) values: [Role(resourceType=role, name=role1, source=null)] Possible solutions: is(java.lang.Object), max(), any(), sort(), sum(), min() at com.netflix.spinnaker.fiat.permissions.DefaultPermissionsResolverSpec.should resolve resources for users and service accounts(DefaultPermissionsResolverSpec.groovy:343) ``` ``` No signature of method: static java.util.HashMap.of() is applicable for argument types: (String, String, String, String) values: [foo, bar, xyz, pqr] Possible solutions: any(), sort(), notify(), wait(), size(), clone() groovy.lang.MissingMethodException: No signature of method: static java.util.HashMap.of() is applicable for argument types: (String, String, String, String) values: [foo, bar, xyz, pqr] Possible solutions: any(), sort(), notify(), wait(), size(), clone() at com.netflix.spinnaker.fiat.providers.DefaultApplicationProviderSpec.enable calling Clouddriver during application load based on config(DefaultApplicationProviderSpec.groovy:170) ``` ``` No signature of method: static java.util.HashMap.of() is applicable for argument types: (String, String, String, String) values: [foo, bar, xyz, pqr] Possible solutions: any(), sort(), notify(), wait(), size(), clone() groovy.lang.MissingMethodException: No signature of method: static java.util.HashMap.of() is applicable for argument types: (String, String, String, String) values: [foo, bar, xyz, pqr] Possible solutions: any(), sort(), notify(), wait(), size(), clone() at com.netflix.spinnaker.fiat.providers.DefaultApplicationProviderSpec.should suppress details when loading all applications(DefaultApplicationProviderSpec.groovy:227) ``` Spring boot 2.7.18 brings groovy 3.0.19 as transitive dependency. The root cause of the issue is a breaking change introduced from groovy 3.0.18 onwards, that allows a Java class to inherit static methods from its interface. To fix these issues replacing the HashSet.Of() and HashMap.Of() with Set.Of() and Map.Of(). http://groovy-lang.org/changelogs/changelog-3.0.18.html https://issues.apache.org/jira/browse/GROOVY-8164 Before: ``` $ ./gradlew fiat-roles:dI --dependency org.codehaus.groovy --configuration testCompileClasspath > Task :fiat-roles:dependencyInsight org.codehaus.groovy:groovy:3.0.17 Variant compile: | Attribute Name | Provided | Requested | |--------------------------------|----------|-------------------| | org.gradle.status | release | | | org.gradle.category | library | library | | org.gradle.libraryelements | jar | classes+resources | | org.gradle.usage | java-api | java-api | | org.gradle.dependency.bundling | | external | | org.gradle.jvm.environment | | standard-jvm | | org.gradle.jvm.version | | 11 | Selection reasons: - By constraint - Forced org.codehaus.groovy:groovy:3.0.17 \--- io.spinnaker.kork:kork-bom:7.227.0 \--- testCompileClasspath org.codehaus.groovy:groovy:3.0.8 -> 3.0.17 +--- org.spockframework:spock-core:2.0-groovy-3.0 | +--- testCompileClasspath (requested org.spockframework:spock-core) | +--- io.spinnaker.kork:kork-bom:7.227.0 | | \--- testCompileClasspath | \--- org.spockframework:spock-spring:2.0-groovy-3.0 | +--- testCompileClasspath (requested org.spockframework:spock-spring) | \--- io.spinnaker.kork:kork-bom:7.227.0 (*) \--- org.spockframework:spock-spring:2.0-groovy-3.0 (*) ``` After: ``` $ ./gradlew fiat-roles:dI --dependency org.codehaus.groovy --configuration testCompileClasspath > Task :fiat-roles:dependencyInsight org.codehaus.groovy:groovy:3.0.19 Variant compile: | Attribute Name | Provided | Requested | |--------------------------------|----------|-------------------| | org.gradle.status | release | | | org.gradle.category | library | library | | org.gradle.libraryelements | jar | classes+resources | | org.gradle.usage | java-api | java-api | | org.gradle.dependency.bundling | | external | | org.gradle.jvm.environment | | standard-jvm | | org.gradle.jvm.version | | 11 | Selection reasons: - By constraint - Forced org.codehaus.groovy:groovy:3.0.19 \--- io.spinnaker.kork:kork-bom:sb2718-SNAPSHOT \--- testCompileClasspath org.codehaus.groovy:groovy:3.0.8 -> 3.0.19 +--- org.spockframework:spock-core:2.0-groovy-3.0 | +--- testCompileClasspath (requested org.spockframework:spock-core) | +--- io.spinnaker.kork:kork-bom:sb2718-SNAPSHOT | | \--- testCompileClasspath | \--- org.spockframework:spock-spring:2.0-groovy-3.0 | +--- testCompileClasspath (requested org.spockframework:spock-spring) | \--- io.spinnaker.kork:kork-bom:sb2718-SNAPSHOT (*) \--- org.spockframework:spock-spring:2.0-groovy-3.0 (*) ```
1 parent b569da8 commit a993c46

File tree

2 files changed

+12
-12
lines changed

2 files changed

+12
-12
lines changed

fiat-roles/src/test/groovy/com/netflix/spinnaker/fiat/permissions/DefaultPermissionsResolverSpec.groovy

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -340,10 +340,10 @@ class DefaultPermissionsResolverSpec extends Specification {
340340
]
341341

342342
when:
343-
applicationProvider.getAllRestricted("user1", HashSet.of(role1), false) >> [testApp1].toSet()
344-
applicationProvider.getAllRestricted("user2", HashSet.of(role1, role2), false) >> [testApp2].toSet()
345-
applicationProvider.getAllRestricted("user3", HashSet.of(role1, roleAdmin), true) >> [testAppAdmin].toSet()
346-
applicationProvider.getAllRestricted("abc@managed-service-accounts", HashSet.of(role1), false) >> [testApp1].toSet()
343+
applicationProvider.getAllRestricted("user1", Set.of(role1), false) >> [testApp1].toSet()
344+
applicationProvider.getAllRestricted("user2", Set.of(role1, role2), false) >> [testApp2].toSet()
345+
applicationProvider.getAllRestricted("user3", Set.of(role1, roleAdmin), true) >> [testAppAdmin].toSet()
346+
applicationProvider.getAllRestricted("abc@managed-service-accounts", Set.of(role1), false) >> [testApp1].toSet()
347347
def result = resolver.resolveResources(userToRoles)
348348

349349
then:

fiat-roles/src/test/groovy/com/netflix/spinnaker/fiat/providers/DefaultApplicationProviderSpec.groovy

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -167,19 +167,19 @@ class DefaultApplicationProviderSpec extends Specification {
167167
setup:
168168
def front50Apps = [
169169
new Application().setName("front50App1")
170-
.setDetails(HashMap.of("foo", "bar", "xyz", "pqr"))
170+
.setDetails(Map.of("foo", "bar", "xyz", "pqr"))
171171
.setPermissions(new Permissions.Builder().add(Authorization.READ, "role").build()),
172172
new Application().setName("front50App2")
173-
.setDetails(HashMap.of("foo", "bar", "xyz", "pqr"))
173+
.setDetails(Map.of("foo", "bar", "xyz", "pqr"))
174174
.setPermissions(new Permissions.Builder().add(Authorization.READ, "role").build())
175175
]
176176

177177
def clouddriverApps = [
178178
new Application().setName("clouddriverApp1")
179-
.setDetails(HashMap.of("foo", "bar", "xyz", "pqr"))
179+
.setDetails(Map.of("foo", "bar", "xyz", "pqr"))
180180
.setPermissions(new Permissions.Builder().add(Authorization.READ, "role").build()),
181181
new Application().setName("clouddriverApp2")
182-
.setDetails(HashMap.of("foo", "bar", "xyz", "pqr"))
182+
.setDetails(Map.of("foo", "bar", "xyz", "pqr"))
183183
.setPermissions(new Permissions.Builder().add(Authorization.READ, "role").build())
184184
]
185185

@@ -224,22 +224,22 @@ class DefaultApplicationProviderSpec extends Specification {
224224
setup:
225225
def testApps = [
226226
new Application().setName("front50App1")
227-
.setDetails(HashMap.of("foo", "bar", "xyz", "pqr"))
227+
.setDetails(Map.of("foo", "bar", "xyz", "pqr"))
228228
.setPermissions(new Permissions.Builder().add(Authorization.READ, "role").build()),
229229
new Application().setName("front50App2")
230-
.setDetails(HashMap.of("foo", "bar", "xyz", "pqr"))
230+
.setDetails(Map.of("foo", "bar", "xyz", "pqr"))
231231
.setPermissions(new Permissions.Builder().add(Authorization.READ, "role").build())
232232
]
233233

234234
Set<Application> expectedApps = [
235235
new Application().setName("front50App1")
236-
.setDetails(HashMap.of("foo", "bar", "xyz", "pqr"))
236+
.setDetails(Map.of("foo", "bar", "xyz", "pqr"))
237237
.setPermissions(new Permissions.Builder()
238238
.add(Authorization.READ, "role")
239239
.add(Authorization.EXECUTE, "role")
240240
.build()),
241241
new Application().setName("front50App2")
242-
.setDetails(HashMap.of("foo", "bar", "xyz", "pqr"))
242+
.setDetails(Map.of("foo", "bar", "xyz", "pqr"))
243243
.setPermissions(new Permissions.Builder()
244244
.add(Authorization.READ, "role")
245245
.add(Authorization.EXECUTE, "role")

0 commit comments

Comments
 (0)