Перейти к файлу
Barret Rennie 4870a145c8
Make protocol less noisy
Instead of the recorder constantly sending messages to the runner, it
now sends a single `Request` message and receives a series of responses
from the runner.

Tests will be fixed in a later commit.

Received profiles, prefs, and Firefox builds are not presently persisted
through restarts. This will be fixed in an upcoming patch.

The protocol docs no longer match what happens, so they've been removed
for now.
2020-06-28 21:24:06 -04:00
fxrecorder Make protocol less noisy 2020-06-28 21:24:06 -04:00
fxrunner Make protocol less noisy 2020-06-28 21:24:06 -04:00
integration-tests Document legacy IO counter requirement for fxrunner 2020-06-28 21:14:51 -04:00
libfxrecord Make protocol less noisy 2020-06-28 21:24:06 -04:00
test Extract downloaded archives 2020-06-24 19:50:10 -04:00
.gitignore Add a command line interface with structopt 2019-10-08 16:19:45 -04:00
CODE_OF_CONDUCT.md Add code of conduct 2019-08-15 14:20:00 -04:00
Cargo.lock Send prefs from the recorder to the runner 2020-06-25 01:20:32 -04:00
Cargo.toml Add an integration test for the handshake 2020-06-16 00:24:19 -04:00
README.md Document legacy IO counter requirement for fxrunner 2020-06-28 21:14:51 -04:00
fxrecord.example.toml Add a command line interface with structopt 2019-10-08 16:19:45 -04:00

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.