Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
68850b3
TODO: AMEND: add W3C style, but it doesn't do anything
dgoffredo Dec 19, 2022
8238cd5
TODO: AMEND: untested traceparent extraction
dgoffredo Dec 19, 2022
1a06e86
TODO: AMEND: it's already thread-safe
dgoffredo Dec 20, 2022
122fc3d
add a convenience script that does some of the CI checks
dgoffredo Dec 20, 2022
fea2115
TODO: AMEND: whoops
dgoffredo Dec 20, 2022
aaea195
TODO: AMEND: extract traceparent
dgoffredo Dec 20, 2022
b34231e
TODO: AMEND: add some documentation
dgoffredo Dec 21, 2022
d0005cd
TODO: AMEND: inject traceparent
dgoffredo Dec 21, 2022
5ce2166
TODO: AMEND: untested tracestate extraction
dgoffredo Dec 21, 2022
3158907
TODO: AMEND: tested tracestate extraction
dgoffredo Dec 21, 2022
b69ad49
TODO: AMEND: add some more documentation
dgoffredo Dec 21, 2022
fea6cae
TODO: AMEND: checkpoint
dgoffredo Dec 21, 2022
b1888ec
TODO: AMEND: checkpoint
dgoffredo Dec 21, 2022
6bc3168
TODO: AMEND: checkpoint, before I mess with flat maps
dgoffredo Dec 22, 2022
cf67c0f
TODO: AMEND: trace_tags is a vector
dgoffredo Dec 22, 2022
0cff419
TODO: AMEND: tracestate injection tested
dgoffredo Dec 22, 2022
4e8719d
TODO: AMEND: fix scary typo
dgoffredo Dec 22, 2022
a72b297
TODO: AMEND: update includes graph in doc/
dgoffredo Dec 22, 2022
b3c9fa4
TODO: AMEND: add a fuzzer for W3C propagation
dgoffredo Dec 22, 2022
065945c
TODO: AMEND: thread_local, not that it matters
dgoffredo Dec 22, 2022
3bbf910
TODO: AMEND: document the fuzzer
dgoffredo Dec 22, 2022
dcf6cda
TODO: AMEND: typo in readme
dgoffredo Dec 22, 2022
9a9212c
TODO: AMEND: be honest
dgoffredo Dec 22, 2022
e923b03
shellcheck
dgoffredo Jan 9, 2023
ac95cd1
shellcheck
dgoffredo Jan 9, 2023
f789c1c
tricky rebase...
dgoffredo Jan 9, 2023
e360058
build unit tests in debug mode
dgoffredo Jan 13, 2023
91ea8a8
add advisory comments
dgoffredo Jan 13, 2023
65336af
print <LOG ENTRIES> on one line, in tests, if empty
dgoffredo Jan 13, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,14 @@ jobs:
- checkout
- run: bin/check-format

shellcheck:
docker:
- image: "datadog/docker-library:dd-trace-cpp-ci"
resource_class: small
steps:
- checkout
- run: find bin/ -executable -type f | xargs shellcheck

build-bazel:
parameters:
toolchain:
Expand Down Expand Up @@ -59,6 +67,7 @@ workflows:
pull-request:
jobs:
- format
- shellcheck
- test-cmake:
matrix:
parameters:
Expand Down
6 changes: 6 additions & 0 deletions BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@ cc_library(
"src/datadog/error.cpp",
"src/datadog/event_scheduler.cpp",
"src/datadog/expected.cpp",
"src/datadog/extracted_data.cpp",
"src/datadog/glob.cpp",
"src/datadog/hex.cpp",
"src/datadog/http_client.cpp",
"src/datadog/id_generator.cpp",
"src/datadog/limiter.cpp",
Expand Down Expand Up @@ -49,6 +51,7 @@ cc_library(
"src/datadog/trace_sampler.cpp",
"src/datadog/trace_segment.cpp",
"src/datadog/version.cpp",
"src/datadog/w3c_propagation.cpp",
],
hdrs = [
"src/datadog/cerr_logger.h",
Expand All @@ -65,7 +68,9 @@ cc_library(
"src/datadog/error.h",
"src/datadog/event_scheduler.h",
"src/datadog/expected.h",
"src/datadog/extracted_data.h",
"src/datadog/glob.h",
"src/datadog/hex.h",
"src/datadog/http_client.h",
"src/datadog/id_generator.h",
"src/datadog/json.hpp",
Expand Down Expand Up @@ -100,6 +105,7 @@ cc_library(
"src/datadog/trace_sampler.h",
"src/datadog/trace_segment.h",
"src/datadog/version.h",
"src/datadog/w3c_propagation.h",
],
copts = [
"-Wall",
Expand Down
25 changes: 23 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ option(BUILD_COVERAGE "Build code with code coverage profiling instrumentation"
option(BUILD_EXAMPLE "Build the example program (example/)" OFF)
option(BUILD_TESTING "Build the unit tests (test/)" OFF)
option(SANITIZE "Build with address sanitizer and undefined behavior sanitizer" OFF)
option(FUZZ_W3C_PROPAGATION "Build a fuzzer for W3C propagation" OFF)

set(CMAKE_BUILD_TYPE "RelWithDebInfo")
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
Expand All @@ -20,12 +21,26 @@ include(ProcessorCount)
ProcessorCount(NUM_PROCESSORS)
set(MAKE_JOB_COUNT ${NUM_PROCESSORS} CACHE STRING "Number of jobs to use when building libcurl")

if (SANITIZE)
function(add_sanitizers)
add_compile_options(-fsanitize=address)
add_link_options(-fsanitize=address)
add_compile_options(-fsanitize=undefined)
add_link_options(-fsanitize=undefined)
# Thread sanitizer fails with "unexpected memory mapping".
endfunction()

if(FUZZ_W3C_PROPAGATION)
add_compile_options(-fsanitize=fuzzer)
add_link_options(-fsanitize=fuzzer)
add_sanitizers()
add_subdirectory(fuzz/w3c-propagation)
endif()

if (SANITIZE)
add_sanitizers()
endif()

if (BUILD_TESTING)
set(CMAKE_BUILD_TYPE "Debug")
endif()

include (ExternalProject)
Expand Down Expand Up @@ -70,7 +85,9 @@ target_sources(dd_trace_cpp PRIVATE
src/datadog/error.cpp
src/datadog/event_scheduler.cpp
src/datadog/expected.cpp
src/datadog/extracted_data.cpp
src/datadog/glob.cpp
src/datadog/hex.cpp
src/datadog/http_client.cpp
src/datadog/id_generator.cpp
src/datadog/limiter.cpp
Expand Down Expand Up @@ -103,6 +120,7 @@ target_sources(dd_trace_cpp PRIVATE
src/datadog/trace_sampler.cpp
src/datadog/trace_segment.cpp
src/datadog/version.cpp
src/datadog/w3c_propagation.cpp
)

# This library's public headers are just its source headers.
Expand All @@ -125,7 +143,9 @@ target_sources(dd_trace_cpp PUBLIC
src/datadog/error.h
src/datadog/event_scheduler.h
src/datadog/expected.h
src/datadog/extracted_data.h
src/datadog/glob.h
src/datadog/hex.h
src/datadog/http_client.h
src/datadog/id_generator.h
src/datadog/json_fwd.hpp
Expand Down Expand Up @@ -160,6 +180,7 @@ target_sources(dd_trace_cpp PUBLIC
src/datadog/trace_sampler.h
src/datadog/trace_segment.h
src/datadog/version.h
src/datadog/w3c_propagation.h
)

add_dependencies(dd_trace_cpp curl)
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ env DEBIAN_FRONTEND=noninteractive
run apt-get update && apt-get install --yes software-properties-common && \
add-apt-repository ppa:git-core/ppa --yes && \
apt-get update && apt-get upgrade --yes && \
apt-get install --yes wget build-essential clang sed gdb clang-format git ssh
apt-get install --yes wget build-essential clang sed gdb clang-format git ssh shellcheck

# bazelisk, a launcher for bazel. `bazelisk --help` will cause the latest
# version to be downloaded.
Expand Down
2 changes: 1 addition & 1 deletion bin/bazel-build
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@

set -e

cd $(dirname "$0")/..
cd "$(dirname "$0")"/..

bazelisk build dd_trace_cpp
13 changes: 13 additions & 0 deletions bin/check
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#!/bin/sh

# Run some of the checks that are performed by CircleCI.
# This is convenient to run before committing.

set -e

# Go to the repository root directory.
cd "$(dirname "$0")"/..

bin/format --dry-run -Werror
bin/test
bin/bazel-build
4 changes: 2 additions & 2 deletions bin/cmake-build
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

set -e

cd $(dirname "$0")/..
cd "$(dirname "$0")"/..

mkdir -p .build
cd .build
cmake ..
make -j $(nproc)
make -j "$(nproc)"
7 changes: 4 additions & 3 deletions bin/example
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,9 @@ cd "$(dirname "$0")"/..

mkdir -p .build
cd .build
cmake .. $coverage_flags -DBUILD_EXAMPLE=1
make -j $(nproc) $verbosity_flags
cmake .. -DBUILD_EXAMPLE=1
# shellcheck disable=SC2086
make -j "$(nproc)" $verbosity_flags

if [ "$build_only" -eq 1 ]; then
exit
Expand All @@ -35,6 +36,6 @@ if [ "$DD_API_KEY" = '' ]; then
fi
docker compose --project-directory ../example up --detach --remove-orphans
# docker compose --project-directory ../example logs --follow &
./example/example"$@"
./example/example "$@"
docker compose --project-directory ../example down
# wait
12 changes: 8 additions & 4 deletions bin/format
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
#!/bin/sh

set -e

# Go to the repository root directory.
cd "$(dirname "$0")"/..

Expand All @@ -9,14 +11,15 @@ cd "$(dirname "$0")"/..
# occasionally bumps the required version, reformatting everything.
version=14
formatter=clang-format-$version
formatter_options='--style=file -i'
formatter_options="--style=file -i"

find_sources() {
find src/ example/ test/ -type f \( -name '*.h' -o -name '*.cpp' \) "$@"
find src/ example/ test/ fuzz/ -type f \( -name '*.h' -o -name '*.cpp' \) "$@"
}

# If the correct version of clang-format is installed, then use it and quit.
if >/dev/null command -v "$formatter"; then
# shellcheck disable=SC2086
find_sources -print0 | xargs -0 "$formatter" $formatter_options
exit
fi
Expand All @@ -31,11 +34,11 @@ fi
image=silkeh/clang:$version
if [ "$(docker image ls --quiet $image | wc -l)" -eq 0 ]; then
printf '%s is not installed. Download docker image %s instead? [Y/n] ' "$formatter" "$image"
read response
read -r response
case "$response" in
y|Y|yes|Yes|YES|'') ;;
*) exit ;;
esac
esac
fi

mount_path=/mnt/host
Expand All @@ -52,6 +55,7 @@ process_arg() {
}

docker_clang_format() {
# shellcheck disable=SC2086
find_sources | while IFS= read -r arg; do
process_arg "$arg"
done | xargs -0 \
Expand Down
2 changes: 2 additions & 0 deletions bin/install-cmake
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
#!/bin/sh

set -e

# Install a recent binary release of cmake.
# Kitware produces a self-installing tarball.

Expand Down
2 changes: 2 additions & 0 deletions bin/test
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,11 @@ cd "$(dirname "$0")"/..

mkdir -p .build
cd .build
# shellcheck disable=SC2086
cmake .. $coverage_flags -DBUILD_TESTING=1
# Clean up any code coverage artifacts.
find . -type f -name '*.gcda' -print0 | xargs -0 rm -f
# shellcheck disable=SC2086
make -j "$MAKE_JOB_COUNT" $verbosity_flags

if [ "$build_only" -eq 1 ]; then
Expand Down
Loading