Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

APMSP-1542 feat: setup dotnet CI and add support for win-x64, win-x86, linux-x64, linux-arm64 & osx-arm64 #771

Draft
wants to merge 37 commits into
base: main
Choose a base branch
from

Conversation

ganeshnj
Copy link
Contributor

@ganeshnj ganeshnj commented Nov 28, 2024

What does this PR do?

This PR adds support for .NET Standard 2.0 in libdatadog nuget package for win-x64 and win-x86.

This is foundation of adding support for more platform in future ie

  • linux-(arch)
  • linux-musl-(arch)
  • osx-arm64

It also adds a github workflow to make sure, the libdatadog nuget package actually works on supported platforms.

The added readme clearly layout the structure of the package for posterity.

Motivation

Until now, libdatadog has been used directly in the native projects with static linking. Since we are moving from static linking as per new requirement for data-pipeline integration, we need to have support for .NET apps in libdatadog because Datadog.Trace is pure .NET project.

Hence, to keep the experience idiomatic to .NET developer, we should support .NET in libdatadog.

Additional Notes

There will be future PRs to add support for more platform as mentioned above.

I know are splitting the dynamic and static libraries in their own packages, we will update the docs once this change go official, currently this PR assumes it is same package.

How to test the change?

Screenshot 2024-12-02 at 13 09 27
  • The workflow itself also runs a test to make sure nuget package is working as expected.

@@ -0,0 +1,54 @@
on:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟠 Code Vulnerability

No explicit permissions set for at the workflow level (...read more)

Datadog’s GitHub organization defines default permissions for the GITHUB_TOKEN to be restricted (contents:read, metadata:read, and packages:read).

Your repository may require a different setup, so consider defining permissions for each job following the least privilege principle to restrict the impact of a possible compromise.

You can find the list of all possible permissions in Workflow syntax for GitHub Actions - GitHub Docs. They can be defined at the job or the workflow level.

View in Datadog  Leave us feedback  Documentation

.github/workflows/dotnet.yml Show resolved Hide resolved
@pr-commenter
Copy link

pr-commenter bot commented Nov 28, 2024

Benchmarks

Comparison

Benchmark execution time: 2025-01-14 19:19:10

Comparing candidate commit 1e22aaf in PR branch ganeshnj/feat/linux-osx-nuget with baseline commit adc183e in branch main.

Found 0 performance improvements and 1 performance regressions! Performance is the same for 50 metrics, 2 unstable metrics.

scenario:benching deserializing traces from msgpack to their internal representation

  • 🟥 execution_time [+5.487ms; +5.554ms] or [+9.440%; +9.555%]

Candidate

Candidate benchmark details

Group 1

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 1e22aaf 1736881481 ganeshnj/feat/linux-osx-nuget
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
redis/obfuscate_redis_string execution_time 36.298µs 37.009µs ± 1.189µs 36.482µs ± 0.078µs 36.577µs 39.590µs 39.622µs 39.753µs 8.96% 1.698 0.908 3.21% 0.084µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
redis/obfuscate_redis_string execution_time [36.844µs; 37.174µs] or [-0.445%; +0.445%] None None None

Group 2

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 1e22aaf 1736881481 ganeshnj/feat/linux-osx-nuget
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... execution_time 543.885µs 545.330µs ± 0.854µs 545.162µs ± 0.345µs 545.518µs 547.035µs 547.767µs 551.268µs 1.12% 2.620 12.205 0.16% 0.060µs 1 200
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput 1813998.490op/s 1833756.602op/s ± 2860.450op/s 1834318.821op/s ± 1159.046op/s 1835428.906op/s 1836681.195op/s 1837642.710op/s 1838624.819op/s 0.23% -2.586 11.903 0.16% 202.264op/s 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time 475.013µs 475.994µs ± 0.372µs 475.966µs ± 0.216µs 476.182µs 476.566µs 477.206µs 477.568µs 0.34% 0.778 2.076 0.08% 0.026µs 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput 2093942.181op/s 2100865.892op/s ± 1642.905op/s 2100989.361op/s ± 951.369op/s 2101937.613op/s 2103043.707op/s 2103940.376op/s 2105205.775op/s 0.20% -0.770 2.051 0.08% 116.171op/s 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time 194.778µs 195.325µs ± 0.429µs 195.305µs ± 0.113µs 195.411µs 195.543µs 195.748µs 199.507µs 2.15% 7.660 68.725 0.22% 0.030µs 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput 5012358.762op/s 5119702.476op/s ± 11070.792op/s 5120200.065op/s ± 2970.735op/s 5123333.468op/s 5128070.807op/s 5132682.104op/s 5134056.290op/s 0.27% -7.581 67.768 0.22% 782.823op/s 1 200
normalization/normalize_service/normalize_service/[empty string] execution_time 47.257µs 47.892µs ± 0.210µs 47.931µs ± 0.132µs 48.030µs 48.197µs 48.335µs 48.392µs 0.96% -0.288 -0.123 0.44% 0.015µs 1 200
normalization/normalize_service/normalize_service/[empty string] throughput 20664535.524op/s 20880918.970op/s ± 91574.350op/s 20863295.985op/s ± 57439.629op/s 20945021.217op/s 21046404.514op/s 21088010.662op/s 21160863.504op/s 1.43% 0.311 -0.110 0.44% 6475.284op/s 1 200
normalization/normalize_service/normalize_service/test_ASCII execution_time 49.982µs 50.236µs ± 0.142µs 50.220µs ± 0.073µs 50.297µs 50.406µs 50.492µs 51.601µs 2.75% 4.497 40.476 0.28% 0.010µs 1 200
normalization/normalize_service/normalize_service/test_ASCII throughput 19379588.688op/s 19906112.916op/s ± 55699.275op/s 19912240.901op/s ± 29049.596op/s 19940214.546op/s 19970102.496op/s 19989151.915op/s 20007150.791op/s 0.48% -4.312 38.167 0.28% 3938.533op/s 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... execution_time [545.212µs; 545.448µs] or [-0.022%; +0.022%] None None None
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput [1833360.171op/s; 1834153.033op/s] or [-0.022%; +0.022%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time [475.943µs; 476.046µs] or [-0.011%; +0.011%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput [2100638.201op/s; 2101093.583op/s] or [-0.011%; +0.011%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time [195.265µs; 195.384µs] or [-0.030%; +0.030%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput [5118168.171op/s; 5121236.781op/s] or [-0.030%; +0.030%] None None None
normalization/normalize_service/normalize_service/[empty string] execution_time [47.862µs; 47.921µs] or [-0.061%; +0.061%] None None None
normalization/normalize_service/normalize_service/[empty string] throughput [20868227.646op/s; 20893610.294op/s] or [-0.061%; +0.061%] None None None
normalization/normalize_service/normalize_service/test_ASCII execution_time [50.216µs; 50.256µs] or [-0.039%; +0.039%] None None None
normalization/normalize_service/normalize_service/test_ASCII throughput [19898393.532op/s; 19913832.300op/s] or [-0.039%; +0.039%] None None None

Group 3

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 1e22aaf 1736881481 ganeshnj/feat/linux-osx-nuget
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... execution_time 300.011µs 302.421µs ± 1.071µs 302.326µs ± 0.659µs 303.048µs 304.061µs 304.671µs 308.214µs 1.95% 1.143 4.260 0.35% 0.076µs 1 200
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput 3244497.782op/s 3306693.000op/s ± 11664.592op/s 3307685.297op/s ± 7209.666op/s 3314142.505op/s 3323815.438op/s 3326839.179op/s 3333211.527op/s 0.77% -1.092 3.985 0.35% 824.811op/s 1 200
normalization/normalize_name/normalize_name/bad-name execution_time 27.079µs 27.444µs ± 0.136µs 27.472µs ± 0.079µs 27.535µs 27.623µs 27.711µs 27.970µs 1.81% -0.118 0.219 0.50% 0.010µs 1 200
normalization/normalize_name/normalize_name/bad-name throughput 35752847.714op/s 36438531.462op/s ± 181235.322op/s 36400850.513op/s ± 105371.895op/s 36574534.092op/s 36740621.226op/s 36798950.227op/s 36928479.032op/s 1.45% 0.150 0.159 0.50% 12815.273op/s 1 200
normalization/normalize_name/normalize_name/good execution_time 15.854µs 16.095µs ± 0.172µs 16.020µs ± 0.080µs 16.305µs 16.366µs 16.385µs 16.400µs 2.37% 0.577 -1.358 1.06% 0.012µs 1 200
normalization/normalize_name/normalize_name/good throughput 60975389.196op/s 62137442.880op/s ± 658445.704op/s 62422418.844op/s ± 312998.358op/s 62671957.866op/s 62849251.116op/s 62973593.860op/s 63073743.897op/s 1.04% -0.567 -1.363 1.06% 46559.142op/s 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... execution_time [302.272µs; 302.569µs] or [-0.049%; +0.049%] None None None
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput [3305076.400op/s; 3308309.601op/s] or [-0.049%; +0.049%] None None None
normalization/normalize_name/normalize_name/bad-name execution_time [27.425µs; 27.463µs] or [-0.069%; +0.069%] None None None
normalization/normalize_name/normalize_name/bad-name throughput [36413413.989op/s; 36463648.935op/s] or [-0.069%; +0.069%] None None None
normalization/normalize_name/normalize_name/good execution_time [16.071µs; 16.119µs] or [-0.148%; +0.148%] None None None
normalization/normalize_name/normalize_name/good throughput [62046188.638op/s; 62228697.122op/s] or [-0.147%; +0.147%] None None None

Group 4

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 1e22aaf 1736881481 ganeshnj/feat/linux-osx-nuget
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
normalization/normalize_trace/test_trace execution_time 295.976ns 308.071ns ± 13.142ns 301.945ns ± 3.492ns 310.146ns 336.667ns 345.950ns 349.293ns 15.68% 1.532 1.264 4.26% 0.929ns 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
normalization/normalize_trace/test_trace execution_time [306.250ns; 309.893ns] or [-0.591%; +0.591%] None None None

Group 5

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 1e22aaf 1736881481 ganeshnj/feat/linux-osx-nuget
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
two way interface execution_time 18.652µs 28.220µs ± 14.252µs 18.960µs ± 0.279µs 37.132µs 47.721µs 49.809µs 151.605µs 699.59% 3.860 27.950 50.38% 1.008µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
two way interface execution_time [26.245µs; 30.196µs] or [-6.999%; +6.999%] None None None

Group 6

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 1e22aaf 1736881481 ganeshnj/feat/linux-osx-nuget
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
write only interface execution_time 1.364µs 3.300µs ± 1.471µs 3.104µs ± 0.028µs 3.129µs 3.730µs 14.315µs 15.280µs 392.29% 7.443 56.064 44.46% 0.104µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
write only interface execution_time [3.096µs; 3.504µs] or [-6.177%; +6.177%] None None None

Group 7

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 1e22aaf 1736881481 ganeshnj/feat/linux-osx-nuget
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
sql/obfuscate_sql_string execution_time 76.042µs 76.308µs ± 0.179µs 76.281µs ± 0.053µs 76.351µs 76.469µs 76.645µs 78.438µs 2.83% 8.568 98.121 0.23% 0.013µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
sql/obfuscate_sql_string execution_time [76.284µs; 76.333µs] or [-0.033%; +0.033%] None None None

Group 8

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 1e22aaf 1736881481 ganeshnj/feat/linux-osx-nuget
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
benching deserializing traces from msgpack to their internal representation execution_time 63.139ms 63.646ms ± 0.191ms 63.658ms ± 0.128ms 63.764ms 63.971ms 64.039ms 64.130ms 0.74% -0.003 -0.349 0.30% 0.013ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
benching deserializing traces from msgpack to their internal representation execution_time [63.620ms; 63.673ms] or [-0.042%; +0.042%] None None None

Group 9

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 1e22aaf 1736881481 ganeshnj/feat/linux-osx-nuget
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
credit_card/is_card_number/ execution_time 4.276µs 4.292µs ± 0.007µs 4.291µs ± 0.001µs 4.292µs 4.295µs 4.337µs 4.351µs 1.40% 6.526 48.698 0.17% 0.001µs 1 200
credit_card/is_card_number/ throughput 229827735.682op/s 233017549.676op/s ± 391324.029op/s 233054263.103op/s ± 80205.835op/s 233132708.519op/s 233305992.867op/s 233388767.489op/s 233850754.462op/s 0.34% -6.485 48.286 0.17% 27670.787op/s 1 200
credit_card/is_card_number/ 3782-8224-6310-005 execution_time 92.510µs 93.508µs ± 0.502µs 93.486µs ± 0.265µs 93.756µs 94.179µs 94.430µs 97.999µs 4.83% 3.609 30.526 0.54% 0.035µs 1 200
credit_card/is_card_number/ 3782-8224-6310-005 throughput 10204235.892op/s 10694606.319op/s ± 56328.074op/s 10696735.323op/s ± 30206.113op/s 10725824.493op/s 10769894.644op/s 10788454.818op/s 10809622.726op/s 1.06% -3.310 27.164 0.53% 3982.996op/s 1 200
credit_card/is_card_number/ 378282246310005 execution_time 87.398µs 88.014µs ± 0.446µs 87.986µs ± 0.174µs 88.149µs 88.444µs 88.651µs 93.223µs 5.95% 8.019 91.309 0.51% 0.032µs 1 200
credit_card/is_card_number/ 378282246310005 throughput 10726964.502op/s 11362095.134op/s ± 55380.128op/s 11365474.530op/s ± 22443.193op/s 11389554.652op/s 11411448.263op/s 11433296.523op/s 11441940.433op/s 0.67% -7.586 84.673 0.49% 3915.966op/s 1 200
credit_card/is_card_number/37828224631 execution_time 4.274µs 4.292µs ± 0.005µs 4.291µs ± 0.002µs 4.293µs 4.296µs 4.299µs 4.346µs 1.27% 6.886 78.846 0.11% 0.000µs 1 200
credit_card/is_card_number/37828224631 throughput 230112949.821op/s 233014157.398op/s ± 259321.433op/s 233025979.298op/s ± 84837.048op/s 233107634.282op/s 233295398.895op/s 233374704.693op/s 233963301.185op/s 0.40% -6.774 77.357 0.11% 18336.794op/s 1 200
credit_card/is_card_number/378282246310005 execution_time 84.863µs 85.489µs ± 0.229µs 85.478µs ± 0.150µs 85.640µs 85.860µs 86.074µs 86.170µs 0.81% 0.234 0.029 0.27% 0.016µs 1 200
credit_card/is_card_number/378282246310005 throughput 11604902.466op/s 11697543.820op/s ± 31373.905op/s 11698983.359op/s ± 20488.436op/s 11717864.178op/s 11744935.253op/s 11764407.592op/s 11783713.860op/s 0.72% -0.218 0.018 0.27% 2218.470op/s 1 200
credit_card/is_card_number/37828224631000521389798 execution_time 58.970µs 59.073µs ± 0.034µs 59.070µs ± 0.017µs 59.090µs 59.135µs 59.171µs 59.212µs 0.24% 0.441 1.844 0.06% 0.002µs 1 200
credit_card/is_card_number/37828224631000521389798 throughput 16888377.955op/s 16928148.495op/s ± 9781.967op/s 16929201.234op/s ± 4850.225op/s 16933402.199op/s 16944818.693op/s 16951706.302op/s 16957773.448op/s 0.17% -0.434 1.835 0.06% 691.690op/s 1 200
credit_card/is_card_number/x371413321323331 execution_time 6.831µs 6.844µs ± 0.012µs 6.843µs ± 0.002µs 6.846µs 6.849µs 6.854µs 6.962µs 1.74% 8.576 79.528 0.17% 0.001µs 1 200
credit_card/is_card_number/x371413321323331 throughput 143627058.040op/s 146104533.488op/s ± 246928.544op/s 146125082.388op/s ± 51393.652op/s 146181810.654op/s 146242505.341op/s 146297277.665op/s 146387754.409op/s 0.18% -8.535 78.995 0.17% 17460.485op/s 1 200
credit_card/is_card_number_no_luhn/ execution_time 4.271µs 4.291µs ± 0.003µs 4.291µs ± 0.002µs 4.293µs 4.297µs 4.298µs 4.298µs 0.17% -1.226 9.166 0.07% 0.000µs 1 200
credit_card/is_card_number_no_luhn/ throughput 232646618.270op/s 233025260.294op/s ± 161640.511op/s 233046713.869op/s ± 88048.841op/s 233114307.391op/s 233242818.077op/s 233349709.484op/s 234115711.012op/s 0.46% 1.246 9.311 0.07% 11429.710op/s 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time 70.443µs 71.414µs ± 0.416µs 71.406µs ± 0.286µs 71.719µs 72.050µs 72.383µs 72.484µs 1.51% -0.013 -0.349 0.58% 0.029µs 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput 13796085.578op/s 14003307.538op/s ± 81546.899op/s 14004484.271op/s ± 56311.093op/s 14058907.954op/s 14140541.357op/s 14188975.553op/s 14195913.544op/s 1.37% 0.041 -0.353 0.58% 5766.237op/s 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time 65.309µs 66.135µs ± 0.341µs 66.127µs ± 0.231µs 66.374µs 66.677µs 66.822µs 67.147µs 1.54% 0.091 -0.239 0.51% 0.024µs 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 throughput 14892773.021op/s 15121012.294op/s ± 77920.766op/s 15122430.359op/s ± 52896.398op/s 15172053.601op/s 15253989.032op/s 15290640.204op/s 15311784.954op/s 1.25% -0.063 -0.246 0.51% 5509.830op/s 1 200
credit_card/is_card_number_no_luhn/37828224631 execution_time 4.275µs 4.292µs ± 0.004µs 4.291µs ± 0.001µs 4.293µs 4.297µs 4.299µs 4.321µs 0.69% 2.694 22.849 0.08% 0.000µs 1 200
credit_card/is_card_number_no_luhn/37828224631 throughput 231421775.568op/s 233002845.495op/s ± 197454.908op/s 233023975.930op/s ± 72924.532op/s 233093211.160op/s 233239795.773op/s 233347694.031op/s 233891488.798op/s 0.37% -2.649 22.523 0.08% 13962.170op/s 1 200
credit_card/is_card_number_no_luhn/378282246310005 execution_time 62.231µs 62.822µs ± 0.414µs 62.775µs ± 0.321µs 63.111µs 63.588µs 64.026µs 64.289µs 2.41% 0.730 0.344 0.66% 0.029µs 1 200
credit_card/is_card_number_no_luhn/378282246310005 throughput 15554657.936op/s 15918790.561op/s ± 104450.276op/s 15929816.870op/s ± 81480.124op/s 16006960.394op/s 16052022.778op/s 16068271.017op/s 16069150.232op/s 0.87% -0.695 0.247 0.65% 7385.750op/s 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time 58.967µs 59.067µs ± 0.032µs 59.069µs ± 0.018µs 59.085µs 59.115µs 59.140µs 59.226µs 0.27% 0.306 2.993 0.05% 0.002µs 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput 16884595.478op/s 16929842.992op/s ± 9087.676op/s 16929357.178op/s ± 5240.601op/s 16935208.855op/s 16945359.857op/s 16952074.280op/s 16958631.115op/s 0.17% -0.298 2.970 0.05% 642.596op/s 1 200
credit_card/is_card_number_no_luhn/x371413321323331 execution_time 6.830µs 6.842µs ± 0.004µs 6.842µs ± 0.002µs 6.844µs 6.848µs 6.854µs 6.862µs 0.29% 0.601 3.796 0.06% 0.000µs 1 200
credit_card/is_card_number_no_luhn/x371413321323331 throughput 145735206.705op/s 146147993.393op/s ± 83634.822op/s 146156423.464op/s ± 37285.793op/s 146185911.333op/s 146277988.976op/s 146355795.944op/s 146411652.685op/s 0.17% -0.592 3.771 0.06% 5913.875op/s 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
credit_card/is_card_number/ execution_time [4.291µs; 4.293µs] or [-0.024%; +0.024%] None None None
credit_card/is_card_number/ throughput [232963315.929op/s; 233071783.423op/s] or [-0.023%; +0.023%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 execution_time [93.438µs; 93.577µs] or [-0.074%; +0.074%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 throughput [10686799.790op/s; 10702412.849op/s] or [-0.073%; +0.073%] None None None
credit_card/is_card_number/ 378282246310005 execution_time [87.952µs; 88.076µs] or [-0.070%; +0.070%] None None None
credit_card/is_card_number/ 378282246310005 throughput [11354419.981op/s; 11369770.287op/s] or [-0.068%; +0.068%] None None None
credit_card/is_card_number/37828224631 execution_time [4.291µs; 4.292µs] or [-0.016%; +0.016%] None None None
credit_card/is_card_number/37828224631 throughput [232978217.942op/s; 233050096.855op/s] or [-0.015%; +0.015%] None None None
credit_card/is_card_number/378282246310005 execution_time [85.457µs; 85.520µs] or [-0.037%; +0.037%] None None None
credit_card/is_card_number/378282246310005 throughput [11693195.698op/s; 11701891.941op/s] or [-0.037%; +0.037%] None None None
credit_card/is_card_number/37828224631000521389798 execution_time [59.068µs; 59.078µs] or [-0.008%; +0.008%] None None None
credit_card/is_card_number/37828224631000521389798 throughput [16926792.808op/s; 16929504.181op/s] or [-0.008%; +0.008%] None None None
credit_card/is_card_number/x371413321323331 execution_time [6.843µs; 6.846µs] or [-0.024%; +0.024%] None None None
credit_card/is_card_number/x371413321323331 throughput [146070311.566op/s; 146138755.409op/s] or [-0.023%; +0.023%] None None None
credit_card/is_card_number_no_luhn/ execution_time [4.291µs; 4.292µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/ throughput [233002858.474op/s; 233047662.115op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time [71.356µs; 71.472µs] or [-0.081%; +0.081%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput [13992005.922op/s; 14014609.154op/s] or [-0.081%; +0.081%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time [66.088µs; 66.182µs] or [-0.071%; +0.071%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 throughput [15110213.225op/s; 15131811.363op/s] or [-0.071%; +0.071%] None None None
credit_card/is_card_number_no_luhn/37828224631 execution_time [4.291µs; 4.292µs] or [-0.012%; +0.012%] None None None
credit_card/is_card_number_no_luhn/37828224631 throughput [232975480.144op/s; 233030210.846op/s] or [-0.012%; +0.012%] None None None
credit_card/is_card_number_no_luhn/378282246310005 execution_time [62.764µs; 62.879µs] or [-0.091%; +0.091%] None None None
credit_card/is_card_number_no_luhn/378282246310005 throughput [15904314.757op/s; 15933266.364op/s] or [-0.091%; +0.091%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time [59.063µs; 59.072µs] or [-0.007%; +0.007%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput [16928583.527op/s; 16931102.456op/s] or [-0.007%; +0.007%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 execution_time [6.842µs; 6.843µs] or [-0.008%; +0.008%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 throughput [146136402.411op/s; 146159584.375op/s] or [-0.008%; +0.008%] None None None

Group 10

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 1e22aaf 1736881481 ganeshnj/feat/linux-osx-nuget
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
benching string interning on wordpress profile execution_time 138.896µs 139.600µs ± 0.427µs 139.567µs ± 0.149µs 139.716µs 139.975µs 140.441µs 143.745µs 2.99% 5.614 48.507 0.30% 0.030µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
benching string interning on wordpress profile execution_time [139.541µs; 139.659µs] or [-0.042%; +0.042%] None None None

Group 11

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 1e22aaf 1736881481 ganeshnj/feat/linux-osx-nuget
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
tags/replace_trace_tags execution_time 2.714µs 2.765µs ± 0.020µs 2.764µs ± 0.009µs 2.774µs 2.809µs 2.822µs 2.831µs 2.43% 0.539 1.592 0.73% 0.001µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
tags/replace_trace_tags execution_time [2.763µs; 2.768µs] or [-0.101%; +0.101%] None None None

Group 12

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 1e22aaf 1736881481 ganeshnj/feat/linux-osx-nuget
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
concentrator/add_spans_to_concentrator execution_time 6.311ms 6.330ms ± 0.009ms 6.329ms ± 0.005ms 6.335ms 6.343ms 6.351ms 6.401ms 1.13% 2.699 19.615 0.14% 0.001ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
concentrator/add_spans_to_concentrator execution_time [6.329ms; 6.332ms] or [-0.019%; +0.019%] None None None

Baseline

Omitted due to size.

@codecov-commenter
Copy link

codecov-commenter commented Nov 28, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 71.02%. Comparing base (adc183e) to head (1e22aaf).

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #771   +/-   ##
=======================================
  Coverage   71.02%   71.02%           
=======================================
  Files         315      315           
  Lines       45972    45972           
=======================================
  Hits        32652    32652           
  Misses      13320    13320           
Components Coverage Δ
crashtracker 38.52% <ø> (ø)
crashtracker-ffi 5.71% <ø> (ø)
datadog-alloc 98.73% <ø> (ø)
data-pipeline 91.71% <ø> (ø)
data-pipeline-ffi 90.08% <ø> (ø)
ddcommon 82.08% <ø> (ø)
ddcommon-ffi 65.84% <ø> (ø)
ddtelemetry 59.51% <ø> (ø)
ddtelemetry-ffi 22.46% <ø> (ø)
dogstatsd 89.59% <ø> (ø)
dogstatsd-client 79.77% <ø> (ø)
ipc 82.69% <ø> (ø)
profiling 84.29% <ø> (ø)
profiling-ffi 77.55% <ø> (ø)
serverless 0.00% <ø> (ø)
sidecar 40.91% <ø> (ø)
sidecar-ffi 3.98% <ø> (ø)
spawn-worker 54.37% <ø> (ø)
tinybytes 93.60% <ø> (ø)
trace-mini-agent 72.48% <ø> (ø)
trace-normalization 98.23% <ø> (ø)
trace-obfuscation 95.77% <ø> (ø)
trace-protobuf 77.67% <ø> (ø)
trace-utils 93.79% <ø> (ø)

.github/workflows/dotnet.yml Show resolved Hide resolved
.github/workflows/dotnet.yml Show resolved Hide resolved
.github/workflows/dotnet.yml Show resolved Hide resolved
.github/workflows/dotnet.yml Outdated Show resolved Hide resolved
.github/workflows/dotnet.yml Outdated Show resolved Hide resolved
@ganeshnj ganeshnj force-pushed the ganeshnj/feat/linux-osx-nuget branch from 1764c70 to e41eef6 Compare November 29, 2024 13:32
@ganeshnj ganeshnj force-pushed the ganeshnj/feat/linux-osx-nuget branch 4 times, most recently from 541c0e5 to 28e6260 Compare December 2, 2024 10:30
@ganeshnj ganeshnj changed the title feat: setup dotnet CI feat: setup dotnet CI and add support for win-x64, x86 runtimes Dec 2, 2024
@ganeshnj ganeshnj marked this pull request as ready for review December 2, 2024 10:37
@ganeshnj ganeshnj requested review from a team as code owners December 2, 2024 10:37
@ganeshnj ganeshnj changed the title feat: setup dotnet CI and add support for win-x64, x86 runtimes APMSP-1542 feat: setup dotnet CI and add support for win-x64, x86 runtimes Dec 2, 2024
@ganeshnj ganeshnj force-pushed the ganeshnj/feat/linux-osx-nuget branch from 28e6260 to 35465a3 Compare December 2, 2024 10:50
@ganeshnj ganeshnj marked this pull request as draft December 2, 2024 15:40
@ganeshnj ganeshnj force-pushed the ganeshnj/feat/linux-osx-nuget branch 3 times, most recently from a9c66db to ebeeec2 Compare December 4, 2024 10:04
uses: actions/checkout@v4

- name: centos:7
uses: addnab/docker-run-action@v3

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟠 Code Vulnerability

Workflow depends on a GitHub actions pinned by tag (...read more)

When using a third party action, one needs to provide its GitHub path (owner/project) and can eventually pin it to a Git ref (a branch name, a Git tag, or a commit hash).

No pinned Git ref means the action uses the latest commit of the default branch each time it runs, eventually running newer versions of the code that were not audited by Datadog. Specifying a Git tag is better, but since they are not immutable, using a full length hash is recommended to make sure the action content is actually frozen to some reviewed state.

Be careful however, as even pinning an action by hash can be circumvented by attackers still. For instance, if an action relies on a Docker image which is itself not pinned to a digest, it becomes possible to alter its behaviour through the Docker image without actually changing its hash. You can learn more about this kind of attacks in Unpinnable Actions: How Malicious Code Can Sneak into Your GitHub Actions Workflows. Pinning actions by hash is still a good first line of defense against supply chain attacks.

Additionally, pinning by hash or tag means the action won’t benefit from newer version updates if any, including eventual security patches. Make sure to regularly check if newer versions for an action you use are available. For actions coming from a very trustworthy source, it can make sense to use a laxer pinning policy to benefit from updates as soon as possible.

View in Datadog  Leave us feedback  Documentation

needs: test
steps:
- name: Checkout code
uses: actions/checkout@v4

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟠 Code Vulnerability

Workflow depends on a GitHub actions pinned by tag (...read more)

When using a third party action, one needs to provide its GitHub path (owner/project) and can eventually pin it to a Git ref (a branch name, a Git tag, or a commit hash).

No pinned Git ref means the action uses the latest commit of the default branch each time it runs, eventually running newer versions of the code that were not audited by Datadog. Specifying a Git tag is better, but since they are not immutable, using a full length hash is recommended to make sure the action content is actually frozen to some reviewed state.

Be careful however, as even pinning an action by hash can be circumvented by attackers still. For instance, if an action relies on a Docker image which is itself not pinned to a digest, it becomes possible to alter its behaviour through the Docker image without actually changing its hash. You can learn more about this kind of attacks in Unpinnable Actions: How Malicious Code Can Sneak into Your GitHub Actions Workflows. Pinning actions by hash is still a good first line of defense against supply chain attacks.

Additionally, pinning by hash or tag means the action won’t benefit from newer version updates if any, including eventual security patches. Make sure to regularly check if newer versions for an action you use are available. For actions coming from a very trustworthy source, it can make sense to use a laxer pinning policy to benefit from updates as soon as possible.

View in Datadog  Leave us feedback  Documentation

dotnet pack windows/libdatadog.csproj -p:LibDatadogBinariesOutputDir=../${{ env.OUTPUT_DIR }} -p:LibDatadogVersion=$version -p:PackageID=${{ env.NUGET_NAME }} -o ${{ env.PACKAGES_DIR }}

- name: Upload package
uses: actions/upload-artifact@v4 # v4

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟠 Code Vulnerability

Workflow depends on a GitHub actions pinned by tag (...read more)

When using a third party action, one needs to provide its GitHub path (owner/project) and can eventually pin it to a Git ref (a branch name, a Git tag, or a commit hash).

No pinned Git ref means the action uses the latest commit of the default branch each time it runs, eventually running newer versions of the code that were not audited by Datadog. Specifying a Git tag is better, but since they are not immutable, using a full length hash is recommended to make sure the action content is actually frozen to some reviewed state.

Be careful however, as even pinning an action by hash can be circumvented by attackers still. For instance, if an action relies on a Docker image which is itself not pinned to a digest, it becomes possible to alter its behaviour through the Docker image without actually changing its hash. You can learn more about this kind of attacks in Unpinnable Actions: How Malicious Code Can Sneak into Your GitHub Actions Workflows. Pinning actions by hash is still a good first line of defense against supply chain attacks.

Additionally, pinning by hash or tag means the action won’t benefit from newer version updates if any, including eventual security patches. Make sure to regularly check if newer versions for an action you use are available. For actions coming from a very trustworthy source, it can make sense to use a laxer pinning policy to benefit from updates as soon as possible.

View in Datadog  Leave us feedback  Documentation

path: bin

- name: Download aarch64-unknown-linux-musl
uses: actions/download-artifact@v4

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟠 Code Vulnerability

Workflow depends on a GitHub actions pinned by tag (...read more)

When using a third party action, one needs to provide its GitHub path (owner/project) and can eventually pin it to a Git ref (a branch name, a Git tag, or a commit hash).

No pinned Git ref means the action uses the latest commit of the default branch each time it runs, eventually running newer versions of the code that were not audited by Datadog. Specifying a Git tag is better, but since they are not immutable, using a full length hash is recommended to make sure the action content is actually frozen to some reviewed state.

Be careful however, as even pinning an action by hash can be circumvented by attackers still. For instance, if an action relies on a Docker image which is itself not pinned to a digest, it becomes possible to alter its behaviour through the Docker image without actually changing its hash. You can learn more about this kind of attacks in Unpinnable Actions: How Malicious Code Can Sneak into Your GitHub Actions Workflows. Pinning actions by hash is still a good first line of defense against supply chain attacks.

Additionally, pinning by hash or tag means the action won’t benefit from newer version updates if any, including eventual security patches. Make sure to regularly check if newer versions for an action you use are available. For actions coming from a very trustworthy source, it can make sense to use a laxer pinning policy to benefit from updates as soon as possible.

View in Datadog  Leave us feedback  Documentation

./windows/build-artifacts.sh ${{ env.OUTPUT_DIR }} ${{ matrix.target }}

- name: alpine:3.19
uses: addnab/docker-run-action@v3

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟠 Code Vulnerability

Workflow depends on a GitHub actions pinned by tag (...read more)

When using a third party action, one needs to provide its GitHub path (owner/project) and can eventually pin it to a Git ref (a branch name, a Git tag, or a commit hash).

No pinned Git ref means the action uses the latest commit of the default branch each time it runs, eventually running newer versions of the code that were not audited by Datadog. Specifying a Git tag is better, but since they are not immutable, using a full length hash is recommended to make sure the action content is actually frozen to some reviewed state.

Be careful however, as even pinning an action by hash can be circumvented by attackers still. For instance, if an action relies on a Docker image which is itself not pinned to a digest, it becomes possible to alter its behaviour through the Docker image without actually changing its hash. You can learn more about this kind of attacks in Unpinnable Actions: How Malicious Code Can Sneak into Your GitHub Actions Workflows. Pinning actions by hash is still a good first line of defense against supply chain attacks.

Additionally, pinning by hash or tag means the action won’t benefit from newer version updates if any, including eventual security patches. Make sure to regularly check if newer versions for an action you use are available. For actions coming from a very trustworthy source, it can make sense to use a laxer pinning policy to benefit from updates as soon as possible.

View in Datadog  Leave us feedback  Documentation

path: ${{ env.PACKAGES_DIR }}

- name: ${{ matrix.container }} Test
uses: addnab/docker-run-action@v3

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟠 Code Vulnerability

Workflow depends on a GitHub actions pinned by tag (...read more)

When using a third party action, one needs to provide its GitHub path (owner/project) and can eventually pin it to a Git ref (a branch name, a Git tag, or a commit hash).

No pinned Git ref means the action uses the latest commit of the default branch each time it runs, eventually running newer versions of the code that were not audited by Datadog. Specifying a Git tag is better, but since they are not immutable, using a full length hash is recommended to make sure the action content is actually frozen to some reviewed state.

Be careful however, as even pinning an action by hash can be circumvented by attackers still. For instance, if an action relies on a Docker image which is itself not pinned to a digest, it becomes possible to alter its behaviour through the Docker image without actually changing its hash. You can learn more about this kind of attacks in Unpinnable Actions: How Malicious Code Can Sneak into Your GitHub Actions Workflows. Pinning actions by hash is still a good first line of defense against supply chain attacks.

Additionally, pinning by hash or tag means the action won’t benefit from newer version updates if any, including eventual security patches. Make sure to regularly check if newer versions for an action you use are available. For actions coming from a very trustworthy source, it can make sense to use a laxer pinning policy to benefit from updates as soon as possible.

View in Datadog  Leave us feedback  Documentation

@ganeshnj ganeshnj force-pushed the ganeshnj/feat/linux-osx-nuget branch from eb8b9e6 to 0fdcbb9 Compare December 19, 2024 16:43
uses: actions/checkout@v4

- name: Download package
uses: actions/download-artifact@v4

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟠 Code Vulnerability

Workflow depends on a GitHub actions pinned by tag (...read more)

When using a third party action, one needs to provide its GitHub path (owner/project) and can eventually pin it to a Git ref (a branch name, a Git tag, or a commit hash).

No pinned Git ref means the action uses the latest commit of the default branch each time it runs, eventually running newer versions of the code that were not audited by Datadog. Specifying a Git tag is better, but since they are not immutable, using a full length hash is recommended to make sure the action content is actually frozen to some reviewed state.

Be careful however, as even pinning an action by hash can be circumvented by attackers still. For instance, if an action relies on a Docker image which is itself not pinned to a digest, it becomes possible to alter its behaviour through the Docker image without actually changing its hash. You can learn more about this kind of attacks in Unpinnable Actions: How Malicious Code Can Sneak into Your GitHub Actions Workflows. Pinning actions by hash is still a good first line of defense against supply chain attacks.

Additionally, pinning by hash or tag means the action won’t benefit from newer version updates if any, including eventual security patches. Make sure to regularly check if newer versions for an action you use are available. For actions coming from a very trustworthy source, it can make sense to use a laxer pinning policy to benefit from updates as soon as possible.

View in Datadog  Leave us feedback  Documentation

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants