Menu

Important: This documentation is about an older version. It's relevant only to the release noted, many of the features and functions have been updated or replaced. Please view the current version.

Open source

open

The open function opens a file and returns a promise that resolves to a File instance. Unlike the traditional open function, which loads a file multiple times into memory, the filesystem module reduces memory usage by loading the file as little possible, and sharing the same memory space between all VUs. This approach reduces the risk of encountering out-of-memory errors, especially in load tests involving large files.

Asynchronous nature

It’s important to note that open is asynchronous and returns a Promise. Due to k6’s current limitation with the Init context (which doesn’t support asynchronous functions directly), you need to use an asynchronous wrapper like this:

JavaScript
let file;
(async function () {
  file = await open('bonjour.txt');
})();

Parameters

ParameterTypeDescription
pathstringThe path to the file to open. Relative paths are resolved relative to the k6 script.

Returns

A promise resolving to a File instance.

Example

JavaScript
import { open } from 'k6/experimental/fs';

// k6 doesn't support async in the init context. We use a top-level async function for `await`.
//
// Each Virtual User gets its own `file` copy.
// So, operations like `seek` or `read` won't impact other VUs.
let file;
(async function () {
  file = await open('bonjour.txt');
})();

export default async function () {
  // About information about the file
  const fileinfo = await file.stat();
  if (fileinfo.name != 'bonjour.txt') {
    throw new Error('Unexpected file name');
  }

  console.log(JSON.stringify(fileinfo));
}