|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'; |
|
|
import { |
|
|
initializeTelemetry, |
|
|
shutdownTelemetry, |
|
|
isTelemetrySdkInitialized, |
|
|
} from './sdk.js'; |
|
|
import { Config } from '../config/config.js'; |
|
|
import { NodeSDK } from '@opentelemetry/sdk-node'; |
|
|
|
|
|
vi.mock('@opentelemetry/sdk-node'); |
|
|
vi.mock('../config/config.js'); |
|
|
|
|
|
describe('telemetry', () => { |
|
|
let mockConfig: Config; |
|
|
let mockNodeSdk: NodeSDK; |
|
|
|
|
|
beforeEach(() => { |
|
|
vi.resetAllMocks(); |
|
|
|
|
|
mockConfig = new Config({ |
|
|
sessionId: 'test-session-id', |
|
|
model: 'test-model', |
|
|
targetDir: '/test/dir', |
|
|
debugMode: false, |
|
|
cwd: '/test/dir', |
|
|
}); |
|
|
vi.spyOn(mockConfig, 'getTelemetryEnabled').mockReturnValue(true); |
|
|
vi.spyOn(mockConfig, 'getTelemetryOtlpEndpoint').mockReturnValue( |
|
|
'http://localhost:4317', |
|
|
); |
|
|
vi.spyOn(mockConfig, 'getSessionId').mockReturnValue('test-session-id'); |
|
|
mockNodeSdk = { |
|
|
start: vi.fn(), |
|
|
shutdown: vi.fn().mockResolvedValue(undefined), |
|
|
} as unknown as NodeSDK; |
|
|
vi.mocked(NodeSDK).mockImplementation(() => mockNodeSdk); |
|
|
}); |
|
|
|
|
|
afterEach(async () => { |
|
|
|
|
|
if (isTelemetrySdkInitialized()) { |
|
|
await shutdownTelemetry(); |
|
|
} |
|
|
}); |
|
|
|
|
|
it('should initialize the telemetry service', () => { |
|
|
initializeTelemetry(mockConfig); |
|
|
expect(NodeSDK).toHaveBeenCalled(); |
|
|
expect(mockNodeSdk.start).toHaveBeenCalled(); |
|
|
}); |
|
|
|
|
|
it('should shutdown the telemetry service', async () => { |
|
|
initializeTelemetry(mockConfig); |
|
|
await shutdownTelemetry(); |
|
|
|
|
|
expect(mockNodeSdk.shutdown).toHaveBeenCalled(); |
|
|
}); |
|
|
}); |
|
|
|