- Added `adminRouter` for handling profile management, including listing, upserting, and updating statuses. - Introduced `BuildRunner` interface and `PnpmBuildRunner` class for executing build commands. - Created `GatewayOrchestrator` to manage profile states, reconcile processes, and handle build queues. - Implemented `Pm2ProcessManager` for managing processes using PM2. - Developed `GatewayProfileRepository` for interacting with the database to manage profiles. - Added utility functions for resolving workspace roots and managing process definitions. - Included tests for profile reconciliation logic.
42 lines
1.3 KiB
TypeScript
42 lines
1.3 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
|
|
import { planProfileReconcile } from '../src/orchestrator/gatewayOrchestrator.js';
|
|
|
|
describe('planProfileReconcile', () => {
|
|
it('starts missing processes for running profiles', () => {
|
|
expect(
|
|
planProfileReconcile('RUNNING', {
|
|
apiRunning: true,
|
|
daemonRunning: false,
|
|
})
|
|
).toEqual({ shouldStart: true, shouldStop: false });
|
|
});
|
|
|
|
it('does nothing when running profile is healthy', () => {
|
|
expect(
|
|
planProfileReconcile('RUNNING', {
|
|
apiRunning: true,
|
|
daemonRunning: true,
|
|
})
|
|
).toEqual({ shouldStart: false, shouldStop: false });
|
|
});
|
|
|
|
it('stops processes for non-running profiles', () => {
|
|
expect(
|
|
planProfileReconcile('STOPPED', {
|
|
apiRunning: false,
|
|
daemonRunning: true,
|
|
})
|
|
).toEqual({ shouldStart: false, shouldStop: true });
|
|
});
|
|
|
|
it('keeps reserved profiles off', () => {
|
|
expect(
|
|
planProfileReconcile('RESERVED', {
|
|
apiRunning: false,
|
|
daemonRunning: false,
|
|
})
|
|
).toEqual({ shouldStart: false, shouldStop: false });
|
|
});
|
|
});
|