mirror of
https://github.com/router-for-me/CLIProxyAPI.git
synced 2026-02-20 05:10:52 +08:00
feat(logging, executor): add request logging tests and WebSocket-based Codex executor
- Introduced unit tests for request logging middleware to enhance coverage. - Added WebSocket-based Codex executor to support Responses API upgrade. - Updated middleware logic to selectively capture request bodies for memory efficiency. - Enhanced Codex configuration handling with new WebSocket attributes.
This commit is contained in:
100
sdk/cliproxy/auth/conductor_executor_replace_test.go
Normal file
100
sdk/cliproxy/auth/conductor_executor_replace_test.go
Normal file
@@ -0,0 +1,100 @@
|
||||
package auth
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
"sync"
|
||||
"testing"
|
||||
|
||||
cliproxyexecutor "github.com/router-for-me/CLIProxyAPI/v6/sdk/cliproxy/executor"
|
||||
)
|
||||
|
||||
type replaceAwareExecutor struct {
|
||||
id string
|
||||
|
||||
mu sync.Mutex
|
||||
closedSessionIDs []string
|
||||
}
|
||||
|
||||
func (e *replaceAwareExecutor) Identifier() string {
|
||||
return e.id
|
||||
}
|
||||
|
||||
func (e *replaceAwareExecutor) Execute(context.Context, *Auth, cliproxyexecutor.Request, cliproxyexecutor.Options) (cliproxyexecutor.Response, error) {
|
||||
return cliproxyexecutor.Response{}, nil
|
||||
}
|
||||
|
||||
func (e *replaceAwareExecutor) ExecuteStream(context.Context, *Auth, cliproxyexecutor.Request, cliproxyexecutor.Options) (<-chan cliproxyexecutor.StreamChunk, error) {
|
||||
ch := make(chan cliproxyexecutor.StreamChunk)
|
||||
close(ch)
|
||||
return ch, nil
|
||||
}
|
||||
|
||||
func (e *replaceAwareExecutor) Refresh(_ context.Context, auth *Auth) (*Auth, error) {
|
||||
return auth, nil
|
||||
}
|
||||
|
||||
func (e *replaceAwareExecutor) CountTokens(context.Context, *Auth, cliproxyexecutor.Request, cliproxyexecutor.Options) (cliproxyexecutor.Response, error) {
|
||||
return cliproxyexecutor.Response{}, nil
|
||||
}
|
||||
|
||||
func (e *replaceAwareExecutor) HttpRequest(context.Context, *Auth, *http.Request) (*http.Response, error) {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
func (e *replaceAwareExecutor) CloseExecutionSession(sessionID string) {
|
||||
e.mu.Lock()
|
||||
defer e.mu.Unlock()
|
||||
e.closedSessionIDs = append(e.closedSessionIDs, sessionID)
|
||||
}
|
||||
|
||||
func (e *replaceAwareExecutor) ClosedSessionIDs() []string {
|
||||
e.mu.Lock()
|
||||
defer e.mu.Unlock()
|
||||
out := make([]string, len(e.closedSessionIDs))
|
||||
copy(out, e.closedSessionIDs)
|
||||
return out
|
||||
}
|
||||
|
||||
func TestManagerRegisterExecutorClosesReplacedExecutionSessions(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
manager := NewManager(nil, nil, nil)
|
||||
replaced := &replaceAwareExecutor{id: "codex"}
|
||||
current := &replaceAwareExecutor{id: "codex"}
|
||||
|
||||
manager.RegisterExecutor(replaced)
|
||||
manager.RegisterExecutor(current)
|
||||
|
||||
closed := replaced.ClosedSessionIDs()
|
||||
if len(closed) != 1 {
|
||||
t.Fatalf("expected replaced executor close calls = 1, got %d", len(closed))
|
||||
}
|
||||
if closed[0] != CloseAllExecutionSessionsID {
|
||||
t.Fatalf("expected close marker %q, got %q", CloseAllExecutionSessionsID, closed[0])
|
||||
}
|
||||
if len(current.ClosedSessionIDs()) != 0 {
|
||||
t.Fatalf("expected current executor to stay open")
|
||||
}
|
||||
}
|
||||
|
||||
func TestManagerExecutorReturnsRegisteredExecutor(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
manager := NewManager(nil, nil, nil)
|
||||
current := &replaceAwareExecutor{id: "codex"}
|
||||
manager.RegisterExecutor(current)
|
||||
|
||||
resolved, okResolved := manager.Executor("CODEX")
|
||||
if !okResolved {
|
||||
t.Fatal("expected registered executor to be found")
|
||||
}
|
||||
if resolved != current {
|
||||
t.Fatal("expected resolved executor to match registered executor")
|
||||
}
|
||||
|
||||
_, okMissing := manager.Executor("unknown")
|
||||
if okMissing {
|
||||
t.Fatal("expected unknown provider lookup to fail")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user