diff --git a/.gitignore b/.gitignore index 2a7366f..55ffd0e 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,4 @@ node_modules cache /packages/k6-tests/artifacts .env -env/*/result +scenarios/*/result diff --git a/environments/nextcloud/31_0_8-apache/docker-compose.yaml b/environments/nextcloud/31_0_8-apache/docker-compose.yaml new file mode 100644 index 0000000..370b6fd --- /dev/null +++ b/environments/nextcloud/31_0_8-apache/docker-compose.yaml @@ -0,0 +1,40 @@ +services: + db: + image: mariadb:lts + restart: always + command: --transaction-isolation=READ-COMMITTED + volumes: + - db:/var/lib/mysql + environment: + - MYSQL_ROOT_PASSWORD=INSECURE + - MYSQL_PASSWORD=INSECURE + - MYSQL_DATABASE=nextcloud + - MYSQL_USER=nextcloud + redis: + image: redis:alpine + restart: always + + app: + # php occ config:system:set ratelimit.protection.enabled --type bool --value=false + # php occ config:system:set auth.bruteforce.protection.enabled --type bool --value=false + image: nextcloud:31.0.8-apache + restart: always + ports: + - 8080:80 + depends_on: + - redis + - db + volumes: + - nextcloud:/var/www/html + environment: + - MYSQL_PASSWORD=INSECURE + - MYSQL_DATABASE=nextcloud + - MYSQL_USER=nextcloud + - MYSQL_HOST=db + - NEXTCLOUD_ADMIN_USER=admin + - NEXTCLOUD_ADMIN_PASSWORD=admin + - NEXTCLOUD_TRUSTED_DOMAINS=oc.home.arpa + +volumes: + nextcloud: + db: diff --git a/environments/opencloud/3_4_0/docker-compose.yaml b/environments/opencloud/3_4_0/docker-compose.yaml new file mode 100644 index 0000000..3349b83 --- /dev/null +++ b/environments/opencloud/3_4_0/docker-compose.yaml @@ -0,0 +1,20 @@ +services: + opencloud: + image: quay.io/opencloudeu/opencloud-rolling:3.4.0 + restart: always + ports: + - 9200:9200 + entrypoint: + - /bin/sh + command: ["-c", "opencloud init || true; opencloud server"] + environment: + - OC_URL=https://oc.home.arpa:9200 + - IDM_CREATE_DEMO_USERS=false + - IDM_ADMIN_PASSWORD=admin + - OC_INSECURE=true + volumes: + - opencloud_config:/etc/opencloud + - opencloud_data:/var/lib/opencloud +volumes: + opencloud_config: + opencloud_data: diff --git a/packages/k6-tdk/src/client/group.ts b/packages/k6-tdk/src/client/group.ts index a5eaaee..8a1c651 100644 --- a/packages/k6-tdk/src/client/group.ts +++ b/packages/k6-tdk/src/client/group.ts @@ -1,10 +1,10 @@ -import { RefinedResponse } from 'k6/http' +import {RefinedResponse} from 'k6/http' -import { endpoints } from '@/endpoints' -import { check } from '@/utils' -import { Platform } from '@/values' +import {endpoints} from '@/endpoints' +import {check} from '@/utils' +import {Platform} from '@/values' -import { EndpointClient } from './client' +import {EndpointClient} from './client' export class Group extends EndpointClient { getGroups(): RefinedResponse<'text'> | undefined { @@ -18,7 +18,7 @@ export class Group extends EndpointClient { response = endpoints.graph.v1.groups.GET_get_groups(this.httpClient, {}) } - check({ skip: !response, val: response }, { + check({skip: !response, val: response}, { 'client -> group.getGroups - status': (r) => { return r?.status === 200 } @@ -28,10 +28,14 @@ export class Group extends EndpointClient { } createGroup(p: { groupName: string }): RefinedResponse<'text'> { + let expectedStatus = 201 let response: RefinedResponse<'text'> + switch (this.platform) { - case Platform.ownCloudServer: case Platform.nextcloud: + expectedStatus = 200 + // noinspection FallThroughInSwitchStatementJS + case Platform.ownCloudServer: response = endpoints.ocs.v2.apps.cloud.groups.POST__create_group(this.httpClient, p) break case Platform.openCloud: @@ -39,9 +43,9 @@ export class Group extends EndpointClient { response = endpoints.graph.v1.groups.POST__create_group(this.httpClient, p) } - check({ val: response }, { - 'client -> group.createGroup - status': ({ status }) => { - return status === 201 + check({val: response}, { + 'client -> group.createGroup - status': ({status}) => { + return status === expectedStatus } }) @@ -54,21 +58,27 @@ export class Group extends EndpointClient { switch (this.platform) { case Platform.ownCloudServer: case Platform.nextcloud: - response = endpoints.ocs.v2.apps.cloud.groups.DELETE__delete_group(this.httpClient, { groupName: p.groupIdOrName }) + response = endpoints.ocs.v2.apps.cloud.groups.DELETE__delete_group(this.httpClient, {groupName: p.groupIdOrName}) expectedStatus = 200 break case Platform.openCloud: default: - response = endpoints.graph.v1.groups.DELETE__delete_group(this.httpClient, { groupId: p.groupIdOrName }) + response = endpoints.graph.v1.groups.DELETE__delete_group(this.httpClient, {groupId: p.groupIdOrName}) expectedStatus = 204 } - check({ val: response }, { - 'client -> group.deleteGroup - status': ({ status }) => { + check({val: response}, { + 'client -> group.deleteGroup - status': ({status}) => { return status === expectedStatus } }) return response } + + addGroupMember(p: { groupIdOrName: string, memberId: string }): RefinedResponse<'text' | 'none'> { + const response = endpoints.graph.v1.groups.POST__add_group_member(this.httpClient, {groupId: p.groupIdOrName, memberId: p.memberId}) + console.log(response) + return response + } } diff --git a/packages/k6-tdk/src/client/resource.ts b/packages/k6-tdk/src/client/resource.ts index 7cfe5eb..e5ce636 100644 --- a/packages/k6-tdk/src/client/resource.ts +++ b/packages/k6-tdk/src/client/resource.ts @@ -1,27 +1,27 @@ -import { RefinedResponse, RequestBody } from 'k6/http' +import {RefinedResponse, RequestBody} from 'k6/http' -import { endpoints } from '@/endpoints' -import { check } from '@/utils' -import { Platform } from '@/values' +import {endpoints} from '@/endpoints' +import {check} from '@/utils' +import {Platform} from '@/values' -import { EndpointClient } from './client' -import { RESOURCE__get_resource_properties } from './xml' +import {EndpointClient} from './client' +import {RESOURCE__get_resource_properties} from './xml' export class Resource extends EndpointClient { createResource(p: { root: string, resourcePath: string }): RefinedResponse<'none'> { let response: RefinedResponse<'none'> switch (this.platform) { - case Platform.ownCloudServer: case Platform.nextcloud: + case Platform.ownCloudServer: response = endpoints.dav.files.MKCOL__create_resource(this.httpClient, p) break case Platform.openCloud: default: - response = endpoints.dav.spaces.MKCOL__create_resource(this.httpClient, { ...p, driveId: p.root }) + response = endpoints.dav.spaces.MKCOL__create_resource(this.httpClient, {...p, driveId: p.root}) } - check({ val: response }, { - 'client -> resource.createResource - status': ({ status }) => { + check({val: response}, { + 'client -> resource.createResource - status': ({status}) => { return status === 201 } }) @@ -38,11 +38,11 @@ export class Resource extends EndpointClient { break case Platform.openCloud: default: - response = endpoints.dav.spaces.DELETE__delete_resource(this.httpClient, { ...p, driveId: p.root }) + response = endpoints.dav.spaces.DELETE__delete_resource(this.httpClient, {...p, driveId: p.root}) } - check({ val: response }, { - 'client -> resource.deleteResource - status': ({ status }) => { + check({val: response}, { + 'client -> resource.deleteResource - status': ({status}) => { return status === 204 } }) @@ -52,18 +52,19 @@ export class Resource extends EndpointClient { moveResource(p: { root: string, fromResourcePath: string, toResourcePath: string }): RefinedResponse<'none'> { let response: RefinedResponse<'none'> + switch (this.platform) { - case Platform.ownCloudServer: case Platform.nextcloud: + case Platform.ownCloudServer: response = endpoints.dav.files.MOVE__move_resource(this.httpClient, p) break case Platform.openCloud: default: - response = endpoints.dav.spaces.MOVE__move_resource(this.httpClient, { ...p, driveId: p.root }) + response = endpoints.dav.spaces.MOVE__move_resource(this.httpClient, {...p, driveId: p.root}) } - check({ val: response }, { - 'client -> resource.moveResource - status': ({ status }) => { + check({val: response}, { + 'client -> resource.moveResource - status': ({status}) => { return status === 201 } }) @@ -79,16 +80,16 @@ export class Resource extends EndpointClient { case Platform.ownCloudServer: case Platform.nextcloud: response = endpoints.dav.files.PROPFIND__get_properties_for_resource(this.httpClient, - { ...p, propfindXml }) + {...p, propfindXml}) break case Platform.openCloud: default: response = endpoints.dav.spaces.PROPFIND__get_properties_for_resource(this.httpClient, - { ...p, driveId: p.root, propfindXml }) + {...p, driveId: p.root, propfindXml}) } - check({ val: response }, { - 'client -> resource.getResourceProperties - status': ({ status }) => { + check({val: response}, { + 'client -> resource.getResourceProperties - status': ({status}) => { return status === 207 } }) @@ -98,18 +99,19 @@ export class Resource extends EndpointClient { uploadResource(p: { resourcePath: string, root: string, resourceBytes: RequestBody }): RefinedResponse<'none'> { let response: RefinedResponse<'none'> + switch (this.platform) { - case Platform.ownCloudServer: case Platform.nextcloud: + case Platform.ownCloudServer: response = endpoints.dav.files.PUT__upload_resource(this.httpClient, p) break case Platform.openCloud: default: - response = endpoints.dav.spaces.PUT__upload_resource(this.httpClient, { ...p, driveId: p.root }) + response = endpoints.dav.spaces.PUT__upload_resource(this.httpClient, {...p, driveId: p.root}) } - check({ val: response }, { - 'client -> resource.uploadResource - status': ({ status }) => { + check({val: response}, { + 'client -> resource.uploadResource - status': ({status}) => { return status === 201 } }) @@ -127,11 +129,11 @@ export class Resource extends EndpointClient { case Platform.openCloud: default: response = endpoints.dav.spaces.GET__download_resource(this.httpClient, - { ...p, driveId: p.root }) + {...p, driveId: p.root}) } - check({ val: response }, { - 'client -> resource.downloadResource - status': ({ status }) => { + check({val: response}, { + 'client -> resource.downloadResource - status': ({status}) => { return status === 200 } }) diff --git a/packages/k6-tdk/src/client/tag.ts b/packages/k6-tdk/src/client/tag.ts index 82b517f..49b73fb 100644 --- a/packages/k6-tdk/src/client/tag.ts +++ b/packages/k6-tdk/src/client/tag.ts @@ -22,9 +22,10 @@ export class Tag extends EndpointClient { } = p let response: RefinedResponse<'none'> | undefined + switch (this.platform) { - case Platform.ownCloudServer: case Platform.nextcloud: + case Platform.ownCloudServer: response = endpoints.dav.systemtags.POST__create_tag(this.httpClient, { tagName, userAssignableTag, diff --git a/packages/k6-tdk/src/client/user.ts b/packages/k6-tdk/src/client/user.ts index 181d5e1..c9d202c 100644 --- a/packages/k6-tdk/src/client/user.ts +++ b/packages/k6-tdk/src/client/user.ts @@ -8,10 +8,13 @@ import { EndpointClient } from './client' export class User extends EndpointClient { createUser(p: { userLogin: string, userPassword: string }): RefinedResponse<'text'> { + let expectedStatus = 201 let response: RefinedResponse<'text'> switch (this.platform) { - case Platform.ownCloudServer: case Platform.nextcloud: + expectedStatus = 200 + // noinspection FallThroughInSwitchStatementJS + case Platform.ownCloudServer: response = endpoints.ocs.v2.apps.cloud.users.POST__create_user(this.httpClient, p) break case Platform.openCloud: @@ -21,7 +24,7 @@ export class User extends EndpointClient { check({ val: response }, { 'client -> user.createUser - status': ({ status }) => { - return status === 201 + return status === expectedStatus } }) @@ -53,11 +56,14 @@ export class User extends EndpointClient { } enableUser(p: { userLogin: string }): RefinedResponse<'text'> | undefined { + let expectedStatus = 200 let response: RefinedResponse<'text'> | undefined switch (this.platform) { - case Platform.ownCloudServer: case Platform.nextcloud: + expectedStatus = 200 + // noinspection FallThroughInSwitchStatementJS + case Platform.ownCloudServer: response = endpoints.ocs.v2.apps.cloud.users.PUT__enable_user(this.httpClient, p) break case Platform.openCloud: diff --git a/packages/k6-tdk/src/endpoints/graph-v1-groups.ts b/packages/k6-tdk/src/endpoints/graph-v1-groups.ts index 17bbc99..865be07 100644 --- a/packages/k6-tdk/src/endpoints/graph-v1-groups.ts +++ b/packages/k6-tdk/src/endpoints/graph-v1-groups.ts @@ -13,3 +13,11 @@ export const POST__create_group: Endpoint<{ groupName: string }, 'text'> = (http export const DELETE__delete_group: Endpoint<{ groupId: string }, 'none'> = (httpClient, { groupId }) => { return httpClient('DELETE', `/graph/v1.0/groups/${groupId}`) } + +export const POST__add_group_member: Endpoint<{ groupId: string, memberId: string }, 'none'> = (httpClient, { memberId, groupId }) => { + return httpClient('POST', `/graph/v1.0/groups/${groupId}/members/$ref`, JSON.stringify({ + // currently the url is not relevant, any url will do, + // the important part is the memberId, and the users slug + '@odata.id': `https://any.url/graph/v1.0/users/${memberId}` + })) +} diff --git a/packages/k6-tests/build.mjs b/packages/k6-tests/build.mjs index 05d65e3..03b4d10 100644 --- a/packages/k6-tests/build.mjs +++ b/packages/k6-tests/build.mjs @@ -8,13 +8,14 @@ const outdir = 'artifacts' const buildToFromMap = (glob, stripExtension = false) => { return fg.sync(glob).reduce((acc, from) => { const fromInfo = path.parse(from) - const [src, ...namespace] = fromInfo.dir.split('/'); + const [_, src, ...namespace] = fromInfo.dir.split('/'); let to = [...namespace, fromInfo.name].join('-').replace(/[._]/g, '-') if (!stripExtension) { to = to + fromInfo.ext } + if (src === 'src'){ to = '_' + to } diff --git a/packages/k6-tests/src/seeds/up.k6.ts b/packages/k6-tests/src/seeds/up.k6.ts index 4855d39..b179dae 100644 --- a/packages/k6-tests/src/seeds/up.k6.ts +++ b/packages/k6-tests/src/seeds/up.k6.ts @@ -1,13 +1,13 @@ -import { noop, queryJson } from '@opencloud-eu/k6-tdk/lib/utils' -import { randomBytes } from 'k6/crypto' -import { Options } from 'k6/options' +import {noop, queryJson} from '@opencloud-eu/k6-tdk/lib/utils' +import {randomBytes} from 'k6/crypto' +import {Options} from 'k6/options' -import { createCalendar, createCalendarResource } from '@/mock' -import { groupPool, userPool } from '@/pools' -import { clientFor, shareResource } from '@/shortcuts' -import { createTestRoot } from '@/test' -import { getPoolItems } from '@/utils' -import { envValues } from '@/values' +import {createCalendar, createCalendarResource} from '@/mock' +import {groupPool, userPool} from '@/pools' +import {clientFor, shareResource} from '@/shortcuts' +import {createTestRoot} from '@/test' +import {getPoolItems} from '@/utils' +import {envValues} from '@/values' export const options: Options = { vus: 1, @@ -18,7 +18,7 @@ export const options: Options = { export async function setup(): Promise { const values = envValues() - const adminClient = clientFor({ userLogin: values.admin.login, userPassword: values.admin.password }) + const adminClient = clientFor({userLogin: values.admin.login, userPassword: values.admin.password}) const testRoot = await createTestRoot({ client: adminClient, resourceName: values.seed.container.name, @@ -27,18 +27,20 @@ export async function setup(): Promise { platform: values.platform.type }) + + let groupIdsOrNames: Array = [] /** * groups */ if (values.seed.groups.create) { - const poolGroups = getPoolItems({ pool: groupPool, n: values.seed.groups.total }) + const poolGroups = getPoolItems({pool: groupPool, n: values.seed.groups.total}) await Promise.all( - poolGroups.map(async ({ groupName }) => { - const createGroupResponse = adminClient.group.createGroup({ groupName }) + poolGroups.map(async ({groupName}) => { + const createGroupResponse = adminClient.group.createGroup({groupName}) const [groupId] = queryJson('id', createGroupResponse.body) const groupIdOrName = groupId || groupName - - noop(groupIdOrName) + groupIdsOrNames.push(groupIdOrName) + noop(groupIdsOrNames) }) ) } @@ -48,7 +50,7 @@ export async function setup(): Promise { */ { if (values.seed.users.create) { - const poolUsers = getPoolItems({ pool: userPool, n: values.seed.users.total }) + const poolUsers = getPoolItems({pool: userPool, n: values.seed.users.total}) const getRolesResponse = adminClient.role.getRoles() const [appRoleId] = queryJson("$.bundles[?(@.name === 'spaceadmin')].id", getRolesResponse?.body) @@ -61,7 +63,10 @@ export async function setup(): Promise { const [principalId] = queryJson('$.id', createUserResponse.body) await adminClient.user.enableUser(user) - await adminClient.role.addRoleToUser({ appRoleId, resourceId, principalId }) + await adminClient.role.addRoleToUser({appRoleId, resourceId, principalId}) + //await Promise.all(groupIdsOrNames.map(async (groupIdOrName) => { + // await adminClient.group.addGroupMember({groupIdOrName, memberId: principalId}) + //})) const shareId = await shareResource({ client: adminClient, @@ -73,7 +78,7 @@ export async function setup(): Promise { if (shareId) { const userClient = clientFor(user) - await userClient.share.acceptShare({ shareId }) + await userClient.share.acceptShare({shareId}) } }) ) @@ -120,20 +125,20 @@ export async function setup(): Promise { }) await Promise.all(calendar.y.map(async (y) => { - await adminClient.resource.createResource({ root: [testRoot.root, testRoot.path].join('/'), resourcePath: y }) + await adminClient.resource.createResource({root: [testRoot.root, testRoot.path].join('/'), resourcePath: y}) })) await Promise.all(calendar.m.map(async (m) => { - await adminClient.resource.createResource({ root: [testRoot.root, testRoot.path].join('/'), resourcePath: m }) + await adminClient.resource.createResource({root: [testRoot.root, testRoot.path].join('/'), resourcePath: m}) })) await Promise.all(calendar.d.map(async (d) => { - await adminClient.resource.createResource({ root: [testRoot.root, testRoot.path].join('/'), resourcePath: d }) + await adminClient.resource.createResource({root: [testRoot.root, testRoot.path].join('/'), resourcePath: d}) })) await Promise.all( calendar.d.map(async (v) => { - const calendarResource = createCalendarResource({ v }) + const calendarResource = createCalendarResource({v}) await adminClient.resource.uploadResource({ root: [testRoot.root, testRoot.path].join('/'), resourcePath: calendarResource.resourcePath, diff --git a/packages/k6-tests/src/shortcuts/client.ts b/packages/k6-tests/src/shortcuts/client.ts index c2dcc96..bb0d397 100644 --- a/packages/k6-tests/src/shortcuts/client.ts +++ b/packages/k6-tests/src/shortcuts/client.ts @@ -15,6 +15,6 @@ export const clientFor = (p: { userLogin: string, userPassword: string }): Clien userPassword: p.userPassword }) - const httpClient = httpClientFactory({ authNProvider, baseUrl: values.platform.base_url, params: { jar } }) + const httpClient = httpClientFactory({ authNProvider, baseUrl: values.platform.base_url, params: { jar, timeout: '360s' } }) return new Client({ httpClient, platform: values.platform.type }) } diff --git a/packages/k6-tests/tests/koko/platform/000-mixed/ramping.k6.ts b/packages/k6-tests/tests/koko/platform/000-mixed/ramping.k6.ts index a2ddc2b..8cd4d95 100644 --- a/packages/k6-tests/tests/koko/platform/000-mixed/ramping.k6.ts +++ b/packages/k6-tests/tests/koko/platform/000-mixed/ramping.k6.ts @@ -1,38 +1,13 @@ import { Options } from 'k6/options' -import { options as options_020 } from '@/tests/koko/platform/020-navigate-file-tree/ramping.k6' -// import { options as options_030 } from '@/tests/koko/platform/030-search-for-filename/ramping.k6' import { options as options_040 } from '@/tests/koko/platform/040-create-upload-rename-delete-folder-and-file/ramping.k6' -import { options as options_050 } from '@/tests/koko/platform/050-download/ramping.k6' -import { options as options_070 } from '@/tests/koko/platform/070-user-group-search/ramping.k6' -import { options as options_080 } from '@/tests/koko/platform/080-create-space/ramping.k6' -import { options as options_090 } from '@/tests/koko/platform/090-create-remove-group-share/ramping.k6' -import { options as options_100 } from '@/tests/koko/platform/100-add-remove-tag/ramping.k6' -import { options as options_110 } from '@/tests/koko/platform/110-sync-client/ramping.k6' - -export { navigate_file_tree_020 } from '@/tests/koko/platform/020-navigate-file-tree/simple.k6' -export { search_for_filename_030 } from '@/tests/koko/platform/030-search-for-filename/simple.k6' export { create_upload_rename_delete_folder_and_file_040 } from '@/tests/koko/platform/040-create-upload-rename-delete-folder-and-file/simple.k6' -export { download_050 } from '@/tests/koko/platform/050-download/simple.k6' -export { user_group_search_070 } from '@/tests/koko/platform/070-user-group-search/simple.k6' -export { create_space_080 } from '@/tests/koko/platform/080-create-space/simple.k6' -export { create_remove_group_share_090 } from '@/tests/koko/platform/090-create-remove-group-share/simple.k6' -export { add_remove_tag_100 } from '@/tests/koko/platform/100-add-remove-tag/simple.k6' -export { sync_client_110 } from '@/tests/koko/platform/110-sync-client/simple.k6' export const options: Options = { insecureSkipTLSVerify: true, scenarios: { - ...options_020.scenarios, - // ...options_030.scenarios, ...options_040.scenarios, - ...options_050.scenarios, - ...options_070.scenarios, - ...options_080.scenarios, - ...options_090.scenarios, - ...options_100.scenarios, - ...options_110.scenarios } } diff --git a/env/smb/.env.template b/scenarios/smb/.env.template similarity index 100% rename from env/smb/.env.template rename to scenarios/smb/.env.template diff --git a/env/smb/setup/setup b/scenarios/smb/setup/setup similarity index 100% rename from env/smb/setup/setup rename to scenarios/smb/setup/setup diff --git a/env/smb/setup/setup_150_vu b/scenarios/smb/setup/setup_150_vu similarity index 100% rename from env/smb/setup/setup_150_vu rename to scenarios/smb/setup/setup_150_vu diff --git a/env/smb/setup/setup_15_vu b/scenarios/smb/setup/setup_15_vu similarity index 100% rename from env/smb/setup/setup_15_vu rename to scenarios/smb/setup/setup_15_vu diff --git a/env/smb/setup/setup_240_vu b/scenarios/smb/setup/setup_240_vu similarity index 100% rename from env/smb/setup/setup_240_vu rename to scenarios/smb/setup/setup_240_vu diff --git a/env/smb/setup/setup_30_vu b/scenarios/smb/setup/setup_30_vu similarity index 100% rename from env/smb/setup/setup_30_vu rename to scenarios/smb/setup/setup_30_vu diff --git a/env/smb/setup/setup_390_vu b/scenarios/smb/setup/setup_390_vu similarity index 100% rename from env/smb/setup/setup_390_vu rename to scenarios/smb/setup/setup_390_vu diff --git a/env/smb/setup/setup_60_vu b/scenarios/smb/setup/setup_60_vu similarity index 100% rename from env/smb/setup/setup_60_vu rename to scenarios/smb/setup/setup_60_vu diff --git a/env/smb/setup/setup_630_vu b/scenarios/smb/setup/setup_630_vu similarity index 100% rename from env/smb/setup/setup_630_vu rename to scenarios/smb/setup/setup_630_vu diff --git a/env/smb/setup/setup_8_vu b/scenarios/smb/setup/setup_8_vu similarity index 100% rename from env/smb/setup/setup_8_vu rename to scenarios/smb/setup/setup_8_vu diff --git a/env/smb/setup/setup_90_vu b/scenarios/smb/setup/setup_90_vu similarity index 100% rename from env/smb/setup/setup_90_vu rename to scenarios/smb/setup/setup_90_vu diff --git a/scripts/run-env.sh b/scripts/run-scenario.sh similarity index 74% rename from scripts/run-env.sh rename to scripts/run-scenario.sh index 5ba4c59..04b0d42 100755 --- a/scripts/run-env.sh +++ b/scripts/run-scenario.sh @@ -1,8 +1,8 @@ #!/bin/bash ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)" -ENV_ROOT_DIR="${ROOT_DIR}/env/${2}" -SETUP_DIR="${ENV_ROOT_DIR}/setup" +SCENARIO_ROOT_DIR="${ROOT_DIR}/scenarios/${2}" +SETUP_DIR="${SCENARIO_ROOT_DIR}/setup" load_env () { local env_file="$1" @@ -15,7 +15,7 @@ load_env () { fi } -load_env "${ENV_ROOT_DIR}/.env" +load_env "${SCENARIO_ROOT_DIR}/.env" load_env "${SETUP_DIR}/setup" case "$1" in @@ -27,7 +27,7 @@ case "$1" in k6 run "${ROOT_DIR}/packages/k6-tests/artifacts/_seeds-up-k6.js" ;; "run") - RESULT_DIR="${ENV_ROOT_DIR}/result" + RESULT_DIR="${SCENARIO_ROOT_DIR}/result" mkdir -p "$RESULT_DIR" for setup in $(find "$SETUP_DIR"/setup_* | sort -V); do @@ -39,8 +39,8 @@ case "$1" in source "$setup" k6 run "${ROOT_DIR}/packages/k6-tests/artifacts/koko-platform-000-mixed-ramping-k6.js" \ - --summary-export "${RESULT_DIR}/$(basename "$setup").json" \ - --log-output file="${RESULT_DIR}/$(basename "$setup").log" + --summary-export "${RESULT_DIR}/$(basename "$setup").json" \ + --log-output file="${RESULT_DIR}/$(basename "$setup").log" done ;; *)