mirror of
https://github.com/grafana/grafana.git
synced 2025-09-21 14:02:52 +08:00

* Add loadtest which authenticates with API key - Edit load tests to assign the orgId in the default function, as the setup function is only called once for all VUs and therefore the change is not persisted to each VU. - Remove side effect from orgId setup function and explicitly set orgId in setup client * sort semicolons, whitespace
79 lines
2.4 KiB
JavaScript
79 lines
2.4 KiB
JavaScript
import { sleep, check, group } from 'k6';
|
|
import { createClient, createBasicAuthClient } from './modules/client.js';
|
|
import { createTestOrgIfNotExists, createTestdataDatasourceIfNotExists } from './modules/util.js';
|
|
|
|
export let options = {
|
|
noCookiesReset: true,
|
|
};
|
|
|
|
let endpoint = __ENV.URL || 'http://localhost:3000';
|
|
const slowQuery = __ENV.SLOW_QUERY && __ENV.SLOW_QUERY.length > 0 ? parseInt(__ENV.SLOW_QUERY, 10) : 5;
|
|
const client = createClient(endpoint);
|
|
|
|
export const setup = () => {
|
|
const basicAuthClient = createBasicAuthClient(endpoint, 'admin', 'admin');
|
|
const orgId = createTestOrgIfNotExists(basicAuthClient);
|
|
basicAuthClient.withOrgId(orgId);
|
|
const datasourceId = createTestdataDatasourceIfNotExists(basicAuthClient);
|
|
return {
|
|
orgId,
|
|
datasourceId,
|
|
};
|
|
};
|
|
|
|
export default data => {
|
|
client.withOrgId(data.orgId);
|
|
|
|
group(`user auth token slow test (queries between 1 and ${slowQuery} seconds)`, () => {
|
|
if (__ITER === 0) {
|
|
group('user authenticates through ui with username and password', () => {
|
|
let res = client.ui.login('admin', 'admin');
|
|
|
|
check(res, {
|
|
'response status is 200': r => r.status === 200,
|
|
"response has cookie 'grafana_session' with 32 characters": r =>
|
|
r.cookies.grafana_session[0].value.length === 32,
|
|
});
|
|
});
|
|
}
|
|
|
|
if (__ITER !== 0) {
|
|
group('batch tsdb requests', () => {
|
|
const batchCount = 20;
|
|
const requests = [];
|
|
const payload = {
|
|
from: '1547765247624',
|
|
to: '1547768847624',
|
|
queries: [
|
|
{
|
|
refId: 'A',
|
|
scenarioId: 'slow_query',
|
|
stringInput: `${Math.floor(Math.random() * slowQuery) + 1}s`,
|
|
intervalMs: 10000,
|
|
maxDataPoints: 433,
|
|
datasourceId: data.datasourceId,
|
|
},
|
|
],
|
|
};
|
|
|
|
requests.push({ method: 'GET', url: '/api/annotations?dashboardId=2074&from=1548078832772&to=1548082432772' });
|
|
|
|
for (let n = 0; n < batchCount; n++) {
|
|
requests.push({ method: 'POST', url: '/api/tsdb/query', body: payload });
|
|
}
|
|
|
|
let responses = client.batch(requests);
|
|
for (let n = 0; n < batchCount; n++) {
|
|
check(responses[n], {
|
|
'response status is 200': r => r.status === 200,
|
|
});
|
|
}
|
|
});
|
|
}
|
|
});
|
|
|
|
sleep(5);
|
|
};
|
|
|
|
export const teardown = data => {};
|