File tree Expand file tree Collapse file tree 2 files changed +41
-8
lines changed
main/kotlin/com/openai/core
test/kotlin/com/openai/core Expand file tree Collapse file tree 2 files changed +41
-8
lines changed Original file line number Diff line number Diff line change @@ -115,7 +115,9 @@ private constructor(
115
115
webhookSecret = clientOptions.webhookSecret
116
116
}
117
117
118
- fun httpClient (httpClient : HttpClient ) = apply { this .httpClient = httpClient }
118
+ fun httpClient (httpClient : HttpClient ) = apply {
119
+ this .httpClient = PhantomReachableClosingHttpClient (httpClient)
120
+ }
119
121
120
122
fun checkJacksonVersionCompatibility (checkJacksonVersionCompatibility : Boolean ) = apply {
121
123
this .checkJacksonVersionCompatibility = checkJacksonVersionCompatibility
@@ -335,13 +337,11 @@ private constructor(
335
337
336
338
return ClientOptions (
337
339
httpClient,
338
- PhantomReachableClosingHttpClient (
339
- RetryingHttpClient .builder()
340
- .httpClient(httpClient)
341
- .clock(clock)
342
- .maxRetries(maxRetries)
343
- .build()
344
- ),
340
+ RetryingHttpClient .builder()
341
+ .httpClient(httpClient)
342
+ .clock(clock)
343
+ .maxRetries(maxRetries)
344
+ .build(),
345
345
checkJacksonVersionCompatibility,
346
346
jsonMapper,
347
347
streamHandlerExecutor
Original file line number Diff line number Diff line change
1
+ // File generated from our OpenAPI spec by Stainless.
2
+
3
+ package com.openai.core
4
+
5
+ import com.openai.core.http.HttpClient
6
+ import org.assertj.core.api.Assertions.assertThat
7
+ import org.junit.jupiter.api.Test
8
+ import org.junit.jupiter.api.extension.ExtendWith
9
+ import org.mockito.junit.jupiter.MockitoExtension
10
+ import org.mockito.kotlin.mock
11
+ import org.mockito.kotlin.never
12
+ import org.mockito.kotlin.verify
13
+
14
+ @ExtendWith(MockitoExtension ::class )
15
+ internal class ClientOptionsTest {
16
+
17
+ @Test
18
+ fun toBuilder_whenOriginalClientOptionsGarbageCollected_doesNotCloseOriginalClient () {
19
+ val httpClient = mock<HttpClient >()
20
+ var clientOptions =
21
+ ClientOptions .builder().httpClient(httpClient).apiKey(" My API Key" ).build()
22
+ verify(httpClient, never()).close()
23
+
24
+ // Overwrite the `clientOptions` variable so that the original `ClientOptions` is GC'd.
25
+ clientOptions = clientOptions.toBuilder().build()
26
+ System .gc()
27
+ Thread .sleep(100 )
28
+
29
+ verify(httpClient, never()).close()
30
+ // This exists so that `clientOptions` is still reachable.
31
+ assertThat(clientOptions).isEqualTo(clientOptions)
32
+ }
33
+ }
You can’t perform that action at this time.
0 commit comments