Перейти к файлу
Barret Rennie 4f52550351
Record Firefox execution
`fxrecorder` now starts a recording session via its `Recorder` and
requests `fxrunner` to start Firefox. After a delay, Firefox is shut
down and the recording stops.

Recorder and Splash mocks are also added for integration tests, but as
of yet they do nothing.
2020-09-29 15:55:25 -04:00
fakefox
fxrecorder
fxrunner
integration-tests
libfxrecord
libfxrecord_macros
test
.gitignore
CODE_OF_CONDUCT.md
Cargo.lock
Cargo.toml
README.md
fxrecord.example.toml

README.md

fxrecord

fxrecord is a tool for capturing and analyzing recordings of Firefox desktop startup. It consists of two parts: fxrecorder, which records the output of the reference hardware and does analysis, and fxrunner, which instruments Firefox on the reference hardware.

License

fxrecord is released under the terms of the Mozilla Public License 2.0.

Code of Conduct

This repository follows a code of conduct.

Requirements

Both fxrunner and fxrecorder require Rust 1.39+ for async/await support.

fxrunner

The only supported operating system for fxrunner is Windows 10. It is a statically linked executable with no other dependencies. Additionally, it requires legacy IO counters to be enabled. This can be done by running the following once:

diskperf -Y

fxrecorder

fxrecorder is also a statically linked executable, but it has two additional requirements:

fxrecorder presently requires a Windows 10 device as it assumes that DirectShow will be used for video capture. The capture card used while developing fxrecord only supported Windows 10 and therefore was not able to be tested against any other operating system.

Building

fxrecord is built in Rust and uses Cargo. To build for production use, run

cargo +beta build --release

and the binaries will be located in the target/release/ subdirectory. Copy the fxrunner binary to the reference device and the fxrecorder to the recording device.

Configuration

fxrunner requires a configuration file named fxrecord.toml with [fxrunner] and [fxrecorder.recording] sections:

[fxrecorder]
# The host and port that FxRunner is listening on.
host = "127.0.0.1:8888"

[fxrecorder.recording]
# The path to ffmpeg on the file system.
ffmpeg_path = "C:\ffmpeg\ffmepg.exe"

# The size of the video stream.
video_size = { y = 1920, x = 1080 }

# The desired size. If omitted, video_size will be used instead.
output_size = { y = 1366, x = 768 }

# The frame rate to capture at.
frame_rate = 60

# The name of the device to use for capture.
device = "AVerMedia GC551 Video Capture"

# The size of the buffer to use while streaming frames.
buffer_size = "1000M"

fxrunner requires a configuration file named fxrecord.toml with a [fxrunner] section:

[fxrunner]
# The host and port that FxRecorder will be able to connect to.
host = "0.0.0.0:8888"

An example configuration is provided.