Feature proposal: official scripted HTTP test client for offline SDK tests
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 35/100
Direzione di ricerca
Inizia esaminando l’astrazione centrale HttpClient esistente e la sua implementazione OkHttp per comprendere l’interfaccia disponibile per un transport di test. La proposta descrive una prima versione di ampio respiro che copre risposte definite da script, asserzioni sulle richieste, streaming, errori, cancellazione e completamento delle interazioni; per considerarla completata sarebbero necessari un ambito concordato e test per i comportamenti selezionati senza accesso alla rete.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Proposal
Add a small official scripted/test HttpClient implementation so Java applications can test OpenAI SDK integration deterministically without making live network/API calls or standing up a local HTTP server.
The SDK already has a core HttpClient abstraction underneath the OkHttp implementation. A test-focused implementation could use that same boundary while remaining separate from generated resource/model code.
Conceptually:
ScriptedHttpClient http = ScriptedHttpClient.builder()
.expectRequest(request -> {
assertEquals("POST", request.method().name());
assertEquals("/v1/responses", request.path());
})
.respondJson(200, fixture("response.json"))
.build();
OpenAIClient client = OpenAIClient.builder()
.httpClient(http)
.apiKey("test")
.build();
A deliberately small first version could support:
- queueing scripted HTTP responses;
- capturing requests and asserting method/path/query/headers/body;
- ordinary JSON responses;
- SSE/streaming response fixtures;
- scripted HTTP error responses and transport failures;
- cancellation/async completion behaviour where applicable;
- request history plus a final assertion that all expected interactions occurred;
- no network access and no dependency on a real API key.
Why this is useful
SDK users often need to test their own integration logic around request construction, streaming, retries/errors, cancellation, and response handling. Today that generally requires a third-party HTTP mock server, custom fake transport, or live API calls.
A first-party scripted transport would let tests exercise the real generated OpenAI client and serialization/parsing layers while replacing only the HTTP boundary. It would also provide a stable testing primitive that follows SDK changes rather than forcing applications to maintain their own transport doubles.
Scope / compatibility
This should be Java 8-compatible and can live in a small optional testing module/package so normal runtime users do not pay for additional dependencies or custom-code surface unnecessarily.
This is not a production traffic recorder/replayer. Responses and expected requests are explicitly authored test fixtures, which avoids accidentally capturing prompts, credentials, or production data.
I searched current issues for mock/test transports, offline testing, fixtures, record/replay, and MockWebServer-style support and did not find an equivalent proposal.
Given that much of this SDK is generated and the custom-code budget is intentionally limited, I am proposing this as a bounded helper around the existing HttpClient abstraction rather than changes throughout the generated API surface.
- Lingua principale
- Kotlin
- Stelle
- 1.5k
- Fork
- 266
- Merge medio
- 9h 50m
- PR unite (30g)
- 146
Preparare l'ambiente
Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di openai/openai-java
-
HttpRequest.url() logs spaces in path segments as literal plus signsForse già presa @sylvesterkaczmarek l’ha presa 53 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
openai/openai-java#886 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Make diarized transcription duration and task optionalForse già presa @wskr00 l’ha presa 83 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
openai/openai-java#802 · 2 commenti · 3 reazioni ·
I maintainer di solito rispondono entro 1 giorno
-
AsyncStreamResponse can hang when the subscriber executor rejects workForse già presa @sylvesterkaczmarek l’ha presa 36 giorni fa. Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 74/100
openai/openai-java#973 ·
I maintainer di solito rispondono entro 1 giorno
-
Async internal plumbing bypasses both `dispatcherExecutorService` and `streamHandlerExecutor`, forcing a hop through `ForkJoinPool.commonPool()`Forse già presa @sylvesterkaczmarek l’ha presa 30 giorni fa. Aperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
openai/openai-java#952 ·
I maintainer di solito rispondono entro 1 giorno
-
DefaultSleeper.close can strand pending sleepAsync futuresForse già presa @sylvesterkaczmarek l’ha presa 53 giorni fa. Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 72/100
openai/openai-java#889 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di openai/openai-java
Issue simili
-
enhancement
Difficoltà 2/5 Meno di un'ora Idoneità per principianti 72/100
afarber/OpenMapView#22 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
nightscout/AndroidAPS#5245 ·
I maintainer di solito rispondono entro 1 giorno
-
Feature:Resolution
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
intellij-elixir/intellij-elixir#4396 ·
I maintainer di solito rispondono entro 1 giorno
-
s: need triage
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
Tencent-TDS/KuiklyUI#1786 ·
I maintainer di solito rispondono entro 1 giorno
-
ExprQuerySet.getChildren() omits WITH clauseForse già presa Una pull request collegata a questa issue è aperta o già unita. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
partiql/partiql-lang-kotlin#1972 ·