diff options
| author | jerop <[email protected]> | 2025-06-11 16:50:24 +0000 |
|---|---|---|
| committer | Jerop Kipruto <[email protected]> | 2025-06-11 13:24:41 -0400 |
| commit | d96af8bacd84d065310dddb49abb7561c4a7b059 (patch) | |
| tree | 7315ef5f5475ad38f1435aaea6864ee362fb2143 /packages/core/src/telemetry/metrics.test.ts | |
| parent | 9c5b5ff82337cccdae59c0f8c11cf47793e7b37d (diff) | |
refactor(telemetry): pass config object to telemetry functions
This commit refactors the telemetry system to pass a object to various logging and metrics functions. This change centralizes configuration management within the telemetry system, making it more modular and easier to maintain.
The constructor and various tool execution functions have been updated to accept the object, which is then passed down to the telemetry functions. This eliminates the need to pass individual configuration values, such as , through multiple layers of the application.
Diffstat (limited to 'packages/core/src/telemetry/metrics.test.ts')
| -rw-r--r-- | packages/core/src/telemetry/metrics.test.ts | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/packages/core/src/telemetry/metrics.test.ts b/packages/core/src/telemetry/metrics.test.ts index b7864131..7e24b9ad 100644 --- a/packages/core/src/telemetry/metrics.test.ts +++ b/packages/core/src/telemetry/metrics.test.ts @@ -7,6 +7,7 @@ import { describe, it, expect, vi, beforeEach, type Mock } from 'vitest'; import { Counter, Meter, metrics } from '@opentelemetry/api'; import { initializeMetrics, recordTokenUsageMetrics } from './metrics.js'; +import { Config } from '../config/config.js'; const mockCounter = { add: vi.fn(), @@ -33,51 +34,61 @@ describe('Telemetry Metrics', () => { }); describe('recordTokenUsageMetrics', () => { + const mockConfig = { + getSessionId: () => 'test-session-id', + } as unknown as Config; + it('should not record metrics if not initialized', () => { - recordTokenUsageMetrics('gemini-pro', 100, 'input'); + recordTokenUsageMetrics(mockConfig, 'gemini-pro', 100, 'input'); expect(mockCounter.add).not.toHaveBeenCalled(); }); it('should record token usage with the correct attributes', () => { - initializeMetrics(); - recordTokenUsageMetrics('gemini-pro', 100, 'input'); + initializeMetrics(mockConfig); + recordTokenUsageMetrics(mockConfig, 'gemini-pro', 100, 'input'); expect(mockCounter.add).toHaveBeenCalledWith(100, { + 'session.id': 'test-session-id', model: 'gemini-pro', type: 'input', }); }); it('should record token usage for different types', () => { - initializeMetrics(); - recordTokenUsageMetrics('gemini-pro', 50, 'output'); + initializeMetrics(mockConfig); + recordTokenUsageMetrics(mockConfig, 'gemini-pro', 50, 'output'); expect(mockCounter.add).toHaveBeenCalledWith(50, { + 'session.id': 'test-session-id', model: 'gemini-pro', type: 'output', }); - recordTokenUsageMetrics('gemini-pro', 25, 'thought'); + recordTokenUsageMetrics(mockConfig, 'gemini-pro', 25, 'thought'); expect(mockCounter.add).toHaveBeenCalledWith(25, { + 'session.id': 'test-session-id', model: 'gemini-pro', type: 'thought', }); - recordTokenUsageMetrics('gemini-pro', 75, 'cache'); + recordTokenUsageMetrics(mockConfig, 'gemini-pro', 75, 'cache'); expect(mockCounter.add).toHaveBeenCalledWith(75, { + 'session.id': 'test-session-id', model: 'gemini-pro', type: 'cache', }); - recordTokenUsageMetrics('gemini-pro', 125, 'tool'); + recordTokenUsageMetrics(mockConfig, 'gemini-pro', 125, 'tool'); expect(mockCounter.add).toHaveBeenCalledWith(125, { + 'session.id': 'test-session-id', model: 'gemini-pro', type: 'tool', }); }); it('should handle different models', () => { - initializeMetrics(); - recordTokenUsageMetrics('gemini-ultra', 200, 'input'); + initializeMetrics(mockConfig); + recordTokenUsageMetrics(mockConfig, 'gemini-ultra', 200, 'input'); expect(mockCounter.add).toHaveBeenCalledWith(200, { + 'session.id': 'test-session-id', model: 'gemini-ultra', type: 'input', }); |
