Skip to content

Commit 91e3d97

Browse files
committed
test(acp): add close initialize race RED case
1 parent f351ee3 commit 91e3d97

1 file changed

Lines changed: 18 additions & 0 deletions

File tree

‎src/test/java/io/github/easy4j/kimi/acp/KimiAcpClientE2ETest.java‎

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,24 @@ void shouldReturnToNewAfterSpawnFailure() {
8989
assertEquals(KimiAcpState.CLOSED, client.getState());
9090
}
9191

92+
@Test
93+
void shouldKeepClosedTerminalWhenCloseRacesInitialize() throws Exception {
94+
KimiAcpClient client = new KimiAcpClient(config("--slow-initialize"));
95+
CompletableFuture<String> connecting = CompletableFuture.supplyAsync(client::connect);
96+
97+
long deadline = System.nanoTime() + TimeUnit.SECONDS.toNanos(2);
98+
while (client.getState() != KimiAcpState.INITIALIZING && System.nanoTime() < deadline) {
99+
Thread.sleep(10);
100+
}
101+
assertEquals(KimiAcpState.INITIALIZING, client.getState());
102+
103+
client.close();
104+
105+
assertThrows(ExecutionException.class, () -> connecting.get(2, TimeUnit.SECONDS));
106+
assertEquals(KimiAcpState.CLOSED, client.getState(),
107+
"CLOSED must remain terminal even when the connect failure unwinds later");
108+
}
109+
92110
@Test
93111
void shouldConnectAndInitialize() {
94112
try (KimiAcpClient client = new KimiAcpClient(config())) {

0 commit comments

Comments
 (0)