Skip to main content

Class: SnapshotResultReader

A utility entity to read all MemLab files generated from baseline, target and final heap snapshots.

The most useful feature of this class is when you have three separate snapshots (baseline, target, and final) that are not taken from MemLab, but you still would like to use the findLeaks to detect memory leaks:

const {SnapshotResultReader, findLeaks} = require('@memlab/api');

// baseline, target, and final are file paths of heap snapshot files
const reader = SnapshotResultReader.fromSnapshots(baseline, target, final);
const leaks = await findLeaks(reader);

Hierarchy

  • default

    SnapshotResultReader

Methods

getConsoleBackupFile()

This method gets the backup file of the console output.

The memlab CLI commands (e.g., memlab find-leaks) outputs a non-structured string representation for easy reading, while the APIs (e.g., findLeaks) return structured leaks representation that is handy for post-processing. If you need to obtain all the string output from the CLI in the current working directory, you can read them from the CLI output backup file returned by this method.

  • Returns: string | the absolute path of the backup file
  • Examples:
const {takeSnapshots, findLeaks} = require('@memlab/api');

(async function () {
const scenario = { url: () => 'https://www.npmjs.com'};
const result = await takeSnapshots({scenario});
const leaks = await findLeaks(result);

// get the console output backup file
const consoleBackupFile = result.getConsoleBackupFile();
})();

getInteractionSteps()

browser interaction step sequence

  • Returns: E2EStepInfo[] | an array of browser interaction step information

  • Examples:

const {SnapshotResultReader} = require('@memlab/api');

// baseline, target, and final are file paths of heap snapshot files
const reader = SnapshotResultReader.fromSnapshots(baseline, target, final);
const paths = reader.getInteractionSteps();

getRootDirectory()

get the directory where the data and generated files of the memlab run were stored

  • Returns: string | absolute path of the directory
  • Examples:
const {takeSnapshots} = require('@memlab/api');

(async function () {
const scenario = { url: () => 'https://www.npmjs.com'};
const result = await takeSnapshots({scenario});

// get the directory that stores all the files
// generated from the takeSnapshots call
const dataDir = result.getRootDirectory();
})();

getSnapshotFiles()

get all snapshot files related to this SnapshotResultReader

  • Returns: string[] | an array of snapshot file's absolute path

  • Examples:

const {SnapshotResultReader} = require('@memlab/api');

// baseline, target, and final are file paths of heap snapshot files
const reader = SnapshotResultReader.fromSnapshots(baseline, target, final);
const paths = reader.getSnapshotFiles();

Static fromSnapshots(baselineSnapshot, targetSnapshot, finalSnapshot)

Build a result reader from baseline, target, and final heap snapshot files. The three snapshot files do not have to be in the same directory.

  • Parameters:

    • baselineSnapshot: string | file path of the baseline heap snapshot
    • targetSnapshot: string | file path of the target heap snapshot
    • finalSnapshot: string | file path of the final heap snapshot
  • Returns: SnapshotResultReader | the ResultReader instance

  • Examples:

const {SnapshotResultReader, findLeaks} = require('@memlab/api');

// baseline, target, and final are file paths of heap snapshot files
const reader = SnapshotResultReader.fromSnapshots(baseline, target, final);
const leaks = await findLeaks(reader);
  • Hierarchy
  • Methods
    • getConsoleBackupFile()
    • getInteractionSteps()
    • getRootDirectory()
    • getSnapshotFiles()
    • Static fromSnapshots(baselineSnapshot, targetSnapshot, finalSnapshot)