Merge branch '5.3.x'

This commit is contained in:
Arjen Poutsma
2022-03-11 12:22:39 +01:00
2 changed files with 43 additions and 1 deletions

View File

@@ -37,6 +37,8 @@ import org.springframework.web.bind.annotation.RestController
import org.springframework.web.client.HttpServerErrorException
import org.springframework.web.reactive.config.EnableWebFlux
import org.springframework.web.testfixture.http.server.reactive.bootstrap.HttpServer
import reactor.core.publisher.Flux
import java.time.Duration
class CoroutinesIntegrationTests : AbstractRequestMappingIntegrationTests() {
@@ -111,6 +113,25 @@ class CoroutinesIntegrationTests : AbstractRequestMappingIntegrationTests() {
}
}
@ParameterizedHttpServerTest
fun `Suspending handler method returning ResponseEntity of Flux `(httpServer: HttpServer) {
startServer(httpServer)
val entity = performGet<String>("/entity-flux", HttpHeaders.EMPTY, String::class.java)
assertThat(entity.statusCode).isEqualTo(HttpStatus.OK)
assertThat(entity.body).isEqualTo("01234")
}
@ParameterizedHttpServerTest
fun `Suspending handler method returning ResponseEntity of Flow`(httpServer: HttpServer) {
startServer(httpServer)
val entity = performGet<String>("/entity-flow", HttpHeaders.EMPTY, String::class.java)
assertThat(entity.statusCode).isEqualTo(HttpStatus.OK)
assertThat(entity.body).isEqualTo("foobar")
}
@Configuration
@EnableWebFlux
@ComponentScan(resourcePattern = "**/CoroutinesIntegrationTests*")
@@ -169,6 +190,25 @@ class CoroutinesIntegrationTests : AbstractRequestMappingIntegrationTests() {
throw IllegalStateException()
}
@GetMapping("/entity-flux")
suspend fun entityFlux() : ResponseEntity<Flux<String>> {
val strings = Flux.interval(Duration.ofMillis(100)).take(5)
.map { l -> l.toString() }
delay(1)
return ResponseEntity.ok().body(strings)
}
@GetMapping("/entity-flow")
suspend fun entityFlow() : ResponseEntity<Flow<String>> {
val strings = flow {
emit("foo")
delay(1)
emit("bar")
delay(1)
}
return ResponseEntity.ok().body(strings)
}
}