nextest_runner/record/
mod.rs

1// Copyright (c) The nextest Contributors
2// SPDX-License-Identifier: MIT OR Apache-2.0
3
4//! Recording infrastructure for nextest runs.
5//!
6//! This module provides functionality to record test runs to disk for later inspection
7//! and replay. The recording captures test events, outputs, and metadata in a structured
8//! archive format.
9//!
10//! # Architecture
11//!
12//! The recording system consists of:
13//!
14//! - [`RunStore`]: Manages the directory where recordings are stored, handling locking
15//!   and the list of recorded runs.
16//! - [`RunRecorder`]: Writes a single run's data to disk, including metadata and events.
17//! - [`RecordReader`]: Reads a recorded run from disk for replay or inspection.
18//! - [`records_state_dir`]: Returns the platform-specific state directory for recordings.
19//!
20//! # Archive format
21//!
22//! Each run is stored in a directory named by its UUID, containing:
23//!
24//! - `store.zip`: A zstd-compressed archive containing metadata and test outputs.
25//! - `run.log.zst`: A zstd-compressed JSON Lines file of test events.
26
27mod chrome_trace;
28pub mod dicts;
29mod display;
30mod format;
31mod portable;
32mod reader;
33mod recorder;
34pub mod replay;
35mod rerun;
36mod retention;
37mod run_id_index;
38mod session;
39mod state_dir;
40mod store;
41mod summary;
42#[cfg(test)]
43mod test_helpers;
44mod tree;
45
46pub use chrome_trace::{ChromeTraceGroupBy, ChromeTraceMessageFormat, convert_to_chrome_trace};
47pub use display::{
48    DisplayPrunePlan, DisplayPruneResult, DisplayRecordedRunInfo, DisplayRecordedRunInfoDetailed,
49    DisplayRunList, RunListAlignment, Styles,
50};
51pub use format::{
52    CARGO_METADATA_JSON_PATH, OutputDict, PORTABLE_MANIFEST_FILE_NAME,
53    PortableRecordingFormatVersion, PortableRecordingVersionIncompatibility, RECORD_OPTS_JSON_PATH,
54    RERUN_INFO_JSON_PATH, RUN_LOG_FILE_NAME, RerunInfo, RerunRootInfo, RerunTestSuiteInfo,
55    RunsJsonFormatVersion, RunsJsonWritePermission, STDERR_DICT_PATH, STDOUT_DICT_PATH,
56    STORE_FORMAT_VERSION, STORE_ZIP_FILE_NAME, StoreFormatMajorVersion, StoreFormatMinorVersion,
57    StoreFormatVersion, StoreVersionIncompatibility, TEST_LIST_JSON_PATH, has_zip_extension,
58};
59pub use portable::{
60    ExtractOuterFileResult, PortableRecording, PortableRecordingEventIter, PortableRecordingResult,
61    PortableRecordingRunLog, PortableRecordingWriter, PortableStoreReader,
62};
63pub use reader::{RecordEventIter, RecordReader, StoreReader};
64pub use recorder::{RunRecorder, StoreSizes};
65pub use replay::{
66    LoadOutput, ReplayContext, ReplayConversionError, ReplayHeader, ReplayReporter,
67    ReplayReporterBuilder,
68};
69pub use rerun::ComputedRerunInfo;
70pub use retention::{PruneKind, PrunePlan, PruneResult, RecordRetentionPolicy};
71pub use run_id_index::{RunIdIndex, RunIdOrRecordingSelector, RunIdSelector, ShortestRunIdPrefix};
72pub use session::{
73    RecordFinalizeResult, RecordFinalizeWarning, RecordSession, RecordSessionConfig,
74    RecordSessionSetup,
75};
76pub use state_dir::{NEXTEST_STATE_DIR_ENV, encode_workspace_path, records_state_dir};
77pub use store::{
78    CompletedRunStats, ComponentSizes, ExclusiveLockedRunStore, NonReplayableReason,
79    RecordedRunInfo, RecordedRunStatus, RecordedSizes, ReplayabilityStatus, ResolveRunIdResult,
80    RunFilesExist, RunStore, RunStoreSnapshot, SharedLockedRunStore, SnapshotWithReplayability,
81    StoreRunFiles, StoreRunsDir, StressCompletedRunStats,
82};
83pub use summary::{
84    CoreEventKind, OutputEventKind, OutputFileName, RecordOpts, StressConditionSummary,
85    StressIndexSummary, TestEventKindSummary, TestEventSummary, ZipStoreOutput,
86    ZipStoreOutputDescription,
87};