Skip to content

Datadog shared rust-based library. For now only used in other products (e.g. Ruby or PHP libraries).

License

Notifications You must be signed in to change notification settings

DataDog/libdatadog

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

libdatadog

libdatadog provides a shared library containing common code used in the implementation of Datadog's libraries, including Continuous Profilers.

NOTE: If you're building a new Datadog library/profiler or want to contribute to Datadog's existing tools, you've come to the right place! Otherwise, this is possibly not the droid you were looking for.

libdatadog logo

Development

Contributing

See CONTRIBUTING.md.

Building

Build libdatadog as usual with cargo build.

Builder crate

You can generate a release using the builder crate. This will trigger all the necessary steps to create the libraries, binaries, headers and package config files needed to use a pre-built libdatadog binary in a (non-rust) project. The default build does not include any capability so you'll need to list all features you want to include. You can see a full, up-to-date list of features in the builder/Cargo.toml file.

Here's one example of using the builder crate:

mkdir output-folder
cargo run --bin release --features profiling,telemetry,data-pipeline,symbolizer,crashtracker,library-config,log,ddsketch -- --out output-folder

Build dependencies

  • Rust 1.84.1 or newer with cargo. See the Cargo.toml for information about bumping this version.
  • cbindgen 0.29
  • cmake and protoc

Running tests

This project uses cargo-nextest to run tests.

cargo nextest run

Installing cargo-nextest

The simplest way to install cargo-nextest is to use cargo install like this.

cargo install --locked '[email protected]'

Dev Containers

Prerequisites
Steps
  1. Open a local VS Code window on the cloned repository.
  2. Open the command palette (Ctrl+Shift+P or Cmd+Shift+P on macOS) and select "Dev Containers: Reopen in Container".
  3. Choose the Rust Container.
  4. VS Code will open a new window connected to the selected container.

Docker container

A dockerfile is provided to run tests in a Ubuntu linux environment. This is particularly useful for running and debugging linux-only tests on macOS.

To build the docker image, from the root directory of the libdatadog project run

docker build -f local-linux.Dockerfile -t libdatadog-linux .

To start the docker container, you can run

docker run -it --privileged -v "$(pwd)":/libdatadog -v cargo-cache:/home/user/.cargo libdatadog-linux

This will:

  1. Start the container in privileged mode to allow the container to run docker-in-docker, which is necessary for some integration tests.
  2. Mount the current directory (the root of the libdatadog workspace) into the container at /libdatadog.
  3. Mount a named volume cargo-cache to cache the cargo dependencies at ~/.cargo. This is helpful to avoid re-downloading dependencies every time you start the container, but isn't absolutely necessary.

The $CARGO_TARGET_DIR environment variable is set to /libdatadog/docker-linux-target in the container, so cargo will use the target directory in the mounted volume to avoid conflicts with the host's default target directory of libdatadog/target.

Skipping tracing integration tests

Tracing integration tests require docker to be installed and running. If you don't have docker installed or you want to skip these tests, you can run:

cargo nextest run -E '!test(tracing_integration_tests::)'

About

Datadog shared rust-based library. For now only used in other products (e.g. Ruby or PHP libraries).

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Contributors 54