mirror of
https://github.com/Unleash/unleash.git
synced 2025-01-25 00:07:47 +01:00
fc455811f8
Adds a new way of handling usage metrics where we push it directly to the database and performs aggregation on the fly. All metrics are aggregated in to buckets of hours. We will for now store metrics for the 48 hours with the following dimensions: - featureName - projectName - envrionment - yes (the actual count) - no (the actual count)
49 lines
1.2 KiB
TypeScript
49 lines
1.2 KiB
TypeScript
import { setupApp } from '../../helpers/test-helper';
|
|
import metricsExample from '../../../examples/client-metrics.json';
|
|
import dbInit from '../../helpers/database-init';
|
|
import getLogger from '../../../fixtures/no-logger';
|
|
|
|
let app;
|
|
let db;
|
|
|
|
beforeAll(async () => {
|
|
db = await dbInit('metrics_api_client', getLogger);
|
|
app = await setupApp(db.stores);
|
|
});
|
|
|
|
afterAll(async () => {
|
|
await app.destroy();
|
|
await db.destroy();
|
|
});
|
|
|
|
test('should be possible to send metrics', async () => {
|
|
return app.request
|
|
.post('/api/client/metrics')
|
|
.send(metricsExample)
|
|
.expect(202);
|
|
});
|
|
|
|
test('should require valid send metrics', async () => {
|
|
return app.request
|
|
.post('/api/client/metrics')
|
|
.send({
|
|
appName: 'test',
|
|
})
|
|
.expect(400);
|
|
});
|
|
|
|
test('should accept empty client metrics', async () => {
|
|
return app.request
|
|
.post('/api/client/metrics')
|
|
.send({
|
|
appName: 'demo',
|
|
instanceId: '1',
|
|
bucket: {
|
|
start: Date.now(),
|
|
stop: Date.now(),
|
|
toggles: {},
|
|
},
|
|
})
|
|
.expect(202);
|
|
});
|