Skip to content

Commit 881b300

Browse files
committed
Add integrate-test:cacheable module with Redis integration test
- Create `TestEntrance` class for Spring Boot application - Configure `build.gradle.kts` with necessary dependencies - Add `RedisConnectionFactoryIntegrationTest` to verify RESP3 protocol connection
1 parent c02b45f commit 881b300

4 files changed

Lines changed: 59 additions & 0 deletions

File tree

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
plugins {
2+
id("buildlogic.kotlinspring-conventions")
3+
id("buildlogic.spotless-conventions")
4+
}
5+
6+
dependencies {
7+
testImplementation(projects.cacheable)
8+
testImplementation(libs.org.springframework.boot.spring.boot.starter.data.redis)
9+
10+
testImplementation(projects.testtoolkit.testtoolkitTestcontainers)
11+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package itest.integrate.cacheable
2+
3+
import org.springframework.boot.autoconfigure.SpringBootApplication
4+
5+
@SpringBootApplication
6+
internal class TestEntrance
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package itest.integrate.cacheable.factory
2+
3+
import io.github.truenine.composeserver.testtoolkit.testcontainers.ICacheRedisContainer
4+
import jakarta.annotation.Resource
5+
import org.springframework.boot.test.context.SpringBootTest
6+
import org.springframework.data.redis.connection.RedisConnectionFactory
7+
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory
8+
import kotlin.test.Test
9+
import kotlin.test.assertIs
10+
import kotlin.test.assertEquals
11+
import kotlin.test.assertNotNull
12+
13+
@SpringBootTest
14+
class RedisConnectionFactoryIntegrationTest : ICacheRedisContainer {
15+
16+
@Resource
17+
lateinit var factory: RedisConnectionFactory
18+
19+
@Test
20+
fun `验证工厂使用最新的RESP3协议连接`() {
21+
val lettuceFactory = assertIs<LettuceConnectionFactory>(factory)
22+
23+
// 验证连接成功
24+
val connection = lettuceFactory.connection
25+
try {
26+
val pingResult = connection.ping()
27+
assertEquals("PONG", pingResult)
28+
29+
// 获取客户端选项并验证协议版本
30+
val clientOptions = lettuceFactory.clientConfiguration.clientOptions.orElse(null)
31+
assertNotNull(clientOptions, "客户端选项不应为空")
32+
33+
// 验证协议版本为 RESP3
34+
val protocolVersion = clientOptions.protocolVersion
35+
assertEquals("RESP3", protocolVersion.toString(), "应该使用最新的 RESP3 协议")
36+
37+
} finally {
38+
connection.close()
39+
}
40+
}
41+
}

shared/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ dependencies {
2020
api(libs.io.swagger.core.v3.swagger.annotations.jakarta)
2121
api(libs.org.slf4j.slf4j.api)
2222
api(libs.org.jetbrains.kotlinx.kotlinx.coroutines.core)
23+
api(libs.org.jspecify.jspecify)
2324

2425
testImplementation(projects.testtoolkit.testtoolkitSpringmvc)
2526
testImplementation(libs.org.springframework.boot.spring.boot.starter.web)

0 commit comments

Comments
 (0)