Skip to content

Commit

Permalink
spring boot 3.3.2 (#430)
Browse files Browse the repository at this point in the history
* spring boot 3.3.2

* bump kotlin plugin versions

* update detekt 1.23.6

* replace org.springframework.boot plugin with io.spring.dependency-management

* apply detekt fixes

* apply ktlintFormat

* use bytebuddy instead of cglib

* clean up flaky test configuration

* fix testcontainers
  • Loading branch information
kozjan authored Sep 23, 2024
1 parent c708978 commit 71f6788
Show file tree
Hide file tree
Showing 16 changed files with 62 additions and 67 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@
Lists all changes with user impact.
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).

## [0.22.0]
### Changed
- Spring Boot update to 3.3.2

## [0.21.1]
### Changed
- Added additional logs to SimpleCache
Expand Down
42 changes: 21 additions & 21 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,26 +1,24 @@

buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath group: 'pl.allegro.tech.build', name: 'axion-release-plugin', version: '1.13.3'
classpath group: 'pl.allegro.tech.build', name: 'axion-release-plugin', version: '1.13.3'
}
}

plugins {
id 'signing'

id 'pl.allegro.tech.build.axion-release' version '1.13.3'
id 'org.jetbrains.kotlin.jvm' version '1.8.22'
id 'org.jetbrains.kotlin.plugin.spring' version '1.8.22'
id 'org.jetbrains.kotlin.plugin.allopen' version '1.8.22'
id 'org.jetbrains.kotlin.jvm' version '1.9.25'
id 'org.jetbrains.kotlin.plugin.spring' version '1.9.25'
id 'org.jetbrains.kotlin.plugin.allopen' version '1.9.25'
id "org.jlleitschuh.gradle.ktlint" version "10.2.1"
id "org.jlleitschuh.gradle.ktlint-idea" version "10.2.0"
id "io.gitlab.arturbosch.detekt" version "1.18.0"
id "io.gitlab.arturbosch.detekt" version "1.23.6"
id 'io.github.gradle-nexus.publish-plugin' version '1.0.0'
id 'org.springframework.boot' version '3.1.2' apply false

id "io.spring.dependency-management" version "1.1.6"
}

scmVersion {
Expand Down Expand Up @@ -48,25 +46,27 @@ allprojects {
apply plugin: 'io.spring.dependency-management'

project.ext.versions = [
java_controlplane : '1.0.45',
spring_boot : '3.1.2',
grpc : '1.48.1',
ecwid_consul : '1.4.1',
toxiproxy : '2.1.3',
consul_recipes : '0.9.1',
cglib : '3.2.9',
re2j : '1.3',
xxhash : '0.10.1',
java_controlplane: '1.0.45',
spring_boot : '3.3.2',
grpc : '1.48.1',
ecwid_consul : '1.4.1',
toxiproxy : '2.1.3',
consul_recipes : '0.9.1',
bytebuddy : '1.15.1',
re2j : '1.3',
xxhash : '0.10.1',
dropwizard : '4.2.26'
]

dependencyManagement {
imports {
mavenBom org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES
mavenBom("org.springframework.boot:spring-boot-dependencies:3.3.2") {
bomProperty("kotlin.version", "1.9.23")
}
}
}
}


nexusPublishing {
repositories {
sonatype {
Expand Down Expand Up @@ -123,7 +123,7 @@ subprojects {
pom {
name = project.name
description = 'Production-ready Control Plane for Service Mesh based on Envoy Proxy.'
url ='https://github.com/allegro/envoy-control'
url = 'https://github.com/allegro/envoy-control'
inceptionYear = '2019'

scm {
Expand Down Expand Up @@ -177,7 +177,7 @@ subprojects {
}

detekt {
toolVersion = "1.18.0"
toolVersion = "1.23.6"
input = files("src/main/kotlin", "src/test/kotlin")
config = files("$rootDir/config/detekt/detekt.yml")
buildUponDefaultConfig = true
Expand Down
7 changes: 6 additions & 1 deletion config/detekt/detekt.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ style:
active: false # we want to be able to write todo comments
MagicNumber:
ignoreAnnotation: true
ignoreNumbers: '-1,0,1,2,3'
ignoreNumbers: ["-1", "0", "1", "2", "3"]
excludes: [ "**/resources/**","**/build/**", '**/test/**', '**/**Test.kt', '**TestBase.kt', '**TestConfiguration.kt','**/**Spec.kt','**Container.kt', '**Assertions.kt', '**Extension.kt', '**Operations.kt' ]
FunctionOnlyReturningConstant:
active: true
Expand Down Expand Up @@ -93,3 +93,8 @@ empty-blocks:
naming:
VariableNaming:
excludes: [ "**/envoy-control-tests/**" ]
FunctionNaming:
ignoreAnnotated:
- "Test"
- "ParameterizedTest"
- "MethodSource"
8 changes: 2 additions & 6 deletions envoy-control-core/build.gradle
Original file line number Diff line number Diff line change
@@ -1,15 +1,11 @@
plugins {
id 'org.springframework.boot' apply false
}

dependencies {
api project(':envoy-control-services')

implementation group: 'org.jetbrains.kotlin', name: 'kotlin-stdlib'
api group: 'com.fasterxml.jackson.module', name: 'jackson-module-afterburner'
api group: 'com.fasterxml.jackson.module', name: 'jackson-module-kotlin'
implementation group: 'org.jetbrains.kotlin', name: 'kotlin-reflect'
api group: 'io.dropwizard.metrics', name: 'metrics-core'
api group: 'io.dropwizard.metrics', name: 'metrics-core', version: versions.dropwizard
api group: 'io.micrometer', name: 'micrometer-core'
implementation group: 'com.google.re2j', name: 're2j', version: versions.re2j

Expand All @@ -25,7 +21,7 @@ dependencies {
testImplementation group: 'io.grpc', name: 'grpc-testing', version: versions.grpc
testImplementation group: 'io.projectreactor', name: 'reactor-test'
testImplementation group: 'org.mockito', name: 'mockito-core'
testImplementation group: 'cglib', name: 'cglib-nodep', version: versions.cglib
testImplementation group: 'net.bytebuddy', name: 'byte-buddy', version: versions.bytebuddy

testImplementation group: 'org.awaitility', name: 'awaitility'

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ class LocalReplyConfigFactory(
)
responseMapperBuilder
}

matcherAndMapper.responseFlagMatcher.isNotEmpty() -> {
responseMapperBuilder.setFilter(
AccessLogFilter.newBuilder().setResponseFlagFilter(
Expand All @@ -75,6 +76,7 @@ class LocalReplyConfigFactory(
)
responseMapperBuilder
}

matcherAndMapper.statusCodeMatcher.isNotEmpty() -> {
responseMapperBuilder.setFilter(
AccessLogFilter.newBuilder().setStatusCodeFilter(
Expand All @@ -83,6 +85,7 @@ class LocalReplyConfigFactory(
)
responseMapperBuilder
}

else -> {
responseMapperBuilder
}
Expand Down Expand Up @@ -139,6 +142,7 @@ class LocalReplyConfigFactory(
)
)
}

headerMatcher.exactMatch.isNotEmpty() -> {
headerFilterBuilder.setHeader(headerMatcherBuilder.setExactMatch(headerMatcher.exactMatch))
}
Expand All @@ -158,11 +162,13 @@ class LocalReplyConfigFactory(
responseFormat.textFormat.isNotEmpty() -> {
responseFormatBuilder.setTextFormat(responseFormat.textFormat).build()
}

responseFormat.jsonFormat.isNotEmpty() -> {
val responseBody = Struct.newBuilder()
jsonParser.merge(responseFormat.jsonFormat, responseBody)
responseFormatBuilder.setJsonFormat(responseBody.build()).build()
}

else -> {
null
}
Expand All @@ -184,25 +190,20 @@ class LocalReplyConfigFactory(
validateHeaderMatcher(matcherAndMapper.headerMatcher)
}

if (definitions != 1) {
throw IllegalArgumentException(
"One and only one of: headerMatcher, responseFlagMatcher, statusCodeMatcher has to be defined.")
require(definitions == 1) {
"One and only one of: headerMatcher, responseFlagMatcher, statusCodeMatcher has to be defined."
}
}

private fun validateHeaderMatcher(headerMatcher: HeaderMatcherProperties) {
if (headerMatcher.exactMatch.isNotEmpty() && headerMatcher.regexMatch.isNotEmpty()) {
throw IllegalArgumentException(
"Only one of: exactMatch, regexMatch can be defined."
)
require(headerMatcher.exactMatch.isEmpty() || headerMatcher.regexMatch.isEmpty()) {
"Only one of: exactMatch, regexMatch can be defined."
}
}

private fun validateResponseFormatProperties(responseFormat: ResponseFormat) {
if (responseFormat.jsonFormat.isNotEmpty() && responseFormat.textFormat.isNotEmpty()) {
throw IllegalArgumentException(
"Only one of: jsonFormat, textFormat can be defined."
)
require(responseFormat.jsonFormat.isEmpty() || responseFormat.textFormat.isEmpty()) {
"Only one of: jsonFormat, textFormat can be defined."
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,8 @@ class RBACFilterFactory(

init {
incomingPermissionsProperties.selectorMatching.forEach {
if (it.key !in incomingServicesIpRangeAuthentication && it.key !in incomingServicesSourceAuthentication) {
throw IllegalArgumentException("${it.key} is not defined in ip range or ip from discovery section.")
require(it.key in incomingServicesIpRangeAuthentication || it.key in incomingServicesSourceAuthentication) {
"${it.key} is not defined in ip range or ip from discovery section."
}
}
}
Expand Down Expand Up @@ -368,15 +368,18 @@ class RBACFilterFactory(
principal
)
)

OAuth.Policy.STRICT -> mergePrincipals(
listOf(
strictPolicyPrincipal,
principal
)
)

OAuth.Policy.ALLOW_MISSING_OR_FAILED -> {
principal
}

null -> {
principal
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package pl.allegro.tech.servicemesh.envoycontrol.snapshot.resource.listeners.fil
import io.envoyproxy.envoy.type.matcher.v3.RegexMatcher
import io.envoyproxy.envoy.type.matcher.v3.StringMatcher
import pl.allegro.tech.servicemesh.envoycontrol.snapshot.TlsAuthenticationProperties
import java.lang.IllegalArgumentException

class SanUriMatcherFactory(
private val tlsProperties: TlsAuthenticationProperties
Expand Down Expand Up @@ -35,8 +34,8 @@ class SanUriMatcherFactory(
private fun getSanUriFormatSplit(): Pair<String, String> {
val format = tlsProperties.sanUriFormat
val parts = format.split(serviceNameTemplate)
if (parts.size != 2) {
throw IllegalArgumentException("SAN URI $format does not properly contain $serviceNameTemplate")
require(parts.size == 2) {
"SAN URI $format does not properly contain $serviceNameTemplate"
}
return parts[0] to parts[1]
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,8 @@ class ServiceTagMetadataGenerator(properties: ServiceTagsProperties = ServiceTag

init {
properties.allowedTagsCombinations.forEach {
if (it.tags.size < 2 || it.tags.size > 3) {
throw IllegalArgumentException(
"A tags combination must contain 2 or 3 tags. Combination with ${it.tags.size} tags found")
require(it.tags.size in 2..3) {
"A tags combination must contain 2 or 3 tags. Combination with ${it.tags.size} tags found"
}
}
val combinationsByService = properties.allowedTagsCombinations
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -130,8 +130,8 @@ private fun measureScannableBuffer(
* To access actual buffer size, we need to extract it from inners(). We don't know how many sources will
* be available, so it must be stated explicitly as innerSources parameter.
*/
(0 until innerSources).forEach {
meterRegistry.gauge("${bufferMetric(name)}_$it", scannable, innerBufferExtractor(it))
for (i in 0 until innerSources) {
meterRegistry.gauge("${bufferMetric(name)}_$i", scannable, innerBufferExtractor(i))
}
}

Expand Down
1 change: 0 additions & 1 deletion envoy-control-runner/build.gradle
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
plugins {
id 'application'
id 'org.springframework.boot' apply false
}

mainClassName = 'pl.allegro.tech.servicemesh.envoycontrol.EnvoyControl'
Expand Down
4 changes: 0 additions & 4 deletions envoy-control-services/build.gradle
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
plugins {
id 'org.springframework.boot' apply false
}

dependencies {
implementation group: 'org.jetbrains.kotlin', name: 'kotlin-stdlib'
api group: 'io.projectreactor', name: 'reactor-core'
Expand Down
6 changes: 1 addition & 5 deletions envoy-control-source-consul/build.gradle
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
plugins {
id 'org.springframework.boot' apply false
}

dependencies {
api project(':envoy-control-core')

Expand All @@ -11,7 +7,7 @@ dependencies {
api group: 'com.ecwid.consul', name: 'consul-api', version: versions.ecwid_consul

testImplementation group: 'org.mockito', name: 'mockito-core'
testImplementation group: 'cglib', name: 'cglib-nodep', version: versions.cglib
testImplementation group: 'net.bytebuddy', name: 'byte-buddy', version: versions.bytebuddy

testImplementation group: 'io.projectreactor', name: 'reactor-test'
testImplementation group: 'org.testcontainers', name: 'testcontainers'
Expand Down
5 changes: 0 additions & 5 deletions envoy-control-tests/build.gradle
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
plugins {
id 'org.springframework.boot' apply false
}

dependencies {
implementation project(':envoy-control-runner')

Expand Down Expand Up @@ -42,7 +38,6 @@ task reliabilityTest(type: Test) {
}

task flakyTest(type: Test) {
systemProperty 'RELIABILITY_FAILURE_DURATION_SECONDS', System.getProperty('RELIABILITY_FAILURE_DURATION_SECONDS', '300')
useJUnitPlatform {
includeTags 'flaky'
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ class ConsulContainer(

override fun configure() {
super.configure()
portBindings.add("$externalPort:$internalPort")
portBindings = listOf("$externalPort:$internalPort")
awaitConsulReady()
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ class EgressOperations(val envoy: EnvoyContainer) {
body: RequestBody? = null
) = callWithHostHeader(service, headers, pathAndQuery, method, body)

@Suppress("detekt.ForEachOnRange")
fun callServiceRepeatedly(
service: String,
stats: CallStats,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -220,8 +220,9 @@ class EnvoyControlRunnerTestApp(
.execute().addToCloseableResponses()
}

override fun meterRegistry() = app.context().getBean(MeterRegistry::class.java)
?: throw IllegalStateException("MeterRegistry bean not found in the context")
override fun meterRegistry() = checkNotNull(app.context().getBean(MeterRegistry::class.java)) {
"MeterRegistry bean not found in the context"
}

companion object {
val logger by logger()
Expand Down

0 comments on commit 71f6788

Please sign in to comment.