mirror of
https://github.com/tiennm99/ccs.git
synced 2026-10-13 14:15:56 +00:00
Merge pull request #1074 from kaitranntt/kai/feat/1073-adaptive-proxy-ports
feat(proxy): add adaptive local port selection for OpenAI-compatible profiles
This commit is contained in:
11 files changed
+429
-111
No files matched your search
@@ -3,7 +3,11 @@ import * as fs from 'fs';
|
||||
import * as os from 'os';
|
||||
import * as path from 'path';
|
||||
import { mutateUnifiedConfig } from '../../../src/config/unified-config-loader';
|
||||
import { resolveOpenAICompatProxyPreferredPort } from '../../../src/proxy/proxy-port-resolver';
|
||||
import {
|
||||
resolveOpenAICompatProxyAdaptivePort,
|
||||
resolveOpenAICompatProxyPortPreference,
|
||||
resolveOpenAICompatProxyPreferredPort,
|
||||
} from '../../../src/proxy/proxy-port-resolver';
|
||||
|
||||
let originalCcsHome: string | undefined;
|
||||
let tempDir: string;
|
||||
@@ -36,7 +40,69 @@ describe('resolveOpenAICompatProxyPreferredPort', () => {
|
||||
expect(resolveOpenAICompatProxyPreferredPort('ccgm')).toBe(3461);
|
||||
});
|
||||
|
||||
it('falls back to the shared default port when no profile mapping exists', () => {
|
||||
expect(resolveOpenAICompatProxyPreferredPort('ccg')).toBe(3456);
|
||||
it('returns a configured shared proxy port as a shared preference', () => {
|
||||
mutateUnifiedConfig((config) => {
|
||||
config.proxy = {
|
||||
...(config.proxy ?? {}),
|
||||
port: 45_000,
|
||||
profile_ports: {},
|
||||
};
|
||||
});
|
||||
|
||||
expect(resolveOpenAICompatProxyPortPreference('ccg')).toEqual({
|
||||
port: 45_000,
|
||||
source: 'shared',
|
||||
});
|
||||
});
|
||||
|
||||
it('treats legacy shared 3456 as an adaptive default on read', () => {
|
||||
mutateUnifiedConfig((config) => {
|
||||
config.proxy = {
|
||||
...(config.proxy ?? {}),
|
||||
port: 3456,
|
||||
profile_ports: {},
|
||||
};
|
||||
});
|
||||
|
||||
expect(resolveOpenAICompatProxyPortPreference('ccg')).toEqual({
|
||||
port: resolveOpenAICompatProxyAdaptivePort('ccg'),
|
||||
source: 'adaptive',
|
||||
});
|
||||
});
|
||||
|
||||
it('preserves an explicit shared 43456 port when the user configures it', () => {
|
||||
mutateUnifiedConfig((config) => {
|
||||
config.proxy = {
|
||||
...(config.proxy ?? {}),
|
||||
port: 43_456,
|
||||
profile_ports: {},
|
||||
};
|
||||
});
|
||||
|
||||
expect(resolveOpenAICompatProxyPortPreference('ccg')).toEqual({
|
||||
port: 43_456,
|
||||
source: 'shared',
|
||||
});
|
||||
});
|
||||
|
||||
it('falls back to an adaptive shared default when no profile mapping exists', () => {
|
||||
const portPreference = resolveOpenAICompatProxyPortPreference('ccg');
|
||||
|
||||
expect(portPreference).toEqual({
|
||||
port: resolveOpenAICompatProxyAdaptivePort('ccg'),
|
||||
source: 'adaptive',
|
||||
});
|
||||
expect(resolveOpenAICompatProxyPreferredPort('ccg')).not.toBe(3456);
|
||||
});
|
||||
|
||||
it('derives a stable adaptive default that does not keep all profiles on 3456', () => {
|
||||
const first = resolveOpenAICompatProxyPreferredPort('ccg');
|
||||
const second = resolveOpenAICompatProxyPreferredPort('ccg');
|
||||
const other = resolveOpenAICompatProxyPreferredPort('ccgm');
|
||||
|
||||
expect(first).toBe(second);
|
||||
expect(first).not.toBe(3456);
|
||||
expect(other).not.toBe(3456);
|
||||
expect(other).not.toBe(first);
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user