mirror of https://github.com/grafana/grafana
CLI: Search perf test data (#17422)
* Search perf testdata cli task * Test index * REmoved test indexpull/17462/head
parent
606825703f
commit
ad3f9c6663
@ -0,0 +1,117 @@ |
||||
import axios from 'axios'; |
||||
import _ from 'lodash'; |
||||
import { Task, TaskRunner } from './task'; |
||||
|
||||
interface SearchTestDataSetupOptions { |
||||
count: number; |
||||
} |
||||
|
||||
const client = axios.create({ |
||||
baseURL: 'http://localhost:3000/api', |
||||
auth: { |
||||
username: 'admin', |
||||
password: 'admin2', |
||||
}, |
||||
}); |
||||
|
||||
export async function getUser(user): Promise<any> { |
||||
console.log('Creating user ' + user.name); |
||||
const search = await client.get('/users/search', { |
||||
params: { query: user.login }, |
||||
}); |
||||
|
||||
if (search.data.totalCount === 1) { |
||||
user.id = search.data.users[0].id; |
||||
return user; |
||||
} |
||||
|
||||
const rsp = await client.post('/admin/users', user); |
||||
user.id = rsp.data.id; |
||||
return user; |
||||
} |
||||
|
||||
export async function getTeam(team: any): Promise<any> { |
||||
// delete if exists
|
||||
const teams = await client.get('/teams/search'); |
||||
for (const existing of teams.data.teams) { |
||||
if (existing.name === team.name) { |
||||
console.log('Team exists, deleting'); |
||||
await client.delete('/teams/' + existing.id); |
||||
} |
||||
} |
||||
|
||||
console.log('Creating team ' + team.name); |
||||
const teamRsp = await client.post(`/teams`, team); |
||||
team.id = teamRsp.data.teamId; |
||||
return team; |
||||
} |
||||
|
||||
export async function addToTeam(team: any, user: any): Promise<any> { |
||||
const members = await client.get(`/teams/${team.id}/members`); |
||||
console.log(`Adding user ${user.name} to team ${team.name}`); |
||||
await client.post(`/teams/${team.id}/members`, { userId: user.id }); |
||||
} |
||||
|
||||
export async function setDashboardAcl(dashboardId: any, aclList: any) { |
||||
console.log('Setting Dashboard ACL ' + dashboardId); |
||||
await client.post(`/dashboards/id/${dashboardId}/permissions`, { items: aclList }); |
||||
} |
||||
|
||||
const searchTestDataSetupRunnner: TaskRunner<SearchTestDataSetupOptions> = async ({ count }) => { |
||||
const user1 = await getUser({ |
||||
name: 'searchTestUser1', |
||||
email: 'searchTestUser@team.com', |
||||
login: 'searchTestUser1', |
||||
password: '12345', |
||||
}); |
||||
|
||||
const team1 = await getTeam({ name: 'searchTestTeam1', email: 'searchtestdata@team.com' }); |
||||
addToTeam(team1, user1); |
||||
|
||||
// create or update folder
|
||||
const folder: any = { |
||||
uid: 'search-test-data', |
||||
title: 'Search test data folder', |
||||
version: 1, |
||||
}; |
||||
|
||||
try { |
||||
await client.delete(`/folders/${folder.uid}`); |
||||
} catch (err) {} |
||||
|
||||
console.log('Creating folder'); |
||||
|
||||
const rsp = await client.post(`/folders`, folder); |
||||
folder.id = rsp.data.id; |
||||
folder.url = rsp.data.url; |
||||
|
||||
await setDashboardAcl(folder.id, []); |
||||
|
||||
console.log('Creating dashboards'); |
||||
|
||||
const dashboards: any = []; |
||||
|
||||
for (let i = 0; i < count; i++) { |
||||
const dashboard: any = { |
||||
uid: 'search-test-dash-' + i.toString().padStart(5, '0'), |
||||
title: 'Search test dash ' + i.toString().padStart(5, '0'), |
||||
}; |
||||
|
||||
const rsp = await client.post(`/dashboards/db`, { |
||||
dashboard: dashboard, |
||||
folderId: folder.id, |
||||
overwrite: true, |
||||
}); |
||||
|
||||
dashboard.id = rsp.data.id; |
||||
dashboard.url = rsp.data.url; |
||||
|
||||
console.log('Created dashboard ' + dashboard.title); |
||||
dashboards.push(dashboard); |
||||
await setDashboardAcl(dashboard.id, [{ userId: 0, teamId: team1.id, permission: 4 }]); |
||||
} |
||||
}; |
||||
|
||||
export const searchTestDataSetupTask = new Task<SearchTestDataSetupOptions>(); |
||||
searchTestDataSetupTask.setName('Search test data setup'); |
||||
searchTestDataSetupTask.setRunner(searchTestDataSetupRunnner); |
Loading…
Reference in new issue