Add WebFlux Coroutines smoke test

See gh-17701
pull/17742/head
Sebastien Deleuze 5 years ago committed by Stephane Nicoll
parent 1acf78fb64
commit 3dfb69841f

@ -98,6 +98,7 @@
<module>spring-boot-smoke-test-web-static</module>
<module>spring-boot-smoke-test-web-ui</module>
<module>spring-boot-smoke-test-webflux</module>
<module>spring-boot-smoke-test-webflux-coroutines</module>
<module>spring-boot-smoke-test-websocket-jetty</module>
<module>spring-boot-smoke-test-websocket-tomcat</module>
<module>spring-boot-smoke-test-websocket-undertow</module>

@ -0,0 +1,83 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<!-- Your own application should inherit from spring-boot-starter-parent -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-smoke-tests</artifactId>
<version>${revision}</version>
</parent>
<artifactId>spring-boot-smoke-test-webflux-coroutines</artifactId>
<name>Spring Boot WebFlux Coroutines Smoke Test</name>
<description>Spring Boot WebFlux Coroutines Smoke Test</description>
<properties>
<main.basedir>${basedir}/../../..</main.basedir>
<m2eclipse.wtp.contextRoot>/</m2eclipse.wtp.contextRoot>
</properties>
<dependencies>
<!-- Compile -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-kotlin</artifactId>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-reflect</artifactId>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib-jdk8</artifactId>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-coroutines-reactor</artifactId>
</dependency>
<!-- Test -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<sourceDirectory>${project.basedir}/src/main/kotlin</sourceDirectory>
<testSourceDirectory>${project.basedir}/src/test/kotlin</testSourceDirectory>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-plugin</artifactId>
<configuration>
<args>
<arg>-Xjsr305=strict</arg>
</args>
<compilerPlugins>
<plugin>spring</plugin>
</compilerPlugins>
</configuration>
<dependencies>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-allopen</artifactId>
<version>${kotlin.version}</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<useSystemClassLoader>false</useSystemClassLoader>
</configuration>
</plugin>
</plugins>
</build>
</project>

@ -0,0 +1,10 @@
package smoketest.coroutines
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
@SpringBootApplication
class CoroutinesApplication
fun main(args: Array<String>) {
runApplication<CoroutinesApplication>(*args)
}

@ -0,0 +1,24 @@
package smoketest.coroutines
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.flow
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RestController
@RestController
class CoroutinesController {
@GetMapping("/suspending")
suspend fun suspendingFunction(): String {
delay(10)
return "Hello World"
}
@GetMapping("/flow")
fun flow() = flow {
delay(10)
emit("Hello ")
delay(10)
emit("World")
}
}

@ -0,0 +1,25 @@
package smoketest.coroutines
import org.junit.jupiter.api.Test
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.boot.test.context.SpringBootTest.*
import org.springframework.http.MediaType
import org.springframework.test.web.reactive.server.WebTestClient
import org.springframework.test.web.reactive.server.expectBody
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
class CoroutinesApplicationTests(@Autowired private val webClient: WebTestClient) {
@Test
fun testSuspendingFunction() {
webClient.get().uri("/suspending").accept(MediaType.TEXT_PLAIN).exchange()
.expectBody<String>().isEqualTo("Hello World")
}
@Test
fun testFlow() {
webClient.get().uri("/flow").accept(MediaType.TEXT_PLAIN).exchange()
.expectBody<String>().isEqualTo("Hello World")
}
}
Loading…
Cancel
Save