Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 6 additions & 5 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,12 @@ tofu/main/*/*config

# Others
scripts/utils/*.txt
scripts/utils/export-metrics/metrics*
scripts/utils/export-metrics/chunks_head
scripts/utils/export-metrics/wal
scripts/utils/export-metrics/queries.active
scripts/utils/export-metrics/*.tar.gz
chunks_head
wal
queries.active
*.tar
*.tar.gz
.env

# Binaries
/dartboard
Expand Down
10 changes: 10 additions & 0 deletions k6/generic/generic_utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -137,3 +137,13 @@ export function getPathBasename(filePath) {
// Extract the substring after the last slash
return filePath.substring(lastSlashIndex + 1);
}

export function getRandomElements(arr, count) {
const shuffled = [...arr];
for (let i = shuffled.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[shuffled[i], shuffled[j]] = [shuffled[j], shuffled[i]];
}
return shuffled.slice(0, count);
}

14 changes: 10 additions & 4 deletions k6/projects/project_utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,22 @@ export const putProjectTag = { url: `/v3/projects/<Project ID>` }


export function cleanupMatchingProjects(baseUrl, cookies, namePrefix) {
let res = http.get(`${baseUrl}/${baseProjectsPath}`, { cookies: cookies })
let res = http.get(`${baseUrl}/${normanProjectsPath}`, {
headers: {
accept: "application/json",
'content-type': "application/json",
},
cookies: cookies })
check(res, {
'/v1/management.cattle.io.projects returns status 200': (r) => r.status === 200,
'GET /v3/projects returns status 200': (r) => r.status === 200,
})
JSON.parse(res.body)["data"].filter(r => r["spec"]["displayName"].startsWith(namePrefix)).forEach(r => {
JSON.parse(res.body)["data"].filter(r => r["name"].startsWith(namePrefix)).forEach(r => {
res = http.del(`${baseUrl}/${normanProjectsPath}/${r["id"]}`, { cookies: cookies })
check(res, {
'DELETE /v3/projects returns status 200': (r) => r.status === 200,
})
})
return res
}

export function getProject(baseUrl, cookies, id) {
Expand Down Expand Up @@ -52,7 +58,7 @@ export function getNormanProjects(baseUrl, cookies) {
return { res: res, projectArray: projectArray }
}

export function createNormanProject(baseUrl, body, cookies) {
export function createNormanProject(baseUrl, cookies, body) {
const res = http.post(
`${baseUrl}/${normanProjectsPath}`,
body,
Expand Down
14 changes: 7 additions & 7 deletions k6/rancher/rancher_users_utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ export function setUserPreferences(baseUrl, cookies, userId, userPreferences) {
export function getPrincipalIds(baseUrl, cookies) {
const response = http.get(
`${baseUrl}/v1/management.cattle.io.users`,
{ cookies: cookies }
{ headers: { accept: 'application/json' }, cookies: cookies }
)
if (response.status !== 200) {
fail('could not list users')
Expand All @@ -64,7 +64,7 @@ export function getPrincipalIds(baseUrl, cookies) {
export function getPrincipalById(baseUrl, cookies, id) {
const response = http.get(
`${baseUrl}/v3/principals/${id}`,
{ cookies: cookies }
{ headers: { accept: 'application/json' }, cookies: cookies }
)
if (response.status !== 200) {
fail('could not get principal by ID')
Expand All @@ -82,7 +82,7 @@ export function getNormanUsers(baseUrl, params = null) {
export function getCurrentUserPrincipal(baseUrl, cookies) {
const response = http.get(
`${baseUrl}/v3/principals?me=true`,
{ cookies: cookies }
{ headers: { accept: 'application/json' }, cookies: cookies }
)
if (response.status !== 200) {
fail('could not get current User\'s Principal')
Expand All @@ -93,7 +93,7 @@ export function getCurrentUserPrincipal(baseUrl, cookies) {
export function getCurrentUserPrincipalId(baseUrl, cookies) {
const response = http.get(
`${baseUrl}/v3/users?me=true`,
{ cookies: cookies }
{ headers: { accept: 'application/json' }, cookies: cookies }
)
if (response.status !== 200) {
fail('could not get my user')
Expand All @@ -104,7 +104,7 @@ export function getCurrentUserPrincipalId(baseUrl, cookies) {
export function getClusterIds(baseUrl, cookies) {
const response = http.get(
`${baseUrl}/v1/management.cattle.io.clusters`,
{ cookies: cookies }
{ headers: { accept: 'application/json' }, cookies: cookies }
)
if (response.status !== 200) {
fail('could not list clusters')
Expand Down Expand Up @@ -146,15 +146,15 @@ export function getUsers(baseUrl, cookies) {
}

export function getUser(baseUrl, cookies, userId) {
const res = http.get(`${baseUrl}/v1/management.cattle.io.users/${userId}`, { cookies: cookies })
const res = http.get(`${baseUrl}/v1/management.cattle.io.users/${userId}`, { headers: { accept: 'application/json' }, cookies: cookies })
check(res, {
'/v1/management.cattle.io.users/ returns status 200': (r) => r.status === 200 || r.status === 204,
})
return res
}

export function deleteUser(baseUrl, cookies, userId) {
const res = http.del(`${baseUrl}/v3/users/${userId}`, { cookies: cookies })
const res = http.del(`${baseUrl}/v3/users/${userId}`, { headers: { accept: 'application/json' }, cookies: cookies })
check(res, {
'DELETE /v3/users returns status 200': (r) => r.status === 200 || r.status === 204,
})
Expand Down
49 changes: 41 additions & 8 deletions k6/rancher/rancher_utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,18 +10,23 @@ export function getCookies(baseUrl) {
}

export function login(baseUrl, cookies, username, password) {
const params = {
headers: {
accept: 'application/json',
'content-type': 'application/json; charset=UTF-8',
},
}

// Only add cookies if they exist and are not empty
if (cookies && Object.keys(cookies).length > 0) {
console.log("Using cookies, count:", Object.keys(cookies).length)
params.cookies = cookies
}
const response = http.post(
`${baseUrl}/v3-public/localProviders/local?action=login`,
JSON.stringify({ "description": "UI session", "responseType": "cookie", "username": username, "password": password }),
{
headers: {
accept: 'application/json',
'content-type': 'application/json; charset=UTF-8',
},
cookies: { cookies },
}
params
)
console.log("POST login: ", response.status);

check(response, {
'login works': (r) => r.status === 200 || r.status === 401,
Expand Down Expand Up @@ -372,6 +377,32 @@ export function createImportedCluster(baseUrl, cookies, name) {
})
}

export function getProvisioningClusters(baseUrl, cookies) {
const response = http.get(`${baseUrl}/v1/provisioning.cattle.io.clusters?pagesize=100000&exclude=metadata.managedFields`, {
headers: {
accept: 'application/json',
},
cookies: cookies,
})
check(response, {
'GET v1/provisioning.cattle.io.clusters returns status 200': (r) => r.status === 200,
})
return response
}

export function getManagementClusters(baseUrl, cookies) {
const response = http.get(`${baseUrl}/v1/management.cattle.io.clusters?pagesize=100000&exclude=metadata.managedFields`, {
headers: {
accept: 'application/json',
},
cookies: cookies,
})
check(response, {
'GET v1/management.cattle.io.clusters returns status 200': (r) => r.status === 200,
})
return response
}

export function logout(baseUrl, cookies) {
const response = http.post(`${baseUrl}/v3/tokens?action=logout`, '{}', {
headers: {
Expand All @@ -384,6 +415,8 @@ export function logout(baseUrl, cookies) {
check(response, {
'logging out works': (r) => r.status === 200,
})

return response
}

export function generateAuthorizationHeader(token) {
Expand Down
Loading