Files
orca/cloud/apps/relay/src/config.test.ts
T
Jinwoo Hong 3eec77c11a chore(cloud): add the relay fence broker, ops console, Terraform root, scripts, and 24 cloud-* workflows (#18413)
Phase 6 of the relay split: the relay's deploy/operate surface moves under cloud/ with 24 cloud-* workflows gated on ORCA_CLOUD_OPERATIONS_ENABLED, the Cloud SQL rollout lease action, the relay Terraform root (dual-accept identities for both repositories), scripts, docs, CODEOWNERS, and a terraform validate job in Cloud Verify.
2026-09-03 06:55:14 -04:00

265 lines
10 KiB
TypeScript

import { describe, expect, it } from 'vitest'
import {
loadRelayConfig,
RELAY_CELL_CONNECTION_HARD_CAP,
RELAY_DATABASE_POOL_MAX,
RELAY_DIRECTOR_DATABASE_POOL_MAX,
RELAY_MAX_CELL_CAPACITY_REQUESTS,
RELAY_PUBLIC_RESOLVE_CONCURRENCY,
RELAY_PUBLIC_RESOLVE_WAIT_MS
} from './config.js'
function cellEnvironment(capacity: number): NodeJS.ProcessEnv {
return {
ORCA_RELAY_PUBLIC_URL: 'https://c1.relay.example.com',
ORCA_RELAY_CELL_URL: 'https://c1.relay.example.com',
ORCA_RELAY_AUTH_ISSUER: 'https://auth.example.com',
ORCA_RELAY_JWKS_URL: 'https://auth.example.com/.well-known/jwks.json',
ORCA_RELAY_ASSIGNMENT_SIGNING_KEY: 'assignment-key-with-at-least-thirty-two-bytes',
ORCA_RELAY_ROLE: 'cell',
ORCA_RELAY_CELL_ID: 'gce-c1',
ORCA_RELAY_CELL_CAPACITY: String(capacity),
ORCA_RELAY_ADMIN_AUDIENCE: 'https://relay.example.com/v1/admin/drain',
ORCA_RELAY_DEPLOY_SERVICE_ACCOUNT: 'deploy@example.iam.gserviceaccount.com'
}
}
describe('GCE relay capacity configuration', () => {
it('requires distinct dedicated admin identities and accepts omitted values', () => {
const env = cellEnvironment(4_000)
expect(loadRelayConfig(env)).toMatchObject({
capacityServiceAccount: undefined,
asiaProofServiceAccount: undefined,
monitorServiceAccount: undefined,
fenceServiceAccount: undefined
})
env.ORCA_RELAY_MONITOR_SERVICE_ACCOUNT = ''
env.ORCA_RELAY_CAPACITY_SERVICE_ACCOUNT = 'capacity@example.iam.gserviceaccount.com'
env.ORCA_RELAY_ASIA_PROOF_SERVICE_ACCOUNT = 'proof@example.iam.gserviceaccount.com'
env.ORCA_RELAY_FENCE_SERVICE_ACCOUNT = 'fence@example.iam.gserviceaccount.com'
expect(loadRelayConfig(env)).toMatchObject({
capacityServiceAccount: 'capacity@example.iam.gserviceaccount.com',
asiaProofServiceAccount: 'proof@example.iam.gserviceaccount.com',
monitorServiceAccount: undefined,
fenceServiceAccount: 'fence@example.iam.gserviceaccount.com'
})
env.ORCA_RELAY_MONITOR_SERVICE_ACCOUNT = env.ORCA_RELAY_DEPLOY_SERVICE_ACCOUNT
expect(() => loadRelayConfig(env)).toThrow('relay admin service accounts must be distinct')
env.ORCA_RELAY_MONITOR_SERVICE_ACCOUNT = undefined
env.ORCA_RELAY_ASIA_PROOF_SERVICE_ACCOUNT = env.ORCA_RELAY_CAPACITY_SERVICE_ACCOUNT
expect(() => loadRelayConfig(env)).toThrow('relay admin service accounts must be distinct')
})
it('requires a distinct paired identity and exact audience for regional host drain', () => {
const env = cellEnvironment(4_000)
env.ORCA_RELAY_REHOME_DIRECTOR_SERVICE_ACCOUNT =
'relay-director@example.iam.gserviceaccount.com'
expect(() => loadRelayConfig(env)).toThrow(
'relay rehome identity and audience must be configured together'
)
env.ORCA_RELAY_REHOME_AUDIENCE = 'https://relay.example.com/v1/admin/host-drain'
expect(loadRelayConfig(env)).toMatchObject({
rehomeDirectorServiceAccount: 'relay-director@example.iam.gserviceaccount.com',
rehomeAudience: 'https://relay.example.com/v1/admin/host-drain'
})
env.ORCA_RELAY_REHOME_AUDIENCE = 'https://relay.example.com/v1/admin/drain'
expect(() => loadRelayConfig(env)).toThrow(
'relay rehome audience must target the host drain route'
)
env.ORCA_RELAY_REHOME_AUDIENCE = 'https://relay.example.com/v1/admin/host-drain'
env.ORCA_RELAY_RUNTIME_SERVICE_ACCOUNT =
env.ORCA_RELAY_REHOME_DIRECTOR_SERVICE_ACCOUNT
expect(() => loadRelayConfig(env)).toThrow(
'relay rehome director identity must differ from the cell runtime identity'
)
})
it('accepts a measured capacity above the Cloud Run request ceiling', () => {
expect(loadRelayConfig(cellEnvironment(4_000)).cells[0]?.capacityRequests).toBe(4_000)
})
it('retains a finite process-wide capacity bound', () => {
expect(() => loadRelayConfig(cellEnvironment(RELAY_MAX_CELL_CAPACITY_REQUESTS + 1))).toThrow()
})
it('keeps legacy cells uncapped and requires a supported hard-cap pair', () => {
const env = cellEnvironment(4_000)
expect(loadRelayConfig(env)).toMatchObject({
connectionHardCap: undefined,
connectionUnobservedBound: undefined
})
env.ORCA_RELAY_CELL_CONNECTION_HARD_CAP = String(RELAY_CELL_CONNECTION_HARD_CAP)
expect(() => loadRelayConfig(env)).toThrow(
'connection hard cap and unobserved bound must be configured together'
)
env.ORCA_RELAY_CELL_CONNECTION_UNOBSERVED_BOUND = '60'
expect(loadRelayConfig(env)).toMatchObject({
connectionHardCap: 600,
connectionUnobservedBound: 60
})
env.ORCA_RELAY_CELL_CONNECTION_HARD_CAP = '599'
expect(() => loadRelayConfig(env)).toThrow()
env.ORCA_RELAY_CELL_CONNECTION_HARD_CAP = '600'
env.ORCA_RELAY_CELL_CONNECTION_UNOBSERVED_BOUND = '500'
expect(() => loadRelayConfig(env)).toThrow()
env.ORCA_RELAY_CELL_CONNECTION_UNOBSERVED_BOUND = '600'
expect(() => loadRelayConfig(env)).toThrow()
env.ORCA_RELAY_CELL_CONNECTION_HARD_CAP = '1000'
env.ORCA_RELAY_CELL_CONNECTION_UNOBSERVED_BOUND = '60'
expect(loadRelayConfig(env)).toMatchObject({
connectionHardCap: 1_000,
connectionUnobservedBound: 60
})
env.ORCA_RELAY_CELL_CONNECTION_UNOBSERVED_BOUND = '900'
expect(() => loadRelayConfig(env)).toThrow()
})
it('accepts hard-cap metadata in director cell inventory', () => {
const env = cellEnvironment(4_000)
env.ORCA_RELAY_ROLE = 'director'
env.ORCA_RELAY_PUBLIC_URL = 'https://relay.example.com'
env.ORCA_RELAY_CELL_URL = 'https://relay.example.com'
env.ORCA_RELAY_CELLS_JSON = JSON.stringify([
{
id: 'gce-c7',
url: 'https://c7.relay.example.com',
capacityRequests: 4_000,
connectionHardCap: 1_000,
connectionUnobservedBound: 60
}
])
expect(loadRelayConfig(env).cells[0]).toMatchObject({
connectionHardCap: 1_000,
connectionUnobservedBound: 60
})
})
it('accepts mixed 600- and 1000-cap director inventory', () => {
const env = cellEnvironment(4_000)
env.ORCA_RELAY_ROLE = 'director'
env.ORCA_RELAY_PUBLIC_URL = 'https://relay.example.com'
env.ORCA_RELAY_CELL_URL = 'https://relay.example.com'
env.ORCA_RELAY_CELLS_JSON = JSON.stringify([
{
id: 'gce-c1',
url: 'https://c1.relay.example.com',
capacityRequests: 4_000,
connectionHardCap: 600,
connectionUnobservedBound: 60
},
{
id: 'gce-c2',
url: 'https://c2.relay.example.com',
capacityRequests: 4_000,
connectionHardCap: 1_000,
connectionUnobservedBound: 60
}
])
expect(loadRelayConfig(env).cells.map((cell) => cell.connectionHardCap)).toEqual([
600, 1_000
])
})
it('accepts only a canonical served image digest', () => {
const env = cellEnvironment(4_000)
env.ORCA_RELAY_IMAGE_DIGEST = `sha256:${'a'.repeat(64)}`
expect(loadRelayConfig(env).imageDigest).toBe(env.ORCA_RELAY_IMAGE_DIGEST)
env.ORCA_RELAY_IMAGE_DIGEST = 'relay:latest'
expect(() => loadRelayConfig(env)).toThrow()
})
it('accepts a statically declared candidate that starts disabled', () => {
const env = cellEnvironment(4_000)
env.ORCA_RELAY_ROLE = 'director'
env.ORCA_RELAY_PUBLIC_URL = 'https://relay.example.com'
env.ORCA_RELAY_CELL_URL = 'https://relay.example.com'
env.ORCA_RELAY_CELLS_JSON = JSON.stringify([
{
id: 'gce-candidate',
url: 'https://candidate.relay.example.com',
capacityRequests: 4_000,
region: 'us-central1',
initiallyEnabled: false
}
])
expect(loadRelayConfig(env).cells).toEqual([
{
id: 'gce-candidate',
url: 'https://candidate.relay.example.com',
capacityRequests: 4_000,
region: 'us-central1',
initiallyEnabled: false
}
])
})
it('reserves a smaller PostgreSQL connection budget for directors', () => {
const cellEnv = cellEnvironment(4_000)
expect(loadRelayConfig(cellEnv).databasePoolMax).toBe(RELAY_DATABASE_POOL_MAX)
const directorEnv: NodeJS.ProcessEnv = { ...cellEnv, ORCA_RELAY_ROLE: 'director' }
directorEnv.ORCA_RELAY_CELLS_JSON = JSON.stringify([
{
id: 'gce-c1',
url: 'https://c1.relay.example.com',
capacityRequests: 4_000
}
])
expect(loadRelayConfig(directorEnv).databasePoolMax).toBe(RELAY_DIRECTOR_DATABASE_POOL_MAX)
directorEnv.ORCA_RELAY_DATABASE_POOL_MAX = '7'
expect(loadRelayConfig(directorEnv).databasePoolMax).toBe(7)
})
it('defaults to bounded public assignment admission and supports an emergency stop', () => {
const env = cellEnvironment(4_000)
expect(loadRelayConfig(env)).toMatchObject({
publicAssignmentsEnabled: true,
regionalPlacementEnabled: true,
publicAssignmentConcurrency: 2,
publicAssignmentQueueMax: 128,
publicAssignmentWaitMs: 4_000,
publicResolveConcurrency: RELAY_PUBLIC_RESOLVE_CONCURRENCY,
publicResolveWaitMs: RELAY_PUBLIC_RESOLVE_WAIT_MS,
publicAssignmentRetryAfterSeconds: 5
})
env.ORCA_RELAY_PUBLIC_ASSIGNMENTS_ENABLED = 'false'
env.ORCA_RELAY_REGIONAL_PLACEMENT_ENABLED = 'false'
env.ORCA_RELAY_PUBLIC_ASSIGNMENT_CONCURRENCY = '4'
env.ORCA_RELAY_PUBLIC_ASSIGNMENT_QUEUE_MAX = '256'
env.ORCA_RELAY_PUBLIC_ASSIGNMENT_WAIT_MS = '8000'
env.ORCA_RELAY_PUBLIC_ASSIGNMENT_RETRY_AFTER_SECONDS = '30'
expect(loadRelayConfig(env)).toMatchObject({
publicAssignmentsEnabled: false,
regionalPlacementEnabled: false,
publicAssignmentConcurrency: 4,
publicAssignmentQueueMax: 256,
publicAssignmentWaitMs: 8_000,
publicResolveConcurrency: RELAY_PUBLIC_RESOLVE_CONCURRENCY,
publicResolveWaitMs: RELAY_PUBLIC_RESOLVE_WAIT_MS,
publicAssignmentRetryAfterSeconds: 30
})
})
it('fails closed when public request lanes exceed the director database pool', () => {
const env = cellEnvironment(4_000)
env.ORCA_RELAY_ROLE = 'director'
env.ORCA_RELAY_CELLS_JSON = JSON.stringify([
{
id: 'gce-c1',
url: 'https://c1.relay.example.com',
capacityRequests: 4_000
}
])
env.ORCA_RELAY_DATABASE_POOL_MAX = '2'
expect(() => loadRelayConfig(env)).toThrow(
'public relay admission must leave database pool headroom'
)
})
})