|
| 1 | +import { check, group } from "k6" |
| 2 | +import exec from "k6/execution" |
| 3 | +import { |
| 4 | + randomItem, |
| 5 | + randomIntBetween, |
| 6 | +} from "https://jslib.k6.io/k6-utils/1.2.0/index.js" |
| 7 | + |
1 | 8 | import { Config } from "../config.ts" |
2 | | -import { check } from "k6" |
3 | | -import { MITLearnAPIClient } from "./client/v0/api.ts" |
| 9 | +import { createV0Client, createV1Client } from "./client/client.ts" |
4 | 10 |
|
5 | 11 | export function configure(config: Config) { |
6 | | - const v0Client = new MITLearnAPIClient({ |
7 | | - baseUrl: config.apiBaseUrl, |
8 | | - }) |
9 | 12 | return function () { |
10 | | - const res = v0Client.videoShortsList({ limit: 50 }) |
11 | | - check(res, { |
12 | | - "is status 200": (r) => r.status === 200, |
13 | | - "has results": (r) => r.json("results").length > 0, |
| 13 | + group("api", function () { |
| 14 | + group("v0", function () { |
| 15 | + exec.vu.tags.apiVersion = "v0" |
| 16 | + |
| 17 | + const client = createV0Client(config) |
| 18 | + |
| 19 | + check(client.videoShortsList({ limit: 50 }), { |
| 20 | + "is status 200": (r) => r.response.status === 200, |
| 21 | + "has results": (r) => r.response.json("results").length > 0, |
| 22 | + }) |
| 23 | + |
| 24 | + delete exec.vu.tags.apiVersion |
| 25 | + }) |
| 26 | + |
| 27 | + group("v1", function () { |
| 28 | + exec.vu.tags.apiVersion = "v1" |
| 29 | + |
| 30 | + const client = createV1Client(config) |
| 31 | + |
| 32 | + group("learning resources", function () { |
| 33 | + const res = client.learningResourcesList({ limit: 50 }) |
| 34 | + const results = res.response.json("results") |
| 35 | + check(res, { |
| 36 | + "is status 200": (r) => r.response.status === 200, |
| 37 | + "has results": (_) => results.length > 0, |
| 38 | + }) |
| 39 | + |
| 40 | + for (let index = 0; index < randomIntBetween(3, 5); index++) { |
| 41 | + const resource = randomItem(results) |
| 42 | + check(client.learningResourcesRetrieve(resource.id), { |
| 43 | + "is status 200": (r) => r.response.status === 200, |
| 44 | + "matches resource id": (r) => |
| 45 | + r.response.json("id") == resource.id, |
| 46 | + }) |
| 47 | + } |
| 48 | + }) |
| 49 | + |
| 50 | + delete exec.vu.tags.apiVersion |
| 51 | + }) |
14 | 52 | }) |
15 | 53 | } |
16 | 54 | } |
0 commit comments