index.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import { randomSeed } from 'k6';
  2. import http from 'k6/http';
  3. import { SharedArray } from 'k6/data';
  4. import exec from 'k6/execution';
  5. const URL_PREFIX = "http://localhost:8082/unsafe"
  6. export let options = {
  7. discardResponseBodies: true,
  8. noConnectionReuse: false,
  9. vus: 20,
  10. iterations: 10000,
  11. };
  12. randomSeed(42)
  13. const urls = new SharedArray('urls', function () {
  14. let data = JSON.parse(open('./urls.json'));
  15. const groups = (__ENV.URL_GROUPS || "").split(",").filter((g) => g != "")
  16. if (groups.length > 0) {
  17. data = data.filter((d) => groups.includes(d.group))
  18. }
  19. let unshuffled = [];
  20. data.forEach((e) => {
  21. let url = URL_PREFIX + e.url
  22. let weight = e.weight || 1
  23. for (var i = 0; i < weight; i++) {
  24. unshuffled.push(url)
  25. }
  26. })
  27. let shuffled = unshuffled
  28. .map(value => ({ value, sort: Math.random() }))
  29. .sort((a, b) => a.sort - b.sort)
  30. .map(({ value }) => value)
  31. return shuffled;
  32. });
  33. if (urls.length == 0) {
  34. throw "URLs list is empty"
  35. }
  36. export default function() {
  37. http.get(urls[exec.scenario.iterationInTest % urls.length])
  38. }