How to use k6 - 10 common examples

To help you get started, we’ve selected a few k6 examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github kyma-project / kyma / tests / perf / components / serverless / perf-test-serverless.js View on Github external
functionNames.forEach(function (functionName) {
    let url = `https://${functionName}.${__ENV.CLUSTER_DOMAIN_NAME}`
    let tags = {
      'testName': functionName,
    }
    let res = http.get(url, { 'tags': tags })

    // report custom trend
    // same as http_req_duration but without function execution time
    httpReqDurationNoFunc.add(res.timings.duration - funcDelay);
    // same as http_req_waiting but without function execution time
    httpReqWaitingNoFunc.add(res.timings.waiting - funcDelay)

    check(res, {
      "status was 200": (r) => r.status == 200,
    }, tags);
  });
};
github h5bp / server-configs-test / lib / index.js View on Github external
export default function (units) {
  for (const lib of units) {
    // k6 do not know how to store function in object yet
    // https://github.com/loadimpact/k6/issues/855
    // eslint-disable-next-line no-eval
    group(lib.name, () => (lib.fn ? eval(lib.fn).default : test)(lib.setup))
  }
}
github h5bp / server-configs-test / lib / ssl.js View on Github external
import * as http from 'k6/http'
import { options as defaultOptions, prepare, assert } from './abstract-test.js'

export const options = Object.assign(defaultOptions, {
  tlsVersion: {
    min: http.SSL_3_0,
    max: http.TLS_1_3
  }
})

export function setup () {
  return prepare([
    {
      name: 'intermediate policy',
      requests: ['https://secure.server.localhost/']
    }
  ])
}

export default function (data) {
  assert(data, '', () => ({
    'is TLS version secure': (r) => r.tls_version === http.TLS_1_2 || r.tls_version === http.TLS_1_3,
    // 'is cipher suite secure': (r) => r.tls_cipher_suite === 'TLS_CHACHA20_POLY1305_SHA256',
github h5bp / server-configs-test / lib / ssl.js View on Github external
    'is TLS version secure': (r) => r.tls_version === http.TLS_1_2 || r.tls_version === http.TLS_1_3,
    // 'is cipher suite secure': (r) => r.tls_cipher_suite === 'TLS_CHACHA20_POLY1305_SHA256',
github kyma-project / kyma / tests / perf / components / serverless / perf-test-serverless.js View on Github external
import http from "k6/http"
import { check } from "k6"
import { Trend } from "k6/metrics"

var httpReqDurationNoFunc = new Trend("http_req_duration_no_func", true)
var httpReqWaitingNoFunc = new Trend("http_req_waiting_no_func", true)

export let options = {
  // unlimited
  rps: 0,
  tags: {
    "component": "serverless",
    "revision": `${__ENV.REVISION}`
  },
  // ramp up #virtual users (VU) over time to get maximum throughput
  stages: [
    { duration: "90s", target: 2 ** 3 },
    { duration: "90s", target: 2 ** 4 },
    { duration: "90s", target: 2 ** 5 },
  ],
}
github kyma-project / kyma / tests / perf / components / serverless / perf-test-serverless.js View on Github external
import http from "k6/http"
import { check } from "k6"
import { Trend } from "k6/metrics"

var httpReqDurationNoFunc = new Trend("http_req_duration_no_func", true)
var httpReqWaitingNoFunc = new Trend("http_req_waiting_no_func", true)

export let options = {
  // unlimited
  rps: 0,
  tags: {
    "component": "serverless",
    "revision": `${__ENV.REVISION}`
  },
  // ramp up #virtual users (VU) over time to get maximum throughput
  stages: [
    { duration: "90s", target: 2 ** 3 },
    { duration: "90s", target: 2 ** 4 },
    { duration: "90s", target: 2 ** 5 },
  ],
}
github k6io / xk6-distributed-tracing / examples / test-config.js View on Github external
export function teardown(){
  // Cleanly shutdown and flush telemetry when k6 exits.
  tracing.shutdown();
}
github jembi / openhim-core-js / performance / transactionsWithoutFilters.js View on Github external
function makeGetRequest () {
  const response = http.get(
    // Have to limit transactions to 100 as request times out for all transactions
    `${BASE_URL}/transactions?filterLimit=100`,
    {
      headers: Object.assign(getTestAuthHeaders(), {
        Accept: 'application/json',
        'Content-Type': 'apllication/json'
      }),
      tags: {
        name: 'Transactions without filters'
      }
    }
  )

  check(response, {
    'status code is 200': r => r.status === 200
  })
github jembi / hearth / performance / patient-updateCreate-stress.js View on Github external
const makePutRequest = () => {
  // The id being created here should be unique, otherwise an update will actually happen
  const id = `${Date.now() + Math.random()}`
  patient.id = id
  const response = http.put(`${BASE_URL}${RESOURCE_PATH}/${id}`,
    JSON.stringify(patient),
    {
      headers: {
        'Content-Type': 'application/json'
      },
      tags: {
        name: `Patient Update-Create Stress Test`
      }
    })
  check(response, {
    'status code is 201': r => r.status === 201
  })
}
github k6io / xk6-distributed-tracing / examples / test-config.js View on Github external
export default function() {
  const http = new Http({
    exporter: "jaeger",
    propagator: "w3c",
    endpoint: "http://localhost:14268/api/traces"
  });
  const r = http.get('https://test-api.k6.io');
  
  console.log(`trace-id=${r.trace_id}`);
  sleep(1);
}