diff --git a/.azure-pipelines/ultimate-pipeline.yml b/.azure-pipelines/ultimate-pipeline.yml
index 72f093030bcf..86031fe12e01 100644
--- a/.azure-pipelines/ultimate-pipeline.yml
+++ b/.azure-pipelines/ultimate-pipeline.yml
@@ -111,6 +111,7 @@ variables:
relativeArtifacts: /tracer/src/bin/artifacts
monitoringHome: $(System.DefaultWorkingDirectory)/shared/bin/monitoring-home
artifacts: $(System.DefaultWorkingDirectory)/tracer/src/bin/artifacts
+ outputDir: $(System.DefaultWorkingDirectory)/artifacts
symbols: $(System.DefaultWorkingDirectory)/tracer/bin/symbols
relativeRunnerTool: tracer/src/bin/runnerTool
relativeRunnerStandalone: tracer/src/bin/runnerStandalone
@@ -171,7 +172,7 @@ variables:
DD_COLLECTOR_CPU_USAGE: true
# If we're doing an SSI run, set the indicator, the rest need to be set in the stage
IS_SSI_RUN: $[ or(eq(variables['Build.CronSchedule.DisplayName'], 'Daily SSI Run'), eq(variables['force_ssi_run'], 'true')) ]
- ToolVersion: 3.8.0
+ ToolVersion: 3.9.0
# Declare the datadog agent as a resource to be used as a pipeline service
resources:
@@ -1359,7 +1360,7 @@ stages:
- stage: unit_tests_windows
condition: and(succeeded(), eq(variables['isBenchmarksOnlyBuild'], 'False'))
- dependsOn: [build_windows_tracer, merge_commit_id]
+ dependsOn: [build_windows_tracer, merge_commit_id, generate_variables]
variables:
targetShaId: $[ stageDependencies.merge_commit_id.fetch.outputs['set_sha.sha']]
targetBranch: $[ stageDependencies.merge_commit_id.fetch.outputs['set_sha.branch']]
@@ -1373,6 +1374,8 @@ stages:
- job: managed
timeoutInMinutes: 60 #default value
+ strategy:
+ matrix: $[stageDependencies.generate_variables.generate_variables_job.outputs['generate_variables_step.unit_tests_windows_matrix'] ]
steps:
- template: steps/clone-repo.yml
parameters:
@@ -1381,7 +1384,7 @@ stages:
- template: steps/install-dotnet.yml
- template: steps/restore-working-directory.yml
- - script: tracer\build.cmd BuildAndRunManagedUnitTests --code-coverage-enabled $(CodeCoverageEnabled)
+ - script: tracer\build.cmd BuildAndRunManagedUnitTests --framework $(framework) --code-coverage-enabled $(CodeCoverageEnabled)
displayName: Build and Test
env:
DD_LOGGER_DD_API_KEY: $(ddApiKey)
@@ -1400,7 +1403,7 @@ stages:
- stage: unit_tests_macos
condition: and(succeeded(), eq(variables['isBenchmarksOnlyBuild'], 'False'))
- dependsOn: [build_macos, merge_commit_id]
+ dependsOn: [build_macos, merge_commit_id, generate_variables]
variables:
targetShaId: $[ stageDependencies.merge_commit_id.fetch.outputs['set_sha.sha']]
targetBranch: $[ stageDependencies.merge_commit_id.fetch.outputs['set_sha.branch']]
@@ -1410,6 +1413,9 @@ stages:
jobs: [managed]
- job: managed
+ strategy:
+ matrix:
+ $[stageDependencies.generate_variables.generate_variables_job.outputs['generate_variables_step.unit_tests_macos_matrix'] ]
timeoutInMinutes: 90
pool:
vmImage: macos-13
@@ -1430,7 +1436,7 @@ stages:
artifact: build-macos-native_tracer
path: $(monitoringHome)
- - script: ./tracer/build.sh BuildAndRunManagedUnitTests --code-coverage-enabled $(CodeCoverageEnabled)
+ - script: ./tracer/build.sh BuildAndRunManagedUnitTests --framework $(framework) --code-coverage-enabled $(CodeCoverageEnabled)
displayName: Build and Test
retryCountOnTaskFailure: 1
env:
@@ -1450,7 +1456,7 @@ stages:
- stage: unit_tests_linux
condition: and(succeeded(), eq(variables['isBenchmarksOnlyBuild'], 'False'))
- dependsOn: [build_linux_tracer, build_linux_profiler, merge_commit_id]
+ dependsOn: [build_linux_tracer, build_linux_profiler, merge_commit_id, generate_variables]
variables:
targetShaId: $[ stageDependencies.merge_commit_id.fetch.outputs['set_sha.sha']]
targetBranch: $[ stageDependencies.merge_commit_id.fetch.outputs['set_sha.branch']]
@@ -1463,12 +1469,7 @@ stages:
timeoutInMinutes: 60 #default value
strategy:
matrix:
- x64:
- baseImage: debian
- artifactSuffix: linux-x64
- alpine:
- baseImage: alpine
- artifactSuffix: linux-musl-x64
+ $[stageDependencies.generate_variables.generate_variables_job.outputs['generate_variables_step.unit_tests_linux_x64_matrix'] ]
pool:
name: azure-linux-scale-set
@@ -1486,7 +1487,7 @@ stages:
parameters:
build: true
baseImage: $(baseImage)
- command: "BuildAndRunManagedUnitTests --code-coverage-enabled $(CodeCoverageEnabled)"
+ command: "BuildAndRunManagedUnitTests --framework $(framework) --code-coverage-enabled $(CodeCoverageEnabled)"
apiKey: $(DD_LOGGER_DD_API_KEY)
- publish: artifacts/build_data
@@ -1503,7 +1504,7 @@ stages:
- stage: unit_tests_arm64
condition: and(succeeded(), eq(variables['isBenchmarksOnlyBuild'], 'False'))
- dependsOn: [build_arm64_tracer, merge_commit_id]
+ dependsOn: [build_arm64_tracer, merge_commit_id, generate_variables]
variables:
targetShaId: $[ stageDependencies.merge_commit_id.fetch.outputs['set_sha.sha']]
targetBranch: $[ stageDependencies.merge_commit_id.fetch.outputs['set_sha.branch']]
@@ -1514,14 +1515,10 @@ stages:
- job: test
timeoutInMinutes: 60 #default value
+
strategy:
matrix:
- arm64:
- baseImage: debian
- artifactSuffix: linux-arm64
- alpine:
- baseImage: alpine
- artifactSuffix: linux-musl-arm64
+ $[stageDependencies.generate_variables.generate_variables_job.outputs['generate_variables_step.unit_tests_linux_arm64_matrix'] ]
pool:
name: aws-arm64-auto-scaling
workspace:
@@ -1539,7 +1536,7 @@ stages:
parameters:
build: true
baseImage: $(baseImage)
- command: "BuildAndRunManagedUnitTests"
+ command: "BuildAndRunManagedUnitTests --framework $(framework) --code-coverage-enabled $(CodeCoverageEnabled)"
apiKey: $(DD_LOGGER_DD_API_KEY)
- publish: artifacts/build_data
@@ -1554,9 +1551,209 @@ stages:
testResultsFiles: artifacts/build_data/results/**/*.trx
condition: succeededOrFailed()
+- stage: build_samples
+ dependsOn: [merge_commit_id]
+ variables:
+ targetShaId: $[ stageDependencies.merge_commit_id.fetch.outputs['set_sha.sha']]
+ targetBranch: $[ stageDependencies.merge_commit_id.fetch.outputs['set_sha.branch']]
+ jobs:
+ - template: steps/update-github-status-jobs.yml
+ parameters:
+ jobs: [standalone, multi_version, merge]
+
+ - job: standalone
+ timeoutInMinutes: 60 #default value
+ pool:
+ name: azure-windows-scale-set-3
+ steps:
+ - template: steps/clone-repo.yml
+ parameters:
+ targetShaId: $(targetShaId)
+ targetBranch: $(targetBranch)
+ - template: steps/install-latest-dotnet-sdk.yml
+
+ - script: tracer\build.cmd CreateRequiredDirectories CompileSamples
+ displayName: Build sample projects
+ retryCountOnTaskFailure: 1
+
+ - publish: $(outputDir)/bin
+ displayName: Upload artifact samples (bin only)
+ artifact: samples-bin-standalone
+
+ - publish: artifacts/build_data
+ displayName: Uploading logs
+ artifact: _$(System.StageName)_$(Agent.JobName)_logs_$(System.JobAttempt)
+ condition: failed()
+ continueOnError: true
+
+ - job: multi_version
+ timeoutInMinutes: 60 #default value
+ strategy:
+ # TODO: we could move this generation to the generate_variables stage but it would delay this starting, so just hardcode it for now
+ matrix:
+ net462:
+ framework: net462
+ netcoreapp2.1:
+ framework: netcoreapp2.1
+ netcoreapp3.0:
+ framework: netcoreapp3.0
+ netcoreapp3.1:
+ framework: netcoreapp3.1
+ net5.0:
+ framework: net5.0
+ net6.0:
+ framework: net6.0
+ net7.0:
+ framework: net7.0
+ net8.0:
+ framework: net8.0
+ net9.0:
+ framework: net9.0
+ pool:
+ name: azure-windows-scale-set-3
+ steps:
+ - template: steps/clone-repo.yml
+ parameters:
+ targetShaId: $(targetShaId)
+ targetBranch: $(targetBranch)
+ - template: steps/install-latest-dotnet-sdk.yml
+
+ - script: tracer\build.cmd CreateRequiredDirectories CompileSamples -Framework $(framework) -TestAllPackageVersions
+ displayName: Build sample projects
+ retryCountOnTaskFailure: 1
+
+ - publish: $(outputDir)/publish
+ displayName: Upload artifact samples (bin only)
+ artifact: samples-multi-version-$(framework)
+
+ - publish: artifacts/build_data
+ displayName: Uploading logs
+ artifact: _$(System.StageName)_$(Agent.JobName)_logs_$(System.JobAttempt)
+ condition: failed()
+ continueOnError: true
+
+ - job: merge
+ dependsOn: [ standalone, multi_version ]
+ timeoutInMinutes: 60 #default value
+ pool:
+ name: azure-windows-scale-set-3
+ steps:
+ - checkout: none
+ - powershell: |
+ mkdir $(Build.ArtifactStagingDirectory)/bin
+ mkdir $(Build.ArtifactStagingDirectory)/publish
+
+ - task: DownloadPipelineArtifact@2
+ displayName: Download samples
+ inputs:
+ artifact: samples-bin-standalone
+ path: $(Build.ArtifactStagingDirectory)/bin
+ retryCountOnTaskFailure: 5
+
+ - task: DownloadPipelineArtifact@2
+ displayName: Download samples
+ inputs:
+ artifact: samples-multi-version-net462
+ path: $(Build.ArtifactStagingDirectory)/publish
+ retryCountOnTaskFailure: 5
+
+ - task: DownloadPipelineArtifact@2
+ displayName: Download samples
+ inputs:
+ artifact: samples-multi-version-netcoreapp2.1
+ path: $(Build.ArtifactStagingDirectory)/publish
+ retryCountOnTaskFailure: 5
+
+ - task: DownloadPipelineArtifact@2
+ displayName: Download samples
+ inputs:
+ artifact: samples-multi-version-netcoreapp3.0
+ path: $(Build.ArtifactStagingDirectory)/publish
+ retryCountOnTaskFailure: 5
+
+ - task: DownloadPipelineArtifact@2
+ displayName: Download samples
+ inputs:
+ artifact: samples-multi-version-netcoreapp3.1
+ path: $(Build.ArtifactStagingDirectory)/publish
+ retryCountOnTaskFailure: 5
+
+ - task: DownloadPipelineArtifact@2
+ displayName: Download samples
+ inputs:
+ artifact: samples-multi-version-net5.0
+ path: $(Build.ArtifactStagingDirectory)/publish
+ retryCountOnTaskFailure: 5
+
+ - task: DownloadPipelineArtifact@2
+ displayName: Download samples
+ inputs:
+ artifact: samples-multi-version-net6.0
+ path: $(Build.ArtifactStagingDirectory)/publish
+ retryCountOnTaskFailure: 5
+
+ - task: DownloadPipelineArtifact@2
+ displayName: Download samples
+ inputs:
+ artifact: samples-multi-version-net7.0
+ path: $(Build.ArtifactStagingDirectory)/publish
+ retryCountOnTaskFailure: 5
+
+ - task: DownloadPipelineArtifact@2
+ displayName: Download samples
+ inputs:
+ artifact: samples-multi-version-net8.0
+ path: $(Build.ArtifactStagingDirectory)/publish
+ retryCountOnTaskFailure: 5
+
+ - task: DownloadPipelineArtifact@2
+ displayName: Download samples
+ inputs:
+ artifact: samples-multi-version-net9.0
+ path: $(Build.ArtifactStagingDirectory)/publish
+ retryCountOnTaskFailure: 5
+
+ - publish: $(Build.ArtifactStagingDirectory)
+ displayName: Upload artifact samples
+ artifact: samples
+
+# This is just to test that we _can_ build the solution on macos
+# It's not used by other stages, and just ensures we don't break the macos build
+- stage: build_samples_macos
+ dependsOn: [merge_commit_id]
+ variables:
+ targetShaId: $[ stageDependencies.merge_commit_id.fetch.outputs['set_sha.sha']]
+ targetBranch: $[ stageDependencies.merge_commit_id.fetch.outputs['set_sha.branch']]
+ jobs:
+ - template: steps/update-github-status-jobs.yml
+ parameters:
+ jobs: [macos]
+
+ - job: macos
+ timeoutInMinutes: 60 #default value
+ pool:
+ vmImage: macos-13
+ steps:
+ - template: steps/clone-repo.yml
+ parameters:
+ targetShaId: $(targetShaId)
+ targetBranch: $(targetBranch)
+ - template: steps/install-latest-dotnet-sdk.yml
+
+ - script: ./tracer/build.sh CreateRequiredDirectories CompileSamples
+ displayName: Build sample projects
+ retryCountOnTaskFailure: 1
+
+ - publish: artifacts/build_data
+ displayName: Uploading logs
+ artifact: _$(System.StageName)_$(Agent.JobName)_logs_$(System.JobAttempt)
+ condition: failed()
+ continueOnError: true
+
+
- stage: integration_tests_windows
condition: and(succeeded(), eq(variables['isBenchmarksOnlyBuild'], 'False'))
- dependsOn: [build_windows_tracer, generate_variables, merge_commit_id]
+ dependsOn: [build_windows_tracer, generate_variables, merge_commit_id, build_samples]
variables:
targetShaId: $[ stageDependencies.merge_commit_id.fetch.outputs['set_sha.sha']]
targetBranch: $[ stageDependencies.merge_commit_id.fetch.outputs['set_sha.branch']]
@@ -1581,6 +1778,12 @@ stages:
parameters:
includeX86: true
- template: steps/restore-working-directory.yml
+ - task: DownloadPipelineArtifact@2
+ displayName: Download samples
+ inputs:
+ artifact: samples
+ path: $(outputDir)
+ retryCountOnTaskFailure: 5
# Cosmos is _way_ to flaky at the moment. Try enabling again at a later time
# - powershell: |
@@ -1598,7 +1801,7 @@ stages:
displayName: 'Initialize LocalDB'
workingDirectory: $(Build.Repository.LocalPath)
- - script: tracer\build.cmd BuildAndRunWindowsIntegrationTests BuildAndRunWindowsRegressionTests -Framework $(framework) --code-coverage-enabled $(CodeCoverageEnabled)
+ - script: tracer\build.cmd CompileTrimmingSamples BuildWindowsIntegrationTests BuildWindowsRegressionTests RunWindowsIntegrationTests RunWindowsRegressionTests -Framework $(framework) --code-coverage-enabled $(CodeCoverageEnabled)
displayName: Run integration tests
env:
DD_LOGGER_DD_API_KEY: $(ddApiKey)
@@ -1835,6 +2038,12 @@ stages:
targetShaId: $(targetShaId)
targetBranch: $(targetBranch)
- template: steps/install-dotnet-sdks.yml
+ # This is a hack because otherwise Azure Functions _always_ tries to use the one from program files otherwise
+ - script: |
+ cd /D %PROGRAMFILES%/dotnet
+ rename dotnet.exe dotnet.exe.bak
+ where dotnet
+ displayName: 'Rename default dotnet.exe'
- template: steps/restore-working-directory.yml
- template: steps/install-msi.yml
@@ -2112,7 +2321,7 @@ stages:
- stage: integration_tests_linux
condition: and(succeeded(), eq(variables['isBenchmarksOnlyBuild'], 'False'))
- dependsOn: [package_linux, generate_variables, merge_commit_id]
+ dependsOn: [package_linux, generate_variables, merge_commit_id, build_samples]
variables:
targetShaId: $[ stageDependencies.merge_commit_id.fetch.outputs['set_sha.sha']]
targetBranch: $[ stageDependencies.merge_commit_id.fetch.outputs['set_sha.branch']]
@@ -2142,6 +2351,12 @@ stages:
- template: steps/restore-working-directory.yml
parameters:
artifact: build-$(artifactSuffix)-working-directory
+ - task: DownloadPipelineArtifact@2
+ displayName: Download samples
+ inputs:
+ artifact: samples
+ path: $(outputDir)
+ retryCountOnTaskFailure: 5
# when we build samples separately, we could run this step and the docker-compose one below in //
# (currently the docker-compose step relies on serverless samples)
@@ -2149,7 +2364,7 @@ stages:
parameters:
build: true
baseImage: $(baseImage)
- command: "BuildLinuxIntegrationTests --framework $(publishTargetFramework) --IncludeTestsRequiringDocker false --Filter $(IntegrationTestFilter) --SampleName $(IntegrationTestSampleName)"
+ command: "BuildLinuxIntegrationTests CompileTrimmingSamples --framework $(publishTargetFramework) --IncludeTestsRequiringDocker false --Filter $(IntegrationTestFilter) --SampleName $(IntegrationTestSampleName)"
apikey: $(DD_LOGGER_DD_API_KEY)
- task: DownloadPipelineArtifact@2
@@ -2223,6 +2438,12 @@ stages:
- template: steps/restore-working-directory.yml
parameters:
artifact: build-$(artifactSuffix)-working-directory
+ - task: DownloadPipelineArtifact@2
+ displayName: Download samples
+ inputs:
+ artifact: samples
+ path: $(outputDir)
+ retryCountOnTaskFailure: 5
# when we build samples separately, we could run this step and the docker-compose one below in //
# (currently the docker-compose step relies on serverless samples)
@@ -2230,7 +2451,7 @@ stages:
parameters:
build: true
baseImage: $(baseImage)
- command: "BuildLinuxIntegrationTests --framework $(publishTargetFramework) --IncludeTestsRequiringDocker true --Filter $(IntegrationTestFilter) --SampleName $(IntegrationTestSampleName)"
+ command: "BuildLinuxIntegrationTests CompileTrimmingSamples --framework $(publishTargetFramework) --IncludeTestsRequiringDocker true --Filter $(IntegrationTestFilter) --SampleName $(IntegrationTestSampleName)"
apiKey: $(DD_LOGGER_DD_API_KEY)
- task: DownloadPipelineArtifact@2
@@ -2340,6 +2561,12 @@ stages:
inputs:
artifact: linux-monitoring-home-$(artifactSuffix)
path: $(monitoringHome)
+ - task: DownloadPipelineArtifact@2
+ displayName: Download samples
+ inputs:
+ artifact: samples
+ path: $(outputDir)
+ retryCountOnTaskFailure: 5
- template: steps/run-in-docker.yml
parameters:
@@ -2912,7 +3139,7 @@ stages:
- stage: integration_tests_arm64
condition: and(succeeded(), eq(variables['isBenchmarksOnlyBuild'], 'False'))
- dependsOn: [package_arm64, generate_variables, merge_commit_id]
+ dependsOn: [package_arm64, generate_variables, merge_commit_id, build_samples]
variables:
targetShaId: $[ stageDependencies.merge_commit_id.fetch.outputs['set_sha.sha']]
targetBranch: $[ stageDependencies.merge_commit_id.fetch.outputs['set_sha.branch']]
@@ -2943,11 +3170,18 @@ stages:
parameters:
artifact: build-$(artifactSuffix)-working-directory
+ - task: DownloadPipelineArtifact@2
+ displayName: Download samples
+ inputs:
+ artifact: samples
+ path: $(outputDir)
+ retryCountOnTaskFailure: 5
+
- template: steps/run-in-docker.yml
parameters:
build: true
baseImage: $(baseImage)
- command: "BuildLinuxIntegrationTests --framework $(publishTargetFramework) --IncludeTestsRequiringDocker false --Filter $(IntegrationTestFilter) --SampleName $(IntegrationTestSampleName)"
+ command: "BuildLinuxIntegrationTests CompileTrimmingSamples --framework $(publishTargetFramework) --IncludeTestsRequiringDocker false --Filter $(IntegrationTestFilter) --SampleName $(IntegrationTestSampleName)"
apiKey: $(DD_LOGGER_DD_API_KEY)
- task: DownloadPipelineArtifact@2
@@ -3013,6 +3247,12 @@ stages:
- template: steps/restore-working-directory.yml
parameters:
artifact: build-$(artifactSuffix)-working-directory
+ - task: DownloadPipelineArtifact@2
+ displayName: Download samples
+ inputs:
+ artifact: samples
+ path: $(outputDir)
+ retryCountOnTaskFailure: 5
- template: steps/run-in-docker.yml
parameters:
@@ -5039,107 +5279,163 @@ stages:
variables:
targetShaId: $[ stageDependencies.merge_commit_id.fetch.outputs['set_sha.sha']]
targetBranch: $[ stageDependencies.merge_commit_id.fetch.outputs['set_sha.branch']]
+ scenarioGroups: "appsec"
+ additionalScenarios: '[\"PARAMETRIC\", \"REMOTE_CONFIG_SCENARIOS\", \"TELEMETRY_SCENARIOS\", \"DEFAULT\", \"INTEGRATIONS\", \"INTEGRATIONS_AWS\", \"CROSSED_TRACING_LIBRARIES\", \"DEBUGGER_SCENARIOS\", \"+S PROFILING +S TRACE_PROPAGATION_STYLE_W3C +S LIBRARY_CONF_CUSTOM_HEADER_TAGS\"]'
jobs:
- - template: steps/update-github-status-jobs.yml
- parameters:
- jobs: [test]
+ - template: steps/update-github-status-jobs.yml
+ parameters:
+ jobs: [compute_scenarios, tests]
+
+ - job: compute_scenarios
+ timeoutInMinutes: 60
+ displayName: Compute system-tests scenarios
+ pool:
+ vmImage: ubuntu-latest
+
+ steps:
+ - checkout: none
+
+ - task: UsePythonVersion@0
+ inputs:
+ versionSpec: '3.12'
+ displayName: Install python 3.12
- - job: test
- timeoutInMinutes: 60
- pool:
- vmImage: ubuntu-latest
+ - script: git clone --depth 1 https://github.com/DataDog/system-tests.git
+ displayName: Get system tests repo
+
+ - script: |
+ ./build.sh -i runner
+ displayName: Install runner
+ workingDirectory: system-tests
+
+ - script: |
+ set -e
+
+ source venv/bin/activate
+ PYTHONPATH=. python utils/scripts/compute-workflow-parameters.py dotnet -g $(scenarioGroups) > out.txt
+
+ endtoend_scenarios=$(grep 'endtoend_scenarios' out.txt | sed 's/.*=//g')
+ graphql_scenarios=$(grep 'graphql_scenarios' out.txt | sed 's/.*=//g')
+ parametric_scenarios=$(grep 'parametric_scenarios' out.txt | sed 's/.*=//g')
+ endtoend_weblogs=$(grep 'endtoend_weblogs' out.txt | sed 's/.*=//g')
+
+ echo "Found scenarios: $endtoend_scenarios"
+ echo "Found graphql scenarios: $graphql_scenarios"
+ echo "Found parametric scenarios: $parametric_scenarios"
+ echo "Found weblogs: $endtoend_weblogs"
+ echo "Additional manual scenarios: $(additionalScenarios)"
+
+ # Write the weblogs to a file (for later use to generate the docker images)
+ python -c "import json; variants = json.loads('$endtoend_weblogs'); print('\n'.join(variants))" > /tmp/weblogs_list.txt
+
+ # Inline python script to cross the data into a json
+ echo "import json" > cross.py
+ echo "script_scenarios = json.loads('$endtoend_scenarios')" >> cross.py
+ echo "script_graphql_scenarios = json.loads('$graphql_scenarios')" >> cross.py
+ echo "script_parametric_scenarios = json.loads('$parametric_scenarios')" >> cross.py
+ echo "script_weblogs = json.loads('$endtoend_weblogs')" >> cross.py
+ echo "extra_scenarios = json.loads('$(additionalScenarios)')" >> cross.py
+ echo 'combined_scenarios = script_scenarios + script_graphql_scenarios + script_parametric_scenarios + extra_scenarios' >> cross.py
+ echo 'matrix_items = {}' >> cross.py
+ echo 'for s in combined_scenarios:' >> cross.py
+ echo ' for w in script_weblogs:' >> cross.py
+ echo ' matrix_items[s + " (" + w + ")"] = {"SCENARIO": s, "WEBLOG_VARIANT": w}' >> cross.py
+ echo 'print(json.dumps(matrix_items))' >> cross.py
+
+ python cross.py > matrix.json
+
+ echo "##vso[task.setvariable variable=matrixJson;isOutput=true]$(cat matrix.json)"
+ echo "Json: $(cat matrix.json)"
+ displayName: Generate scenarios matrix JSON
+ name: create_matrix
+ workingDirectory: system-tests
+
+ - task: DownloadPipelineArtifact@2
+ displayName: Download linux-packages
+ condition: eq( variables['System.JobAttempt'], 1 )
+ inputs:
+ artifact: linux-packages-linux-x64
+ patterns: '**/*tar.gz'
+ path: $(Build.ArtifactStagingDirectory)
- strategy:
- matrix:
- parametric_poc:
- WEBLOG_VARIANT: "poc"
- SCENARIO: PARAMETRIC
- parametric_uds:
- WEBLOG_VARIANT: "uds"
- SCENARIO: PARAMETRIC
- appsec_poc:
- WEBLOG_VARIANT: "poc"
- SCENARIO: APPSEC_SCENARIOS
- appsec_uds:
- WEBLOG_VARIANT: "uds"
- SCENARIO: APPSEC_SCENARIOS
- rcm_poc:
- WEBLOG_VARIANT: "poc"
- SCENARIO: REMOTE_CONFIG_SCENARIOS
- rcm_uds:
- WEBLOG_VARIANT: "uds"
- SCENARIO: REMOTE_CONFIG_SCENARIOS
- telemetry_poc:
- WEBLOG_VARIANT: "poc"
- SCENARIO: TELEMETRY_SCENARIOS
- telemetry_uds:
- WEBLOG_VARIANT: "uds"
- SCENARIO: TELEMETRY_SCENARIOS
- default_poc:
- WEBLOG_VARIANT: "poc"
- SCENARIO: DEFAULT
- default_uds:
- WEBLOG_VARIANT: "uds"
- SCENARIO: DEFAULT
- integrations_poc:
- WEBLOG_VARIANT: "poc"
- SCENARIO: INTEGRATIONS
- integrations_uds:
- WEBLOG_VARIANT: "uds"
- SCENARIO: INTEGRATIONS
- integrations_aws_poc:
- WEBLOG_VARIANT: "poc"
- SCENARIO: INTEGRATIONS_AWS
- integrations_aws_uds:
- WEBLOG_VARIANT: "uds"
- SCENARIO: INTEGRATIONS_AWS
- crossed_tracing_libraries_poc:
- WEBLOG_VARIANT: "poc"
- SCENARIO: CROSSED_TRACING_LIBRARIES
- crossed_tracing_libraries_uds:
- WEBLOG_VARIANT: "uds"
- SCENARIO: CROSSED_TRACING_LIBRARIES
- # All the other scenarios that aren't in a secenario group
- remainder_poc:
- WEBLOG_VARIANT: "poc"
- SCENARIO: "+S TRACE_PROPAGATION_STYLE_W3C +S PROFILING +S LIBRARY_CONF_CUSTOM_HEADERS_SHORT +S LIBRARY_CONF_CUSTOM_HEADERS_LONG"
- remainder_uds:
- WEBLOG_VARIANT: "uds"
- SCENARIO: "+S TRACE_PROPAGATION_STYLE_W3C +S PROFILING +S LIBRARY_CONF_CUSTOM_HEADERS_SHORT +S LIBRARY_CONF_CUSTOM_HEADERS_LONG"
- debugger_poc:
- WEBLOG_VARIANT: "poc"
- SCENARIO: DEBUGGER_SCENARIOS
- debugger_uds:
- WEBLOG_VARIANT: "uds"
- SCENARIO: DEBUGGER_SCENARIOS
+ - script: |
+ PACKAGE_NAME=$(basename $(Build.ArtifactStagingDirectory)/datadog-dotnet-apm-*.tar.gz)
+ echo Moving $PACKAGE_NAME to system-tests/binaries
+ mv $(Build.ArtifactStagingDirectory)/$PACKAGE_NAME system-tests/binaries/
+ displayName: Move dotnet binary to system test folder
+ condition: eq( variables['System.JobAttempt'], 1 )
+
+ - script: |
+ set -e
+ cd system-tests
+ mkdir -p ../docker-images
+
+ while read w; do
+ echo "------------------------------------"
+ echo "Building images for variant: $w"
+ echo "------------------------------------"
+ # Build the images. For example:
+ ./build.sh dotnet --weblog-variant $w
+
+ # Save weblog variant image
+ docker save system_tests/weblog:latest -o ../docker-images/$w.tar
+ done < /tmp/weblogs_list.txt
+
+ # Save agent image
+ docker save system_tests/agent:latest -o ../docker-images/agent.tar
- steps:
+ displayName: Build weblogs and agent & save Docker images
+ condition: eq( variables['System.JobAttempt'], 1 )
+
+ - task: PublishPipelineArtifact@1
+ displayName: Publish Docker images artifact
+ condition: eq( variables['System.JobAttempt'], 1 )
+ inputs:
+ path: 'docker-images'
+ artifactName: 'system-test-docker-images'
+
+ - job: tests
+ displayName: ""
+ timeoutInMinutes: 60
+ pool:
+ vmImage: ubuntu-latest
+ dependsOn: compute_scenarios
+
+ strategy:
+ matrix: $[ dependencies.compute_scenarios.outputs['create_matrix.matrixJson'] ]
+
+ steps:
- checkout: none
- task: UsePythonVersion@0
inputs:
- versionSpec: '3.12'
+ versionSpec: '3.12'
displayName: Install python 3.12
- script: git clone --depth 1 https://github.com/DataDog/system-tests.git
displayName: Get system tests repo
-
+
- task: DownloadPipelineArtifact@2
- displayName: Download linux-packages
+ displayName: Download Docker images
inputs:
- artifact: linux-packages-linux-x64
- patterns: '**/*tar.gz'
- path: $(Build.ArtifactStagingDirectory)
+ artifact: system-test-docker-images
+ path: $(Build.SourcesDirectory)
- script: |
- PACKAGE_NAME=$(basename $(Build.ArtifactStagingDirectory)/datadog-dotnet-apm-*.tar.gz)
- echo Moving $PACKAGE_NAME to system-tests/binaries
- mv $(Build.ArtifactStagingDirectory)/$PACKAGE_NAME system-tests/binaries/
- displayName: Move dotnet binary to system test folder
+ echo "Loading images for variant: $(WEBLOG_VARIANT)"
+ docker load -i "$(Build.SourcesDirectory)/$(WEBLOG_VARIANT).tar"
+
+ echo "Loading agent image"
+ docker load -i "$(Build.SourcesDirectory)/agent.tar"
+
+ echo "Available Docker images after loading:"
+ docker images
+ displayName: Docker load the correct variant
- - script: ./build.sh dotnet
+ - script: |
+ ./build.sh -i runner
+ displayName: Install runner
workingDirectory: system-tests
- displayName: Build images
- script: ./run.sh $(SCENARIO)
workingDirectory: system-tests
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 4126800cfce3..58165d55408a 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -12,6 +12,20 @@ updates:
- dependency-name: "MessagePack" # Locked at a version that supports our net452 build target
- dependency-name: "*" # Ignore patches for all integrations
update-types: ["version-update:semver-patch"]
+
+ # Azure functions explicit testing - we can't include these with our "normal" process checks
+ # Because they aren't compatible with the dotnet msbuild approach we're using
+ - package-ecosystem: "nuget"
+ directory: "/tracer/test/test-applications/azure-functions/Samples.AzureFunctions.V4Isolated"
+ schedule:
+ interval: "daily"
+ labels:
+ - "dependencies"
+ - "area:dependabot"
+ ignore:
+ - dependency-name: "*" # Ignore patches for all integrations
+ update-types: ["version-update:semver-patch"]
+
# Src libraries
- package-ecosystem: "nuget"
directory: "/tracer/src/Datadog.Trace"
diff --git a/.github/workflows/override_version_bump_pr_checks.yml b/.github/workflows/override_version_bump_pr_checks.yml
index 98954bb10f69..39a67d785832 100644
--- a/.github/workflows/override_version_bump_pr_checks.yml
+++ b/.github/workflows/override_version_bump_pr_checks.yml
@@ -21,7 +21,7 @@ jobs:
set -o pipefail
# These checks won't run automatically on the version bump PR, so need to force this
- contexts=("code_freeze" "verify_source_generators" "verify_app_trimming_descriptor_generator")
+ contexts=("code_freeze" "verify_source_generators" "verify_app_trimming_descriptor_generator", "verify_solution_changes_are_persisted")
sha="${{ github.sha }}"
targetUrl="https://github.com/DataDog/dd-trace-dotnet/actions/workflows/override_version_bump_pr_checks.yml"
diff --git a/.github/workflows/verify_solution_changes_are_persisted.yml b/.github/workflows/verify_solution_changes_are_persisted.yml
new file mode 100644
index 000000000000..0a4ca74576f2
--- /dev/null
+++ b/.github/workflows/verify_solution_changes_are_persisted.yml
@@ -0,0 +1,36 @@
+name: Verify Sample solution changes have been persisted
+
+on:
+ pull_request:
+ workflow_dispatch:
+
+jobs:
+ verify_solution_changes_are_persisted:
+ runs-on: windows-latest
+ permissions:
+ contents: read
+
+ steps:
+ - name: Support longpaths
+ run: git config --system core.longpaths true
+
+ - name: Checkout
+ uses: actions/checkout@v2
+
+ - uses: actions/setup-dotnet@v1
+ with:
+ dotnet-version: '9.0.100'
+
+ - name: "Regenerating Solutions"
+ run: .\tracer\build.ps1 RegenerateSolutions
+
+ - name: "Verify no changes in generated solutions"
+ run: |
+ git diff --quiet
+ if ($LASTEXITCODE -eq 1) {
+ git diff
+ Write-Error "Found changes in generated solutions. Did you add a new sample? Regenerate the build solution locally by running the target 'RegenerateSolutions', and ensure the changed files are committed to git."
+ Exit 1
+ } else {
+ echo "No changes found to generated files"
+ }
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index d7cda54eafd9..ed61e590751f 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -126,7 +126,9 @@ onboarding_tests_installer:
onboarding_tests_k8s_injection:
parallel:
matrix:
- - WEBLOG_VARIANT: dd-lib-dotnet-init-test-app
+ - WEBLOG_VARIANT: [dd-lib-dotnet-init-test-app]
+ SCENARIO: [K8S_LIB_INJECTION, K8S_LIB_INJECTION_UDS, K8S_LIB_INJECTION_NO_AC, K8S_LIB_INJECTION_NO_AC_UDS, K8S_LIB_INJECTION_PROFILING_DISABLED, K8S_LIB_INJECTION_PROFILING_ENABLED, K8S_LIB_INJECTION_PROFILING_OVERRIDE]
+ K8S_CLUSTER_VERSION: ['7.56.2','7.57.0','7.59.0']
deploy_to_reliability_env:
rules:
diff --git a/Datadog.Trace.Samples.g.sln b/Datadog.Trace.Samples.g.sln
new file mode 100644
index 000000000000..0fe817afc722
--- /dev/null
+++ b/Datadog.Trace.Samples.g.sln
@@ -0,0 +1,1220 @@
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 15
+VisualStudioVersion = 15.0.26124.0
+MinimumVisualStudioVersion = 15.0.26124.0
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{FEBCE7DC-9FD1-48A6-B911-71ABB240A030}"
+ ProjectSection(SolutionItems) = preProject
+ .dockerignore = .dockerignore
+ .editorconfig = .editorconfig
+ .gitattributes = .gitattributes
+ .gitignore = .gitignore
+ tracer\Datadog.Trace.proj = tracer\Datadog.Trace.proj
+ Datadog.Trace.snk = Datadog.Trace.snk
+ tracer\Directory.Build.props = tracer\Directory.Build.props
+ docker-compose.yml = docker-compose.yml
+ tracer\GlobalSuppressions.cs = tracer\GlobalSuppressions.cs
+ LICENSE = LICENSE
+ LICENSE-3rdparty.csv = LICENSE-3rdparty.csv
+ docs\README.md = docs\README.md
+ tracer\stylecop.json = tracer\stylecop.json
+ EndProjectSection
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{9E5F0022-0A50-40BF-AC6A-C3078585ECAB}"
+ ProjectSection(SolutionItems) = preProject
+ tracer\src\Directory.Build.props = tracer\src\Directory.Build.props
+ tracer\src\GlobalSuppressions.cs = tracer\src\GlobalSuppressions.cs
+ EndProjectSection
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{8CEC2042-F11C-49F5-A674-2355793B600A}"
+ ProjectSection(SolutionItems) = preProject
+ tracer\test\Directory.Build.props = tracer\test\Directory.Build.props
+ tracer\test\GlobalSuppressions.cs = tracer\test\GlobalSuppressions.cs
+ tracer\test\test.settings = tracer\test\test.settings
+ EndProjectSection
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test-applications", "test-applications", "{9518425A-36A5-4B8F-B0B8-6137DB88441D}"
+ ProjectSection(SolutionItems) = preProject
+ tracer\test\test-applications\Directory.Build.props = tracer\test\test-applications\Directory.Build.props
+ EndProjectSection
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "regression", "regression", "{498A300E-D036-49B7-A43D-821D1CAF11A5}"
+ ProjectSection(SolutionItems) = preProject
+ EndProjectSection
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "dependency-libs", "dependency-libs", "{EFE48691-1FBA-41D5-9BFD-676771973F0C}"
+ ProjectSection(SolutionItems) = preProject
+ tracer\test\test-applications\regression\dependency-libs\Directory.Build.props = tracer\test\test-applications\regression\dependency-libs\Directory.Build.props
+ EndProjectSection
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "integrations", "integrations", "{BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}"
+ ProjectSection(SolutionItems) = preProject
+ EndProjectSection
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "aspnet", "aspnet", "{AFA0AB23-64F0-4AC1-9050-6CE8FE06F580}"
+ ProjectSection(SolutionItems) = preProject
+ tracer\test\test-applications\aspnet\Directory.Build.props = tracer\test\test-applications\aspnet\Directory.Build.props
+ EndProjectSection
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "dependency-libs", "dependency-libs", "{8683D82A-2BBE-4199-9C36-C59F48804F90}"
+ ProjectSection(SolutionItems) = preProject
+ tracer\test\test-applications\integrations\dependency-libs\Directory.Build.props = tracer\test\test-applications\integrations\dependency-libs\Directory.Build.props
+ EndProjectSection
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{A0C5FBBB-CFB2-4FB9-B8F0-55676E9DCF06}"
+ ProjectSection(SolutionItems) = preProject
+ tracer\build\PackageVersionsGeneratorDefinitions.json = tracer\build\PackageVersionsGeneratorDefinitions.json
+ tracer\build\supported_versions.json = tracer\build\supported_versions.json
+ EndProjectSection
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "artifacts", "artifacts", "{CC53E5C5-9D3E-4AD9-A9CA-D2190463EB5B}"
+ ProjectSection(SolutionItems) = preProject
+ tracer\build\artifacts\after-install.sh = tracer\build\artifacts\after-install.sh
+ tracer\build\artifacts\after-remove.sh = tracer\build\artifacts\after-remove.sh
+ tracer\build\artifacts\createLogPath.sh = tracer\build\artifacts\createLogPath.sh
+ tracer\build\artifacts\dd-dotnet.cmd = tracer\build\artifacts\dd-dotnet.cmd
+ tracer\build\artifacts\dd-dotnet.sh = tracer\build\artifacts\dd-dotnet.sh
+ EndProjectSection
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "benchmarks", "benchmarks", "{E5439139-6F94-44FA-9590-C32FCC1C7A93}"
+ ProjectSection(SolutionItems) = preProject
+ EndProjectSection
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "instrumentation", "instrumentation", "{933F1D4B-1216-4BC1-956E-8C30818BAA0F}"
+ ProjectSection(SolutionItems) = preProject
+ EndProjectSection
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "crank", "crank", "{E3FB283A-B766-4887-95E1-329667671921}"
+ ProjectSection(SolutionItems) = preProject
+ tracer\build\crank\os.profiles.yml = tracer\build\crank\os.profiles.yml
+ tracer\build\crank\run.sh = tracer\build\crank\run.sh
+ tracer\build\crank\Samples.AspNetCoreSimpleController.yml = tracer\build\crank\Samples.AspNetCoreSimpleController.yml
+ tracer\build\crank\Security.Samples.AspNetCoreSimpleController.yml = tracer\build\crank\Security.Samples.AspNetCoreSimpleController.yml
+ EndProjectSection
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "shared", "shared", "{550362BF-A3A7-4F20-9590-24F4F8C380FF}"
+ ProjectSection(SolutionItems) = preProject
+ EndProjectSection
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "shared", "shared", "{7D231B65-AA8E-4917-85FF-BBBF7992B6FC}"
+ ProjectSection(SolutionItems) = preProject
+ EndProjectSection
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "security", "security", "{0972AD57-B16B-494F-AE0A-091DD6F3B42B}"
+ ProjectSection(SolutionItems) = preProject
+ EndProjectSection
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "aspnet", "aspnet", "{AAFFA51D-1357-4560-97DC-43AD039442E6}"
+ ProjectSection(SolutionItems) = preProject
+ EndProjectSection
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "azure-functions", "azure-functions", "{C4C1E313-C7C1-4490-AECE-0DD0062380A4}"
+ ProjectSection(SolutionItems) = preProject
+ tracer\test\test-applications\azure-functions\Directory.Build.props = tracer\test\test-applications\azure-functions\Directory.Build.props
+ EndProjectSection
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "debugger", "debugger", "{16427BFB-B4C6-46A9-A290-8EA51FF73FEA}"
+ ProjectSection(SolutionItems) = preProject
+ tracer\test\test-applications\debugger\Directory.Build.props = tracer\test\test-applications\debugger\Directory.Build.props
+ EndProjectSection
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "dependency-libs", "dependency-libs", "{0884B566-D22E-498C-BAA9-26D50ABCAE3A}"
+ ProjectSection(SolutionItems) = preProject
+ EndProjectSection
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Generated", "Generated", "{E1B0F72C-991A-409D-9266-DE5ED1BD940E}"
+ ProjectSection(SolutionItems) = preProject
+ tracer\build\PackageVersionsLatestMajors.g.props = tracer\build\PackageVersionsLatestMajors.g.props
+ tracer\build\PackageVersionsLatestMinors.g.props = tracer\build\PackageVersionsLatestMinors.g.props
+ tracer\build\PackageVersionsLatestSpecific.g.props = tracer\build\PackageVersionsLatestSpecific.g.props
+ tracer\build\supported_calltargets.g.json = tracer\build\supported_calltargets.g.json
+ EndProjectSection
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tracer", "tracer", "{82FFBC1A-6B13-4C0A-896A-90306AE4828F}"
+ ProjectSection(SolutionItems) = preProject
+ EndProjectSection
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{07D12F26-2583-4C6F-AFBB-AA30FF339FC6}"
+ ProjectSection(SolutionItems) = preProject
+ EndProjectSection
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test-applications", "test-applications", "{F8C637E1-1F4F-4E3B-9E34-AAD61097C3F8}"
+ ProjectSection(SolutionItems) = preProject
+ EndProjectSection
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "azure-functions", "azure-functions", "{FE9F14E0-8DFF-413B-BB9E-49CEA4115A5D}"
+ ProjectSection(SolutionItems) = preProject
+ EndProjectSection
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.ExampleLibrary", "tracer\test\test-applications\integrations\dependency-libs\Samples.ExampleLibrary\Samples.ExampleLibrary.csproj", "{FDB5C8D0-018D-4FF9-9680-C6A5078F819B}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.ExampleLibraryTracer", "tracer\test\test-applications\integrations\dependency-libs\Samples.ExampleLibraryTracer\Samples.ExampleLibraryTracer.csproj", "{4B243CF1-4269-45C6-A238-1A9BFA58B8CC}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.SqlServer", "tracer\test\test-applications\integrations\Samples.SqlServer\Samples.SqlServer.csproj", "{086FF8A0-9CEE-470A-9751-78B0F1340649}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.Elasticsearch", "tracer\test\test-applications\integrations\Samples.Elasticsearch\Samples.Elasticsearch.csproj", "{C98950B1-DC4B-43DA-974F-EF2CF325EC2B}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.MongoDB", "tracer\test\test-applications\integrations\Samples.MongoDB\Samples.MongoDB.csproj", "{3493346B-44F6-4F50-8FB4-51D0090DF544}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.Npgsql", "tracer\test\test-applications\integrations\Samples.Npgsql\Samples.Npgsql.csproj", "{DD3E8ED8-A0E4-482E-A5ED-115E21D543C0}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.Elasticsearch.V5", "tracer\test\test-applications\integrations\Samples.Elasticsearch.V5\Samples.Elasticsearch.V5.csproj", "{AD119B05-A092-41AD-B68E-4AE2DB5A96D9}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HttpMessageHandler.StackOverflowException", "tracer\test\test-applications\regression\HttpMessageHandler.StackOverflowException\HttpMessageHandler.StackOverflowException.csproj", "{F47F206E-4CCA-4AD0-AEBA-FD9F491E05EC}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.ServiceStack.Redis", "tracer\test\test-applications\integrations\Samples.ServiceStack.Redis\Samples.ServiceStack.Redis.csproj", "{8E1555D1-13D5-4DBF-9631-117D840C3158}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.StackExchange.Redis", "tracer\test\test-applications\integrations\Samples.StackExchange.Redis\Samples.StackExchange.Redis.csproj", "{DC7D131A-AF99-46AB-9AA6-463443E3B992}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.Wcf", "tracer\test\test-applications\integrations\Samples.Wcf\Samples.Wcf.csproj", "{DA0A44FB-D562-4776-AAFB-8266E78AA1A6}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DataDogThreadTest", "tracer\test\test-applications\regression\DataDogThreadTest\DataDogThreadTest.csproj", "{3CDCE3AA-7CAF-4A27-B1D3-9D558B74D084}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.GraphQL", "tracer\test\test-applications\integrations\Samples.GraphQL\Samples.GraphQL.csproj", "{43782238-E7BB-49D0-9541-1121DACA6EB5}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StackExchange.Redis.StackOverflowException", "tracer\test\test-applications\regression\StackExchange.Redis.StackOverflowException\StackExchange.Redis.StackOverflowException.csproj", "{FA487690-E88C-4A57-9187-B71CB70C1AAE}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AppDomainInstance", "tracer\test\test-applications\regression\dependency-libs\AppDomainInstance\AppDomainInstance.csproj", "{BB3F7D85-7E20-4AEB-A32A-8AF150CC37B2}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AssemblyLoad.FileNotFoundException", "tracer\test\test-applications\regression\AssemblyLoad.FileNotFoundException\AssemblyLoad.FileNotFoundException.csproj", "{1A5E9F40-F3A5-4B59-9898-3DCD65C459C3}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.MySql", "tracer\test\test-applications\integrations\Samples.MySql\Samples.MySql.csproj", "{42FA33DD-AEA3-4FF3-8319-F30244A666A4}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.DatabaseHelper", "tracer\test\test-applications\integrations\dependency-libs\Samples.DatabaseHelper\Samples.DatabaseHelper.csproj", "{472DBA92-4FEA-4B9A-BA70-0E97B942E12D}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AssemblyResolveMscorlibResources.InfiniteRecursionCrash", "tracer\test\test-applications\regression\AssemblyResolveMscorlibResources.InfiniteRecursionCrash\AssemblyResolveMscorlibResources.InfiniteRecursionCrash.csproj", "{EEA89ACD-CFBB-4F60-A150-74F0A84DF028}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.TracingWithoutLimits", "tracer\test\test-applications\integrations\Samples.TracingWithoutLimits\Samples.TracingWithoutLimits.csproj", "{8BDF1DE0-E6DE-48AD-AAA3-CE09CB544E2C}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.RateLimiter", "tracer\test\test-applications\integrations\Samples.RateLimiter\Samples.RateLimiter.csproj", "{EF718502-7760-45B5-A563-5F1B22A6B840}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.AspNetCoreMvc30", "tracer\test\test-applications\integrations\Samples.AspNetCoreMvc30\Samples.AspNetCoreMvc30.csproj", "{8B457E8F-8716-4F29-BBE2-DD6C7BC4AC37}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.AspNetCoreMvc31", "tracer\test\test-applications\integrations\Samples.AspNetCoreMvc31\Samples.AspNetCoreMvc31.csproj", "{303F8E41-691F-4453-AB7D-88A0036C0465}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.AspNetCoreMvc21", "tracer\test\test-applications\integrations\Samples.AspNetCoreMvc21\Samples.AspNetCoreMvc21.csproj", "{D141BD06-DD95-4CAF-85CD-657116E0DAD4}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Datadog.StackExchange.Redis.Abstractions", "tracer\test\test-applications\regression\dependency-libs\Datadog.StackExchange.Redis.Abstractions\Datadog.StackExchange.Redis.Abstractions.csproj", "{24BE488C-A5F3-4228-8CAB-E60EBEA444EE}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Datadog.StackExchange.Redis", "tracer\test\test-applications\regression\dependency-libs\Datadog.StackExchange.Redis\Datadog.StackExchange.Redis.csproj", "{EB0B88E2-589A-4F65-8F98-D5B958D8104F}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Datadog.StackExchange.Redis.StrongName", "tracer\test\test-applications\regression\dependency-libs\Datadog.StackExchange.Redis.StrongName\Datadog.StackExchange.Redis.StrongName.csproj", "{4E83BFB5-F225-4C3B-B96E-0AD1951A5630}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StackExchange.Redis.AssemblyConflict.SdkProject", "tracer\test\test-applications\regression\StackExchange.Redis.AssemblyConflict.SdkProject\StackExchange.Redis.AssemblyConflict.SdkProject.csproj", "{C41023C9-65C3-4FB3-9053-4DE963A81500}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.Dapper", "tracer\test\test-applications\integrations\Samples.Dapper\Samples.Dapper.csproj", "{7E563BF6-47F2-4531-A1CE-FB9445DF3253}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DogStatsD.RaceCondition", "tracer\test\test-applications\regression\DogStatsD.RaceCondition\DogStatsD.RaceCondition.csproj", "{AAD9038B-8F16-4E09-93AF-B13E9F7ACD66}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.DatabaseHelper.netstandard", "tracer\test\test-applications\integrations\dependency-libs\Samples.DatabaseHelper.netstandard\Samples.DatabaseHelper.netstandard.csproj", "{8D949A40-5F4B-4EB0-B8FD-301B472C96AE}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.HttpMessageHandler", "tracer\test\test-applications\integrations\Samples.HttpMessageHandler\Samples.HttpMessageHandler.csproj", "{2F3B6271-B9A3-48A3-9DB6-847F3EF41F0A}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NetCoreAssemblyLoadFailureOlderNuGet", "tracer\test\test-applications\regression\NetCoreAssemblyLoadFailureOlderNuGet\NetCoreAssemblyLoadFailureOlderNuGet.csproj", "{D79491F0-CA92-439B-98CE-7AF9F57EBEB0}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.SqlServer.NetFramework20", "tracer\test\test-applications\integrations\Samples.SqlServer.NetFramework20\Samples.SqlServer.NetFramework20.csproj", "{8276E670-FC3F-4EDE-9D51-6DAD90336C32}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.DatabaseHelper.NetFramework20", "tracer\test\test-applications\integrations\dependency-libs\Samples.DatabaseHelper.NetFramework20\Samples.DatabaseHelper.NetFramework20.csproj", "{EC3C54CE-A3CD-434A-9E3C-DB6C5F5248EA}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.Microsoft.Data.SqlClient", "tracer\test\test-applications\integrations\Samples.Microsoft.Data.SqlClient\Samples.Microsoft.Data.SqlClient.csproj", "{AA88952E-9393-4A4B-85B5-CC7F03629CE1}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.NoMultiLoader", "tracer\test\test-applications\integrations\Samples.NoMultiLoader\Samples.NoMultiLoader.csproj", "{472B69A0-956F-42C0-9CB8-30107821C43B}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.NoMultiLoader.Deps", "tracer\test\test-applications\integrations\dependency-libs\Samples.NoMultiLoader.Deps\Samples.NoMultiLoader.Deps.csproj", "{2A161C2D-DAA5-4F97-BA2B-783CF363C05B}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.WebRequest.NetFramework20", "tracer\test\test-applications\integrations\Samples.WebRequest.NetFramework20\Samples.WebRequest.NetFramework20.csproj", "{5EE6B6EB-B768-47EC-882B-8DCACA2B1360}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.WebRequestHelper.NetFramework20", "tracer\test\test-applications\integrations\dependency-libs\Samples.WebRequestHelper.NetFramework20\Samples.WebRequestHelper.NetFramework20.csproj", "{B5A0C6B0-66C8-46EB-B699-44EB2DD1784A}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.RabbitMQ", "tracer\test\test-applications\integrations\Samples.RabbitMQ\Samples.RabbitMQ.csproj", "{C1210E08-58E5-44D4-BE6F-634C3FC5E410}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.RuntimeMetrics", "tracer\test\test-applications\integrations\Samples.RuntimeMetrics\Samples.RuntimeMetrics.csproj", "{600953C4-BD8F-4A4B-A275-6D6F9EF48342}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.WebRequest", "tracer\test\test-applications\integrations\Samples.WebRequest\Samples.WebRequest.csproj", "{5C2829C2-ED0D-414C-B5A0-2BFDCA07B493}"
+EndProject
+Project("{778DAE3C-4631-46EA-AA77-85C1314464D9}") = "Samples.SqlServer.Vb", "tracer\test\test-applications\integrations\dependency-libs\Samples.SqlServer.Vb\Samples.SqlServer.Vb.vbproj", "{CDE0C4D2-4B75-4ED0-988D-08E08B23B895}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.FakeDbCommand", "tracer\test\test-applications\integrations\Samples.FakeDbCommand\Samples.FakeDbCommand.csproj", "{0E036453-2C80-4FC9-A517-771F0071734B}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.Microsoft.Data.Sqlite", "tracer\test\test-applications\integrations\Samples.Microsoft.Data.Sqlite\Samples.Microsoft.Data.Sqlite.csproj", "{061AB58B-8235-4DAE-8D56-5F081DD78F5E}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.SQLite.Core", "tracer\test\test-applications\integrations\Samples.SQLite.Core\Samples.SQLite.Core.csproj", "{69B678F6-51CF-4A5B-8DEC-1F9CEDC5C9E2}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.OracleMDA", "tracer\test\test-applications\integrations\Samples.OracleMDA\Samples.OracleMDA.csproj", "{BD46EFCC-177C-466E-81DF-39314B780ADA}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DuplicateTypeProxy", "tracer\test\test-applications\regression\DuplicateTypeProxy\DuplicateTypeProxy.csproj", "{34B67004-7249-4EF1-8E12-6E6DA37EA6BE}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.AspNetCoreRazorPages", "tracer\test\test-applications\integrations\Samples.AspNetCoreRazorPages\Samples.AspNetCoreRazorPages.csproj", "{1B9E6BF4-9D48-4988-9945-248096119E46}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.AWS.SQS", "tracer\test\test-applications\integrations\Samples.AWS.SQS\Samples.AWS.SQS.csproj", "{3538EF5E-377E-430A-AFB8-F2DB5FAEDE95}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.XUnitTests", "tracer\test\test-applications\integrations\Samples.XUnitTests\Samples.XUnitTests.csproj", "{4AD438D9-D4E3-4EB5-8851-89DB4D1CFB9C}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.NUnitTests", "tracer\test\test-applications\integrations\Samples.NUnitTests\Samples.NUnitTests.csproj", "{BC998ACD-353B-4A56-8A56-DF6200E141B6}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.MSTestTests", "tracer\test\test-applications\integrations\Samples.MSTestTests\Samples.MSTestTests.csproj", "{8EAABFB9-8A47-4B11-AD7F-AC8B373CDE49}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.Msmq", "tracer\test\test-applications\integrations\Samples.Msmq\Samples.Msmq.csproj", "{662B587F-97B5-4CEF-ABF9-6C76A6DBD29E}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.Kafka", "tracer\test\test-applications\integrations\Samples.Kafka\Samples.Kafka.csproj", "{94B50277-FB50-4B42-BA79-770ADB24CB80}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.CosmosDb", "tracer\test\test-applications\integrations\Samples.CosmosDb\Samples.CosmosDb.csproj", "{95613224-C1D7-4D4A-8926-F70DA26371CA}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.Owin.WebApi2", "tracer\test\test-applications\integrations\Samples.Owin.WebApi2\Samples.Owin.WebApi2.csproj", "{BF1E5BA6-C0E5-4472-9D5D-2622231DD275}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LogsInjection.Log4Net", "tracer\test\test-applications\integrations\LogsInjection.Log4Net\LogsInjection.Log4Net.csproj", "{B93AD901-B761-486D-80AE-443742DB65E0}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LogsInjection.NLog", "tracer\test\test-applications\integrations\LogsInjection.NLog\LogsInjection.NLog.csproj", "{7203DD2B-739F-4223-AE50-D26A7FEEE1A4}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LogsInjection.Serilog", "tracer\test\test-applications\integrations\LogsInjection.Serilog\LogsInjection.Serilog.csproj", "{83290961-40BF-48CB-B925-FBBE48E629F3}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PluginApplication", "tracer\test\test-applications\integrations\dependency-libs\PluginApplication\PluginApplication.csproj", "{6E8D73F3-082C-455B-BBD5-03A156DCDD0F}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LogsInjectionHelper", "tracer\test\test-applications\integrations\dependency-libs\LogsInjectionHelper\LogsInjectionHelper.csproj", "{65492DD4-CCD9-437A-B383-E7EB7AB872D2}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LogsInjection.ILogger", "tracer\test\test-applications\integrations\LogsInjection.ILogger\LogsInjection.ILogger.csproj", "{463A6FB2-1ABE-4B92-A470-97134D0BBC7E}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.Aerospike", "tracer\test\test-applications\integrations\Samples.Aerospike\Samples.Aerospike.csproj", "{7471A7A8-B89C-4C94-8EB1-24180E71CA1F}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ServiceBus.Minimal.NServiceBus", "tracer\test\test-applications\regression\ServiceBus.Minimal.NServiceBus\ServiceBus.Minimal.NServiceBus.csproj", "{9D5935CB-2DF2-46CB-A5E1-98BE134CAFCC}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ServiceBus.Minimal.Rebus", "tracer\test\test-applications\regression\ServiceBus.Minimal.Rebus\ServiceBus.Minimal.Rebus.csproj", "{6C599D79-87D0-476B-9CBA-F731E5627622}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ServiceBus.Minimal.MassTransit", "tracer\test\test-applications\regression\ServiceBus.Minimal.MassTransit\ServiceBus.Minimal.MassTransit.csproj", "{B0E671B9-78DE-410F-A0AA-612FF1F900F2}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.GraphQL3", "tracer\test\test-applications\integrations\Samples.GraphQL3\Samples.GraphQL3.csproj", "{CA3D605F-8DD7-4041-B024-70A24036AFA1}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.GraphQL4", "tracer\test\test-applications\integrations\Samples.GraphQL4\Samples.GraphQL4.csproj", "{DA81EF3E-FDB3-417F-AA20-60FC495E3596}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.Elasticsearch.V7", "tracer\test\test-applications\integrations\Samples.Elasticsearch.V7\Samples.Elasticsearch.V7.csproj", "{3CB0B2C2-7664-4D71-8F43-3D207EE80DB7}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EnumerateAssemblyReferences", "tracer\test\test-applications\regression\EnumerateAssemblyReferences\EnumerateAssemblyReferences.csproj", "{B22311CE-EC71-4ADD-ADC6-C466B2D10230}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.AzureFunctions.V3InProcess", "tracer\test\test-applications\azure-functions\Samples.AzureFunctions.V3InProcess\Samples.AzureFunctions.V3InProcess.csproj", "{536F1D82-D40C-4E33-B7FA-76A0F17BF672}"
+EndProject
+Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Samples.Shared", "tracer\test\test-applications\Samples.Shared\Samples.Shared.shproj", "{5A806F4B-39E7-4F38-B36F-F5CFC4F8760A}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.MySqlConnector", "tracer\test\test-applications\integrations\Samples.MySqlConnector\Samples.MySqlConnector.csproj", "{73252693-2563-4B20-A2F5-F8DB37B91DBE}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.Couchbase", "tracer\test\test-applications\integrations\Samples.Couchbase\Samples.Couchbase.csproj", "{6F38B456-1D16-4842-AEE5-E74564FB506A}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.Couchbase3", "tracer\test\test-applications\integrations\Samples.Couchbase3\Samples.Couchbase3.csproj", "{65A66859-2735-4DD6-A927-B416B7A62D0F}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.AspNetCoreMinimalApis", "tracer\test\test-applications\integrations\Samples.AspNetCoreMinimalApis\Samples.AspNetCoreMinimalApis.csproj", "{2A6D3042-C675-4EA3-A8E7-5BDD3C5758EA}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AspNetCoreSmokeTest", "tracer\test\test-applications\regression\AspNetCoreSmokeTest\AspNetCoreSmokeTest.csproj", "{BED94A61-6FD9-4103-BD35-70B4798C301C}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.VersionConflict.1x", "tracer\test\test-applications\integrations\Samples.VersionConflict.1x\Samples.VersionConflict.1x.csproj", "{6F8B63EA-98D6-4909-BE9E-F39029C29C4F}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.VersionConflict.2x", "tracer\test\test-applications\integrations\Samples.VersionConflict.2x\Samples.VersionConflict.2x.csproj", "{3BC38BE0-B6FF-4B05-BC63-3614A5CF9393}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IBM.Data.DB2.DBCommand", "tracer\test\test-applications\regression\IBM.Data.DB2.DBCommand\IBM.Data.DB2.DBCommand.csproj", "{E961D189-3EF9-4D79-95A1-78D825B73B01}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Devart.Data.DBCommand", "tracer\test\test-applications\regression\Devart.Data.DBCommand\Devart.Data.DBCommand.csproj", "{24834112-8C25-4A3D-BDD3-0ACEC825FF2C}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LogsInjectionHelper.VersionConflict", "tracer\test\test-applications\integrations\dependency-libs\LogsInjectionHelper.VersionConflict\LogsInjectionHelper.VersionConflict.csproj", "{E9D55D41-B161-492F-9EC7-FF2F2231A587}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LogsInjection.Serilog.VersionConflict.2x", "tracer\test\test-applications\integrations\LogsInjection.Serilog.VersionConflict.2x\LogsInjection.Serilog.VersionConflict.2x.csproj", "{268B6D05-B6D5-4D20-B2B1-0B9422A92D73}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LogsInjection.Serilog14.VersionConflict.2x", "tracer\test\test-applications\integrations\LogsInjection.Serilog14.VersionConflict.2x\LogsInjection.Serilog14.VersionConflict.2x.csproj", "{3C78C521-6507-4D3A-B92E-BC41CEE9D9F3}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LogsInjection.Log4Net.VersionConflict.2x", "tracer\test\test-applications\integrations\LogsInjection.Log4Net.VersionConflict.2x\LogsInjection.Log4Net.VersionConflict.2x.csproj", "{25B7D571-C385-4CA6-9B6A-573D3E3FF3C9}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LogsInjection.NLog.VersionConflict.2x", "tracer\test\test-applications\integrations\LogsInjection.NLog.VersionConflict.2x\LogsInjection.NLog.VersionConflict.2x.csproj", "{F19B5109-36AC-4A64-AFE6-FAF9E831C528}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LogsInjection.NLog20.VersionConflict.2x", "tracer\test\test-applications\integrations\LogsInjection.NLog20.VersionConflict.2x\LogsInjection.NLog20.VersionConflict.2x.csproj", "{0980BCDD-A231-42D1-B689-41A41BBA161A}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LogsInjection.NLog10.VersionConflict.2x", "tracer\test\test-applications\integrations\LogsInjection.NLog10.VersionConflict.2x\LogsInjection.NLog10.VersionConflict.2x.csproj", "{D00DDBDA-66F5-490D-8C1C-16CC5E142170}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LogsInjection.ILogger.VersionConflict.2x", "tracer\test\test-applications\integrations\LogsInjection.ILogger.VersionConflict.2x\LogsInjection.ILogger.VersionConflict.2x.csproj", "{238F67DB-1E48-447C-B1B8-BDC692103791}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.LargePayload", "tracer\test\test-applications\integrations\Samples.LargePayload\Samples.LargePayload.csproj", "{C94E0739-1DA0-4657-8D53-FA4143F6FDA3}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.AWS.Lambda", "tracer\test\test-applications\integrations\Samples.AWS.Lambda\Samples.AWS.Lambda.csproj", "{31D192AF-5454-4D91-97E1-889723AAD309}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.Console", "tracer\test\test-applications\integrations\Samples.Console\Samples.Console.csproj", "{887AC8BA-35A6-4646-BF9A-59357155805E}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.Telemetry", "tracer\test\test-applications\integrations\Samples.Telemetry\Samples.Telemetry.csproj", "{2D1FF937-3237-4A1B-9C6C-82FA5E22CAD7}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Sandbox.AutomaticInstrumentation", "tracer\test\test-applications\regression\Sandbox.AutomaticInstrumentation\Sandbox.AutomaticInstrumentation.csproj", "{10619BA2-AED1-482A-8570-BB7C7B83DDDC}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.TraceAnnotations", "tracer\test\test-applications\integrations\Samples.TraceAnnotations\Samples.TraceAnnotations.csproj", "{230A9B80-E1AA-469F-86F2-B7E257F14E66}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.TraceAnnotations.VersionMismatch.BeforeFeature", "tracer\test\test-applications\integrations\Samples.TraceAnnotations.VersionMismatch.BeforeFeature\Samples.TraceAnnotations.VersionMismatch.BeforeFeature.csproj", "{0DF4363A-0DF4-4882-A39F-3C9F404B8DE5}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.TraceAnnotations.VersionMismatch.AfterFeature", "tracer\test\test-applications\integrations\Samples.TraceAnnotations.VersionMismatch.AfterFeature\Samples.TraceAnnotations.VersionMismatch.AfterFeature.csproj", "{FF2E8DD2-CA25-4D53-A77C-9F88E41F8C98}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.TraceAnnotations.VersionMismatch.NewerNuGet", "tracer\test\test-applications\integrations\Samples.TraceAnnotations.VersionMismatch.NewerNuGet\Samples.TraceAnnotations.VersionMismatch.NewerNuGet.csproj", "{2CC63AEB-0098-4D3B-9606-F07692C03E90}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.GrpcDotNet", "tracer\test\test-applications\integrations\Samples.GrpcDotNet\Samples.GrpcDotNet.csproj", "{DEACDE01-95FE-4777-B70A-F20A96AABEA7}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.GrpcLegacy", "tracer\test\test-applications\integrations\Samples.GrpcLegacy\Samples.GrpcLegacy.csproj", "{754F73E1-F7A4-47C7-A3F7-DC59ADA5105A}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.Security.AspNetCoreBare", "tracer\test\test-applications\security\Samples.Security.AspNetCoreBare\Samples.Security.AspNetCoreBare.csproj", "{F6A03B6C-EBF9-4581-9904-EDC7270CF3BD}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AssemblyLoadContextRedirect", "tracer\test\test-applications\regression\AssemblyLoadContextRedirect\AssemblyLoadContextRedirect.csproj", "{C4CDF6A6-40E5-4CCD-AC4C-143F9F4398CA}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.Probes", "tracer\test\test-applications\debugger\Samples.Probes\Samples.Probes.csproj", "{2BED2D88-0B51-468B-A559-DA7B4BACA00B}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.ProcessStart", "tracer\test\test-applications\integrations\Samples.ProcessStart\Samples.ProcessStart.csproj", "{B1F9F419-87E1-4B59-A954-9895FCD7949E}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.HotChocolate", "tracer\test\test-applications\integrations\Samples.HotChocolate\Samples.HotChocolate.csproj", "{BBAD4449-D414-4A20-BCA2-DE9C40E4A866}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.Probes.External", "tracer\test\test-applications\debugger\dependency-libs\Samples.Probes.External\Samples.Probes.External.csproj", "{9235DCFA-9EDD-48EF-B1DB-E15B738C85A6}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.DataStreams.Kafka", "tracer\test\test-applications\integrations\Samples.DataStreams.Kafka\Samples.DataStreams.Kafka.csproj", "{7415B0FB-A446-41D6-A0CD-D64B703F15AD}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.DataStreams.RabbitMQ", "tracer\test\test-applications\integrations\Samples.DataStreams.RabbitMQ\Samples.DataStreams.RabbitMQ.csproj", "{8DFE1168-B1CC-43D1-B256-B5708BADD47B}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.WeakCipher", "tracer\test\test-applications\integrations\Samples.WeakCipher\Samples.WeakCipher.csproj", "{43C696FA-3812-4312-9529-98CECCD32A81}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.Deduplication", "tracer\test\test-applications\integrations\Samples.Deduplication\Samples.Deduplication.csproj", "{63B3A841-F3E0-4D60-B85D-156D7251FFDF}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.AzureFunctions.V4InProcess", "tracer\test\test-applications\azure-functions\Samples.AzureFunctions.V4InProcess\Samples.AzureFunctions.V4InProcess.csproj", "{0F0F7D45-0E13-42B0-A158-8F303BBE8358}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.Probes.TestRuns", "tracer\test\test-applications\debugger\dependency-libs\Samples.Probes.TestRuns\Samples.Probes.TestRuns.csproj", "{4F377216-3D76-4169-BE2B-8DA3A653DD5E}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.OpenTelemetrySdk", "tracer\test\test-applications\integrations\Samples.OpenTelemetrySdk\Samples.OpenTelemetrySdk.csproj", "{CB56AC5A-D2C1-40DE-99D5-DCF9F44C9482}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.NetActivitySdk", "tracer\test\test-applications\integrations\Samples.NetActivitySdk\Samples.NetActivitySdk.csproj", "{560E1104-9A6E-41E7-AB3D-85BA2740A0F7}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.InstrumentedTests", "tracer\test\test-applications\integrations\Samples.InstrumentedTests\Samples.InstrumentedTests.csproj", "{64E32F7A-8989-480E-AFE7-3BD343424F6A}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.AzureFunctions.V4Isolated", "tracer\test\test-applications\azure-functions\Samples.AzureFunctions.V4Isolated\Samples.AzureFunctions.V4Isolated.csproj", "{BDEE131F-CCF5-49BD-9764-9C4A8864CE4E}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.AWS.SimpleNotificationService", "tracer\test\test-applications\integrations\Samples.AWS.SimpleNotificationService\Samples.AWS.SimpleNotificationService.csproj", "{901AC4F9-7DE5-4D13-85FD-384382E29F11}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.GraphQL7", "tracer\test\test-applications\integrations\Samples.GraphQL7\Samples.GraphQL7.csproj", "{A996927A-9222-43F4-8552-810B69FF04DF}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.Security.AspNetCore5", "tracer\test\test-applications\security\Samples.Security.AspNetCore5\Samples.Security.AspNetCore5.csproj", "{87D57940-9A6E-473C-A4D6-777E3BAFD5F9}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.Security.AspNetCore2", "tracer\test\test-applications\security\Samples.Security.AspNetCore2\Samples.Security.AspNetCore2.csproj", "{C5E7978A-DE2A-4944-86DB-4721A110E720}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.Trimming", "tracer\test\test-applications\integrations\Samples.Trimming\Samples.Trimming.csproj", "{289713D4-5259-4CC4-8CAA-DBF3BDCDCBC0}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ActivitySampleHelper", "tracer\test\test-applications\integrations\dependency-libs\ActivitySampleHelper\ActivitySampleHelper.csproj", "{51AF3B29-D107-4E22-8A85-DF02A8A898E5}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.Probes.Unreferenced.External", "tracer\test\test-applications\debugger\dependency-libs\Samples.Probes.Unreferenced.External\Samples.Probes.Unreferenced.External.csproj", "{DE15D292-DC01-4AEA-B473-C2F2908341A7}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Sandbox.LegacySecurityPolicy", "tracer\test\test-applications\regression\Sandbox.LegacySecurityPolicy\Sandbox.LegacySecurityPolicy.csproj", "{959E9599-8D99-43BC-8038-B91F76179C1C}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DeepNestedHierarchy", "tracer\test\test-applications\regression\DeepNestedHierarchy\DeepNestedHierarchy.csproj", "{1B3E6BEE-F7AB-433E-A1D9-E8BE3782419B}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.AWS.Kinesis", "tracer\test\test-applications\integrations\Samples.AWS.Kinesis\Samples.AWS.Kinesis.csproj", "{C7DE0626-9EB6-475E-AA0C-CB9DE21D4FAE}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.AzureServiceBus", "tracer\test\test-applications\integrations\Samples.AzureServiceBus\Samples.AzureServiceBus.csproj", "{BC44A41F-1BED-4438-9F66-0EA5607906D5}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.DataStreams.AzureServiceBus", "tracer\test\test-applications\integrations\Samples.DataStreams.AzureServiceBus\Samples.DataStreams.AzureServiceBus.csproj", "{56DE0D44-E9E5-48DA-BAEA-2934B1E28D4E}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.AWS.DynamoDBv2", "tracer\test\test-applications\integrations\Samples.AWS.DynamoDBv2\Samples.AWS.DynamoDBv2.csproj", "{D59C5649-BE0E-4A33-B868-B652D8614534}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.Amazon.Lambda.RuntimeSupport", "tracer\test\test-applications\integrations\Samples.Amazon.Lambda.RuntimeSupport\Samples.Amazon.Lambda.RuntimeSupport.csproj", "{18A6904A-5AFD-4816-AC3F-9F5E433720B5}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.Remoting", "tracer\test\test-applications\integrations\Samples.Remoting\Samples.Remoting.csproj", "{23EA38E3-0BF1-40DF-A52D-C34EA2FB3F26}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.ManualInstrumentation", "tracer\test\test-applications\integrations\Samples.ManualInstrumentation\Samples.ManualInstrumentation.csproj", "{F24EB026-65FB-4247-ABF8-942B11ADAB64}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LogsInjection.ILogger.ExtendedLogger", "tracer\test\test-applications\integrations\LogsInjection.ILogger.ExtendedLogger\LogsInjection.ILogger.ExtendedLogger.csproj", "{483A27EE-7682-417C-9FCA-C2171C13F693}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.Yarp.DistributedTracing", "tracer\test\test-applications\integrations\Samples.Yarp.DistributedTracing\Samples.Yarp.DistributedTracing.csproj", "{E10243AE-34FC-47B5-B898-B5203C36920C}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.MSTestTests2", "tracer\test\test-applications\integrations\Samples.MSTestTests2\Samples.MSTestTests2.csproj", "{0F1D9FB5-4415-40F1-B7B0-6DD5A3BAB0C4}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.Selenium", "tracer\test\test-applications\integrations\Samples.Selenium\Samples.Selenium.csproj", "{32193A01-04DD-463B-A84A-9A93167958A4}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.OpenTracing", "tracer\test\test-applications\integrations\Samples.OpenTracing\Samples.OpenTracing.csproj", "{79A63F25-A5F9-441C-8C52-F8033A9F8ABA}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.DataStreams.ManualAPI", "tracer\test\test-applications\integrations\Samples.DataStreams.ManualAPI\Samples.DataStreams.ManualAPI.csproj", "{5E290FA1-E87B-4782-B977-EB5FA6C96EFE}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.CIVisibilityIpc", "tracer\test\test-applications\integrations\Samples.CIVisibilityIpc\Samples.CIVisibilityIpc.csproj", "{BA9613FB-8458-4C78-98DE-AA45BBE62F64}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.CIVisibilityVersionMismatch", "tracer\test\test-applications\integrations\Samples.CIVisibilityVersionMismatch\Samples.CIVisibilityVersionMismatch.csproj", "{0D996EEE-7C04-4888-AF48-9C1E2F261A00}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RuntimeMetricsShutdown", "tracer\test\test-applications\regression\RuntimeMetricsShutdown\RuntimeMetricsShutdown.csproj", "{C4ABF344-3263-45D5-A074-03FB206FF309}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.Debugger.AspNetCore5", "tracer\test\test-applications\debugger\Samples.Debugger.AspNetCore5\Samples.Debugger.AspNetCore5.csproj", "{3978A7D5-7B6E-4152-9C3A-5852F1F6E223}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.XUnitTestsRetries", "tracer\test\test-applications\integrations\Samples.XUnitTestsRetries\Samples.XUnitTestsRetries.csproj", "{B8DAF87D-A30D-48AE-B630-C65A64D0C3AF}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.NUnitTestsRetries", "tracer\test\test-applications\integrations\Samples.NUnitTestsRetries\Samples.NUnitTestsRetries.csproj", "{7131FE5A-6B27-4BBC-B0CF-09780F6D2DFE}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.MSTestTestsRetries", "tracer\test\test-applications\integrations\Samples.MSTestTestsRetries\Samples.MSTestTestsRetries.csproj", "{2CA0D70C-DFC1-458A-871B-328AB6E87E3A}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.AWS.EventBridge", "tracer\test\test-applications\integrations\Samples.AWS.EventBridge\Samples.AWS.EventBridge.csproj", "{D6155F26-8245-4B66-8944-79C3DF9F9DA3}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AssemblyLoadContextResolve", "tracer\test\test-applications\regression\AssemblyLoadContextResolve\AssemblyLoadContextResolve.csproj", "{8B1AF6A7-DD41-4347-B637-90C23D69B50E}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Samples.AzureFunctions.V4Isolated.SdkV1", "tracer\test\test-applications\azure-functions\Samples.AzureFunctions.V4Isolated.SdkV1\Samples.AzureFunctions.V4Isolated.SdkV1.csproj", "{18767A3E-9ADC-485C-A8C7-50660D5B579D}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {FDB5C8D0-018D-4FF9-9680-C6A5078F819B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {FDB5C8D0-018D-4FF9-9680-C6A5078F819B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {FDB5C8D0-018D-4FF9-9680-C6A5078F819B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {FDB5C8D0-018D-4FF9-9680-C6A5078F819B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4B243CF1-4269-45C6-A238-1A9BFA58B8CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {4B243CF1-4269-45C6-A238-1A9BFA58B8CC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4B243CF1-4269-45C6-A238-1A9BFA58B8CC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {4B243CF1-4269-45C6-A238-1A9BFA58B8CC}.Release|Any CPU.Build.0 = Release|Any CPU
+ {086FF8A0-9CEE-470A-9751-78B0F1340649}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {086FF8A0-9CEE-470A-9751-78B0F1340649}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {086FF8A0-9CEE-470A-9751-78B0F1340649}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {086FF8A0-9CEE-470A-9751-78B0F1340649}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C98950B1-DC4B-43DA-974F-EF2CF325EC2B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C98950B1-DC4B-43DA-974F-EF2CF325EC2B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C98950B1-DC4B-43DA-974F-EF2CF325EC2B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C98950B1-DC4B-43DA-974F-EF2CF325EC2B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3493346B-44F6-4F50-8FB4-51D0090DF544}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3493346B-44F6-4F50-8FB4-51D0090DF544}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3493346B-44F6-4F50-8FB4-51D0090DF544}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3493346B-44F6-4F50-8FB4-51D0090DF544}.Release|Any CPU.Build.0 = Release|Any CPU
+ {DD3E8ED8-A0E4-482E-A5ED-115E21D543C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {DD3E8ED8-A0E4-482E-A5ED-115E21D543C0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {DD3E8ED8-A0E4-482E-A5ED-115E21D543C0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {DD3E8ED8-A0E4-482E-A5ED-115E21D543C0}.Release|Any CPU.Build.0 = Release|Any CPU
+ {AD119B05-A092-41AD-B68E-4AE2DB5A96D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {AD119B05-A092-41AD-B68E-4AE2DB5A96D9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {AD119B05-A092-41AD-B68E-4AE2DB5A96D9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {AD119B05-A092-41AD-B68E-4AE2DB5A96D9}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F47F206E-4CCA-4AD0-AEBA-FD9F491E05EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F47F206E-4CCA-4AD0-AEBA-FD9F491E05EC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F47F206E-4CCA-4AD0-AEBA-FD9F491E05EC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F47F206E-4CCA-4AD0-AEBA-FD9F491E05EC}.Release|Any CPU.Build.0 = Release|Any CPU
+ {8E1555D1-13D5-4DBF-9631-117D840C3158}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {8E1555D1-13D5-4DBF-9631-117D840C3158}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8E1555D1-13D5-4DBF-9631-117D840C3158}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {8E1555D1-13D5-4DBF-9631-117D840C3158}.Release|Any CPU.Build.0 = Release|Any CPU
+ {DC7D131A-AF99-46AB-9AA6-463443E3B992}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {DC7D131A-AF99-46AB-9AA6-463443E3B992}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {DC7D131A-AF99-46AB-9AA6-463443E3B992}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {DC7D131A-AF99-46AB-9AA6-463443E3B992}.Release|Any CPU.Build.0 = Release|Any CPU
+ {DA0A44FB-D562-4776-AAFB-8266E78AA1A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {DA0A44FB-D562-4776-AAFB-8266E78AA1A6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {DA0A44FB-D562-4776-AAFB-8266E78AA1A6}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {DA0A44FB-D562-4776-AAFB-8266E78AA1A6}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3CDCE3AA-7CAF-4A27-B1D3-9D558B74D084}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3CDCE3AA-7CAF-4A27-B1D3-9D558B74D084}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3CDCE3AA-7CAF-4A27-B1D3-9D558B74D084}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3CDCE3AA-7CAF-4A27-B1D3-9D558B74D084}.Release|Any CPU.Build.0 = Release|Any CPU
+ {43782238-E7BB-49D0-9541-1121DACA6EB5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {43782238-E7BB-49D0-9541-1121DACA6EB5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {43782238-E7BB-49D0-9541-1121DACA6EB5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {43782238-E7BB-49D0-9541-1121DACA6EB5}.Release|Any CPU.Build.0 = Release|Any CPU
+ {FA487690-E88C-4A57-9187-B71CB70C1AAE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {FA487690-E88C-4A57-9187-B71CB70C1AAE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {FA487690-E88C-4A57-9187-B71CB70C1AAE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {FA487690-E88C-4A57-9187-B71CB70C1AAE}.Release|Any CPU.Build.0 = Release|Any CPU
+ {BB3F7D85-7E20-4AEB-A32A-8AF150CC37B2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {BB3F7D85-7E20-4AEB-A32A-8AF150CC37B2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BB3F7D85-7E20-4AEB-A32A-8AF150CC37B2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {BB3F7D85-7E20-4AEB-A32A-8AF150CC37B2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {1A5E9F40-F3A5-4B59-9898-3DCD65C459C3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {1A5E9F40-F3A5-4B59-9898-3DCD65C459C3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1A5E9F40-F3A5-4B59-9898-3DCD65C459C3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {1A5E9F40-F3A5-4B59-9898-3DCD65C459C3}.Release|Any CPU.Build.0 = Release|Any CPU
+ {42FA33DD-AEA3-4FF3-8319-F30244A666A4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {42FA33DD-AEA3-4FF3-8319-F30244A666A4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {42FA33DD-AEA3-4FF3-8319-F30244A666A4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {42FA33DD-AEA3-4FF3-8319-F30244A666A4}.Release|Any CPU.Build.0 = Release|Any CPU
+ {472DBA92-4FEA-4B9A-BA70-0E97B942E12D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {472DBA92-4FEA-4B9A-BA70-0E97B942E12D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {472DBA92-4FEA-4B9A-BA70-0E97B942E12D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {472DBA92-4FEA-4B9A-BA70-0E97B942E12D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {EEA89ACD-CFBB-4F60-A150-74F0A84DF028}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {EEA89ACD-CFBB-4F60-A150-74F0A84DF028}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {EEA89ACD-CFBB-4F60-A150-74F0A84DF028}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {EEA89ACD-CFBB-4F60-A150-74F0A84DF028}.Release|Any CPU.Build.0 = Release|Any CPU
+ {8BDF1DE0-E6DE-48AD-AAA3-CE09CB544E2C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {8BDF1DE0-E6DE-48AD-AAA3-CE09CB544E2C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8BDF1DE0-E6DE-48AD-AAA3-CE09CB544E2C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {8BDF1DE0-E6DE-48AD-AAA3-CE09CB544E2C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {EF718502-7760-45B5-A563-5F1B22A6B840}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {EF718502-7760-45B5-A563-5F1B22A6B840}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {EF718502-7760-45B5-A563-5F1B22A6B840}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {EF718502-7760-45B5-A563-5F1B22A6B840}.Release|Any CPU.Build.0 = Release|Any CPU
+ {8B457E8F-8716-4F29-BBE2-DD6C7BC4AC37}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {8B457E8F-8716-4F29-BBE2-DD6C7BC4AC37}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8B457E8F-8716-4F29-BBE2-DD6C7BC4AC37}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {8B457E8F-8716-4F29-BBE2-DD6C7BC4AC37}.Release|Any CPU.Build.0 = Release|Any CPU
+ {303F8E41-691F-4453-AB7D-88A0036C0465}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {303F8E41-691F-4453-AB7D-88A0036C0465}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {303F8E41-691F-4453-AB7D-88A0036C0465}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {303F8E41-691F-4453-AB7D-88A0036C0465}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D141BD06-DD95-4CAF-85CD-657116E0DAD4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D141BD06-DD95-4CAF-85CD-657116E0DAD4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D141BD06-DD95-4CAF-85CD-657116E0DAD4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D141BD06-DD95-4CAF-85CD-657116E0DAD4}.Release|Any CPU.Build.0 = Release|Any CPU
+ {24BE488C-A5F3-4228-8CAB-E60EBEA444EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {24BE488C-A5F3-4228-8CAB-E60EBEA444EE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {24BE488C-A5F3-4228-8CAB-E60EBEA444EE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {24BE488C-A5F3-4228-8CAB-E60EBEA444EE}.Release|Any CPU.Build.0 = Release|Any CPU
+ {EB0B88E2-589A-4F65-8F98-D5B958D8104F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {EB0B88E2-589A-4F65-8F98-D5B958D8104F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {EB0B88E2-589A-4F65-8F98-D5B958D8104F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {EB0B88E2-589A-4F65-8F98-D5B958D8104F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4E83BFB5-F225-4C3B-B96E-0AD1951A5630}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {4E83BFB5-F225-4C3B-B96E-0AD1951A5630}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4E83BFB5-F225-4C3B-B96E-0AD1951A5630}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {4E83BFB5-F225-4C3B-B96E-0AD1951A5630}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C41023C9-65C3-4FB3-9053-4DE963A81500}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C41023C9-65C3-4FB3-9053-4DE963A81500}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C41023C9-65C3-4FB3-9053-4DE963A81500}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C41023C9-65C3-4FB3-9053-4DE963A81500}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7E563BF6-47F2-4531-A1CE-FB9445DF3253}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7E563BF6-47F2-4531-A1CE-FB9445DF3253}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7E563BF6-47F2-4531-A1CE-FB9445DF3253}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7E563BF6-47F2-4531-A1CE-FB9445DF3253}.Release|Any CPU.Build.0 = Release|Any CPU
+ {AAD9038B-8F16-4E09-93AF-B13E9F7ACD66}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {AAD9038B-8F16-4E09-93AF-B13E9F7ACD66}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {AAD9038B-8F16-4E09-93AF-B13E9F7ACD66}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {AAD9038B-8F16-4E09-93AF-B13E9F7ACD66}.Release|Any CPU.Build.0 = Release|Any CPU
+ {8D949A40-5F4B-4EB0-B8FD-301B472C96AE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {8D949A40-5F4B-4EB0-B8FD-301B472C96AE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8D949A40-5F4B-4EB0-B8FD-301B472C96AE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {8D949A40-5F4B-4EB0-B8FD-301B472C96AE}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2F3B6271-B9A3-48A3-9DB6-847F3EF41F0A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {2F3B6271-B9A3-48A3-9DB6-847F3EF41F0A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2F3B6271-B9A3-48A3-9DB6-847F3EF41F0A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {2F3B6271-B9A3-48A3-9DB6-847F3EF41F0A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D79491F0-CA92-439B-98CE-7AF9F57EBEB0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D79491F0-CA92-439B-98CE-7AF9F57EBEB0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D79491F0-CA92-439B-98CE-7AF9F57EBEB0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D79491F0-CA92-439B-98CE-7AF9F57EBEB0}.Release|Any CPU.Build.0 = Release|Any CPU
+ {8276E670-FC3F-4EDE-9D51-6DAD90336C32}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {8276E670-FC3F-4EDE-9D51-6DAD90336C32}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8276E670-FC3F-4EDE-9D51-6DAD90336C32}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {8276E670-FC3F-4EDE-9D51-6DAD90336C32}.Release|Any CPU.Build.0 = Release|Any CPU
+ {EC3C54CE-A3CD-434A-9E3C-DB6C5F5248EA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {EC3C54CE-A3CD-434A-9E3C-DB6C5F5248EA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {EC3C54CE-A3CD-434A-9E3C-DB6C5F5248EA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {EC3C54CE-A3CD-434A-9E3C-DB6C5F5248EA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {AA88952E-9393-4A4B-85B5-CC7F03629CE1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {AA88952E-9393-4A4B-85B5-CC7F03629CE1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {AA88952E-9393-4A4B-85B5-CC7F03629CE1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {AA88952E-9393-4A4B-85B5-CC7F03629CE1}.Release|Any CPU.Build.0 = Release|Any CPU
+ {472B69A0-956F-42C0-9CB8-30107821C43B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {472B69A0-956F-42C0-9CB8-30107821C43B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {472B69A0-956F-42C0-9CB8-30107821C43B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {472B69A0-956F-42C0-9CB8-30107821C43B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2A161C2D-DAA5-4F97-BA2B-783CF363C05B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {2A161C2D-DAA5-4F97-BA2B-783CF363C05B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2A161C2D-DAA5-4F97-BA2B-783CF363C05B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {2A161C2D-DAA5-4F97-BA2B-783CF363C05B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5EE6B6EB-B768-47EC-882B-8DCACA2B1360}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {5EE6B6EB-B768-47EC-882B-8DCACA2B1360}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5EE6B6EB-B768-47EC-882B-8DCACA2B1360}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {5EE6B6EB-B768-47EC-882B-8DCACA2B1360}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B5A0C6B0-66C8-46EB-B699-44EB2DD1784A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B5A0C6B0-66C8-46EB-B699-44EB2DD1784A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B5A0C6B0-66C8-46EB-B699-44EB2DD1784A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B5A0C6B0-66C8-46EB-B699-44EB2DD1784A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C1210E08-58E5-44D4-BE6F-634C3FC5E410}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C1210E08-58E5-44D4-BE6F-634C3FC5E410}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C1210E08-58E5-44D4-BE6F-634C3FC5E410}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C1210E08-58E5-44D4-BE6F-634C3FC5E410}.Release|Any CPU.Build.0 = Release|Any CPU
+ {600953C4-BD8F-4A4B-A275-6D6F9EF48342}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {600953C4-BD8F-4A4B-A275-6D6F9EF48342}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {600953C4-BD8F-4A4B-A275-6D6F9EF48342}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {600953C4-BD8F-4A4B-A275-6D6F9EF48342}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5C2829C2-ED0D-414C-B5A0-2BFDCA07B493}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {5C2829C2-ED0D-414C-B5A0-2BFDCA07B493}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5C2829C2-ED0D-414C-B5A0-2BFDCA07B493}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {5C2829C2-ED0D-414C-B5A0-2BFDCA07B493}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CDE0C4D2-4B75-4ED0-988D-08E08B23B895}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {CDE0C4D2-4B75-4ED0-988D-08E08B23B895}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CDE0C4D2-4B75-4ED0-988D-08E08B23B895}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {CDE0C4D2-4B75-4ED0-988D-08E08B23B895}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0E036453-2C80-4FC9-A517-771F0071734B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {0E036453-2C80-4FC9-A517-771F0071734B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0E036453-2C80-4FC9-A517-771F0071734B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {0E036453-2C80-4FC9-A517-771F0071734B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {061AB58B-8235-4DAE-8D56-5F081DD78F5E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {061AB58B-8235-4DAE-8D56-5F081DD78F5E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {061AB58B-8235-4DAE-8D56-5F081DD78F5E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {061AB58B-8235-4DAE-8D56-5F081DD78F5E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {69B678F6-51CF-4A5B-8DEC-1F9CEDC5C9E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {69B678F6-51CF-4A5B-8DEC-1F9CEDC5C9E2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {69B678F6-51CF-4A5B-8DEC-1F9CEDC5C9E2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {69B678F6-51CF-4A5B-8DEC-1F9CEDC5C9E2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {BD46EFCC-177C-466E-81DF-39314B780ADA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {BD46EFCC-177C-466E-81DF-39314B780ADA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BD46EFCC-177C-466E-81DF-39314B780ADA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {BD46EFCC-177C-466E-81DF-39314B780ADA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {34B67004-7249-4EF1-8E12-6E6DA37EA6BE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {34B67004-7249-4EF1-8E12-6E6DA37EA6BE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {34B67004-7249-4EF1-8E12-6E6DA37EA6BE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {34B67004-7249-4EF1-8E12-6E6DA37EA6BE}.Release|Any CPU.Build.0 = Release|Any CPU
+ {1B9E6BF4-9D48-4988-9945-248096119E46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {1B9E6BF4-9D48-4988-9945-248096119E46}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1B9E6BF4-9D48-4988-9945-248096119E46}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {1B9E6BF4-9D48-4988-9945-248096119E46}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3538EF5E-377E-430A-AFB8-F2DB5FAEDE95}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3538EF5E-377E-430A-AFB8-F2DB5FAEDE95}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3538EF5E-377E-430A-AFB8-F2DB5FAEDE95}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3538EF5E-377E-430A-AFB8-F2DB5FAEDE95}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4AD438D9-D4E3-4EB5-8851-89DB4D1CFB9C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {4AD438D9-D4E3-4EB5-8851-89DB4D1CFB9C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4AD438D9-D4E3-4EB5-8851-89DB4D1CFB9C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {4AD438D9-D4E3-4EB5-8851-89DB4D1CFB9C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {BC998ACD-353B-4A56-8A56-DF6200E141B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {BC998ACD-353B-4A56-8A56-DF6200E141B6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BC998ACD-353B-4A56-8A56-DF6200E141B6}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {BC998ACD-353B-4A56-8A56-DF6200E141B6}.Release|Any CPU.Build.0 = Release|Any CPU
+ {8EAABFB9-8A47-4B11-AD7F-AC8B373CDE49}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {8EAABFB9-8A47-4B11-AD7F-AC8B373CDE49}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8EAABFB9-8A47-4B11-AD7F-AC8B373CDE49}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {8EAABFB9-8A47-4B11-AD7F-AC8B373CDE49}.Release|Any CPU.Build.0 = Release|Any CPU
+ {662B587F-97B5-4CEF-ABF9-6C76A6DBD29E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {662B587F-97B5-4CEF-ABF9-6C76A6DBD29E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {662B587F-97B5-4CEF-ABF9-6C76A6DBD29E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {662B587F-97B5-4CEF-ABF9-6C76A6DBD29E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {94B50277-FB50-4B42-BA79-770ADB24CB80}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {94B50277-FB50-4B42-BA79-770ADB24CB80}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {94B50277-FB50-4B42-BA79-770ADB24CB80}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {94B50277-FB50-4B42-BA79-770ADB24CB80}.Release|Any CPU.Build.0 = Release|Any CPU
+ {95613224-C1D7-4D4A-8926-F70DA26371CA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {95613224-C1D7-4D4A-8926-F70DA26371CA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {95613224-C1D7-4D4A-8926-F70DA26371CA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {95613224-C1D7-4D4A-8926-F70DA26371CA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {BF1E5BA6-C0E5-4472-9D5D-2622231DD275}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {BF1E5BA6-C0E5-4472-9D5D-2622231DD275}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BF1E5BA6-C0E5-4472-9D5D-2622231DD275}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {BF1E5BA6-C0E5-4472-9D5D-2622231DD275}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B93AD901-B761-486D-80AE-443742DB65E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B93AD901-B761-486D-80AE-443742DB65E0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B93AD901-B761-486D-80AE-443742DB65E0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B93AD901-B761-486D-80AE-443742DB65E0}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7203DD2B-739F-4223-AE50-D26A7FEEE1A4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7203DD2B-739F-4223-AE50-D26A7FEEE1A4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7203DD2B-739F-4223-AE50-D26A7FEEE1A4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7203DD2B-739F-4223-AE50-D26A7FEEE1A4}.Release|Any CPU.Build.0 = Release|Any CPU
+ {83290961-40BF-48CB-B925-FBBE48E629F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {83290961-40BF-48CB-B925-FBBE48E629F3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {83290961-40BF-48CB-B925-FBBE48E629F3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {83290961-40BF-48CB-B925-FBBE48E629F3}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6E8D73F3-082C-455B-BBD5-03A156DCDD0F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6E8D73F3-082C-455B-BBD5-03A156DCDD0F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6E8D73F3-082C-455B-BBD5-03A156DCDD0F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {6E8D73F3-082C-455B-BBD5-03A156DCDD0F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {65492DD4-CCD9-437A-B383-E7EB7AB872D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {65492DD4-CCD9-437A-B383-E7EB7AB872D2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {65492DD4-CCD9-437A-B383-E7EB7AB872D2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {65492DD4-CCD9-437A-B383-E7EB7AB872D2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {463A6FB2-1ABE-4B92-A470-97134D0BBC7E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {463A6FB2-1ABE-4B92-A470-97134D0BBC7E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {463A6FB2-1ABE-4B92-A470-97134D0BBC7E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {463A6FB2-1ABE-4B92-A470-97134D0BBC7E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7471A7A8-B89C-4C94-8EB1-24180E71CA1F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7471A7A8-B89C-4C94-8EB1-24180E71CA1F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7471A7A8-B89C-4C94-8EB1-24180E71CA1F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7471A7A8-B89C-4C94-8EB1-24180E71CA1F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9D5935CB-2DF2-46CB-A5E1-98BE134CAFCC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {9D5935CB-2DF2-46CB-A5E1-98BE134CAFCC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9D5935CB-2DF2-46CB-A5E1-98BE134CAFCC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {9D5935CB-2DF2-46CB-A5E1-98BE134CAFCC}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6C599D79-87D0-476B-9CBA-F731E5627622}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6C599D79-87D0-476B-9CBA-F731E5627622}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6C599D79-87D0-476B-9CBA-F731E5627622}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {6C599D79-87D0-476B-9CBA-F731E5627622}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B0E671B9-78DE-410F-A0AA-612FF1F900F2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B0E671B9-78DE-410F-A0AA-612FF1F900F2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B0E671B9-78DE-410F-A0AA-612FF1F900F2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B0E671B9-78DE-410F-A0AA-612FF1F900F2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CA3D605F-8DD7-4041-B024-70A24036AFA1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {CA3D605F-8DD7-4041-B024-70A24036AFA1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CA3D605F-8DD7-4041-B024-70A24036AFA1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {CA3D605F-8DD7-4041-B024-70A24036AFA1}.Release|Any CPU.Build.0 = Release|Any CPU
+ {DA81EF3E-FDB3-417F-AA20-60FC495E3596}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {DA81EF3E-FDB3-417F-AA20-60FC495E3596}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {DA81EF3E-FDB3-417F-AA20-60FC495E3596}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {DA81EF3E-FDB3-417F-AA20-60FC495E3596}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3CB0B2C2-7664-4D71-8F43-3D207EE80DB7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3CB0B2C2-7664-4D71-8F43-3D207EE80DB7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3CB0B2C2-7664-4D71-8F43-3D207EE80DB7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3CB0B2C2-7664-4D71-8F43-3D207EE80DB7}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B22311CE-EC71-4ADD-ADC6-C466B2D10230}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B22311CE-EC71-4ADD-ADC6-C466B2D10230}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B22311CE-EC71-4ADD-ADC6-C466B2D10230}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B22311CE-EC71-4ADD-ADC6-C466B2D10230}.Release|Any CPU.Build.0 = Release|Any CPU
+ {536F1D82-D40C-4E33-B7FA-76A0F17BF672}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {536F1D82-D40C-4E33-B7FA-76A0F17BF672}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {73252693-2563-4B20-A2F5-F8DB37B91DBE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {73252693-2563-4B20-A2F5-F8DB37B91DBE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {73252693-2563-4B20-A2F5-F8DB37B91DBE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {73252693-2563-4B20-A2F5-F8DB37B91DBE}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6F38B456-1D16-4842-AEE5-E74564FB506A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6F38B456-1D16-4842-AEE5-E74564FB506A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6F38B456-1D16-4842-AEE5-E74564FB506A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {6F38B456-1D16-4842-AEE5-E74564FB506A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {65A66859-2735-4DD6-A927-B416B7A62D0F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {65A66859-2735-4DD6-A927-B416B7A62D0F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {65A66859-2735-4DD6-A927-B416B7A62D0F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {65A66859-2735-4DD6-A927-B416B7A62D0F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2A6D3042-C675-4EA3-A8E7-5BDD3C5758EA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {2A6D3042-C675-4EA3-A8E7-5BDD3C5758EA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2A6D3042-C675-4EA3-A8E7-5BDD3C5758EA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {2A6D3042-C675-4EA3-A8E7-5BDD3C5758EA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {BED94A61-6FD9-4103-BD35-70B4798C301C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {BED94A61-6FD9-4103-BD35-70B4798C301C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BED94A61-6FD9-4103-BD35-70B4798C301C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {BED94A61-6FD9-4103-BD35-70B4798C301C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6F8B63EA-98D6-4909-BE9E-F39029C29C4F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6F8B63EA-98D6-4909-BE9E-F39029C29C4F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6F8B63EA-98D6-4909-BE9E-F39029C29C4F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {6F8B63EA-98D6-4909-BE9E-F39029C29C4F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3BC38BE0-B6FF-4B05-BC63-3614A5CF9393}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3BC38BE0-B6FF-4B05-BC63-3614A5CF9393}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3BC38BE0-B6FF-4B05-BC63-3614A5CF9393}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3BC38BE0-B6FF-4B05-BC63-3614A5CF9393}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E961D189-3EF9-4D79-95A1-78D825B73B01}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E961D189-3EF9-4D79-95A1-78D825B73B01}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E961D189-3EF9-4D79-95A1-78D825B73B01}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E961D189-3EF9-4D79-95A1-78D825B73B01}.Release|Any CPU.Build.0 = Release|Any CPU
+ {24834112-8C25-4A3D-BDD3-0ACEC825FF2C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {24834112-8C25-4A3D-BDD3-0ACEC825FF2C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {24834112-8C25-4A3D-BDD3-0ACEC825FF2C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {24834112-8C25-4A3D-BDD3-0ACEC825FF2C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E9D55D41-B161-492F-9EC7-FF2F2231A587}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E9D55D41-B161-492F-9EC7-FF2F2231A587}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E9D55D41-B161-492F-9EC7-FF2F2231A587}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E9D55D41-B161-492F-9EC7-FF2F2231A587}.Release|Any CPU.Build.0 = Release|Any CPU
+ {268B6D05-B6D5-4D20-B2B1-0B9422A92D73}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {268B6D05-B6D5-4D20-B2B1-0B9422A92D73}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {268B6D05-B6D5-4D20-B2B1-0B9422A92D73}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {268B6D05-B6D5-4D20-B2B1-0B9422A92D73}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3C78C521-6507-4D3A-B92E-BC41CEE9D9F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3C78C521-6507-4D3A-B92E-BC41CEE9D9F3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3C78C521-6507-4D3A-B92E-BC41CEE9D9F3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3C78C521-6507-4D3A-B92E-BC41CEE9D9F3}.Release|Any CPU.Build.0 = Release|Any CPU
+ {25B7D571-C385-4CA6-9B6A-573D3E3FF3C9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {25B7D571-C385-4CA6-9B6A-573D3E3FF3C9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {25B7D571-C385-4CA6-9B6A-573D3E3FF3C9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {25B7D571-C385-4CA6-9B6A-573D3E3FF3C9}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F19B5109-36AC-4A64-AFE6-FAF9E831C528}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F19B5109-36AC-4A64-AFE6-FAF9E831C528}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F19B5109-36AC-4A64-AFE6-FAF9E831C528}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F19B5109-36AC-4A64-AFE6-FAF9E831C528}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0980BCDD-A231-42D1-B689-41A41BBA161A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {0980BCDD-A231-42D1-B689-41A41BBA161A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0980BCDD-A231-42D1-B689-41A41BBA161A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {0980BCDD-A231-42D1-B689-41A41BBA161A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D00DDBDA-66F5-490D-8C1C-16CC5E142170}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D00DDBDA-66F5-490D-8C1C-16CC5E142170}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D00DDBDA-66F5-490D-8C1C-16CC5E142170}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D00DDBDA-66F5-490D-8C1C-16CC5E142170}.Release|Any CPU.Build.0 = Release|Any CPU
+ {238F67DB-1E48-447C-B1B8-BDC692103791}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {238F67DB-1E48-447C-B1B8-BDC692103791}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {238F67DB-1E48-447C-B1B8-BDC692103791}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {238F67DB-1E48-447C-B1B8-BDC692103791}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C94E0739-1DA0-4657-8D53-FA4143F6FDA3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C94E0739-1DA0-4657-8D53-FA4143F6FDA3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C94E0739-1DA0-4657-8D53-FA4143F6FDA3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C94E0739-1DA0-4657-8D53-FA4143F6FDA3}.Release|Any CPU.Build.0 = Release|Any CPU
+ {31D192AF-5454-4D91-97E1-889723AAD309}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {31D192AF-5454-4D91-97E1-889723AAD309}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {31D192AF-5454-4D91-97E1-889723AAD309}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {31D192AF-5454-4D91-97E1-889723AAD309}.Release|Any CPU.Build.0 = Release|Any CPU
+ {887AC8BA-35A6-4646-BF9A-59357155805E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {887AC8BA-35A6-4646-BF9A-59357155805E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {887AC8BA-35A6-4646-BF9A-59357155805E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {887AC8BA-35A6-4646-BF9A-59357155805E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2D1FF937-3237-4A1B-9C6C-82FA5E22CAD7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {2D1FF937-3237-4A1B-9C6C-82FA5E22CAD7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2D1FF937-3237-4A1B-9C6C-82FA5E22CAD7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {2D1FF937-3237-4A1B-9C6C-82FA5E22CAD7}.Release|Any CPU.Build.0 = Release|Any CPU
+ {10619BA2-AED1-482A-8570-BB7C7B83DDDC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {10619BA2-AED1-482A-8570-BB7C7B83DDDC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {10619BA2-AED1-482A-8570-BB7C7B83DDDC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {10619BA2-AED1-482A-8570-BB7C7B83DDDC}.Release|Any CPU.Build.0 = Release|Any CPU
+ {230A9B80-E1AA-469F-86F2-B7E257F14E66}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {230A9B80-E1AA-469F-86F2-B7E257F14E66}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {230A9B80-E1AA-469F-86F2-B7E257F14E66}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {230A9B80-E1AA-469F-86F2-B7E257F14E66}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0DF4363A-0DF4-4882-A39F-3C9F404B8DE5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {0DF4363A-0DF4-4882-A39F-3C9F404B8DE5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0DF4363A-0DF4-4882-A39F-3C9F404B8DE5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {0DF4363A-0DF4-4882-A39F-3C9F404B8DE5}.Release|Any CPU.Build.0 = Release|Any CPU
+ {FF2E8DD2-CA25-4D53-A77C-9F88E41F8C98}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {FF2E8DD2-CA25-4D53-A77C-9F88E41F8C98}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {FF2E8DD2-CA25-4D53-A77C-9F88E41F8C98}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {FF2E8DD2-CA25-4D53-A77C-9F88E41F8C98}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2CC63AEB-0098-4D3B-9606-F07692C03E90}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {2CC63AEB-0098-4D3B-9606-F07692C03E90}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2CC63AEB-0098-4D3B-9606-F07692C03E90}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {2CC63AEB-0098-4D3B-9606-F07692C03E90}.Release|Any CPU.Build.0 = Release|Any CPU
+ {DEACDE01-95FE-4777-B70A-F20A96AABEA7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {DEACDE01-95FE-4777-B70A-F20A96AABEA7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {DEACDE01-95FE-4777-B70A-F20A96AABEA7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {DEACDE01-95FE-4777-B70A-F20A96AABEA7}.Release|Any CPU.Build.0 = Release|Any CPU
+ {754F73E1-F7A4-47C7-A3F7-DC59ADA5105A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {754F73E1-F7A4-47C7-A3F7-DC59ADA5105A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {754F73E1-F7A4-47C7-A3F7-DC59ADA5105A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {754F73E1-F7A4-47C7-A3F7-DC59ADA5105A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F6A03B6C-EBF9-4581-9904-EDC7270CF3BD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F6A03B6C-EBF9-4581-9904-EDC7270CF3BD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F6A03B6C-EBF9-4581-9904-EDC7270CF3BD}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F6A03B6C-EBF9-4581-9904-EDC7270CF3BD}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C4CDF6A6-40E5-4CCD-AC4C-143F9F4398CA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C4CDF6A6-40E5-4CCD-AC4C-143F9F4398CA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C4CDF6A6-40E5-4CCD-AC4C-143F9F4398CA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C4CDF6A6-40E5-4CCD-AC4C-143F9F4398CA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2BED2D88-0B51-468B-A559-DA7B4BACA00B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {2BED2D88-0B51-468B-A559-DA7B4BACA00B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2BED2D88-0B51-468B-A559-DA7B4BACA00B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {2BED2D88-0B51-468B-A559-DA7B4BACA00B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B1F9F419-87E1-4B59-A954-9895FCD7949E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B1F9F419-87E1-4B59-A954-9895FCD7949E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B1F9F419-87E1-4B59-A954-9895FCD7949E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B1F9F419-87E1-4B59-A954-9895FCD7949E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {BBAD4449-D414-4A20-BCA2-DE9C40E4A866}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {BBAD4449-D414-4A20-BCA2-DE9C40E4A866}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BBAD4449-D414-4A20-BCA2-DE9C40E4A866}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {BBAD4449-D414-4A20-BCA2-DE9C40E4A866}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9235DCFA-9EDD-48EF-B1DB-E15B738C85A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {9235DCFA-9EDD-48EF-B1DB-E15B738C85A6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9235DCFA-9EDD-48EF-B1DB-E15B738C85A6}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {9235DCFA-9EDD-48EF-B1DB-E15B738C85A6}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7415B0FB-A446-41D6-A0CD-D64B703F15AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7415B0FB-A446-41D6-A0CD-D64B703F15AD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7415B0FB-A446-41D6-A0CD-D64B703F15AD}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7415B0FB-A446-41D6-A0CD-D64B703F15AD}.Release|Any CPU.Build.0 = Release|Any CPU
+ {8DFE1168-B1CC-43D1-B256-B5708BADD47B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {8DFE1168-B1CC-43D1-B256-B5708BADD47B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8DFE1168-B1CC-43D1-B256-B5708BADD47B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {8DFE1168-B1CC-43D1-B256-B5708BADD47B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {43C696FA-3812-4312-9529-98CECCD32A81}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {43C696FA-3812-4312-9529-98CECCD32A81}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {43C696FA-3812-4312-9529-98CECCD32A81}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {43C696FA-3812-4312-9529-98CECCD32A81}.Release|Any CPU.Build.0 = Release|Any CPU
+ {63B3A841-F3E0-4D60-B85D-156D7251FFDF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {63B3A841-F3E0-4D60-B85D-156D7251FFDF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {63B3A841-F3E0-4D60-B85D-156D7251FFDF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {63B3A841-F3E0-4D60-B85D-156D7251FFDF}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0F0F7D45-0E13-42B0-A158-8F303BBE8358}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {0F0F7D45-0E13-42B0-A158-8F303BBE8358}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {4F377216-3D76-4169-BE2B-8DA3A653DD5E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {4F377216-3D76-4169-BE2B-8DA3A653DD5E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4F377216-3D76-4169-BE2B-8DA3A653DD5E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {4F377216-3D76-4169-BE2B-8DA3A653DD5E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CB56AC5A-D2C1-40DE-99D5-DCF9F44C9482}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {CB56AC5A-D2C1-40DE-99D5-DCF9F44C9482}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CB56AC5A-D2C1-40DE-99D5-DCF9F44C9482}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {CB56AC5A-D2C1-40DE-99D5-DCF9F44C9482}.Release|Any CPU.Build.0 = Release|Any CPU
+ {560E1104-9A6E-41E7-AB3D-85BA2740A0F7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {560E1104-9A6E-41E7-AB3D-85BA2740A0F7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {560E1104-9A6E-41E7-AB3D-85BA2740A0F7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {560E1104-9A6E-41E7-AB3D-85BA2740A0F7}.Release|Any CPU.Build.0 = Release|Any CPU
+ {64E32F7A-8989-480E-AFE7-3BD343424F6A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {64E32F7A-8989-480E-AFE7-3BD343424F6A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {64E32F7A-8989-480E-AFE7-3BD343424F6A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {64E32F7A-8989-480E-AFE7-3BD343424F6A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {BDEE131F-CCF5-49BD-9764-9C4A8864CE4E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {BDEE131F-CCF5-49BD-9764-9C4A8864CE4E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BDEE131F-CCF5-49BD-9764-9C4A8864CE4E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {BDEE131F-CCF5-49BD-9764-9C4A8864CE4E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {901AC4F9-7DE5-4D13-85FD-384382E29F11}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {901AC4F9-7DE5-4D13-85FD-384382E29F11}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {901AC4F9-7DE5-4D13-85FD-384382E29F11}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {901AC4F9-7DE5-4D13-85FD-384382E29F11}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A996927A-9222-43F4-8552-810B69FF04DF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A996927A-9222-43F4-8552-810B69FF04DF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A996927A-9222-43F4-8552-810B69FF04DF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A996927A-9222-43F4-8552-810B69FF04DF}.Release|Any CPU.Build.0 = Release|Any CPU
+ {87D57940-9A6E-473C-A4D6-777E3BAFD5F9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {87D57940-9A6E-473C-A4D6-777E3BAFD5F9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {87D57940-9A6E-473C-A4D6-777E3BAFD5F9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {87D57940-9A6E-473C-A4D6-777E3BAFD5F9}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C5E7978A-DE2A-4944-86DB-4721A110E720}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C5E7978A-DE2A-4944-86DB-4721A110E720}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C5E7978A-DE2A-4944-86DB-4721A110E720}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C5E7978A-DE2A-4944-86DB-4721A110E720}.Release|Any CPU.Build.0 = Release|Any CPU
+ {289713D4-5259-4CC4-8CAA-DBF3BDCDCBC0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {289713D4-5259-4CC4-8CAA-DBF3BDCDCBC0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {289713D4-5259-4CC4-8CAA-DBF3BDCDCBC0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {289713D4-5259-4CC4-8CAA-DBF3BDCDCBC0}.Release|Any CPU.Build.0 = Release|Any CPU
+ {51AF3B29-D107-4E22-8A85-DF02A8A898E5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {51AF3B29-D107-4E22-8A85-DF02A8A898E5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {51AF3B29-D107-4E22-8A85-DF02A8A898E5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {51AF3B29-D107-4E22-8A85-DF02A8A898E5}.Release|Any CPU.Build.0 = Release|Any CPU
+ {DE15D292-DC01-4AEA-B473-C2F2908341A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {DE15D292-DC01-4AEA-B473-C2F2908341A7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {DE15D292-DC01-4AEA-B473-C2F2908341A7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {DE15D292-DC01-4AEA-B473-C2F2908341A7}.Release|Any CPU.Build.0 = Release|Any CPU
+ {959E9599-8D99-43BC-8038-B91F76179C1C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {959E9599-8D99-43BC-8038-B91F76179C1C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {959E9599-8D99-43BC-8038-B91F76179C1C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {959E9599-8D99-43BC-8038-B91F76179C1C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {1B3E6BEE-F7AB-433E-A1D9-E8BE3782419B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {1B3E6BEE-F7AB-433E-A1D9-E8BE3782419B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1B3E6BEE-F7AB-433E-A1D9-E8BE3782419B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {1B3E6BEE-F7AB-433E-A1D9-E8BE3782419B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C7DE0626-9EB6-475E-AA0C-CB9DE21D4FAE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C7DE0626-9EB6-475E-AA0C-CB9DE21D4FAE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C7DE0626-9EB6-475E-AA0C-CB9DE21D4FAE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C7DE0626-9EB6-475E-AA0C-CB9DE21D4FAE}.Release|Any CPU.Build.0 = Release|Any CPU
+ {BC44A41F-1BED-4438-9F66-0EA5607906D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {BC44A41F-1BED-4438-9F66-0EA5607906D5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BC44A41F-1BED-4438-9F66-0EA5607906D5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {BC44A41F-1BED-4438-9F66-0EA5607906D5}.Release|Any CPU.Build.0 = Release|Any CPU
+ {56DE0D44-E9E5-48DA-BAEA-2934B1E28D4E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {56DE0D44-E9E5-48DA-BAEA-2934B1E28D4E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {56DE0D44-E9E5-48DA-BAEA-2934B1E28D4E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {56DE0D44-E9E5-48DA-BAEA-2934B1E28D4E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D59C5649-BE0E-4A33-B868-B652D8614534}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D59C5649-BE0E-4A33-B868-B652D8614534}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D59C5649-BE0E-4A33-B868-B652D8614534}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D59C5649-BE0E-4A33-B868-B652D8614534}.Release|Any CPU.Build.0 = Release|Any CPU
+ {18A6904A-5AFD-4816-AC3F-9F5E433720B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {18A6904A-5AFD-4816-AC3F-9F5E433720B5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {18A6904A-5AFD-4816-AC3F-9F5E433720B5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {18A6904A-5AFD-4816-AC3F-9F5E433720B5}.Release|Any CPU.Build.0 = Release|Any CPU
+ {23EA38E3-0BF1-40DF-A52D-C34EA2FB3F26}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {23EA38E3-0BF1-40DF-A52D-C34EA2FB3F26}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {23EA38E3-0BF1-40DF-A52D-C34EA2FB3F26}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {23EA38E3-0BF1-40DF-A52D-C34EA2FB3F26}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F24EB026-65FB-4247-ABF8-942B11ADAB64}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F24EB026-65FB-4247-ABF8-942B11ADAB64}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F24EB026-65FB-4247-ABF8-942B11ADAB64}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F24EB026-65FB-4247-ABF8-942B11ADAB64}.Release|Any CPU.Build.0 = Release|Any CPU
+ {483A27EE-7682-417C-9FCA-C2171C13F693}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {483A27EE-7682-417C-9FCA-C2171C13F693}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {483A27EE-7682-417C-9FCA-C2171C13F693}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {483A27EE-7682-417C-9FCA-C2171C13F693}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E10243AE-34FC-47B5-B898-B5203C36920C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E10243AE-34FC-47B5-B898-B5203C36920C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E10243AE-34FC-47B5-B898-B5203C36920C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E10243AE-34FC-47B5-B898-B5203C36920C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0F1D9FB5-4415-40F1-B7B0-6DD5A3BAB0C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {0F1D9FB5-4415-40F1-B7B0-6DD5A3BAB0C4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0F1D9FB5-4415-40F1-B7B0-6DD5A3BAB0C4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {0F1D9FB5-4415-40F1-B7B0-6DD5A3BAB0C4}.Release|Any CPU.Build.0 = Release|Any CPU
+ {32193A01-04DD-463B-A84A-9A93167958A4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {32193A01-04DD-463B-A84A-9A93167958A4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {32193A01-04DD-463B-A84A-9A93167958A4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {32193A01-04DD-463B-A84A-9A93167958A4}.Release|Any CPU.Build.0 = Release|Any CPU
+ {79A63F25-A5F9-441C-8C52-F8033A9F8ABA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {79A63F25-A5F9-441C-8C52-F8033A9F8ABA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {79A63F25-A5F9-441C-8C52-F8033A9F8ABA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {79A63F25-A5F9-441C-8C52-F8033A9F8ABA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5E290FA1-E87B-4782-B977-EB5FA6C96EFE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {5E290FA1-E87B-4782-B977-EB5FA6C96EFE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5E290FA1-E87B-4782-B977-EB5FA6C96EFE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {5E290FA1-E87B-4782-B977-EB5FA6C96EFE}.Release|Any CPU.Build.0 = Release|Any CPU
+ {BA9613FB-8458-4C78-98DE-AA45BBE62F64}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {BA9613FB-8458-4C78-98DE-AA45BBE62F64}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BA9613FB-8458-4C78-98DE-AA45BBE62F64}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {BA9613FB-8458-4C78-98DE-AA45BBE62F64}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0D996EEE-7C04-4888-AF48-9C1E2F261A00}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {0D996EEE-7C04-4888-AF48-9C1E2F261A00}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0D996EEE-7C04-4888-AF48-9C1E2F261A00}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {0D996EEE-7C04-4888-AF48-9C1E2F261A00}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C4ABF344-3263-45D5-A074-03FB206FF309}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C4ABF344-3263-45D5-A074-03FB206FF309}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C4ABF344-3263-45D5-A074-03FB206FF309}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C4ABF344-3263-45D5-A074-03FB206FF309}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3978A7D5-7B6E-4152-9C3A-5852F1F6E223}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3978A7D5-7B6E-4152-9C3A-5852F1F6E223}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3978A7D5-7B6E-4152-9C3A-5852F1F6E223}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3978A7D5-7B6E-4152-9C3A-5852F1F6E223}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B8DAF87D-A30D-48AE-B630-C65A64D0C3AF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B8DAF87D-A30D-48AE-B630-C65A64D0C3AF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B8DAF87D-A30D-48AE-B630-C65A64D0C3AF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B8DAF87D-A30D-48AE-B630-C65A64D0C3AF}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7131FE5A-6B27-4BBC-B0CF-09780F6D2DFE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7131FE5A-6B27-4BBC-B0CF-09780F6D2DFE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7131FE5A-6B27-4BBC-B0CF-09780F6D2DFE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7131FE5A-6B27-4BBC-B0CF-09780F6D2DFE}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2CA0D70C-DFC1-458A-871B-328AB6E87E3A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {2CA0D70C-DFC1-458A-871B-328AB6E87E3A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2CA0D70C-DFC1-458A-871B-328AB6E87E3A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {2CA0D70C-DFC1-458A-871B-328AB6E87E3A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D6155F26-8245-4B66-8944-79C3DF9F9DA3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D6155F26-8245-4B66-8944-79C3DF9F9DA3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D6155F26-8245-4B66-8944-79C3DF9F9DA3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D6155F26-8245-4B66-8944-79C3DF9F9DA3}.Release|Any CPU.Build.0 = Release|Any CPU
+ {8B1AF6A7-DD41-4347-B637-90C23D69B50E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {8B1AF6A7-DD41-4347-B637-90C23D69B50E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8B1AF6A7-DD41-4347-B637-90C23D69B50E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {8B1AF6A7-DD41-4347-B637-90C23D69B50E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {18767A3E-9ADC-485C-A8C7-50660D5B579D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {18767A3E-9ADC-485C-A8C7-50660D5B579D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {18767A3E-9ADC-485C-A8C7-50660D5B579D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {18767A3E-9ADC-485C-A8C7-50660D5B579D}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {9518425A-36A5-4B8F-B0B8-6137DB88441D} = {8CEC2042-F11C-49F5-A674-2355793B600A}
+ {498A300E-D036-49B7-A43D-821D1CAF11A5} = {9518425A-36A5-4B8F-B0B8-6137DB88441D}
+ {EFE48691-1FBA-41D5-9BFD-676771973F0C} = {498A300E-D036-49B7-A43D-821D1CAF11A5}
+ {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A} = {9518425A-36A5-4B8F-B0B8-6137DB88441D}
+ {AFA0AB23-64F0-4AC1-9050-6CE8FE06F580} = {9518425A-36A5-4B8F-B0B8-6137DB88441D}
+ {8683D82A-2BBE-4199-9C36-C59F48804F90} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {CC53E5C5-9D3E-4AD9-A9CA-D2190463EB5B} = {A0C5FBBB-CFB2-4FB9-B8F0-55676E9DCF06}
+ {E5439139-6F94-44FA-9590-C32FCC1C7A93} = {8CEC2042-F11C-49F5-A674-2355793B600A}
+ {933F1D4B-1216-4BC1-956E-8C30818BAA0F} = {9518425A-36A5-4B8F-B0B8-6137DB88441D}
+ {E3FB283A-B766-4887-95E1-329667671921} = {A0C5FBBB-CFB2-4FB9-B8F0-55676E9DCF06}
+ {550362BF-A3A7-4F20-9590-24F4F8C380FF} = {9E5F0022-0A50-40BF-AC6A-C3078585ECAB}
+ {7D231B65-AA8E-4917-85FF-BBBF7992B6FC} = {8CEC2042-F11C-49F5-A674-2355793B600A}
+ {0972AD57-B16B-494F-AE0A-091DD6F3B42B} = {9518425A-36A5-4B8F-B0B8-6137DB88441D}
+ {AAFFA51D-1357-4560-97DC-43AD039442E6} = {0972AD57-B16B-494F-AE0A-091DD6F3B42B}
+ {C4C1E313-C7C1-4490-AECE-0DD0062380A4} = {9518425A-36A5-4B8F-B0B8-6137DB88441D}
+ {16427BFB-B4C6-46A9-A290-8EA51FF73FEA} = {9518425A-36A5-4B8F-B0B8-6137DB88441D}
+ {0884B566-D22E-498C-BAA9-26D50ABCAE3A} = {16427BFB-B4C6-46A9-A290-8EA51FF73FEA}
+ {E1B0F72C-991A-409D-9266-DE5ED1BD940E} = {A0C5FBBB-CFB2-4FB9-B8F0-55676E9DCF06}
+ {07D12F26-2583-4C6F-AFBB-AA30FF339FC6} = {82FFBC1A-6B13-4C0A-896A-90306AE4828F}
+ {F8C637E1-1F4F-4E3B-9E34-AAD61097C3F8} = {07D12F26-2583-4C6F-AFBB-AA30FF339FC6}
+ {FE9F14E0-8DFF-413B-BB9E-49CEA4115A5D} = {F8C637E1-1F4F-4E3B-9E34-AAD61097C3F8}
+ {FDB5C8D0-018D-4FF9-9680-C6A5078F819B} = {8683D82A-2BBE-4199-9C36-C59F48804F90}
+ {4B243CF1-4269-45C6-A238-1A9BFA58B8CC} = {8683D82A-2BBE-4199-9C36-C59F48804F90}
+ {086FF8A0-9CEE-470A-9751-78B0F1340649} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {C98950B1-DC4B-43DA-974F-EF2CF325EC2B} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {3493346B-44F6-4F50-8FB4-51D0090DF544} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {DD3E8ED8-A0E4-482E-A5ED-115E21D543C0} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {AD119B05-A092-41AD-B68E-4AE2DB5A96D9} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {F47F206E-4CCA-4AD0-AEBA-FD9F491E05EC} = {498A300E-D036-49B7-A43D-821D1CAF11A5}
+ {8E1555D1-13D5-4DBF-9631-117D840C3158} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {DC7D131A-AF99-46AB-9AA6-463443E3B992} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {DA0A44FB-D562-4776-AAFB-8266E78AA1A6} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {3CDCE3AA-7CAF-4A27-B1D3-9D558B74D084} = {498A300E-D036-49B7-A43D-821D1CAF11A5}
+ {43782238-E7BB-49D0-9541-1121DACA6EB5} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {FA487690-E88C-4A57-9187-B71CB70C1AAE} = {498A300E-D036-49B7-A43D-821D1CAF11A5}
+ {BB3F7D85-7E20-4AEB-A32A-8AF150CC37B2} = {EFE48691-1FBA-41D5-9BFD-676771973F0C}
+ {1A5E9F40-F3A5-4B59-9898-3DCD65C459C3} = {498A300E-D036-49B7-A43D-821D1CAF11A5}
+ {42FA33DD-AEA3-4FF3-8319-F30244A666A4} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {472DBA92-4FEA-4B9A-BA70-0E97B942E12D} = {8683D82A-2BBE-4199-9C36-C59F48804F90}
+ {EEA89ACD-CFBB-4F60-A150-74F0A84DF028} = {498A300E-D036-49B7-A43D-821D1CAF11A5}
+ {8BDF1DE0-E6DE-48AD-AAA3-CE09CB544E2C} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {EF718502-7760-45B5-A563-5F1B22A6B840} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {8B457E8F-8716-4F29-BBE2-DD6C7BC4AC37} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {303F8E41-691F-4453-AB7D-88A0036C0465} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {D141BD06-DD95-4CAF-85CD-657116E0DAD4} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {24BE488C-A5F3-4228-8CAB-E60EBEA444EE} = {EFE48691-1FBA-41D5-9BFD-676771973F0C}
+ {EB0B88E2-589A-4F65-8F98-D5B958D8104F} = {EFE48691-1FBA-41D5-9BFD-676771973F0C}
+ {4E83BFB5-F225-4C3B-B96E-0AD1951A5630} = {EFE48691-1FBA-41D5-9BFD-676771973F0C}
+ {C41023C9-65C3-4FB3-9053-4DE963A81500} = {498A300E-D036-49B7-A43D-821D1CAF11A5}
+ {7E563BF6-47F2-4531-A1CE-FB9445DF3253} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {AAD9038B-8F16-4E09-93AF-B13E9F7ACD66} = {498A300E-D036-49B7-A43D-821D1CAF11A5}
+ {8D949A40-5F4B-4EB0-B8FD-301B472C96AE} = {8683D82A-2BBE-4199-9C36-C59F48804F90}
+ {2F3B6271-B9A3-48A3-9DB6-847F3EF41F0A} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {D79491F0-CA92-439B-98CE-7AF9F57EBEB0} = {498A300E-D036-49B7-A43D-821D1CAF11A5}
+ {8276E670-FC3F-4EDE-9D51-6DAD90336C32} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {EC3C54CE-A3CD-434A-9E3C-DB6C5F5248EA} = {8683D82A-2BBE-4199-9C36-C59F48804F90}
+ {AA88952E-9393-4A4B-85B5-CC7F03629CE1} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {472B69A0-956F-42C0-9CB8-30107821C43B} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {2A161C2D-DAA5-4F97-BA2B-783CF363C05B} = {8683D82A-2BBE-4199-9C36-C59F48804F90}
+ {5EE6B6EB-B768-47EC-882B-8DCACA2B1360} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {B5A0C6B0-66C8-46EB-B699-44EB2DD1784A} = {8683D82A-2BBE-4199-9C36-C59F48804F90}
+ {C1210E08-58E5-44D4-BE6F-634C3FC5E410} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {600953C4-BD8F-4A4B-A275-6D6F9EF48342} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {5C2829C2-ED0D-414C-B5A0-2BFDCA07B493} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {CDE0C4D2-4B75-4ED0-988D-08E08B23B895} = {8683D82A-2BBE-4199-9C36-C59F48804F90}
+ {0E036453-2C80-4FC9-A517-771F0071734B} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {061AB58B-8235-4DAE-8D56-5F081DD78F5E} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {69B678F6-51CF-4A5B-8DEC-1F9CEDC5C9E2} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {BD46EFCC-177C-466E-81DF-39314B780ADA} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {34B67004-7249-4EF1-8E12-6E6DA37EA6BE} = {498A300E-D036-49B7-A43D-821D1CAF11A5}
+ {1B9E6BF4-9D48-4988-9945-248096119E46} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {3538EF5E-377E-430A-AFB8-F2DB5FAEDE95} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {4AD438D9-D4E3-4EB5-8851-89DB4D1CFB9C} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {BC998ACD-353B-4A56-8A56-DF6200E141B6} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {8EAABFB9-8A47-4B11-AD7F-AC8B373CDE49} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {662B587F-97B5-4CEF-ABF9-6C76A6DBD29E} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {94B50277-FB50-4B42-BA79-770ADB24CB80} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {95613224-C1D7-4D4A-8926-F70DA26371CA} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {BF1E5BA6-C0E5-4472-9D5D-2622231DD275} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {B93AD901-B761-486D-80AE-443742DB65E0} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {7203DD2B-739F-4223-AE50-D26A7FEEE1A4} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {83290961-40BF-48CB-B925-FBBE48E629F3} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {6E8D73F3-082C-455B-BBD5-03A156DCDD0F} = {8683D82A-2BBE-4199-9C36-C59F48804F90}
+ {65492DD4-CCD9-437A-B383-E7EB7AB872D2} = {8683D82A-2BBE-4199-9C36-C59F48804F90}
+ {463A6FB2-1ABE-4B92-A470-97134D0BBC7E} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {7471A7A8-B89C-4C94-8EB1-24180E71CA1F} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {9D5935CB-2DF2-46CB-A5E1-98BE134CAFCC} = {498A300E-D036-49B7-A43D-821D1CAF11A5}
+ {6C599D79-87D0-476B-9CBA-F731E5627622} = {498A300E-D036-49B7-A43D-821D1CAF11A5}
+ {B0E671B9-78DE-410F-A0AA-612FF1F900F2} = {498A300E-D036-49B7-A43D-821D1CAF11A5}
+ {CA3D605F-8DD7-4041-B024-70A24036AFA1} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {DA81EF3E-FDB3-417F-AA20-60FC495E3596} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {3CB0B2C2-7664-4D71-8F43-3D207EE80DB7} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {B22311CE-EC71-4ADD-ADC6-C466B2D10230} = {498A300E-D036-49B7-A43D-821D1CAF11A5}
+ {536F1D82-D40C-4E33-B7FA-76A0F17BF672} = {C4C1E313-C7C1-4490-AECE-0DD0062380A4}
+ {5A806F4B-39E7-4F38-B36F-F5CFC4F8760A} = {9518425A-36A5-4B8F-B0B8-6137DB88441D}
+ {73252693-2563-4B20-A2F5-F8DB37B91DBE} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {6F38B456-1D16-4842-AEE5-E74564FB506A} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {65A66859-2735-4DD6-A927-B416B7A62D0F} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {2A6D3042-C675-4EA3-A8E7-5BDD3C5758EA} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {BED94A61-6FD9-4103-BD35-70B4798C301C} = {498A300E-D036-49B7-A43D-821D1CAF11A5}
+ {6F8B63EA-98D6-4909-BE9E-F39029C29C4F} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {3BC38BE0-B6FF-4B05-BC63-3614A5CF9393} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {E961D189-3EF9-4D79-95A1-78D825B73B01} = {498A300E-D036-49B7-A43D-821D1CAF11A5}
+ {24834112-8C25-4A3D-BDD3-0ACEC825FF2C} = {498A300E-D036-49B7-A43D-821D1CAF11A5}
+ {E9D55D41-B161-492F-9EC7-FF2F2231A587} = {8683D82A-2BBE-4199-9C36-C59F48804F90}
+ {268B6D05-B6D5-4D20-B2B1-0B9422A92D73} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {3C78C521-6507-4D3A-B92E-BC41CEE9D9F3} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {25B7D571-C385-4CA6-9B6A-573D3E3FF3C9} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {F19B5109-36AC-4A64-AFE6-FAF9E831C528} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {0980BCDD-A231-42D1-B689-41A41BBA161A} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {D00DDBDA-66F5-490D-8C1C-16CC5E142170} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {238F67DB-1E48-447C-B1B8-BDC692103791} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {C94E0739-1DA0-4657-8D53-FA4143F6FDA3} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {31D192AF-5454-4D91-97E1-889723AAD309} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {887AC8BA-35A6-4646-BF9A-59357155805E} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {2D1FF937-3237-4A1B-9C6C-82FA5E22CAD7} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {10619BA2-AED1-482A-8570-BB7C7B83DDDC} = {498A300E-D036-49B7-A43D-821D1CAF11A5}
+ {230A9B80-E1AA-469F-86F2-B7E257F14E66} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {0DF4363A-0DF4-4882-A39F-3C9F404B8DE5} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {FF2E8DD2-CA25-4D53-A77C-9F88E41F8C98} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {2CC63AEB-0098-4D3B-9606-F07692C03E90} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {DEACDE01-95FE-4777-B70A-F20A96AABEA7} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {754F73E1-F7A4-47C7-A3F7-DC59ADA5105A} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {F6A03B6C-EBF9-4581-9904-EDC7270CF3BD} = {0972AD57-B16B-494F-AE0A-091DD6F3B42B}
+ {C4CDF6A6-40E5-4CCD-AC4C-143F9F4398CA} = {498A300E-D036-49B7-A43D-821D1CAF11A5}
+ {2BED2D88-0B51-468B-A559-DA7B4BACA00B} = {16427BFB-B4C6-46A9-A290-8EA51FF73FEA}
+ {B1F9F419-87E1-4B59-A954-9895FCD7949E} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {BBAD4449-D414-4A20-BCA2-DE9C40E4A866} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {9235DCFA-9EDD-48EF-B1DB-E15B738C85A6} = {0884B566-D22E-498C-BAA9-26D50ABCAE3A}
+ {7415B0FB-A446-41D6-A0CD-D64B703F15AD} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {8DFE1168-B1CC-43D1-B256-B5708BADD47B} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {43C696FA-3812-4312-9529-98CECCD32A81} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {63B3A841-F3E0-4D60-B85D-156D7251FFDF} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {0F0F7D45-0E13-42B0-A158-8F303BBE8358} = {C4C1E313-C7C1-4490-AECE-0DD0062380A4}
+ {4F377216-3D76-4169-BE2B-8DA3A653DD5E} = {0884B566-D22E-498C-BAA9-26D50ABCAE3A}
+ {CB56AC5A-D2C1-40DE-99D5-DCF9F44C9482} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {560E1104-9A6E-41E7-AB3D-85BA2740A0F7} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {64E32F7A-8989-480E-AFE7-3BD343424F6A} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {BDEE131F-CCF5-49BD-9764-9C4A8864CE4E} = {C4C1E313-C7C1-4490-AECE-0DD0062380A4}
+ {901AC4F9-7DE5-4D13-85FD-384382E29F11} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {A996927A-9222-43F4-8552-810B69FF04DF} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {87D57940-9A6E-473C-A4D6-777E3BAFD5F9} = {0972AD57-B16B-494F-AE0A-091DD6F3B42B}
+ {C5E7978A-DE2A-4944-86DB-4721A110E720} = {0972AD57-B16B-494F-AE0A-091DD6F3B42B}
+ {289713D4-5259-4CC4-8CAA-DBF3BDCDCBC0} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {51AF3B29-D107-4E22-8A85-DF02A8A898E5} = {8683D82A-2BBE-4199-9C36-C59F48804F90}
+ {DE15D292-DC01-4AEA-B473-C2F2908341A7} = {0884B566-D22E-498C-BAA9-26D50ABCAE3A}
+ {959E9599-8D99-43BC-8038-B91F76179C1C} = {498A300E-D036-49B7-A43D-821D1CAF11A5}
+ {1B3E6BEE-F7AB-433E-A1D9-E8BE3782419B} = {498A300E-D036-49B7-A43D-821D1CAF11A5}
+ {C7DE0626-9EB6-475E-AA0C-CB9DE21D4FAE} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {BC44A41F-1BED-4438-9F66-0EA5607906D5} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {56DE0D44-E9E5-48DA-BAEA-2934B1E28D4E} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {D59C5649-BE0E-4A33-B868-B652D8614534} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {18A6904A-5AFD-4816-AC3F-9F5E433720B5} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {23EA38E3-0BF1-40DF-A52D-C34EA2FB3F26} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {F24EB026-65FB-4247-ABF8-942B11ADAB64} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {483A27EE-7682-417C-9FCA-C2171C13F693} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {E10243AE-34FC-47B5-B898-B5203C36920C} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {0F1D9FB5-4415-40F1-B7B0-6DD5A3BAB0C4} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {32193A01-04DD-463B-A84A-9A93167958A4} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {79A63F25-A5F9-441C-8C52-F8033A9F8ABA} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {5E290FA1-E87B-4782-B977-EB5FA6C96EFE} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {BA9613FB-8458-4C78-98DE-AA45BBE62F64} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {0D996EEE-7C04-4888-AF48-9C1E2F261A00} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {C4ABF344-3263-45D5-A074-03FB206FF309} = {498A300E-D036-49B7-A43D-821D1CAF11A5}
+ {3978A7D5-7B6E-4152-9C3A-5852F1F6E223} = {16427BFB-B4C6-46A9-A290-8EA51FF73FEA}
+ {B8DAF87D-A30D-48AE-B630-C65A64D0C3AF} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {7131FE5A-6B27-4BBC-B0CF-09780F6D2DFE} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {2CA0D70C-DFC1-458A-871B-328AB6E87E3A} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {D6155F26-8245-4B66-8944-79C3DF9F9DA3} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
+ {8B1AF6A7-DD41-4347-B637-90C23D69B50E} = {498A300E-D036-49B7-A43D-821D1CAF11A5}
+ {18767A3E-9ADC-485C-A8C7-50660D5B579D} = {FE9F14E0-8DFF-413B-BB9E-49CEA4115A5D}
+ EndGlobalSection
+EndGlobal
diff --git a/Datadog.Trace.sln b/Datadog.Trace.sln
index b2e674c740b7..01f229af0fe7 100644
--- a/Datadog.Trace.sln
+++ b/Datadog.Trace.sln
@@ -1,4 +1,4 @@
-Microsoft Visual Studio Solution File, Format Version 12.00
+Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.1.31903.286
MinimumVisualStudioVersion = 15.0.26124.0
@@ -596,7 +596,15 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AssemblyLoadContextResolve"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Samples.AspNet.MultipleAppsInDomain", "tracer\test\test-applications\aspnet\Samples.AspNet.MultipleAppsInDomain\Samples.AspNet.MultipleAppsInDomain.csproj", "{A82EB6F8-D8D0-4763-B252-08CA3F39D153}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Samples.Security.AspNetCore5.DatabaseIntegration", "tracer\test\test-applications\security\Samples.Security.AspNetCore5.DatabaseIntegration\Samples.Security.AspNetCore5.DatabaseIntegration.csproj", "{067CE939-C803-4959-890A-B6B34C83F87A}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tracer", "tracer", "{82FFBC1A-6B13-4C0A-896A-90306AE4828F}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{07D12F26-2583-4C6F-AFBB-AA30FF339FC6}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test-applications", "test-applications", "{F8C637E1-1F4F-4E3B-9E34-AAD61097C3F8}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "azure-functions", "azure-functions", "{FE9F14E0-8DFF-413B-BB9E-49CEA4115A5D}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Samples.AzureFunctions.V4Isolated.SdkV1", "tracer\test\test-applications\azure-functions\Samples.AzureFunctions.V4Isolated.SdkV1\Samples.AzureFunctions.V4Isolated.SdkV1.csproj", "{18767A3E-9ADC-485C-A8C7-50660D5B579D}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -1430,10 +1438,10 @@ Global
{A82EB6F8-D8D0-4763-B252-08CA3F39D153}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A82EB6F8-D8D0-4763-B252-08CA3F39D153}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A82EB6F8-D8D0-4763-B252-08CA3F39D153}.Release|Any CPU.Build.0 = Release|Any CPU
- {067CE939-C803-4959-890A-B6B34C83F87A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {067CE939-C803-4959-890A-B6B34C83F87A}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {067CE939-C803-4959-890A-B6B34C83F87A}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {067CE939-C803-4959-890A-B6B34C83F87A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {18767A3E-9ADC-485C-A8C7-50660D5B579D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {18767A3E-9ADC-485C-A8C7-50660D5B579D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {18767A3E-9ADC-485C-A8C7-50660D5B579D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {18767A3E-9ADC-485C-A8C7-50660D5B579D}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -1666,7 +1674,10 @@ Global
{D6155F26-8245-4B66-8944-79C3DF9F9DA3} = {BAF8F246-3645-42AD-B1D0-0F7EAFBAB34A}
{8B1AF6A7-DD41-4347-B637-90C23D69B50E} = {498A300E-D036-49B7-A43D-821D1CAF11A5}
{A82EB6F8-D8D0-4763-B252-08CA3F39D153} = {AFA0AB23-64F0-4AC1-9050-6CE8FE06F580}
- {067CE939-C803-4959-890A-B6B34C83F87A} = {0972AD57-B16B-494F-AE0A-091DD6F3B42B}
+ {07D12F26-2583-4C6F-AFBB-AA30FF339FC6} = {82FFBC1A-6B13-4C0A-896A-90306AE4828F}
+ {F8C637E1-1F4F-4E3B-9E34-AAD61097C3F8} = {07D12F26-2583-4C6F-AFBB-AA30FF339FC6}
+ {FE9F14E0-8DFF-413B-BB9E-49CEA4115A5D} = {F8C637E1-1F4F-4E3B-9E34-AAD61097C3F8}
+ {18767A3E-9ADC-485C-A8C7-50660D5B579D} = {FE9F14E0-8DFF-413B-BB9E-49CEA4115A5D}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {160A1D00-1F5B-40F8-A155-621B4459D78F}
diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md
index c57c43565ccf..2a2516a4c202 100644
--- a/docs/CHANGELOG.md
+++ b/docs/CHANGELOG.md
@@ -10,6 +10,64 @@
+
+## [Release 3.8.0](https://github.com/DataDog/dd-trace-dotnet/releases/tag/v3.8.0)
+
+## Summary
+
+- [ASM] Improved error handling and reporting
+- [ASM/IAST] Fix a crash occurring when an attribute is decorated with itself
+- [Dynamic Instrumentation] Fix errors in symbol upload and exception replay
+- [AWS Lambda] Encode non-ascii error messages
+
+## Changes
+
+### Tracer
+* [Tracing] Refactor internal Span Links API (#6341)
+* Support relative path in `DD_DOTNET_TRACER_HOME` (#6434)
+* Add support for `[DuckPropertyOrField]` (#6463)
+
+### ASM
+* [ASM] Log `FormatException` from `get_Uri` as debug (#6489)
+* [ASM] Update Iast Log Warning to Error (#6492)
+* [ASM] upgrade warning to error (#6421)
+* [ASM] Fix IAST benchmark tests (#6462)
+* [ASM] Error metric for unknown operator errors (#6465)
+* [ASM] Introduce SecurityReporter for all reporting functions of SecurityCoordinator (#6481)
+* [ASM] Normalise aspects exception logging (#6495)
+* Fix build issues on aspects on net5.0 (#6500)
+
+### Debugger
+* [Dynamic Instrumentation] Hotfix SymDB and ER (#6468)
+
+### Serverless
+* [serverless] encode lambda error.msg and error.type (#6438)
+
+### Fixes
+* [IAST] Fix recursive custom attribute crash (#6470)
+
+### Build / Test
+* [IAST] Skip failing tests (#6455)
+* repo: mandatory issue templates (AIDM-424) (#6456)
+* K8s Lib Injection tests: run on a matrix (#6458)
+* [Build] Fix version bump autogen files error (#6464)
+* Fix the build and some versions (#6466)
+* [IAST] skip dotnet 2.1 tests that can't work (#6467)
+* Exclude common failure in smoke tests (#6469)
+* allow running exploration tests on mac (#6474)
+* [Test Package Versions Bump] Updating package versions (#6450)
+* [Test Package Versions Bump] Updating package versions (#6478)
+* [Test Package Versions Bump] Updating package versions (#6486)
+* Parallelize unit tests (#6483)
+* [IAST] Propagation tests reorg (#6487)
+* fix UpdateVendoredCode on mac (#6490)
+
+### Miscellaneous
+* [Crashtracking] Add a setting to disable crashtracking filtering (#6452)
+
+
+[Changes since 3.7.0](https://github.com/DataDog/dd-trace-dotnet/compare/v3.7.0...v3.8.0)
+
## [Release 3.7.0](https://github.com/DataDog/dd-trace-dotnet/releases/tag/v3.7.0)
## Summary
diff --git a/profiler/src/ProfilerEngine/Datadog.Linux.ApiWrapper/CMakeLists.txt b/profiler/src/ProfilerEngine/Datadog.Linux.ApiWrapper/CMakeLists.txt
index c970b43e905c..9afabbe9b4c5 100644
--- a/profiler/src/ProfilerEngine/Datadog.Linux.ApiWrapper/CMakeLists.txt
+++ b/profiler/src/ProfilerEngine/Datadog.Linux.ApiWrapper/CMakeLists.txt
@@ -2,7 +2,7 @@
# Project definition
# ******************************************************
-project("Datadog.Linux.ApiWrapper" VERSION 3.8.0)
+project("Datadog.Linux.ApiWrapper" VERSION 3.9.0)
# ******************************************************
# Compiler options
diff --git a/profiler/src/ProfilerEngine/Datadog.Profiler.Native.Linux/CMakeLists.txt b/profiler/src/ProfilerEngine/Datadog.Profiler.Native.Linux/CMakeLists.txt
index cad747c2cabe..60d88cd1138a 100644
--- a/profiler/src/ProfilerEngine/Datadog.Profiler.Native.Linux/CMakeLists.txt
+++ b/profiler/src/ProfilerEngine/Datadog.Profiler.Native.Linux/CMakeLists.txt
@@ -2,7 +2,7 @@
# Project definition
# ******************************************************
-project("Datadog.Profiler.Native.Linux" VERSION 3.8.0)
+project("Datadog.Profiler.Native.Linux" VERSION 3.9.0)
option(RUN_ASAN "Build with Clang Undefined-Behavior Sanitizer" OFF)
option(RUN_UBSAN "Build with Clang Undefined-Behavior Sanitizer" OFF)
diff --git a/profiler/src/ProfilerEngine/Datadog.Profiler.Native.Windows/Resource.rc b/profiler/src/ProfilerEngine/Datadog.Profiler.Native.Windows/Resource.rc
index a108e4e339fb..4164f364fe20 100644
--- a/profiler/src/ProfilerEngine/Datadog.Profiler.Native.Windows/Resource.rc
+++ b/profiler/src/ProfilerEngine/Datadog.Profiler.Native.Windows/Resource.rc
@@ -62,8 +62,8 @@ END
// ------- version info -------------------------------------------------------
VS_VERSION_INFO VERSIONINFO
-FILEVERSION 3,8,0,0
-PRODUCTVERSION 3,8,0,0
+FILEVERSION 3,9,0,0
+PRODUCTVERSION 3,9,0,0
FILEFLAGSMASK VS_FF_PRERELEASE
FILEOS VOS_NT
FILETYPE VFT_DLL
@@ -74,12 +74,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "Datadog"
VALUE "FileDescription", "Continuous Profiler for .NET Applications"
- VALUE "FileVersion", "3.8.0.0"
+ VALUE "FileVersion", "3.9.0.0"
VALUE "InternalName", "Native Profiler Engine"
VALUE "LegalCopyright", "(c) Datadog 2020-2022"
VALUE "OriginalFilename", "Datadog.Profiler.Native.dll"
VALUE "ProductName", "Continuous Profiler for .NET Applications"
- VALUE "ProductVersion", "3.8.0.0"
+ VALUE "ProductVersion", "3.9.0.0"
END
END
BLOCK "VarFileInfo"
diff --git a/profiler/src/ProfilerEngine/Datadog.Profiler.Native/dd_profiler_version.h b/profiler/src/ProfilerEngine/Datadog.Profiler.Native/dd_profiler_version.h
index 7cd4ab54d82f..2c9082816795 100644
--- a/profiler/src/ProfilerEngine/Datadog.Profiler.Native/dd_profiler_version.h
+++ b/profiler/src/ProfilerEngine/Datadog.Profiler.Native/dd_profiler_version.h
@@ -3,4 +3,4 @@
#pragma once
-constexpr auto PROFILER_VERSION = "3.8.0";
+constexpr auto PROFILER_VERSION = "3.9.0";
diff --git a/profiler/src/ProfilerEngine/ProductVersion.props b/profiler/src/ProfilerEngine/ProductVersion.props
index 87caf658f96c..7f2a3a94d2c7 100644
--- a/profiler/src/ProfilerEngine/ProductVersion.props
+++ b/profiler/src/ProfilerEngine/ProductVersion.props
@@ -5,7 +5,7 @@
- 3.8.0
+ 3.9.0
diff --git a/profiler/test/Datadog.Profiler.IntegrationTests/Datadog.Profiler.IntegrationTests.csproj b/profiler/test/Datadog.Profiler.IntegrationTests/Datadog.Profiler.IntegrationTests.csproj
index 46d9247ce849..8c63b4fa47ee 100644
--- a/profiler/test/Datadog.Profiler.IntegrationTests/Datadog.Profiler.IntegrationTests.csproj
+++ b/profiler/test/Datadog.Profiler.IntegrationTests/Datadog.Profiler.IntegrationTests.csproj
@@ -28,24 +28,24 @@
- Always
+ PreserveNewest
- Always
+ PreserveNewest
- Always
+ PreserveNewest
- Always
+ PreserveNewest
- Always
+ PreserveNewest
- Always
+ PreserveNewest
-
+
diff --git a/profiler/test/Datadog.Profiler.IntegrationTests/LinuxOnly/WrapperLibraryTest.cs b/profiler/test/Datadog.Profiler.IntegrationTests/LinuxOnly/WrapperLibraryTest.cs
index a6fdc6461dc3..9f9558fa38be 100644
--- a/profiler/test/Datadog.Profiler.IntegrationTests/LinuxOnly/WrapperLibraryTest.cs
+++ b/profiler/test/Datadog.Profiler.IntegrationTests/LinuxOnly/WrapperLibraryTest.cs
@@ -85,7 +85,8 @@ public void EnsureAppDoesNotCrashIfProfilerDeactivateAndTracerActivated(string a
[TestAppFact("Samples.ExceptionGenerator")]
public void GenerateDumpIfDbgRequested(string appName, string framework, string appAssembly)
{
- var runner = new TestApplicationRunner(appName, framework, appAssembly, _output, enableTracer: true, commandLine: "--scenario 7");
+ // The continuous profiler is disabled for this test because it's not needed and it *might* be causing some failures
+ var runner = new TestApplicationRunner(appName, framework, appAssembly, _output, enableTracer: true, enableProfiler: false, commandLine: "--scenario 7");
runner.Environment.SetVariable("COMPlus_DbgEnableMiniDump", "1");
runner.Environment.SetVariable("COMPlus_DbgMiniDumpName", "/dev/null");
diff --git a/shared/src/Datadog.Trace.ClrProfiler.Native/CMakeLists.txt b/shared/src/Datadog.Trace.ClrProfiler.Native/CMakeLists.txt
index d39024ef678b..f0e837ee2a71 100644
--- a/shared/src/Datadog.Trace.ClrProfiler.Native/CMakeLists.txt
+++ b/shared/src/Datadog.Trace.ClrProfiler.Native/CMakeLists.txt
@@ -12,7 +12,7 @@ endif()
# Project definition
# ******************************************************
-project("Datadog.Trace.ClrProfiler.Native" VERSION 3.8.0)
+project("Datadog.Trace.ClrProfiler.Native" VERSION 3.9.0)
if (UNIVERSAL)
find_package(GlibcCompat REQUIRED)
diff --git a/shared/src/Datadog.Trace.ClrProfiler.Native/Resource.rc b/shared/src/Datadog.Trace.ClrProfiler.Native/Resource.rc
index b12b19397b3a..04c6cd2ce7ae 100644
--- a/shared/src/Datadog.Trace.ClrProfiler.Native/Resource.rc
+++ b/shared/src/Datadog.Trace.ClrProfiler.Native/Resource.rc
@@ -57,8 +57,8 @@ VS_VERSION_INFO VERSIONINFO
#else
FILEFLAGS 0x0L
#endif
- FILEVERSION 3,8,0,0
- PRODUCTVERSION 3,8,0,0
+ FILEVERSION 3,9,0,0
+ PRODUCTVERSION 3,9,0,0
FILEOS VOS_NT
FILETYPE VFT_DLL
BEGIN
@@ -68,12 +68,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "Datadog"
VALUE "FileDescription", "Native loader for Datadog .NET APM"
- VALUE "FileVersion", "3.8.0.0"
+ VALUE "FileVersion", "3.9.0.0"
VALUE "InternalName", "Native loader"
VALUE "LegalCopyright", "(c) Datadog 2020-2022"
VALUE "OriginalFilename", "Datadog.Trace.ClrProfiler.Native.dll"
VALUE "ProductName", "Native loader for Datadog .NET APM"
- VALUE "ProductVersion", "3.8.0.0"
+ VALUE "ProductVersion", "3.9.0.0"
END
END
BLOCK "VarFileInfo"
diff --git a/shared/src/msi-installer/WindowsInstaller.wixproj b/shared/src/msi-installer/WindowsInstaller.wixproj
index 0add22ca9ea3..f8f70dd24c72 100644
--- a/shared/src/msi-installer/WindowsInstaller.wixproj
+++ b/shared/src/msi-installer/WindowsInstaller.wixproj
@@ -17,9 +17,9 @@
obj\$(Configuration)\$(Platform)\
True
false
- datadog-dotnet-apm-3.8.0-$(Platform)
+ datadog-dotnet-apm-3.9.0-$(Platform)
$(MSBuildThisFileDirectory)..\..\bin\monitoring-home
- InstallerVersion=3.8.0;MonitoringHomeDirectory=$(MonitoringHomeDirectory);
+ InstallerVersion=3.9.0;MonitoringHomeDirectory=$(MonitoringHomeDirectory);
$(DefineConstants);Debug
diff --git a/shared/src/native-src/version.h b/shared/src/native-src/version.h
index 17bf9ba7b2bb..df115fc5e00b 100644
--- a/shared/src/native-src/version.h
+++ b/shared/src/native-src/version.h
@@ -1,3 +1,3 @@
#pragma once
-constexpr auto PROFILER_VERSION = "3.8.0";
+constexpr auto PROFILER_VERSION = "3.9.0";
diff --git a/tracer/Datadog.Trace.proj b/tracer/Datadog.Trace.proj
index eef70803f37a..ebc76d953922 100644
--- a/tracer/Datadog.Trace.proj
+++ b/tracer/Datadog.Trace.proj
@@ -7,7 +7,6 @@
-
@@ -24,14 +23,7 @@
-
-
-
-
-
-
-
-
+
@@ -46,7 +38,7 @@
-
+
diff --git a/tracer/build/PackageVersionsLatestMajors.g.props b/tracer/build/PackageVersionsLatestMajors.g.props
index 9efecb411655..40361e2b0bb1 100644
--- a/tracer/build/PackageVersionsLatestMajors.g.props
+++ b/tracer/build/PackageVersionsLatestMajors.g.props
@@ -13,109 +13,109 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
- ApiVersion=3.7.404.5;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.405.3;RestoreRecursive=false;BuildProjectReferences=false
net462
All
Samples.AWS.DynamoDBv2
- ApiVersion=3.7.404.5;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.405.3;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp2.1
All
Samples.AWS.DynamoDBv2
- ApiVersion=3.7.404.5;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.405.3;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.0
All
Samples.AWS.DynamoDBv2
- ApiVersion=3.7.404.5;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.405.3;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.1
All
Samples.AWS.DynamoDBv2
- ApiVersion=3.7.404.5;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.405.3;RestoreRecursive=false;BuildProjectReferences=false
net5.0
All
Samples.AWS.DynamoDBv2
- ApiVersion=3.7.404.5;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.405.3;RestoreRecursive=false;BuildProjectReferences=false
net6.0
All
Samples.AWS.DynamoDBv2
- ApiVersion=3.7.404.5;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.405.3;RestoreRecursive=false;BuildProjectReferences=false
net7.0
All
Samples.AWS.DynamoDBv2
- ApiVersion=3.7.404.5;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.405.3;RestoreRecursive=false;BuildProjectReferences=false
net8.0
All
Samples.AWS.DynamoDBv2
- ApiVersion=3.7.404.5;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.405.3;RestoreRecursive=false;BuildProjectReferences=false
net9.0
All
Samples.AWS.DynamoDBv2
- ApiVersion=3.7.402.41;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.54;RestoreRecursive=false;BuildProjectReferences=false
net462
All
Samples.AWS.Kinesis
- ApiVersion=3.7.402.41;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.54;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp2.1
All
Samples.AWS.Kinesis
- ApiVersion=3.7.402.41;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.54;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.0
All
Samples.AWS.Kinesis
- ApiVersion=3.7.402.41;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.54;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.1
All
Samples.AWS.Kinesis
- ApiVersion=3.7.402.41;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.54;RestoreRecursive=false;BuildProjectReferences=false
net5.0
All
Samples.AWS.Kinesis
- ApiVersion=3.7.402.41;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.54;RestoreRecursive=false;BuildProjectReferences=false
net6.0
All
Samples.AWS.Kinesis
- ApiVersion=3.7.402.41;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.54;RestoreRecursive=false;BuildProjectReferences=false
net7.0
All
Samples.AWS.Kinesis
- ApiVersion=3.7.402.41;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.54;RestoreRecursive=false;BuildProjectReferences=false
net8.0
All
Samples.AWS.Kinesis
- ApiVersion=3.7.402.41;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.54;RestoreRecursive=false;BuildProjectReferences=false
net9.0
All
Samples.AWS.Kinesis
@@ -139,163 +139,163 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.Amazon.Lambda.RuntimeSupport
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
net462
All
Samples.AWS.SQS
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp2.1
All
Samples.AWS.SQS
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.0
All
Samples.AWS.SQS
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.1
All
Samples.AWS.SQS
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
net5.0
All
Samples.AWS.SQS
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
net6.0
All
Samples.AWS.SQS
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
net7.0
All
Samples.AWS.SQS
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
net8.0
All
Samples.AWS.SQS
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
net9.0
All
Samples.AWS.SQS
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
net462
All
Samples.AWS.SimpleNotificationService
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp2.1
All
Samples.AWS.SimpleNotificationService
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.0
All
Samples.AWS.SimpleNotificationService
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.1
All
Samples.AWS.SimpleNotificationService
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
net5.0
All
Samples.AWS.SimpleNotificationService
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
net6.0
All
Samples.AWS.SimpleNotificationService
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
net7.0
All
Samples.AWS.SimpleNotificationService
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
net8.0
All
Samples.AWS.SimpleNotificationService
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
net9.0
All
Samples.AWS.SimpleNotificationService
- ApiVersion=3.7.402.6;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.19;RestoreRecursive=false;BuildProjectReferences=false
net462
All
Samples.AWS.EventBridge
- ApiVersion=3.7.402.6;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.19;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp2.1
All
Samples.AWS.EventBridge
- ApiVersion=3.7.402.6;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.19;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.0
All
Samples.AWS.EventBridge
- ApiVersion=3.7.402.6;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.19;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.1
All
Samples.AWS.EventBridge
- ApiVersion=3.7.402.6;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.19;RestoreRecursive=false;BuildProjectReferences=false
net5.0
All
Samples.AWS.EventBridge
- ApiVersion=3.7.402.6;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.19;RestoreRecursive=false;BuildProjectReferences=false
net6.0
All
Samples.AWS.EventBridge
- ApiVersion=3.7.402.6;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.19;RestoreRecursive=false;BuildProjectReferences=false
net7.0
All
Samples.AWS.EventBridge
- ApiVersion=3.7.402.6;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.19;RestoreRecursive=false;BuildProjectReferences=false
net8.0
All
Samples.AWS.EventBridge
- ApiVersion=3.7.402.6;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.19;RestoreRecursive=false;BuildProjectReferences=false
net9.0
All
Samples.AWS.EventBridge
@@ -1831,7 +1831,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.StackExchange.Redis
- ApiVersion=2.8.22;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.8.24;RestoreRecursive=false;BuildProjectReferences=false
net462
All
Samples.StackExchange.Redis
@@ -1867,7 +1867,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.StackExchange.Redis
- ApiVersion=2.8.22;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.8.24;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.1
All
Samples.StackExchange.Redis
@@ -1879,7 +1879,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.StackExchange.Redis
- ApiVersion=2.8.22;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.8.24;RestoreRecursive=false;BuildProjectReferences=false
net5.0
All
Samples.StackExchange.Redis
@@ -1891,7 +1891,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.StackExchange.Redis
- ApiVersion=2.8.22;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.8.24;RestoreRecursive=false;BuildProjectReferences=false
net6.0
All
Samples.StackExchange.Redis
@@ -1903,7 +1903,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.StackExchange.Redis
- ApiVersion=2.8.22;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.8.24;RestoreRecursive=false;BuildProjectReferences=false
net7.0
All
Samples.StackExchange.Redis
@@ -1915,7 +1915,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.StackExchange.Redis
- ApiVersion=2.8.22;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.8.24;RestoreRecursive=false;BuildProjectReferences=false
net8.0
All
Samples.StackExchange.Redis
@@ -1927,7 +1927,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.StackExchange.Redis
- ApiVersion=2.8.22;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.8.24;RestoreRecursive=false;BuildProjectReferences=false
net9.0
All
Samples.StackExchange.Redis
@@ -2737,7 +2737,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.Microsoft.Data.Sqlite
- ApiVersion=2.9.2;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.9.3;RestoreRecursive=false;BuildProjectReferences=false
net462
None
Samples.XUnitTests
@@ -2767,31 +2767,31 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.XUnitTests
- ApiVersion=2.9.2;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.9.3;RestoreRecursive=false;BuildProjectReferences=false
net6.0
None
Samples.XUnitTests
- ApiVersion=2.9.2;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.9.3;RestoreRecursive=false;BuildProjectReferences=false
net7.0
None
Samples.XUnitTests
- ApiVersion=2.9.2;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.9.3;RestoreRecursive=false;BuildProjectReferences=false
net8.0
None
Samples.XUnitTests
- ApiVersion=2.9.2;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.9.3;RestoreRecursive=false;BuildProjectReferences=false
net9.0
None
Samples.XUnitTests
- ApiVersion=2.9.2;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.9.3;RestoreRecursive=false;BuildProjectReferences=false
net462
None
Samples.XUnitTestsRetries
@@ -2821,25 +2821,25 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.XUnitTestsRetries
- ApiVersion=2.9.2;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.9.3;RestoreRecursive=false;BuildProjectReferences=false
net6.0
None
Samples.XUnitTestsRetries
- ApiVersion=2.9.2;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.9.3;RestoreRecursive=false;BuildProjectReferences=false
net7.0
None
Samples.XUnitTestsRetries
- ApiVersion=2.9.2;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.9.3;RestoreRecursive=false;BuildProjectReferences=false
net8.0
None
Samples.XUnitTestsRetries
- ApiVersion=2.9.2;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.9.3;RestoreRecursive=false;BuildProjectReferences=false
net9.0
None
Samples.XUnitTestsRetries
@@ -2851,7 +2851,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.NUnitTests
- ApiVersion=4.3.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=4.3.2;RestoreRecursive=false;BuildProjectReferences=false
net462
None
Samples.NUnitTests
@@ -2887,7 +2887,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.NUnitTests
- ApiVersion=4.3.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=4.3.2;RestoreRecursive=false;BuildProjectReferences=false
net6.0
None
Samples.NUnitTests
@@ -2899,7 +2899,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.NUnitTests
- ApiVersion=4.3.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=4.3.2;RestoreRecursive=false;BuildProjectReferences=false
net7.0
None
Samples.NUnitTests
@@ -2911,7 +2911,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.NUnitTests
- ApiVersion=4.3.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=4.3.2;RestoreRecursive=false;BuildProjectReferences=false
net8.0
None
Samples.NUnitTests
@@ -2923,7 +2923,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.NUnitTests
- ApiVersion=4.3.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=4.3.2;RestoreRecursive=false;BuildProjectReferences=false
net9.0
None
Samples.NUnitTests
@@ -2935,7 +2935,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.NUnitTestsRetries
- ApiVersion=4.3.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=4.3.2;RestoreRecursive=false;BuildProjectReferences=false
net462
None
Samples.NUnitTestsRetries
@@ -2971,7 +2971,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.NUnitTestsRetries
- ApiVersion=4.3.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=4.3.2;RestoreRecursive=false;BuildProjectReferences=false
net6.0
None
Samples.NUnitTestsRetries
@@ -2983,7 +2983,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.NUnitTestsRetries
- ApiVersion=4.3.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=4.3.2;RestoreRecursive=false;BuildProjectReferences=false
net7.0
None
Samples.NUnitTestsRetries
@@ -2995,7 +2995,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.NUnitTestsRetries
- ApiVersion=4.3.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=4.3.2;RestoreRecursive=false;BuildProjectReferences=false
net8.0
None
Samples.NUnitTestsRetries
@@ -3007,7 +3007,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.NUnitTestsRetries
- ApiVersion=4.3.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=4.3.2;RestoreRecursive=false;BuildProjectReferences=false
net9.0
None
Samples.NUnitTestsRetries
@@ -3019,7 +3019,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTests
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
net462
None
Samples.MSTestTests
@@ -3031,7 +3031,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTests
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp2.1
None
Samples.MSTestTests
@@ -3043,7 +3043,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTests
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.0
None
Samples.MSTestTests
@@ -3055,7 +3055,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTests
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.1
None
Samples.MSTestTests
@@ -3067,7 +3067,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTests
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
net5.0
None
Samples.MSTestTests
@@ -3079,7 +3079,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTests
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
net6.0
None
Samples.MSTestTests
@@ -3091,7 +3091,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTests
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
net7.0
None
Samples.MSTestTests
@@ -3103,7 +3103,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTests
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
net8.0
None
Samples.MSTestTests
@@ -3115,7 +3115,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTests
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
net9.0
None
Samples.MSTestTests
@@ -3127,7 +3127,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTests2
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
net462
None
Samples.MSTestTests2
@@ -3139,7 +3139,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTests2
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp2.1
None
Samples.MSTestTests2
@@ -3151,7 +3151,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTests2
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.0
None
Samples.MSTestTests2
@@ -3163,7 +3163,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTests2
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.1
None
Samples.MSTestTests2
@@ -3175,7 +3175,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTests2
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
net5.0
None
Samples.MSTestTests2
@@ -3187,7 +3187,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTests2
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
net6.0
None
Samples.MSTestTests2
@@ -3199,7 +3199,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTests2
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
net7.0
None
Samples.MSTestTests2
@@ -3211,7 +3211,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTests2
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
net8.0
None
Samples.MSTestTests2
@@ -3223,7 +3223,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTests2
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
net9.0
None
Samples.MSTestTests2
@@ -3235,7 +3235,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTestsRetries
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
net462
None
Samples.MSTestTestsRetries
@@ -3247,7 +3247,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTestsRetries
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp2.1
None
Samples.MSTestTestsRetries
@@ -3259,7 +3259,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTestsRetries
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.0
None
Samples.MSTestTestsRetries
@@ -3271,7 +3271,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTestsRetries
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.1
None
Samples.MSTestTestsRetries
@@ -3283,7 +3283,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTestsRetries
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
net5.0
None
Samples.MSTestTestsRetries
@@ -3295,7 +3295,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTestsRetries
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
net6.0
None
Samples.MSTestTestsRetries
@@ -3307,7 +3307,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTestsRetries
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
net7.0
None
Samples.MSTestTestsRetries
@@ -3319,7 +3319,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTestsRetries
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
net8.0
None
Samples.MSTestTestsRetries
@@ -3331,7 +3331,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTestsRetries
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
net9.0
None
Samples.MSTestTestsRetries
@@ -3343,7 +3343,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.Kafka
- ApiVersion=2.6.1;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.8.0;RestoreRecursive=false;BuildProjectReferences=false
net462
All
Samples.Kafka
@@ -3355,7 +3355,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.Kafka
- ApiVersion=2.6.1;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.8.0;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp2.1
All
Samples.Kafka
@@ -3367,7 +3367,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.Kafka
- ApiVersion=2.6.1;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.8.0;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.0
All
Samples.Kafka
@@ -3379,7 +3379,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.Kafka
- ApiVersion=2.6.1;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.8.0;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.1
All
Samples.Kafka
@@ -3391,7 +3391,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.Kafka
- ApiVersion=2.6.1;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.8.0;RestoreRecursive=false;BuildProjectReferences=false
net5.0
All
Samples.Kafka
@@ -3403,7 +3403,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.Kafka
- ApiVersion=2.6.1;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.8.0;RestoreRecursive=false;BuildProjectReferences=false
net6.0
All
Samples.Kafka
@@ -3415,7 +3415,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.Kafka
- ApiVersion=2.6.1;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.8.0;RestoreRecursive=false;BuildProjectReferences=false
net7.0
All
Samples.Kafka
@@ -3427,7 +3427,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.Kafka
- ApiVersion=2.6.1;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.8.0;RestoreRecursive=false;BuildProjectReferences=false
net8.0
All
Samples.Kafka
@@ -3439,13 +3439,13 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.Kafka
- ApiVersion=2.6.1;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.8.0;RestoreRecursive=false;BuildProjectReferences=false
net9.0
All
Samples.Kafka
- ApiVersion=3.46.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.46.1;RestoreRecursive=false;BuildProjectReferences=false
net462
None
Samples.CosmosDb
@@ -3463,37 +3463,37 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.CosmosDb
- ApiVersion=3.46.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.46.1;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.1
None
Samples.CosmosDb
- ApiVersion=3.46.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.46.1;RestoreRecursive=false;BuildProjectReferences=false
net5.0
None
Samples.CosmosDb
- ApiVersion=3.46.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.46.1;RestoreRecursive=false;BuildProjectReferences=false
net6.0
None
Samples.CosmosDb
- ApiVersion=3.46.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.46.1;RestoreRecursive=false;BuildProjectReferences=false
net7.0
None
Samples.CosmosDb
- ApiVersion=3.46.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.46.1;RestoreRecursive=false;BuildProjectReferences=false
net8.0
None
Samples.CosmosDb
- ApiVersion=3.46.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.46.1;RestoreRecursive=false;BuildProjectReferences=false
net9.0
None
Samples.CosmosDb
diff --git a/tracer/build/PackageVersionsLatestMinors.g.props b/tracer/build/PackageVersionsLatestMinors.g.props
index c2819b2b92b7..5076b614a9c5 100644
--- a/tracer/build/PackageVersionsLatestMinors.g.props
+++ b/tracer/build/PackageVersionsLatestMinors.g.props
@@ -31,7 +31,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.DynamoDBv2
- ApiVersion=3.7.404.5;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.405.3;RestoreRecursive=false;BuildProjectReferences=false
net462
All
Samples.AWS.DynamoDBv2
@@ -49,7 +49,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.DynamoDBv2
- ApiVersion=3.7.404.5;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.405.3;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp2.1
All
Samples.AWS.DynamoDBv2
@@ -67,7 +67,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.DynamoDBv2
- ApiVersion=3.7.404.5;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.405.3;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.0
All
Samples.AWS.DynamoDBv2
@@ -85,7 +85,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.DynamoDBv2
- ApiVersion=3.7.404.5;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.405.3;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.1
All
Samples.AWS.DynamoDBv2
@@ -103,7 +103,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.DynamoDBv2
- ApiVersion=3.7.404.5;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.405.3;RestoreRecursive=false;BuildProjectReferences=false
net5.0
All
Samples.AWS.DynamoDBv2
@@ -121,7 +121,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.DynamoDBv2
- ApiVersion=3.7.404.5;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.405.3;RestoreRecursive=false;BuildProjectReferences=false
net6.0
All
Samples.AWS.DynamoDBv2
@@ -139,7 +139,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.DynamoDBv2
- ApiVersion=3.7.404.5;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.405.3;RestoreRecursive=false;BuildProjectReferences=false
net7.0
All
Samples.AWS.DynamoDBv2
@@ -157,7 +157,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.DynamoDBv2
- ApiVersion=3.7.404.5;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.405.3;RestoreRecursive=false;BuildProjectReferences=false
net8.0
All
Samples.AWS.DynamoDBv2
@@ -175,7 +175,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.DynamoDBv2
- ApiVersion=3.7.404.5;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.405.3;RestoreRecursive=false;BuildProjectReferences=false
net9.0
All
Samples.AWS.DynamoDBv2
@@ -199,7 +199,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.Kinesis
- ApiVersion=3.7.402.41;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.54;RestoreRecursive=false;BuildProjectReferences=false
net462
All
Samples.AWS.Kinesis
@@ -217,7 +217,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.Kinesis
- ApiVersion=3.7.402.41;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.54;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp2.1
All
Samples.AWS.Kinesis
@@ -235,7 +235,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.Kinesis
- ApiVersion=3.7.402.41;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.54;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.0
All
Samples.AWS.Kinesis
@@ -253,7 +253,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.Kinesis
- ApiVersion=3.7.402.41;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.54;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.1
All
Samples.AWS.Kinesis
@@ -271,7 +271,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.Kinesis
- ApiVersion=3.7.402.41;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.54;RestoreRecursive=false;BuildProjectReferences=false
net5.0
All
Samples.AWS.Kinesis
@@ -289,7 +289,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.Kinesis
- ApiVersion=3.7.402.41;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.54;RestoreRecursive=false;BuildProjectReferences=false
net6.0
All
Samples.AWS.Kinesis
@@ -307,7 +307,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.Kinesis
- ApiVersion=3.7.402.41;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.54;RestoreRecursive=false;BuildProjectReferences=false
net7.0
All
Samples.AWS.Kinesis
@@ -325,7 +325,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.Kinesis
- ApiVersion=3.7.402.41;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.54;RestoreRecursive=false;BuildProjectReferences=false
net8.0
All
Samples.AWS.Kinesis
@@ -343,7 +343,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.Kinesis
- ApiVersion=3.7.402.41;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.54;RestoreRecursive=false;BuildProjectReferences=false
net9.0
All
Samples.AWS.Kinesis
@@ -529,7 +529,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.SQS
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
net462
All
Samples.AWS.SQS
@@ -547,7 +547,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.SQS
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp2.1
All
Samples.AWS.SQS
@@ -565,7 +565,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.SQS
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.0
All
Samples.AWS.SQS
@@ -583,7 +583,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.SQS
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.1
All
Samples.AWS.SQS
@@ -601,7 +601,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.SQS
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
net5.0
All
Samples.AWS.SQS
@@ -619,7 +619,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.SQS
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
net6.0
All
Samples.AWS.SQS
@@ -637,7 +637,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.SQS
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
net7.0
All
Samples.AWS.SQS
@@ -655,7 +655,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.SQS
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
net8.0
All
Samples.AWS.SQS
@@ -673,7 +673,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.SQS
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
net9.0
All
Samples.AWS.SQS
@@ -697,7 +697,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.SimpleNotificationService
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
net462
All
Samples.AWS.SimpleNotificationService
@@ -715,7 +715,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.SimpleNotificationService
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp2.1
All
Samples.AWS.SimpleNotificationService
@@ -733,7 +733,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.SimpleNotificationService
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.0
All
Samples.AWS.SimpleNotificationService
@@ -751,7 +751,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.SimpleNotificationService
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.1
All
Samples.AWS.SimpleNotificationService
@@ -769,7 +769,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.SimpleNotificationService
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
net5.0
All
Samples.AWS.SimpleNotificationService
@@ -787,7 +787,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.SimpleNotificationService
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
net6.0
All
Samples.AWS.SimpleNotificationService
@@ -805,7 +805,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.SimpleNotificationService
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
net7.0
All
Samples.AWS.SimpleNotificationService
@@ -823,7 +823,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.SimpleNotificationService
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
net8.0
All
Samples.AWS.SimpleNotificationService
@@ -841,7 +841,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.SimpleNotificationService
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
net9.0
All
Samples.AWS.SimpleNotificationService
@@ -859,7 +859,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.EventBridge
- ApiVersion=3.7.402.6;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.19;RestoreRecursive=false;BuildProjectReferences=false
net462
All
Samples.AWS.EventBridge
@@ -877,7 +877,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.EventBridge
- ApiVersion=3.7.402.6;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.19;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp2.1
All
Samples.AWS.EventBridge
@@ -895,7 +895,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.EventBridge
- ApiVersion=3.7.402.6;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.19;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.0
All
Samples.AWS.EventBridge
@@ -913,7 +913,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.EventBridge
- ApiVersion=3.7.402.6;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.19;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.1
All
Samples.AWS.EventBridge
@@ -931,7 +931,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.EventBridge
- ApiVersion=3.7.402.6;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.19;RestoreRecursive=false;BuildProjectReferences=false
net5.0
All
Samples.AWS.EventBridge
@@ -949,7 +949,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.EventBridge
- ApiVersion=3.7.402.6;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.19;RestoreRecursive=false;BuildProjectReferences=false
net6.0
All
Samples.AWS.EventBridge
@@ -967,7 +967,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.EventBridge
- ApiVersion=3.7.402.6;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.19;RestoreRecursive=false;BuildProjectReferences=false
net7.0
All
Samples.AWS.EventBridge
@@ -985,7 +985,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.EventBridge
- ApiVersion=3.7.402.6;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.19;RestoreRecursive=false;BuildProjectReferences=false
net8.0
All
Samples.AWS.EventBridge
@@ -1003,7 +1003,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.EventBridge
- ApiVersion=3.7.402.6;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.19;RestoreRecursive=false;BuildProjectReferences=false
net9.0
All
Samples.AWS.EventBridge
@@ -9445,7 +9445,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.StackExchange.Redis
- ApiVersion=2.8.22;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.8.24;RestoreRecursive=false;BuildProjectReferences=false
net462
All
Samples.StackExchange.Redis
@@ -9547,7 +9547,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.StackExchange.Redis
- ApiVersion=2.8.22;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.8.24;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.1
All
Samples.StackExchange.Redis
@@ -9595,7 +9595,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.StackExchange.Redis
- ApiVersion=2.8.22;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.8.24;RestoreRecursive=false;BuildProjectReferences=false
net5.0
All
Samples.StackExchange.Redis
@@ -9643,7 +9643,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.StackExchange.Redis
- ApiVersion=2.8.22;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.8.24;RestoreRecursive=false;BuildProjectReferences=false
net6.0
All
Samples.StackExchange.Redis
@@ -9691,7 +9691,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.StackExchange.Redis
- ApiVersion=2.8.22;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.8.24;RestoreRecursive=false;BuildProjectReferences=false
net7.0
All
Samples.StackExchange.Redis
@@ -9739,7 +9739,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.StackExchange.Redis
- ApiVersion=2.8.22;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.8.24;RestoreRecursive=false;BuildProjectReferences=false
net8.0
All
Samples.StackExchange.Redis
@@ -9787,7 +9787,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.StackExchange.Redis
- ApiVersion=2.8.22;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.8.24;RestoreRecursive=false;BuildProjectReferences=false
net9.0
All
Samples.StackExchange.Redis
@@ -13357,7 +13357,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.XUnitTests
- ApiVersion=2.9.2;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.9.3;RestoreRecursive=false;BuildProjectReferences=false
net462
None
Samples.XUnitTests
@@ -13477,7 +13477,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.XUnitTests
- ApiVersion=2.9.2;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.9.3;RestoreRecursive=false;BuildProjectReferences=false
net6.0
None
Samples.XUnitTests
@@ -13525,7 +13525,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.XUnitTests
- ApiVersion=2.9.2;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.9.3;RestoreRecursive=false;BuildProjectReferences=false
net7.0
None
Samples.XUnitTests
@@ -13573,7 +13573,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.XUnitTests
- ApiVersion=2.9.2;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.9.3;RestoreRecursive=false;BuildProjectReferences=false
net8.0
None
Samples.XUnitTests
@@ -13621,7 +13621,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.XUnitTests
- ApiVersion=2.9.2;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.9.3;RestoreRecursive=false;BuildProjectReferences=false
net9.0
None
Samples.XUnitTests
@@ -13669,7 +13669,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.XUnitTestsRetries
- ApiVersion=2.9.2;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.9.3;RestoreRecursive=false;BuildProjectReferences=false
net462
None
Samples.XUnitTestsRetries
@@ -13789,7 +13789,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.XUnitTestsRetries
- ApiVersion=2.9.2;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.9.3;RestoreRecursive=false;BuildProjectReferences=false
net6.0
None
Samples.XUnitTestsRetries
@@ -13837,7 +13837,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.XUnitTestsRetries
- ApiVersion=2.9.2;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.9.3;RestoreRecursive=false;BuildProjectReferences=false
net7.0
None
Samples.XUnitTestsRetries
@@ -13885,7 +13885,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.XUnitTestsRetries
- ApiVersion=2.9.2;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.9.3;RestoreRecursive=false;BuildProjectReferences=false
net8.0
None
Samples.XUnitTestsRetries
@@ -13933,7 +13933,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.XUnitTestsRetries
- ApiVersion=2.9.2;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.9.3;RestoreRecursive=false;BuildProjectReferences=false
net9.0
None
Samples.XUnitTestsRetries
@@ -14011,7 +14011,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.NUnitTests
- ApiVersion=4.3.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=4.3.2;RestoreRecursive=false;BuildProjectReferences=false
net462
None
Samples.NUnitTests
@@ -14305,7 +14305,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.NUnitTests
- ApiVersion=4.3.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=4.3.2;RestoreRecursive=false;BuildProjectReferences=false
net6.0
None
Samples.NUnitTests
@@ -14383,7 +14383,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.NUnitTests
- ApiVersion=4.3.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=4.3.2;RestoreRecursive=false;BuildProjectReferences=false
net7.0
None
Samples.NUnitTests
@@ -14461,7 +14461,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.NUnitTests
- ApiVersion=4.3.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=4.3.2;RestoreRecursive=false;BuildProjectReferences=false
net8.0
None
Samples.NUnitTests
@@ -14539,7 +14539,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.NUnitTests
- ApiVersion=4.3.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=4.3.2;RestoreRecursive=false;BuildProjectReferences=false
net9.0
None
Samples.NUnitTests
@@ -14617,7 +14617,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.NUnitTestsRetries
- ApiVersion=4.3.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=4.3.2;RestoreRecursive=false;BuildProjectReferences=false
net462
None
Samples.NUnitTestsRetries
@@ -14911,7 +14911,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.NUnitTestsRetries
- ApiVersion=4.3.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=4.3.2;RestoreRecursive=false;BuildProjectReferences=false
net6.0
None
Samples.NUnitTestsRetries
@@ -14989,7 +14989,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.NUnitTestsRetries
- ApiVersion=4.3.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=4.3.2;RestoreRecursive=false;BuildProjectReferences=false
net7.0
None
Samples.NUnitTestsRetries
@@ -15067,7 +15067,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.NUnitTestsRetries
- ApiVersion=4.3.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=4.3.2;RestoreRecursive=false;BuildProjectReferences=false
net8.0
None
Samples.NUnitTestsRetries
@@ -15145,7 +15145,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.NUnitTestsRetries
- ApiVersion=4.3.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=4.3.2;RestoreRecursive=false;BuildProjectReferences=false
net9.0
None
Samples.NUnitTestsRetries
@@ -15210,6 +15210,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
None
Samples.MSTestTests
+
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
+ net462
+ None
+ Samples.MSTestTests
+
ApiVersion=2.0.0;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp2.1
@@ -15270,6 +15276,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
None
Samples.MSTestTests
+
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
+ netcoreapp2.1
+ None
+ Samples.MSTestTests
+
ApiVersion=2.0.0;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.0
@@ -15330,6 +15342,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
None
Samples.MSTestTests
+
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
+ netcoreapp3.0
+ None
+ Samples.MSTestTests
+
ApiVersion=2.0.0;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.1
@@ -15390,6 +15408,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
None
Samples.MSTestTests
+
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
+ netcoreapp3.1
+ None
+ Samples.MSTestTests
+
ApiVersion=2.0.0;RestoreRecursive=false;BuildProjectReferences=false
net5.0
@@ -15450,6 +15474,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
None
Samples.MSTestTests
+
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
+ net5.0
+ None
+ Samples.MSTestTests
+
ApiVersion=2.0.0;RestoreRecursive=false;BuildProjectReferences=false
net6.0
@@ -15510,6 +15540,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
None
Samples.MSTestTests
+
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
+ net6.0
+ None
+ Samples.MSTestTests
+
ApiVersion=2.0.0;RestoreRecursive=false;BuildProjectReferences=false
net7.0
@@ -15570,6 +15606,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
None
Samples.MSTestTests
+
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
+ net7.0
+ None
+ Samples.MSTestTests
+
ApiVersion=2.0.0;RestoreRecursive=false;BuildProjectReferences=false
net8.0
@@ -15630,6 +15672,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
None
Samples.MSTestTests
+
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
+ net8.0
+ None
+ Samples.MSTestTests
+
ApiVersion=2.0.0;RestoreRecursive=false;BuildProjectReferences=false
net9.0
@@ -15690,6 +15738,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
None
Samples.MSTestTests
+
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
+ net9.0
+ None
+ Samples.MSTestTests
+
ApiVersion=2.0.0;RestoreRecursive=false;BuildProjectReferences=false
net462
@@ -15750,6 +15804,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
None
Samples.MSTestTests2
+
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
+ net462
+ None
+ Samples.MSTestTests2
+
ApiVersion=2.0.0;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp2.1
@@ -15810,6 +15870,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
None
Samples.MSTestTests2
+
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
+ netcoreapp2.1
+ None
+ Samples.MSTestTests2
+
ApiVersion=2.0.0;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.0
@@ -15870,6 +15936,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
None
Samples.MSTestTests2
+
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
+ netcoreapp3.0
+ None
+ Samples.MSTestTests2
+
ApiVersion=2.0.0;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.1
@@ -15930,6 +16002,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
None
Samples.MSTestTests2
+
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
+ netcoreapp3.1
+ None
+ Samples.MSTestTests2
+
ApiVersion=2.0.0;RestoreRecursive=false;BuildProjectReferences=false
net5.0
@@ -15990,6 +16068,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
None
Samples.MSTestTests2
+
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
+ net5.0
+ None
+ Samples.MSTestTests2
+
ApiVersion=2.0.0;RestoreRecursive=false;BuildProjectReferences=false
net6.0
@@ -16050,6 +16134,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
None
Samples.MSTestTests2
+
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
+ net6.0
+ None
+ Samples.MSTestTests2
+
ApiVersion=2.0.0;RestoreRecursive=false;BuildProjectReferences=false
net7.0
@@ -16110,6 +16200,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
None
Samples.MSTestTests2
+
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
+ net7.0
+ None
+ Samples.MSTestTests2
+
ApiVersion=2.0.0;RestoreRecursive=false;BuildProjectReferences=false
net8.0
@@ -16170,6 +16266,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
None
Samples.MSTestTests2
+
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
+ net8.0
+ None
+ Samples.MSTestTests2
+
ApiVersion=2.0.0;RestoreRecursive=false;BuildProjectReferences=false
net9.0
@@ -16230,6 +16332,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
None
Samples.MSTestTests2
+
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
+ net9.0
+ None
+ Samples.MSTestTests2
+
ApiVersion=2.0.0;RestoreRecursive=false;BuildProjectReferences=false
net462
@@ -16290,6 +16398,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
None
Samples.MSTestTestsRetries
+
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
+ net462
+ None
+ Samples.MSTestTestsRetries
+
ApiVersion=2.0.0;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp2.1
@@ -16350,6 +16464,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
None
Samples.MSTestTestsRetries
+
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
+ netcoreapp2.1
+ None
+ Samples.MSTestTestsRetries
+
ApiVersion=2.0.0;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.0
@@ -16410,6 +16530,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
None
Samples.MSTestTestsRetries
+
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
+ netcoreapp3.0
+ None
+ Samples.MSTestTestsRetries
+
ApiVersion=2.0.0;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.1
@@ -16470,6 +16596,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
None
Samples.MSTestTestsRetries
+
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
+ netcoreapp3.1
+ None
+ Samples.MSTestTestsRetries
+
ApiVersion=2.0.0;RestoreRecursive=false;BuildProjectReferences=false
net5.0
@@ -16530,6 +16662,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
None
Samples.MSTestTestsRetries
+
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
+ net5.0
+ None
+ Samples.MSTestTestsRetries
+
ApiVersion=2.0.0;RestoreRecursive=false;BuildProjectReferences=false
net6.0
@@ -16590,6 +16728,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
None
Samples.MSTestTestsRetries
+
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
+ net6.0
+ None
+ Samples.MSTestTestsRetries
+
ApiVersion=2.0.0;RestoreRecursive=false;BuildProjectReferences=false
net7.0
@@ -16650,6 +16794,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
None
Samples.MSTestTestsRetries
+
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
+ net7.0
+ None
+ Samples.MSTestTestsRetries
+
ApiVersion=2.0.0;RestoreRecursive=false;BuildProjectReferences=false
net8.0
@@ -16710,6 +16860,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
None
Samples.MSTestTestsRetries
+
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
+ net8.0
+ None
+ Samples.MSTestTestsRetries
+
ApiVersion=2.0.0;RestoreRecursive=false;BuildProjectReferences=false
net9.0
@@ -16770,6 +16926,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
None
Samples.MSTestTestsRetries
+
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
+ net9.0
+ None
+ Samples.MSTestTestsRetries
+
ApiVersion=1.4.4;RestoreRecursive=false;BuildProjectReferences=false
net462
@@ -16848,6 +17010,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
All
Samples.Kafka
+
+ ApiVersion=2.8.0;RestoreRecursive=false;BuildProjectReferences=false
+ net462
+ All
+ Samples.Kafka
+
ApiVersion=1.4.4;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp2.1
@@ -16926,6 +17094,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
All
Samples.Kafka
+
+ ApiVersion=2.8.0;RestoreRecursive=false;BuildProjectReferences=false
+ netcoreapp2.1
+ All
+ Samples.Kafka
+
ApiVersion=1.4.4;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.0
@@ -17004,6 +17178,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
All
Samples.Kafka
+
+ ApiVersion=2.8.0;RestoreRecursive=false;BuildProjectReferences=false
+ netcoreapp3.0
+ All
+ Samples.Kafka
+
ApiVersion=1.4.4;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.1
@@ -17082,6 +17262,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
All
Samples.Kafka
+
+ ApiVersion=2.8.0;RestoreRecursive=false;BuildProjectReferences=false
+ netcoreapp3.1
+ All
+ Samples.Kafka
+
ApiVersion=1.4.4;RestoreRecursive=false;BuildProjectReferences=false
net5.0
@@ -17160,6 +17346,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
All
Samples.Kafka
+
+ ApiVersion=2.8.0;RestoreRecursive=false;BuildProjectReferences=false
+ net5.0
+ All
+ Samples.Kafka
+
ApiVersion=1.4.4;RestoreRecursive=false;BuildProjectReferences=false
net6.0
@@ -17238,6 +17430,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
All
Samples.Kafka
+
+ ApiVersion=2.8.0;RestoreRecursive=false;BuildProjectReferences=false
+ net6.0
+ All
+ Samples.Kafka
+
ApiVersion=1.4.4;RestoreRecursive=false;BuildProjectReferences=false
net7.0
@@ -17316,6 +17514,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
All
Samples.Kafka
+
+ ApiVersion=2.8.0;RestoreRecursive=false;BuildProjectReferences=false
+ net7.0
+ All
+ Samples.Kafka
+
ApiVersion=1.4.4;RestoreRecursive=false;BuildProjectReferences=false
net8.0
@@ -17394,6 +17598,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
All
Samples.Kafka
+
+ ApiVersion=2.8.0;RestoreRecursive=false;BuildProjectReferences=false
+ net8.0
+ All
+ Samples.Kafka
+
ApiVersion=1.4.4;RestoreRecursive=false;BuildProjectReferences=false
net9.0
@@ -17472,6 +17682,12 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
All
Samples.Kafka
+
+ ApiVersion=2.8.0;RestoreRecursive=false;BuildProjectReferences=false
+ net9.0
+ All
+ Samples.Kafka
+
ApiVersion=3.6.0;RestoreRecursive=false;BuildProjectReferences=false
net462
@@ -17713,7 +17929,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.CosmosDb
- ApiVersion=3.46.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.46.1;RestoreRecursive=false;BuildProjectReferences=false
net462
None
Samples.CosmosDb
@@ -18235,7 +18451,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.CosmosDb
- ApiVersion=3.46.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.46.1;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.1
None
Samples.CosmosDb
@@ -18481,7 +18697,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.CosmosDb
- ApiVersion=3.46.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.46.1;RestoreRecursive=false;BuildProjectReferences=false
net5.0
None
Samples.CosmosDb
@@ -18727,7 +18943,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.CosmosDb
- ApiVersion=3.46.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.46.1;RestoreRecursive=false;BuildProjectReferences=false
net6.0
None
Samples.CosmosDb
@@ -18973,7 +19189,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.CosmosDb
- ApiVersion=3.46.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.46.1;RestoreRecursive=false;BuildProjectReferences=false
net7.0
None
Samples.CosmosDb
@@ -19219,7 +19435,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.CosmosDb
- ApiVersion=3.46.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.46.1;RestoreRecursive=false;BuildProjectReferences=false
net8.0
None
Samples.CosmosDb
@@ -19465,7 +19681,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.CosmosDb
- ApiVersion=3.46.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.46.1;RestoreRecursive=false;BuildProjectReferences=false
net9.0
None
Samples.CosmosDb
diff --git a/tracer/build/PackageVersionsLatestSpecific.g.props b/tracer/build/PackageVersionsLatestSpecific.g.props
index d59a8aaf7da7..8535e2e30749 100644
--- a/tracer/build/PackageVersionsLatestSpecific.g.props
+++ b/tracer/build/PackageVersionsLatestSpecific.g.props
@@ -25,7 +25,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.DynamoDBv2
- ApiVersion=3.7.404.5;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.405.3;RestoreRecursive=false;BuildProjectReferences=false
net462
All
Samples.AWS.DynamoDBv2
@@ -37,7 +37,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.DynamoDBv2
- ApiVersion=3.7.404.5;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.405.3;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp2.1
All
Samples.AWS.DynamoDBv2
@@ -49,7 +49,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.DynamoDBv2
- ApiVersion=3.7.404.5;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.405.3;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.0
All
Samples.AWS.DynamoDBv2
@@ -61,7 +61,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.DynamoDBv2
- ApiVersion=3.7.404.5;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.405.3;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.1
All
Samples.AWS.DynamoDBv2
@@ -73,7 +73,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.DynamoDBv2
- ApiVersion=3.7.404.5;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.405.3;RestoreRecursive=false;BuildProjectReferences=false
net5.0
All
Samples.AWS.DynamoDBv2
@@ -85,7 +85,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.DynamoDBv2
- ApiVersion=3.7.404.5;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.405.3;RestoreRecursive=false;BuildProjectReferences=false
net6.0
All
Samples.AWS.DynamoDBv2
@@ -97,7 +97,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.DynamoDBv2
- ApiVersion=3.7.404.5;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.405.3;RestoreRecursive=false;BuildProjectReferences=false
net7.0
All
Samples.AWS.DynamoDBv2
@@ -109,7 +109,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.DynamoDBv2
- ApiVersion=3.7.404.5;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.405.3;RestoreRecursive=false;BuildProjectReferences=false
net8.0
All
Samples.AWS.DynamoDBv2
@@ -121,7 +121,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.DynamoDBv2
- ApiVersion=3.7.404.5;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.405.3;RestoreRecursive=false;BuildProjectReferences=false
net9.0
All
Samples.AWS.DynamoDBv2
@@ -139,7 +139,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.Kinesis
- ApiVersion=3.7.402.41;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.54;RestoreRecursive=false;BuildProjectReferences=false
net462
All
Samples.AWS.Kinesis
@@ -151,7 +151,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.Kinesis
- ApiVersion=3.7.402.41;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.54;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp2.1
All
Samples.AWS.Kinesis
@@ -163,7 +163,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.Kinesis
- ApiVersion=3.7.402.41;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.54;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.0
All
Samples.AWS.Kinesis
@@ -175,7 +175,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.Kinesis
- ApiVersion=3.7.402.41;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.54;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.1
All
Samples.AWS.Kinesis
@@ -187,7 +187,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.Kinesis
- ApiVersion=3.7.402.41;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.54;RestoreRecursive=false;BuildProjectReferences=false
net5.0
All
Samples.AWS.Kinesis
@@ -199,7 +199,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.Kinesis
- ApiVersion=3.7.402.41;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.54;RestoreRecursive=false;BuildProjectReferences=false
net6.0
All
Samples.AWS.Kinesis
@@ -211,7 +211,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.Kinesis
- ApiVersion=3.7.402.41;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.54;RestoreRecursive=false;BuildProjectReferences=false
net7.0
All
Samples.AWS.Kinesis
@@ -223,7 +223,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.Kinesis
- ApiVersion=3.7.402.41;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.54;RestoreRecursive=false;BuildProjectReferences=false
net8.0
All
Samples.AWS.Kinesis
@@ -235,7 +235,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.Kinesis
- ApiVersion=3.7.402.41;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.54;RestoreRecursive=false;BuildProjectReferences=false
net9.0
All
Samples.AWS.Kinesis
@@ -271,7 +271,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.SQS
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
net462
All
Samples.AWS.SQS
@@ -283,7 +283,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.SQS
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp2.1
All
Samples.AWS.SQS
@@ -295,7 +295,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.SQS
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.0
All
Samples.AWS.SQS
@@ -307,7 +307,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.SQS
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.1
All
Samples.AWS.SQS
@@ -319,7 +319,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.SQS
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
net5.0
All
Samples.AWS.SQS
@@ -331,7 +331,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.SQS
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
net6.0
All
Samples.AWS.SQS
@@ -343,7 +343,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.SQS
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
net7.0
All
Samples.AWS.SQS
@@ -355,7 +355,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.SQS
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
net8.0
All
Samples.AWS.SQS
@@ -367,7 +367,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.SQS
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
net9.0
All
Samples.AWS.SQS
@@ -385,7 +385,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.SimpleNotificationService
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
net462
All
Samples.AWS.SimpleNotificationService
@@ -397,7 +397,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.SimpleNotificationService
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp2.1
All
Samples.AWS.SimpleNotificationService
@@ -409,7 +409,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.SimpleNotificationService
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.0
All
Samples.AWS.SimpleNotificationService
@@ -421,7 +421,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.SimpleNotificationService
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.1
All
Samples.AWS.SimpleNotificationService
@@ -433,7 +433,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.SimpleNotificationService
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
net5.0
All
Samples.AWS.SimpleNotificationService
@@ -445,7 +445,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.SimpleNotificationService
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
net6.0
All
Samples.AWS.SimpleNotificationService
@@ -457,7 +457,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.SimpleNotificationService
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
net7.0
All
Samples.AWS.SimpleNotificationService
@@ -469,7 +469,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.SimpleNotificationService
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
net8.0
All
Samples.AWS.SimpleNotificationService
@@ -481,7 +481,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.SimpleNotificationService
- ApiVersion=3.7.400.64;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.400.77;RestoreRecursive=false;BuildProjectReferences=false
net9.0
All
Samples.AWS.SimpleNotificationService
@@ -499,7 +499,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.EventBridge
- ApiVersion=3.7.402.6;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.19;RestoreRecursive=false;BuildProjectReferences=false
net462
All
Samples.AWS.EventBridge
@@ -517,7 +517,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.EventBridge
- ApiVersion=3.7.402.6;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.19;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp2.1
All
Samples.AWS.EventBridge
@@ -535,7 +535,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.EventBridge
- ApiVersion=3.7.402.6;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.19;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.0
All
Samples.AWS.EventBridge
@@ -553,7 +553,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.EventBridge
- ApiVersion=3.7.402.6;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.19;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.1
All
Samples.AWS.EventBridge
@@ -571,7 +571,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.EventBridge
- ApiVersion=3.7.402.6;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.19;RestoreRecursive=false;BuildProjectReferences=false
net5.0
All
Samples.AWS.EventBridge
@@ -589,7 +589,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.EventBridge
- ApiVersion=3.7.402.6;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.19;RestoreRecursive=false;BuildProjectReferences=false
net6.0
All
Samples.AWS.EventBridge
@@ -607,7 +607,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.EventBridge
- ApiVersion=3.7.402.6;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.19;RestoreRecursive=false;BuildProjectReferences=false
net7.0
All
Samples.AWS.EventBridge
@@ -625,7 +625,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.EventBridge
- ApiVersion=3.7.402.6;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.19;RestoreRecursive=false;BuildProjectReferences=false
net8.0
All
Samples.AWS.EventBridge
@@ -643,7 +643,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.AWS.EventBridge
- ApiVersion=3.7.402.6;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.402.19;RestoreRecursive=false;BuildProjectReferences=false
net9.0
All
Samples.AWS.EventBridge
@@ -2683,7 +2683,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.StackExchange.Redis
- ApiVersion=2.8.22;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.8.24;RestoreRecursive=false;BuildProjectReferences=false
net462
All
Samples.StackExchange.Redis
@@ -2719,7 +2719,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.StackExchange.Redis
- ApiVersion=2.8.22;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.8.24;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.1
All
Samples.StackExchange.Redis
@@ -2731,7 +2731,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.StackExchange.Redis
- ApiVersion=2.8.22;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.8.24;RestoreRecursive=false;BuildProjectReferences=false
net5.0
All
Samples.StackExchange.Redis
@@ -2743,7 +2743,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.StackExchange.Redis
- ApiVersion=2.8.22;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.8.24;RestoreRecursive=false;BuildProjectReferences=false
net6.0
All
Samples.StackExchange.Redis
@@ -2755,7 +2755,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.StackExchange.Redis
- ApiVersion=2.8.22;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.8.24;RestoreRecursive=false;BuildProjectReferences=false
net7.0
All
Samples.StackExchange.Redis
@@ -2767,7 +2767,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.StackExchange.Redis
- ApiVersion=2.8.22;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.8.24;RestoreRecursive=false;BuildProjectReferences=false
net8.0
All
Samples.StackExchange.Redis
@@ -2779,7 +2779,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.StackExchange.Redis
- ApiVersion=2.8.22;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.8.24;RestoreRecursive=false;BuildProjectReferences=false
net9.0
All
Samples.StackExchange.Redis
@@ -3607,7 +3607,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.XUnitTests
- ApiVersion=2.9.2;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.9.3;RestoreRecursive=false;BuildProjectReferences=false
net462
None
Samples.XUnitTests
@@ -3667,7 +3667,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.XUnitTests
- ApiVersion=2.9.2;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.9.3;RestoreRecursive=false;BuildProjectReferences=false
net6.0
None
Samples.XUnitTests
@@ -3679,7 +3679,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.XUnitTests
- ApiVersion=2.9.2;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.9.3;RestoreRecursive=false;BuildProjectReferences=false
net7.0
None
Samples.XUnitTests
@@ -3691,7 +3691,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.XUnitTests
- ApiVersion=2.9.2;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.9.3;RestoreRecursive=false;BuildProjectReferences=false
net8.0
None
Samples.XUnitTests
@@ -3703,7 +3703,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.XUnitTests
- ApiVersion=2.9.2;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.9.3;RestoreRecursive=false;BuildProjectReferences=false
net9.0
None
Samples.XUnitTests
@@ -3715,7 +3715,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.XUnitTestsRetries
- ApiVersion=2.9.2;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.9.3;RestoreRecursive=false;BuildProjectReferences=false
net462
None
Samples.XUnitTestsRetries
@@ -3775,7 +3775,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.XUnitTestsRetries
- ApiVersion=2.9.2;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.9.3;RestoreRecursive=false;BuildProjectReferences=false
net6.0
None
Samples.XUnitTestsRetries
@@ -3787,7 +3787,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.XUnitTestsRetries
- ApiVersion=2.9.2;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.9.3;RestoreRecursive=false;BuildProjectReferences=false
net7.0
None
Samples.XUnitTestsRetries
@@ -3799,7 +3799,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.XUnitTestsRetries
- ApiVersion=2.9.2;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.9.3;RestoreRecursive=false;BuildProjectReferences=false
net8.0
None
Samples.XUnitTestsRetries
@@ -3811,7 +3811,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.XUnitTestsRetries
- ApiVersion=2.9.2;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.9.3;RestoreRecursive=false;BuildProjectReferences=false
net9.0
None
Samples.XUnitTestsRetries
@@ -3835,7 +3835,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.NUnitTests
- ApiVersion=4.3.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=4.3.2;RestoreRecursive=false;BuildProjectReferences=false
net462
None
Samples.NUnitTests
@@ -3931,7 +3931,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.NUnitTests
- ApiVersion=4.3.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=4.3.2;RestoreRecursive=false;BuildProjectReferences=false
net6.0
None
Samples.NUnitTests
@@ -3955,7 +3955,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.NUnitTests
- ApiVersion=4.3.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=4.3.2;RestoreRecursive=false;BuildProjectReferences=false
net7.0
None
Samples.NUnitTests
@@ -3979,7 +3979,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.NUnitTests
- ApiVersion=4.3.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=4.3.2;RestoreRecursive=false;BuildProjectReferences=false
net8.0
None
Samples.NUnitTests
@@ -4003,7 +4003,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.NUnitTests
- ApiVersion=4.3.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=4.3.2;RestoreRecursive=false;BuildProjectReferences=false
net9.0
None
Samples.NUnitTests
@@ -4027,7 +4027,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.NUnitTestsRetries
- ApiVersion=4.3.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=4.3.2;RestoreRecursive=false;BuildProjectReferences=false
net462
None
Samples.NUnitTestsRetries
@@ -4123,7 +4123,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.NUnitTestsRetries
- ApiVersion=4.3.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=4.3.2;RestoreRecursive=false;BuildProjectReferences=false
net6.0
None
Samples.NUnitTestsRetries
@@ -4147,7 +4147,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.NUnitTestsRetries
- ApiVersion=4.3.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=4.3.2;RestoreRecursive=false;BuildProjectReferences=false
net7.0
None
Samples.NUnitTestsRetries
@@ -4171,7 +4171,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.NUnitTestsRetries
- ApiVersion=4.3.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=4.3.2;RestoreRecursive=false;BuildProjectReferences=false
net8.0
None
Samples.NUnitTestsRetries
@@ -4195,7 +4195,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.NUnitTestsRetries
- ApiVersion=4.3.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=4.3.2;RestoreRecursive=false;BuildProjectReferences=false
net9.0
None
Samples.NUnitTestsRetries
@@ -4213,7 +4213,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTests
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
net462
None
Samples.MSTestTests
@@ -4231,7 +4231,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTests
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp2.1
None
Samples.MSTestTests
@@ -4249,7 +4249,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTests
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.0
None
Samples.MSTestTests
@@ -4267,7 +4267,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTests
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.1
None
Samples.MSTestTests
@@ -4285,7 +4285,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTests
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
net5.0
None
Samples.MSTestTests
@@ -4303,7 +4303,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTests
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
net6.0
None
Samples.MSTestTests
@@ -4321,7 +4321,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTests
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
net7.0
None
Samples.MSTestTests
@@ -4339,7 +4339,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTests
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
net8.0
None
Samples.MSTestTests
@@ -4357,7 +4357,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTests
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
net9.0
None
Samples.MSTestTests
@@ -4375,7 +4375,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTests2
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
net462
None
Samples.MSTestTests2
@@ -4393,7 +4393,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTests2
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp2.1
None
Samples.MSTestTests2
@@ -4411,7 +4411,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTests2
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.0
None
Samples.MSTestTests2
@@ -4429,7 +4429,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTests2
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.1
None
Samples.MSTestTests2
@@ -4447,7 +4447,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTests2
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
net5.0
None
Samples.MSTestTests2
@@ -4465,7 +4465,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTests2
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
net6.0
None
Samples.MSTestTests2
@@ -4483,7 +4483,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTests2
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
net7.0
None
Samples.MSTestTests2
@@ -4501,7 +4501,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTests2
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
net8.0
None
Samples.MSTestTests2
@@ -4519,7 +4519,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTests2
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
net9.0
None
Samples.MSTestTests2
@@ -4537,7 +4537,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTestsRetries
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
net462
None
Samples.MSTestTestsRetries
@@ -4555,7 +4555,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTestsRetries
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp2.1
None
Samples.MSTestTestsRetries
@@ -4573,7 +4573,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTestsRetries
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.0
None
Samples.MSTestTestsRetries
@@ -4591,7 +4591,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTestsRetries
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.1
None
Samples.MSTestTestsRetries
@@ -4609,7 +4609,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTestsRetries
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
net5.0
None
Samples.MSTestTestsRetries
@@ -4627,7 +4627,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTestsRetries
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
net6.0
None
Samples.MSTestTestsRetries
@@ -4645,7 +4645,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTestsRetries
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
net7.0
None
Samples.MSTestTestsRetries
@@ -4663,7 +4663,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTestsRetries
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
net8.0
None
Samples.MSTestTestsRetries
@@ -4681,7 +4681,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.MSTestTestsRetries
- ApiVersion=3.6.4;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.7.0;RestoreRecursive=false;BuildProjectReferences=false
net9.0
None
Samples.MSTestTestsRetries
@@ -4699,7 +4699,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.Kafka
- ApiVersion=2.6.1;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.8.0;RestoreRecursive=false;BuildProjectReferences=false
net462
All
Samples.Kafka
@@ -4717,7 +4717,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.Kafka
- ApiVersion=2.6.1;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.8.0;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp2.1
All
Samples.Kafka
@@ -4735,7 +4735,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.Kafka
- ApiVersion=2.6.1;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.8.0;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.0
All
Samples.Kafka
@@ -4753,7 +4753,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.Kafka
- ApiVersion=2.6.1;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.8.0;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.1
All
Samples.Kafka
@@ -4771,7 +4771,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.Kafka
- ApiVersion=2.6.1;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.8.0;RestoreRecursive=false;BuildProjectReferences=false
net5.0
All
Samples.Kafka
@@ -4789,7 +4789,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.Kafka
- ApiVersion=2.6.1;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.8.0;RestoreRecursive=false;BuildProjectReferences=false
net6.0
All
Samples.Kafka
@@ -4807,7 +4807,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.Kafka
- ApiVersion=2.6.1;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.8.0;RestoreRecursive=false;BuildProjectReferences=false
net7.0
All
Samples.Kafka
@@ -4825,7 +4825,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.Kafka
- ApiVersion=2.6.1;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.8.0;RestoreRecursive=false;BuildProjectReferences=false
net8.0
All
Samples.Kafka
@@ -4843,7 +4843,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.Kafka
- ApiVersion=2.6.1;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=2.8.0;RestoreRecursive=false;BuildProjectReferences=false
net9.0
All
Samples.Kafka
@@ -4855,7 +4855,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.CosmosDb
- ApiVersion=3.46.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.46.1;RestoreRecursive=false;BuildProjectReferences=false
net462
None
Samples.CosmosDb
@@ -4891,7 +4891,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.CosmosDb
- ApiVersion=3.46.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.46.1;RestoreRecursive=false;BuildProjectReferences=false
netcoreapp3.1
None
Samples.CosmosDb
@@ -4903,7 +4903,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.CosmosDb
- ApiVersion=3.46.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.46.1;RestoreRecursive=false;BuildProjectReferences=false
net5.0
None
Samples.CosmosDb
@@ -4915,7 +4915,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.CosmosDb
- ApiVersion=3.46.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.46.1;RestoreRecursive=false;BuildProjectReferences=false
net6.0
None
Samples.CosmosDb
@@ -4927,7 +4927,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.CosmosDb
- ApiVersion=3.46.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.46.1;RestoreRecursive=false;BuildProjectReferences=false
net7.0
None
Samples.CosmosDb
@@ -4939,7 +4939,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.CosmosDb
- ApiVersion=3.46.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.46.1;RestoreRecursive=false;BuildProjectReferences=false
net8.0
None
Samples.CosmosDb
@@ -4951,7 +4951,7 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
Samples.CosmosDb
- ApiVersion=3.46.0;RestoreRecursive=false;BuildProjectReferences=false
+ ApiVersion=3.46.1;RestoreRecursive=false;BuildProjectReferences=false
net9.0
None
Samples.CosmosDb
diff --git a/tracer/build/_build/Build.ExplorationTests.cs b/tracer/build/_build/Build.ExplorationTests.cs
index f67ba5de580e..3e204570f03f 100644
--- a/tracer/build/_build/Build.ExplorationTests.cs
+++ b/tracer/build/_build/Build.ExplorationTests.cs
@@ -1,11 +1,13 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
+using System.Diagnostics.CodeAnalysis;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Threading.Tasks;
+using JetBrains.Annotations;
using Nuke.Common;
using Nuke.Common.IO;
using Nuke.Common.Tools.DotNet;
@@ -335,7 +337,11 @@ void CreateLineProbesFile(ExplorationTestDescription testDescription)
var metadataReaders = new List>();
foreach (var testAssemblyPath in testAssembliesPaths)
{
- var currentAssembly = Assembly.LoadFile(testAssemblyPath);
+ if (!TryLoadAssembly(testAssemblyPath, out var currentAssembly))
+ {
+ continue;
+ }
+
var symbolExtractor = createMethod?.Invoke(null, new object[] { currentAssembly });
if (symbolExtractor == null)
{
@@ -442,6 +448,26 @@ void CreateLineProbesFile(ExplorationTestDescription testDescription)
}
}
+ static bool TryLoadAssembly(string testAssemblyPath, [NotNullWhen(true)] out Assembly assembly)
+ {
+ try
+ {
+ assembly = Assembly.LoadFile(testAssemblyPath);
+ return true;
+ }
+ catch (BadImageFormatException e)
+ {
+ // ignore
+ }
+ catch (Exception e)
+ {
+ Logger.Warning(e, $"Fail to load assembly: {testAssemblyPath}");
+ }
+
+ assembly = null;
+ return false;
+ }
+
string GetTracerAssemblyPath(TargetFramework framework)
{
TargetFramework tracerFramework = null;
@@ -483,7 +509,8 @@ static string[] GetAllTestAssemblies(string rootPath)
bool Exclude(string path)
{
- return path.Contains($"{Path.DirectorySeparatorChar}obj{Path.DirectorySeparatorChar}");
+ // skip obj folder and the `testhost`process itself
+ return path.Contains($"{Path.DirectorySeparatorChar}obj{Path.DirectorySeparatorChar}") || Path.GetFileNameWithoutExtension(path).Equals("testhost");
}
bool IsSupportedExtension(string path)
@@ -599,20 +626,20 @@ public static ExplorationTestDescription GetExplorationTestDescription(Explorati
{
Name = ExplorationTestName.eShopOnWeb,
GitRepositoryUrl = "https://github.com/dotnet-architecture/eShopOnWeb.git",
- GitRepositoryTag = "netcore2.1",
+ GitRepositoryTag = "main",
IsGitShallowCloneSupported = true,
PathToUnitTestProject = "tests/UnitTests",
- SupportedFrameworks = new[] { TargetFramework.NETCOREAPP2_1 },
+ SupportedFrameworks = new[] { TargetFramework.NET8_0 }
},
ExplorationTestName.protobuf => new ExplorationTestDescription()
{
Name = ExplorationTestName.protobuf,
GitRepositoryUrl = "https://github.com/protocolbuffers/protobuf.git",
- GitRepositoryTag = "v3.19.1",
+ GitRepositoryTag = "v3.23.0", // min version targeting net6.0 in tests
IsGitShallowCloneSupported = true,
IsGitSubmodulesRequired = true,
PathToUnitTestProject = "csharp/src/Google.Protobuf.Test",
- SupportedFrameworks = new[] { TargetFramework.NETCOREAPP2_1 },
+ SupportedFrameworks = new[] { TargetFramework.NET6_0 },
TestsToIgnore = new string[]
{
"Google.Protobuf.CodedInputStreamTest.MaliciousRecursion",
diff --git a/tracer/build/_build/Build.Steps.cs b/tracer/build/_build/Build.Steps.cs
index fc5d751d6a7a..777831dc6de9 100644
--- a/tracer/build/_build/Build.Steps.cs
+++ b/tracer/build/_build/Build.Steps.cs
@@ -35,6 +35,7 @@
partial class Build
{
[Solution("Datadog.Trace.sln")] readonly Solution Solution;
+ [Solution("Datadog.Trace.Samples.g.sln")] readonly Solution SamplesSolution;
AbsolutePath TracerDirectory => RootDirectory / "tracer";
AbsolutePath SharedDirectory => RootDirectory / "shared";
AbsolutePath ProfilerDirectory => RootDirectory / "profiler";
@@ -207,9 +208,15 @@ bool RequiresThoroughTesting()
var integrationChangedFiles = TargetFrameworks
.SelectMany(tfm => new[]
{
+ // Changes to the definitions (new integrations etc)
$"tracer/src/Datadog.Trace/Generated/{tfm}/Datadog.Trace.SourceGenerators/Datadog.Trace.SourceGenerators.InstrumentationDefinitions.InstrumentationDefinitionsGenerator",
$"tracer/src/Datadog.Trace/Generated/{tfm}/Datadog.Trace.SourceGenerators/AspectsDefinitionsGenerator",
})
+ .Concat(new [] {
+ // Changes to the integrations themselves, e.g. change in behaviour
+ "tracer/src/Datadog.Trace/ClrProfiler/AutoInstrumentation",
+ "tracer/src/Datadog.Trace/Iast/Aspects"
+ })
.ToList();
var hasIntegrationChanges = gitChangedFiles.Any(s => integrationChangedFiles.Any(s.Contains));
@@ -1263,96 +1270,17 @@ void PrepareMonitoringHomeLinuxForPackaging(AbsolutePath assetsDirectory, string
.DependsOn(RunProfilerNativeUnitTestsLinux)
.After(CompileProfilerNativeTests);
- Target CompileDependencyLibs => _ => _
- .Unlisted()
- .After(Restore)
- .After(CompileManagedSrc)
- .Executes(() =>
- {
- var projects = TracerDirectory.GlobFiles(
- "test/test-applications/integrations/dependency-libs/**/*.csproj",
- "test/test-applications/integrations/**/*.vbproj"
- );
-
- DotnetBuild(projects, noDependencies: false);
- });
-
- Target CompileRegressionDependencyLibs => _ => _
- .Unlisted()
- .After(Restore)
- .After(CompileManagedSrc)
- .Executes(() =>
- {
- var projects = TracerDirectory.GlobFiles(
- "test/test-applications/regression/dependency-libs/**/Datadog.StackExchange.Redis*.csproj"
- );
-
- DotnetBuild(projects, noDependencies: false);
- });
-
- Target CompileRegressionSamples => _ => _
- .Unlisted()
- .DependsOn(HackForMissingMsBuildLocation)
- .After(Restore)
- .After(CompileRegressionDependencyLibs)
- .Requires(() => Framework)
- .Executes(() =>
- {
- var regressionLibs = Solution.GetProject(Projects.DataDogThreadTest).Directory.Parent
- .GlobFiles("**/*.csproj")
- .Where(absPath =>
- {
- var path = absPath.ToString();
- return (path, Solution.GetProject(path).TryGetTargetFrameworks()) switch
- {
- _ when path.Contains("ExpenseItDemo") => false,
- _ when path.Contains("StackExchange.Redis.AssemblyConflict.LegacyProject") => false,
- _ when path.Contains("MismatchedTracerVersions") => false,
- _ when path.Contains("dependency-libs") => false,
- _ when !string.IsNullOrWhiteSpace(SampleName) => path.Contains(SampleName, StringComparison.OrdinalIgnoreCase),
- (_, { } targets) => targets.Contains(Framework),
- _ => true,
- };
- });
-
- // Allow restore here, otherwise things go wonky with runtime identifiers
- // in some target frameworks. No, I don't know why
- DotnetBuild(regressionLibs, framework: Framework, noRestore: false);
- });
-
- Target CompileFrameworkReproductions => _ => _
- .Unlisted()
- .Description("Builds .NET Framework projects (non SDK-based projects)")
- .After(CompileRegressionDependencyLibs)
- .After(CompileDependencyLibs)
- .Requires(() => IsWin)
- .Executes(() =>
- {
- // We have to use the full MSBuild here, as dotnet msbuild doesn't copy the EDMX assets for embedding correctly
- // seems similar to https://github.com/dotnet/sdk/issues/8360
- MSBuild(s => s
- .SetTargetPath(MsBuildProject)
- .SetMSBuildPath()
- .DisableRestore()
- .EnableNoDependencies()
- .SetConfiguration(BuildConfiguration)
- .SetTargetPlatformAnyCPU()
- .SetTargets("BuildFrameworkReproductions")
- .SetMaxCpuCount(null));
- });
-
Target CompileIntegrationTests => _ => _
.Unlisted()
.After(CompileManagedSrc)
.After(CompileManagedTestHelpers)
- .After(CompileRegressionSamples)
- .After(CompileFrameworkReproductions)
.After(PublishIisSamples)
.After(BuildRunnerTool)
.Requires(() => Framework)
.Requires(() => MonitoringHomeDirectory != null)
.Executes(() =>
{
+ // Compile the dependent samples.
if (!Framework.ToString().StartsWith("net46"))
{
// we need to build RazorPages before integration tests for .net46x
@@ -1368,156 +1296,203 @@ _ when path.Contains("dependency-libs") => false,
DotnetBuild(projects, framework: Framework);
});
- Target CompileSamplesWindows => _ => _
+ Target CompileSamples => _ => _
+ .Description("Compiles all the sample projects")
+ .Unlisted()
+ .After(Clean)
+ .DependsOn(HackForMissingMsBuildLocation)
+ .Executes(() =>
+ {
+ if (TestAllPackageVersions)
+ {
+ // Explicitly compiles the prerequisites which MSbuild doesn't
+ // (no, I don't know why, I can't seem to convince it to do this automatically)
+ var projects = TracerDirectory.GlobFiles(
+ "test/test-applications/integrations/dependency-libs/**/*.csproj",
+ "test/test-applications/integrations/**/*.vbproj"
+ );
+
+ DotnetBuild(projects, noDependencies: false, noRestore: false);
+
+ // these are defined in Datadog.Trace.proj - they only build the projects that have multiple package versions of their NuGet dependencies
+ var targets = new[] { "RestoreSamplesForPackageVersionsOnly", "RestoreAndBuildSamplesForPackageVersionsOnly" };
+ var frameworks = Framework is null || string.IsNullOrEmpty(Framework)
+ ? TestingFrameworks
+ : new[] { Framework };
+
+ foreach (var framework in frameworks)
+ {
+ foreach (var target in targets)
+ {
+ // /nowarn:NU1701 - Package 'x' was restored using '.NETFramework,Version=v4.6.1' instead of the project target framework '.NETCoreApp,Version=v2.1'.
+ // /nowarn:NETSDK1138 - Package 'x' was restored using '.NETFramework,Version=v4.6.1' instead of the project target framework '.NETCoreApp,Version=v2.1'.
+ MSBuild(x => x
+ .SetTargetPath(MsBuildProject)
+ .SetTargets(target)
+ .SetConfiguration(BuildConfiguration)
+ .SetProperty("TargetFramework", framework.ToString())
+ .SetProperty("BuildInParallel", "true")
+ .SetProperty("CheckEolTargetFramework", "false")
+ .SetProperty("ManuallyCopyCodeCoverageFiles", "false")
+ .When(!string.IsNullOrEmpty(SampleName), o => o.SetProperty("SampleName", SampleName))
+ .When(!string.IsNullOrEmpty(NugetPackageDirectory), o => o.SetProperty("RestorePackagesPath", NugetPackageDirectory))
+ .SetProcessArgumentConfigurator(arg => arg.Add("/nowarn:NU1701").Add($"/bl:\"{(BuildDataDirectory / $"build_{DateTime.UtcNow.Ticks}.binlog")}\""))
+ .When(TestAllPackageVersions, o => o.SetProperty("TestAllPackageVersions", "true"))
+ .When(IncludeMinorPackageVersions, o => o.SetProperty("IncludeMinorPackageVersions", "true"))
+ );
+ }
+ }
+
+ // All done with the multi-api version
+ return;
+ }
+
+ // Build the "standalone" samples (i.e. the single-api-version samples)
+ var samples = GetSamplesToBuild();
+ Logger.Information("Building {SampleName}", samples);
+
+ // TODO: set Samples.Trimming as don't build, as we have to explicitly build that on every platform anyway
+ DotNetBuild(config => config
+ .SetConfiguration(BuildConfiguration)
+ .SetProperty("BuildInParallel", "true")
+ .SetProcessArgumentConfigurator(arg => arg.Add("/nowarn:NU1701"))
+ .When(Framework is not null, x => x.SetFramework(Framework))
+ .SetProjectFile(samples));
+
+ string GetSamplesToBuild()
+ {
+ // If a specific sample name was not given, build whole samples solution
+ if (string.IsNullOrWhiteSpace(SampleName))
+ {
+ return SamplesSolution;
+ }
+
+ // Filter to a single candidate SampleName
+ var candidates =
+ TracerDirectory.GlobFiles("test/test-applications/integrations/**/*.csproj")
+ .Select(x => Solution.GetProject(x))
+ .Where(project => project is not null
+ && project.Path.ToString().Contains(SampleName, StringComparison.OrdinalIgnoreCase));
+
+ if (Framework is not null)
+ {
+ // exclude projects that can't be built for this TFM
+ candidates = candidates.Where(project => project.TryGetTargetFrameworks()?.Contains(Framework) ?? true);
+ }
+
+ var allMatches = candidates.ToList();
+ if (allMatches.Count == 0)
+ {
+ throw new InvalidOperationException($"No sample projects found matching '{SampleName}'." +
+ (string.IsNullOrEmpty(Framework) ? $" Does the project support the specified framework '{Framework}'?" : " ") +
+ "Alternatively, exclude the SampleName parameter to build all samples instead");
+ }
+
+ if (allMatches.Count == 1)
+ {
+ return allMatches.First();
+ }
+
+ // try to find best "exact" match
+ // exact name match
+ var bestMatches = allMatches.Where(x => x.Name.Equals(SampleName, StringComparison.Ordinal)).ToList();
+ if(bestMatches.Count == 1)
+ {
+ return bestMatches.First();
+ }
+
+ // case insensitive exact name match
+ bestMatches = allMatches.Where(x => x.Name.Equals(SampleName, StringComparison.OrdinalIgnoreCase)).ToList();
+ if(bestMatches.Count == 1)
+ {
+ return bestMatches.First();
+ }
+
+ // case insensitive path suffix match
+ bestMatches = allMatches.Where(x => x.Path.ToString().EndsWith(SampleName, StringComparison.OrdinalIgnoreCase)).ToList();
+ if(bestMatches.Count == 1)
+ {
+ return bestMatches.First();
+ }
+
+ // no way to choose between them
+ throw new InvalidOperationException($"Found multiple sample projects matching '{SampleName}'. " +
+ string.Join(",", allMatches.Select(x => $"'{x.Name}'")) +
+ ". Provide an exact match for the name of of the project, or a path suffix");
+ }
+ });
+
+ Target CompileTrimmingSamples => _ => _
+ .Description("Compiles the trimming samples")
+ .After(CompileManagedSrc)
+ .Requires(() => Framework)
.Unlisted()
+ .After(Clean)
.DependsOn(HackForMissingMsBuildLocation)
- .After(CompileDependencyLibs)
- .After(CompileFrameworkReproductions)
- .Requires(() => MonitoringHomeDirectory != null)
- .Requires(() => Framework)
.Executes(() =>
{
- if (TestAllPackageVersions)
- {
- // TODO this is hacky as I couldn't figure out what was going on here so I opted to just delete everything each time
- // for some reason projects that declare specific TargetFrameworks in the project file
- // will duplicate their package versions
- // e.g. Samples.GraphQL4\bin\4.1.0\Debug\net7.0\bin\4.3.0
- // this will go on and create a ton of folders/files
- // my hacky workaround for this at the moment is to simply remove the bin/obj directories beforehand
- // GrpcDotNet, GraphQL4, and HotChocolate samples had this issue
- Logger.Information("Cleaning up sample projects that use multiple package versions");
-
- var multiPackageProjects = new List();
- var samplesFile = BuildDirectory / "PackageVersionsGeneratorDefinitions.json";
- using var fs = File.OpenRead(samplesFile);
- var json = JsonDocument.Parse(fs);
- multiPackageProjects = json.RootElement
- .EnumerateArray()
- .Select(e => e.GetProperty("SampleProjectName").GetString())
- .Distinct()
- .Where(name => name switch
- {
- "Samples.MySql" => false, // the "non package version" is _ALSO_ tested separately
- _ => true
- })
- .ToList();
- var patterns = new List();
-
- foreach (var dir in multiPackageProjects)
- {
- patterns.Add($"test/test-applications/integrations/{dir}/bin");
- patterns.Add($"test/test-applications/integrations/{dir}/obj");
- }
-
- TracerDirectory.GlobDirectories(patterns.ToArray()).ForEach(x => DeleteDirectory(x));
-
- // these are defined in the Datadog.Trace.proj - they only build the projects that have multiple package versions of their NuGet
- var targets = new[] { "RestoreSamplesForPackageVersionsOnly", "RestoreAndBuildSamplesForPackageVersionsOnly" };
+ // It's a bit of a hack putting these here, but hopefully it _works_ at least
+ CompileSamplesThatDependOnDatadogTrace();
- // /nowarn:NU1701 - Package 'x' was restored using '.NETFramework,Version=v4.6.1' instead of the project target framework '.NETCoreApp,Version=v2.1'.
- // /nowarn:NETSDK1138 - Package 'x' was restored using '.NETFramework,Version=v4.6.1' instead of the project target framework '.NETCoreApp,Version=v2.1'.
- foreach (var target in targets)
- {
- MSBuild(x => x
- .SetTargetPath(MsBuildProject)
- .SetTargets(target)
- .SetConfiguration(BuildConfiguration)
- .EnableNoDependencies()
- .SetProperty("TargetFramework", Framework.ToString())
- .SetProperty("BuildInParallel", "true")
- .SetProperty("CheckEolTargetFramework", "false")
- .SetProperty("SampleName", SampleName ?? string.Empty)
- .When(!string.IsNullOrEmpty(NugetPackageDirectory), o => o.SetProperty("RestorePackagesPath", NugetPackageDirectory))
- .SetProcessArgumentConfigurator(arg => arg.Add("/nowarn:NU1701"))
- .When(TestAllPackageVersions, o => o.SetProperty("TestAllPackageVersions", "true"))
- .When(IncludeMinorPackageVersions, o => o.SetProperty("IncludeMinorPackageVersions", "true"))
- );
- }
- }
- else
+ // This is separated from CompileSamples, because we can only publish for the actual platform we're on,
+ var trimmingSamples = new []
{
- // This does some "unnecessary" rebuilding and restoring
- var includeIntegration = TracerDirectory.GlobFiles("test/test-applications/integrations/**/*.csproj");
- var includeInstrumentation = TracerDirectory.GlobFiles("test/test-applications/instrumentation/**/*.csproj");
- // Don't build aspnet full framework sample in this step
- var includeSecurity = TracerDirectory.GlobFiles("test/test-applications/security/*/*.csproj");
-
- var exclude = TracerDirectory.GlobFiles("test/test-applications/integrations/dependency-libs/**/*.csproj")
- .Concat(TracerDirectory.GlobFiles("test/test-applications/debugger/dependency-libs/**/*.csproj"))
- .Concat(TracerDirectory.GlobFiles("test/test-applications/integrations/Samples.AzureServiceBus/*.csproj"));
-
- var projects = includeIntegration
- .Concat(includeInstrumentation)
- .Concat(includeSecurity)
- .Select(x => Solution.GetProject(x))
- .Where(project =>
- (project, project.TryGetTargetFrameworks(), project.RequiresDockerDependency()) switch
- {
- _ when exclude.Contains(project.Path) => false,
- _ when !string.IsNullOrWhiteSpace(SampleName) => project.Path.ToString().Contains(SampleName, StringComparison.OrdinalIgnoreCase),
- (_, _, DockerDependencyType.All) => false, // can't use docker on Windows
- (_, { } targets, _) => targets.Contains(Framework),
- _ => true,
- }
- );
-
- // /nowarn:NU1701 - Package 'x' was restored using '.NETFramework,Version=v4.6.1' instead of the project target framework '.NETCoreApp,Version=v2.1'.
- DotNetBuild(config => config
- .SetConfiguration(BuildConfiguration)
- .SetTargetPlatformAnyCPU()
- .EnableNoDependencies()
- .SetProperty("BuildInParallel", "true")
- .SetProcessArgumentConfigurator(arg => arg.Add("/nowarn:NU1701"))
- .CombineWith(projects, (s, project) => s
- // we have to build this one for all frameworks (because of reasons)
- .When(!project.Name.Contains("MultiDomainHost"), x => x.SetFramework(Framework))
- .SetProjectFile(project)));
-
- var projectsToPublish = includeIntegration
- .Select(x =>
- {
- var project = Solution.GetProject(x);
- return project?.Name switch
- {
- "Samples.Trimming" => (project, include: Framework.IsGreaterThanOrEqualTo(TargetFramework.NET6_0), r2r: false),
- "Samples.ManualInstrumentation" => (project, include: Framework.IsGreaterThanOrEqualTo(TargetFramework.NETCOREAPP2_1), r2r: true),
- _ => (project, include: false, r2r: false),
- };
- })
- .Where(x => (x, x.project.TryGetTargetFrameworks(), x.project.RequiresDockerDependency()) switch
- {
- ({include: false }, _, _) => false,
- _ when exclude.Contains(x.project.Path) => false,
- _ when !string.IsNullOrWhiteSpace(SampleName) => x.project.Path.ToString().Contains(SampleName, StringComparison.OrdinalIgnoreCase),
- (_, _, DockerDependencyType.All) => false, // can't use docker on Windows
- (_, { } targets, _) => targets.Contains(Framework),
- _ => true,
- });
+ (project: "Samples.Trimming",include: Framework.IsGreaterThanOrEqualTo(TargetFramework.NET6_0), r2r: false),
+ (project: "Samples.ManualInstrumentation",include: Framework.IsGreaterThanOrEqualTo(TargetFramework.NETCOREAPP2_1), r2r: true),
+ };
+ var projectsToPublish = trimmingSamples
+ .Select(x => (project: Solution.GetProject(x.project), x.include, x.r2r))
+ .Where(x => (x, x.project.TryGetTargetFrameworks(), x.project.RequiresDockerDependency()) switch
+ {
+ ({include: false }, _, _) => false,
+ _ when !string.IsNullOrWhiteSpace(SampleName) => x.project.Path.ToString().Contains(SampleName, StringComparison.OrdinalIgnoreCase),
+ (_, _, DockerDependencyType.All) => false, // can't use docker on Windows
+ (_, { } targets, _) => targets.Contains(Framework),
+ _ => true,
+ });
+ var rid = (Platform, TargetPlatform.ToString()) switch
+ {
+ (PlatformFamily.Linux, "x64") => IsAlpine ? "linux-musl-x64" : "linux-x64",
+ (PlatformFamily.Linux, "ARM64") => IsAlpine ? "linux-musl-arm64" : "linux-arm64",
+ (PlatformFamily.OSX, "x64") => "osx-x64",
+ (PlatformFamily.OSX, "ARM64") => "osx-arm64",
+ (PlatformFamily.Windows, "ARM64" or "ARM64EC") => "win-arm64",
+ (PlatformFamily.Windows, "x64") => "win-x64",
+ (PlatformFamily.Windows, "x86") => "win-x86",
+ _ => throw new InvalidOperationException($"Unknown platform {Platform} ({RuntimeInformation.ProcessArchitecture})"),
+ };
- var rid = TargetPlatform.ToString() switch
+ DotNetPublish(config => config
+ .SetConfiguration(BuildConfiguration)
+ .SetRuntime(rid)
+ .SetFramework(Framework)
+ .CombineWith(projectsToPublish,
+ (s, project) => s
+ .SetProject(project.project)
+ .When(project.r2r, x => x.SetPublishReadyToRun(true))));
+
+ void CompileSamplesThatDependOnDatadogTrace()
+ {
+ // These are either directly used by the integration tests or depend on Datadog.Trace already being built
+ // It would be preferable to have these all in a separate "build" solution to avoid complexity,
+ // but we'll do that later
+ var directDatadogTraceReferences = Solution
+ .AllProjects
+ .Where(project => project.SolutionFolder.Name == "instrumentation"
+ && project.ReferencesDatadogTrace()
+ && project.TryGetTargetFrameworks()?.Contains(Framework) != false);
+
+ foreach (var project in directDatadogTraceReferences)
{
- "x64" => "win-x64",
- "x86" => "win-x86",
- "ARM64" or "ARM64EC" => "win-arm64",
- _ => throw new InvalidOperationException("Unsupported architecture " + RuntimeInformation.ProcessArchitecture),
- };
-
- DotNetPublish(config => config
- .SetConfiguration(BuildConfiguration)
- .SetFramework(Framework)
- .SetRuntime(rid)
- .CombineWith(projectsToPublish, (s, project) => s
- .SetProject(project.project)
- .When(project.r2r, x => x.SetPublishReadyToRun(true))));
+ DotnetBuild(project, framework: Framework);
+ }
}
});
Target PublishIisSamples => _ => _
.Unlisted()
.After(CompileManagedTestHelpers)
- .After(CompileRegressionSamples)
- .After(CompileFrameworkReproductions)
+ .After(CompileSamples)
.OnlyWhenStatic(() => IsWin)
.Executes(() =>
{
@@ -1547,8 +1522,8 @@ _ when exclude.Contains(x.project.Path) => false,
.Unlisted()
.After(BuildTracerHome)
.After(CompileIntegrationTests)
- .After(CompileSamplesWindows)
- .After(CompileFrameworkReproductions)
+ .After(CompileSamples)
+ .After(CompileTrimmingSamples)
.After(BuildWindowsIntegrationTests)
.DependsOn(CleanTestLogs)
.Requires(() => IsWin)
@@ -1613,7 +1588,6 @@ _ when exclude.Contains(x.project.Path) => false,
Target CompileAzureFunctionsSamplesWindows => _ => _
.Unlisted()
.DependsOn(HackForMissingMsBuildLocation)
- .After(CompileFrameworkReproductions)
.Requires(() => MonitoringHomeDirectory != null)
.Requires(() => Framework)
.Executes(() =>
@@ -1682,8 +1656,8 @@ _ when exclude.Contains(x.project.Path) => false,
.Unlisted()
.After(BuildTracerHome)
.After(CompileIntegrationTests)
- .After(CompileRegressionSamples)
- .After(CompileFrameworkReproductions)
+ .After(CompileSamples)
+ .After(CompileTrimmingSamples)
.After(BuildNativeLoader)
.DependsOn(CleanTestLogs)
.Requires(() => IsWin)
@@ -1723,7 +1697,6 @@ _ when exclude.Contains(x.project.Path) => false,
Target RunWindowsTracerIisIntegrationTests => _ => _
.After(BuildTracerHome)
.After(CompileIntegrationTests)
- .After(CompileFrameworkReproductions)
.After(PublishIisSamples)
.Triggers(PrintSnapshotsDiff)
.Requires(() => Framework)
@@ -1733,7 +1706,6 @@ _ when exclude.Contains(x.project.Path) => false,
Target RunWindowsSecurityIisIntegrationTests => _ => _
.After(BuildTracerHome)
.After(CompileIntegrationTests)
- .After(CompileFrameworkReproductions)
.After(PublishIisSamples)
.Triggers(PrintSnapshotsDiff)
.Requires(() => Framework)
@@ -1773,7 +1745,6 @@ void RunWindowsIisIntegrationTests(Project project)
Target RunWindowsMsiIntegrationTests => _ => _
.After(BuildTracerHome)
.After(CompileIntegrationTests)
- .After(CompileFrameworkReproductions)
.After(PublishIisSamples)
.Triggers(PrintSnapshotsDiff)
.Requires(() => Framework)
@@ -1817,199 +1788,10 @@ void RunWindowsIisIntegrationTests(Project project)
ProjectModelTasks.Initialize();
});
- Target CompileSamplesLinuxOrOsx => _ => _
- .Unlisted()
- .DependsOn(HackForMissingMsBuildLocation)
- .After(CompileManagedSrc)
- .After(CompileRegressionDependencyLibs)
- .After(CompileDependencyLibs)
- .After(CompileManagedTestHelpers)
- .Requires(() => MonitoringHomeDirectory != null)
- .Requires(() => Framework)
- .Executes(() =>
- {
- MakeGrpcToolsExecutable();
-
- // There's nothing specifically linux-y here, it's just that we only build a subset of projects
- // for testing on linux.
- var sampleProjects = TracerDirectory.GlobFiles("test/test-applications/integrations/*/*.csproj");
- var securitySampleProjects = TracerDirectory.GlobFiles("test/test-applications/security/*/*.csproj");
- var regressionProjects = TracerDirectory.GlobFiles("test/test-applications/regression/*/*.csproj");
- var instrumentationProjects = TracerDirectory.GlobFiles("test/test-applications/instrumentation/*/*.csproj");
-
- // These samples are currently skipped.
- var projectsToSkip = new[]
- {
- "Samples.AzureServiceBus", // We are not running in CI because we haven't set up an emulator
- "Samples.Msmq", // Doesn't run on Linux
- "Samples.Owin.WebApi2", // Doesn't run on Linux
- "Samples.RateLimiter", // I think we _should_ run this one (assuming it has tests)
- "Samples.SqlServer.NetFramework20",
- "Samples.TracingWithoutLimits", // I think we _should_ run this one (assuming it has tests)
- "Samples.Wcf",
- "Samples.WebRequest.NetFramework20",
- "DogStatsD.RaceCondition",
- "StackExchange.Redis.AssemblyConflict.LegacyProject",
- "MismatchedTracerVersions",
- "IBM.Data.DB2.DBCommand",
- "Sandbox.AutomaticInstrumentation", // Doesn't run on Linux
- "Sandbox.LegacySecurityPolicy", // Doesn't run on Linux
- "Samples.Trimming",
- };
-
- // These sample projects are built using RestoreAndBuildSamplesForPackageVersions
- // so no point building them now
- var multiPackageProjects = new List();
- if (TestAllPackageVersions)
- {
- var samplesFile = BuildDirectory / "PackageVersionsGeneratorDefinitions.json";
- using var fs = File.OpenRead(samplesFile);
- var json = JsonDocument.Parse(fs);
- multiPackageProjects = json.RootElement
- .EnumerateArray()
- .Select(e => e.GetProperty("SampleProjectName").GetString())
- .Distinct()
- .Where(name => name switch
- {
- "Samples.MySql" => false, // the "non package version" is _ALSO_ tested separately
- _ => true
- })
- .ToList();
- }
-
- var projectsToBuild = sampleProjects
- .Concat(securitySampleProjects)
- .Concat(regressionProjects)
- .Concat(instrumentationProjects)
- .Select(path => (path, project: Solution.GetProject(path)))
- .Where(x => (IncludeTestsRequiringDocker, x.project) switch
- {
- // filter out or to integration tests that have docker dependencies
- (null, _) => true,
- (_, null) => true,
- (_, { } p) when !string.IsNullOrWhiteSpace(SampleName) => p.Name.Contains(SampleName, StringComparison.OrdinalIgnoreCase),
- (false, { } p) => p.RequiresDockerDependency() == DockerDependencyType.None,
- (true, { } p) => p.RequiresDockerDependency() != DockerDependencyType.None,
- })
- .Where(x =>
- x.project?.Name switch
- {
- var name when projectsToSkip.Contains(name) => false,
- var name when multiPackageProjects.Contains(name) => false,
- _ when !string.IsNullOrWhiteSpace(SampleName) => x.project?.Name?.Contains(SampleName, StringComparison.OrdinalIgnoreCase) ?? false,
- _ => x.project.TryGetTargetFrameworks().Contains(Framework),
- })
- .Select(x => x.path)
- .ToArray();
-
- // do the build and publish separately to avoid dependency issues
-
- DotnetBuild(projectsToBuild, framework: Framework, noRestore: false);
-
- DotNetPublish(x => x
- .EnableNoRestore()
- .EnableNoBuild()
- .EnableNoDependencies()
- .SetConfiguration(BuildConfiguration)
- .SetFramework(Framework)
- .SetNoWarnDotNetCore3()
- .When(TestAllPackageVersions, o => o.SetProperty("TestAllPackageVersions", "true"))
- .When(IncludeMinorPackageVersions, o => o.SetProperty("IncludeMinorPackageVersions", "true"))
- .When(!string.IsNullOrEmpty(NugetPackageDirectory), o => o.SetPackageDirectory(NugetPackageDirectory))
- .CombineWith(projectsToBuild, (c, project) => c
- .SetProject(project)));
-
- // We have to explicitly publish the trimming sample separately (written so we can add to this later if needs be)
- var projectsToPublish = sampleProjects
- .Select(x =>
- {
- var project = Solution.GetProject(x);
- return project?.Name switch
- {
- "Samples.Trimming" => (project, include: Framework.IsGreaterThanOrEqualTo(TargetFramework.NET6_0), r2r: false),
- "Samples.ManualInstrumentation" => (project, include: Framework.IsGreaterThanOrEqualTo(TargetFramework.NETCOREAPP2_1), r2r: true),
- _ => (project, include: false, r2r: false),
- };
- })
- .Where(x => (IncludeTestsRequiringDocker, x) switch
- {
- // filter out or to integration tests that have docker dependencies
- (_, {include: false }) => false,
- (null, _) => true,
- (_, { project: null}) => true,
- (_, { } p) when !string.IsNullOrWhiteSpace(SampleName) => p.project.Name.Contains(SampleName, StringComparison.OrdinalIgnoreCase),
- (false, { } p) => p.project.RequiresDockerDependency() == DockerDependencyType.None,
- (true, { } p) => p.project.RequiresDockerDependency() != DockerDependencyType.None,
- });
-
- var rid = (IsLinux, IsArm64) switch
- {
- (true, false) => IsAlpine ? "linux-musl-x64" : "linux-x64",
- (true, true) => IsAlpine ? "linux-musl-arm64" : "linux-arm64",
- (false, false) => "osx-x64",
- (false, true) => "osx-arm64",
- };
- DotNetPublish(config => config
- .SetConfiguration(BuildConfiguration)
- .SetFramework(Framework)
- .SetRuntime(rid)
- .CombineWith(projectsToPublish, (s, project) => s
- .SetProject(project.project)
- .When(project.r2r, x => x.SetPublishReadyToRun(true))));
- });
-
- Target CompileMultiApiPackageVersionSamples => _ => _
- .Unlisted()
- .DependsOn(HackForMissingMsBuildLocation)
- .After(CompileManagedSrc)
- .After(CompileRegressionDependencyLibs)
- .After(CompileDependencyLibs)
- .After(CompileManagedTestHelpers)
- .After(CompileSamplesLinuxOrOsx)
- .Requires(() => MonitoringHomeDirectory != null)
- .Requires(() => Framework)
- .Executes(() =>
- {
- // Build and restore for all versions
- // Annoyingly this rebuilds everything again and again.
- var targets = new[] { "RestoreSamplesForPackageVersionsOnly", "RestoreAndBuildSamplesForPackageVersionsOnly" };
-
- // /nowarn:NU1701 - Package 'x' was restored using '.NETFramework,Version=v4.6.1' instead of the project target framework '.NETCoreApp,Version=v2.1'.
- // /nowarn:NETSDK1138 - Package 'x' was restored using '.NETFramework,Version=v4.6.1' instead of the project target framework '.NETCoreApp,Version=v2.1'.
- var sampleName = string.IsNullOrWhiteSpace(SampleName) ? string.Empty : SampleName;
- foreach (var target in targets)
- {
- // TODO: When IncludeTestsRequiringDocker is set, only build required samples
- DotNetMSBuild(x => x
- .SetTargetPath(MsBuildProject)
- .SetTargets(target)
- .SetConfiguration(BuildConfiguration)
- .EnableNoDependencies()
- .SetProperty("TargetFramework", Framework.ToString())
- .SetProperty("BuildInParallel", "true")
- .SetProperty("CheckEolTargetFramework", "false")
- .SetProperty("SampleName", sampleName)
- .When(IncludeTestsRequiringDocker.HasValue, o => o.SetProperty("IncludeTestsRequiringDocker", IncludeTestsRequiringDocker!.Value ? "true" : "false"))
- .When(IsArm64, o => o.SetProperty("IsArm64", "true"))
- .When(IsAlpine, o => o.SetProperty("IsAlpine", "true"))
- .When(!string.IsNullOrEmpty(NugetPackageDirectory), o => o.SetProperty("RestorePackagesPath", NugetPackageDirectory))
- .SetProcessArgumentConfigurator(arg => arg.Add("/nowarn:NU1701"))
- .When(TestAllPackageVersions, o => o.SetProperty("TestAllPackageVersions", "true"))
- .When(IncludeMinorPackageVersions, o => o.SetProperty("IncludeMinorPackageVersions", "true"))
- );
-
- MakeGrpcToolsExecutable(); // for use in the second target
- }
- });
-
Target CompileLinuxOrOsxIntegrationTests => _ => _
.Unlisted()
.After(CompileManagedSrc)
- .After(CompileRegressionDependencyLibs)
- .After(CompileDependencyLibs)
.After(CompileManagedTestHelpers)
- .After(CompileSamplesLinuxOrOsx)
- .After(CompileMultiApiPackageVersionSamples)
.After(BuildRunnerTool)
.Requires(() => MonitoringHomeDirectory != null)
.Requires(() => Framework)
@@ -2031,11 +1813,7 @@ var name when multiPackageProjects.Contains(name) => false,
Target CompileLinuxDdDotnetIntegrationTests => _ => _
.Unlisted()
.After(CompileManagedSrc)
- .After(CompileRegressionDependencyLibs)
- .After(CompileDependencyLibs)
.After(CompileManagedTestHelpers)
- .After(CompileSamplesLinuxOrOsx)
- .After(CompileMultiApiPackageVersionSamples)
.Requires(() => MonitoringHomeDirectory != null)
.Executes(() =>
{
@@ -2075,6 +1853,7 @@ var name when multiPackageProjects.Contains(name) => false,
Target RunLinuxIntegrationTests => _ => _
.After(CompileLinuxOrOsxIntegrationTests)
+ .After(CompileTrimmingSamples)
.DependsOn(CleanTestLogs)
.Description("Runs the linux integration tests")
.Requires(() => Framework)
@@ -2359,7 +2138,7 @@ var name when multiPackageProjects.Contains(name) => false,
Target CopyServerlessArtifacts => _ => _
.Description("Copies monitoring-home into the serverless artifacts directory")
.Unlisted()
- .After(CompileSamplesLinuxOrOsx, CompileMultiApiPackageVersionSamples)
+ .After(CompileSamples, CompileTrimmingSamples)
.Executes(() =>
{
// This is a bit hacky, we can probably improve it once/if we output monitoring home into the BuildArtifactsDirectory too
@@ -2911,41 +2690,6 @@ static LogLevel ParseNativeLogLevel(string value)
};
}
- private void MakeGrpcToolsExecutable()
- {
- var packageDirectory = NugetPackageDirectory;
- if (string.IsNullOrEmpty(NugetPackageDirectory))
- {
- Logger.Information("NugetPackageDirectory not set, querying for global-package location");
- var packageLocation = "global-packages";
- var output = DotNet($"nuget locals {packageLocation} --list");
-
- var expected = $"{packageLocation}: ";
- var location = output
- .Where(x => x.Type == OutputType.Std)
- .Select(x => x.Text)
- .FirstOrDefault(x => x.StartsWith(expected))
- ?.Substring(expected.Length);
-
- if (string.IsNullOrEmpty(location))
- {
- Logger.Information("Couldn't determine global-package location, skipping chmod +x on grpc.tools");
- return;
- }
-
- packageDirectory = (AbsolutePath)(location);
- }
-
- Logger.Information($"Using '{packageDirectory}' for NuGet package location");
-
- // GRPC runs a tool for codegen, which apparently isn't automatically marked as executable
- var grpcTools = GlobFiles(packageDirectory / "grpc.tools", "**/tools/linux_*/*");
- foreach (var toolPath in grpcTools)
- {
- Chmod.Value.Invoke(" +x " + toolPath);
- }
- }
-
private AbsolutePath GetResultsDirectory(Project proj) => BuildDataDirectory / "results" / proj.Name;
private void EnsureResultsDirectory(Project proj) => EnsureCleanDirectory(GetResultsDirectory(proj));
diff --git a/tracer/build/_build/Build.Utilities.cs b/tracer/build/_build/Build.Utilities.cs
index d39ad75444a3..f34b82ea80ef 100644
--- a/tracer/build/_build/Build.Utilities.cs
+++ b/tracer/build/_build/Build.Utilities.cs
@@ -19,6 +19,7 @@
using Microsoft.VisualStudio.Services.WebApi;
using Nuke.Common;
using Nuke.Common.IO;
+using Nuke.Common.ProjectModel;
using Nuke.Common.Tooling;
using Nuke.Common.Tools.DotNet;
using Nuke.Common.Tools.MSBuild;
@@ -402,6 +403,75 @@ partial class Build
ReplaceReceivedFilesInSnapshots();
});
+ Target RegenerateSolutions
+ => _ => _
+ .Description("Regenerates the 'build' solutions based on the 'master' solution")
+ .Executes(() =>
+ {
+ // Create a copy of the "full solution"
+ var sln = ProjectModelTasks.CreateSolution(
+ fileName: RootDirectory / "Datadog.Trace.Samples.g.sln",
+ solutions: new[] { Solution },
+ randomizeProjectIds: false);
+
+ // Remove everything except the standalone test-application projects
+ sln.AllProjects
+ .Where(x => !IsTestApplication(x))
+ .ForEach(x =>
+ {
+ Logger.Information("Removing project '{Name}'", x.Name);
+ sln.RemoveProject(x);
+ });
+
+ sln.Save();
+
+ bool IsTestApplication(Project x)
+ {
+ // We explicitly don't build some of these because
+ // 1. They're a pain to build
+ // 2. They aren't actually run in the CI (something we should address in the future)
+ if (x.Name is "ExpenseItDemo" or "StackExchange.Redis.AssemblyConflict.LegacyProject" or "_build")
+ {
+ return false;
+ }
+
+ // Include test-applications, but exclude the following for now:
+ // - test-applications/aspnet
+ // - test-applications/security/aspnet
+ // These currently aren't published to separate folders, are minimal, can't be
+ // built on macos, and don't take long to build, so not a big value in building
+ // them separately currently
+ var solutionFolder = x.SolutionFolder;
+ while (solutionFolder is not null)
+ {
+ if(solutionFolder.Name == "aspnet"
+ && solutionFolder.SolutionFolder?.Name == "test-applications")
+ {
+ return false;
+ }
+
+ if(solutionFolder.Name == "aspnet"
+ && solutionFolder.SolutionFolder?.Name == "security"
+ && solutionFolder.SolutionFolder?.SolutionFolder?.Name == "test-applications")
+ {
+ return false;
+ }
+
+ if (solutionFolder.Name == "test-applications")
+ {
+ // Exclude projects which directly reference Datadog.Trace - these need to be
+ // built with the "main" solution as they're inherently not standalone
+ return !x.ReferencesDatadogTrace();
+ }
+
+ solutionFolder = solutionFolder.SolutionFolder;
+ }
+
+ return false;
+ }
+ });
+
+
private void ReplaceReceivedFilesInSnapshots()
{
var snapshotsDirectory = TestsDirectory / "snapshots";
diff --git a/tracer/build/_build/Build.VariableGenerations.cs b/tracer/build/_build/Build.VariableGenerations.cs
index f61697b19bd0..aaa9d1a69027 100644
--- a/tracer/build/_build/Build.VariableGenerations.cs
+++ b/tracer/build/_build/Build.VariableGenerations.cs
@@ -23,6 +23,7 @@ Target GenerateVariables
.Executes(() =>
{
GenerateConditionVariables();
+ GenerateUnitTestFrameworkMatrices();
GenerateIntegrationTestsWindowsMatrices();
GenerateIntegrationTestsLinuxMatrices();
@@ -100,6 +101,38 @@ void GenerateConditionVariableBasedOnGitChange(string variableName, string[] fil
}
}
+ void GenerateUnitTestFrameworkMatrices()
+ {
+ GenerateTfmsMatrix("unit_tests_windows_matrix", TestingFrameworks);
+ var unixFrameworks = TestingFrameworks.Except(new[] { TargetFramework.NET461, TargetFramework.NET462, TargetFramework.NETSTANDARD2_0 }).ToList();
+ GenerateTfmsMatrix("unit_tests_macos_matrix", unixFrameworks);
+ GenerateLinuxMatrix("x64", unixFrameworks);
+ GenerateLinuxMatrix("arm64", unixFrameworks);
+
+ void GenerateTfmsMatrix(string name, IEnumerable frameworks)
+ {
+ var matrix = frameworks
+ .ToDictionary(t => t.ToString(), t => new { framework = t, });
+
+ Logger.Information(JsonConvert.SerializeObject(matrix, Formatting.Indented));
+ AzurePipelines.Instance.SetOutputVariable(name, JsonConvert.SerializeObject(matrix, Formatting.None));
+ }
+
+ void GenerateLinuxMatrix(string platform, IEnumerable frameworks)
+ {
+ var matrix = new Dictionary();
+
+ foreach (var framework in frameworks)
+ {
+ matrix.Add($"glibc_{framework}", new { framework = framework, baseImage = "debian", artifactSuffix = $"linux-{platform}"});
+ matrix.Add($"musl_{framework}", new { framework = framework, baseImage = "alpine", artifactSuffix = $"linux-musl-{platform}"});
+ }
+
+ Logger.Information(JsonConvert.SerializeObject(matrix, Formatting.Indented));
+ AzurePipelines.Instance.SetOutputVariable($"unit_tests_linux_{platform}_matrix", JsonConvert.SerializeObject(matrix, Formatting.None));
+ }
+ }
+
void GenerateIntegrationTestsWindowsMatrices()
{
GenerateIntegrationTestsWindowsMatrix();
@@ -171,6 +204,8 @@ void GenerateIntegrationTestsWindowsAzureFunctionsMatrix()
// new {framework = TargetFramework.NETCOREAPP3_1, runtimeInstall = v3Install, runtimeUninstall = v3Uninstall },
new {framework = TargetFramework.NET6_0 },
new {framework = TargetFramework.NET7_0 },
+ new {framework = TargetFramework.NET8_0 },
+ new {framework = TargetFramework.NET9_0 },
};
var matrix = new Dictionary();
@@ -205,7 +240,7 @@ void GenerateIntegrationTestsWindowsIISMatrix(params TargetFramework[] targetFra
void GenerateIntegrationTestsWindowsMsiMatrix(params TargetFramework[] targetFrameworks)
{
- var targetPlatforms = new[] {
+ var targetPlatforms = new[] {
(targetPlaform: "x64", enable32Bit: false),
(targetPlaform: "x64", enable32Bit: true),
};
@@ -235,8 +270,8 @@ void GenerateIntegrationTestsLinuxMatrix()
{
var baseImages = new []
{
- (baseImage: "debian", artifactSuffix: "linux-x64"),
- (baseImage: "alpine", artifactSuffix: "linux-musl-x64"),
+ (baseImage: "debian", artifactSuffix: "linux-x64"),
+ (baseImage: "alpine", artifactSuffix: "linux-musl-x64"),
};
var targetFrameworks = TestingFrameworks.Except(new[] { TargetFramework.NET461, TargetFramework.NET462, TargetFramework.NETSTANDARD2_0 });
@@ -285,8 +320,8 @@ void GenerateIntegrationTestsDebuggerLinuxMatrix()
var targetFrameworks = TestingFrameworksDebugger.Except(new[] { TargetFramework.NET462 });
var baseImages = new []
{
- (baseImage: "debian", artifactSuffix: "linux-x64"),
- (baseImage: "alpine", artifactSuffix: "linux-musl-x64"),
+ (baseImage: "debian", artifactSuffix: "linux-x64"),
+ (baseImage: "alpine", artifactSuffix: "linux-musl-x64"),
};
var optimizations = new[] { "true", "false" };
@@ -365,8 +400,8 @@ void GenerateExplorationTestsLinuxMatrix(IEnumerable useCases)
var baseImages = new []
{
- (baseImage: "debian", artifactSuffix: "linux-x64"),
- (baseImage: "alpine", artifactSuffix: "linux-musl-x64"),
+ (baseImage: "debian", artifactSuffix: "linux-x64"),
+ (baseImage: "alpine", artifactSuffix: "linux-musl-x64"),
};
var matrix = new Dictionary();
@@ -420,7 +455,7 @@ void GenerateSmokeTestsMatrices()
// tracer home smoke tests
GenerateWindowsTracerHomeSmokeTestsMatrix();
-
+
// macos smoke tests
GenerateMacosDotnetToolNugetSmokeTestsMatrix();
@@ -1089,7 +1124,7 @@ void GenerateLinuxDotnetToolNugetSmokeTestsMatrix()
new (publishFramework: TargetFramework.NET8_0, "8.0-jammy"),
new (publishFramework: TargetFramework.NET7_0, "7.0-bullseye-slim"),
new (publishFramework: TargetFramework.NET6_0, "6.0-bullseye-slim"),
- // We can't install prerelease versions of the dotnet-tool nuget in .NET Core 3.1, because the --prerelease flag isn't available
+ // We can't install prerelease versions of the dotnet-tool nuget in .NET Core 3.1, because the --prerelease flag isn't available
new (publishFramework: TargetFramework.NETCOREAPP3_1, "3.1-bullseye"),
}.Where(x=> !IsPrerelease || x.PublishFramework != TargetFramework.NETCOREAPP3_1).ToArray(),
platformSuffix: "linux-x64",
@@ -1106,7 +1141,7 @@ void GenerateLinuxDotnetToolNugetSmokeTestsMatrix()
new (publishFramework: TargetFramework.NET7_0, "7.0-alpine3.16"),
new (publishFramework: TargetFramework.NET6_0, "6.0-alpine3.16"),
new (publishFramework: TargetFramework.NETCOREAPP3_1, "3.1-alpine3.15"),
- // We can't install prerelease versions of the dotnet-tool nuget in .NET Core 3.1, because the --prerelease flag isn't available
+ // We can't install prerelease versions of the dotnet-tool nuget in .NET Core 3.1, because the --prerelease flag isn't available
}.Where(x=> !IsPrerelease || x.PublishFramework != TargetFramework.NETCOREAPP3_1).ToArray(),
platformSuffix: "linux-musl-x64",
dockerName: "mcr.microsoft.com/dotnet/sdk"
@@ -1410,14 +1445,14 @@ static bool IsGitBaseBranch(string baseBranch)
{
branch = Environment.GetEnvironmentVariable(AzureBuildSourceBranchName);
}
-
+
Console.WriteLine("Base Branch: {0}", baseBranch);
Console.WriteLine("Current Branch: {0}", branch);
var cleanBranch = CleanBranchName(branch);
var cleanBaseBranch = CleanBranchName(baseBranch);
Console.Write(" {0} == {1}? ", cleanBranch, cleanBaseBranch);
-
+
if (string.Equals(cleanBranch, cleanBaseBranch, StringComparison.OrdinalIgnoreCase))
{
Console.WriteLine("true");
diff --git a/tracer/build/_build/Build.cs b/tracer/build/_build/Build.cs
index 41ed45412815..f1127f2147ae 100644
--- a/tracer/build/_build/Build.cs
+++ b/tracer/build/_build/Build.cs
@@ -63,7 +63,7 @@ partial class Build : NukeBuild
const int LatestMajorVersion = 3;
[Parameter("The current version of the source and build")]
- readonly string Version = "3.8.0";
+ readonly string Version = "3.9.0";
[Parameter("Whether the current build version is a prerelease(for packaging purposes)")]
readonly bool IsPrerelease = false;
@@ -129,6 +129,7 @@ public Build()
Logger.Information($"IsAlpine: {IsAlpine}");
Logger.Information($"Version: {Version}");
Logger.Information($"RuntimeIdentifier: {RuntimeIdentifier}");
+ Logger.Information($"TestFrameworks: {string.Join(",", TestingFrameworks.Select(x => x.ToString()))}");
});
Target Clean => _ => _
@@ -270,9 +271,7 @@ void DeleteReparsePoints(string path)
.Unlisted()
.Requires(() => IsWin)
.Description("Builds the integration tests for Windows")
- .DependsOn(CompileDependencyLibs)
.DependsOn(CompileManagedTestHelpers)
- .DependsOn(CompileSamplesWindows)
.DependsOn(CompileIntegrationTests)
.DependsOn(BuildRunnerTool);
@@ -280,7 +279,6 @@ void DeleteReparsePoints(string path)
.Unlisted()
.Requires(() => IsWin)
.Description("Builds the ASP.NET integration tests for Windows")
- .DependsOn(CompileDependencyLibs)
.DependsOn(CompileManagedTestHelpers)
.DependsOn(PublishIisSamples)
.DependsOn(CompileIntegrationTests);
@@ -290,21 +288,21 @@ void DeleteReparsePoints(string path)
.Requires(() => IsWin)
.Description("Builds the regression tests for Windows")
.DependsOn(CompileManagedTestHelpers)
- .DependsOn(CompileRegressionDependencyLibs)
- .DependsOn(CompileRegressionSamples)
- .DependsOn(CompileFrameworkReproductions)
.DependsOn(CompileIntegrationTests);
Target BuildAndRunWindowsIntegrationTests => _ => _
.Requires(() => IsWin)
.Description("Builds and runs the Windows (non-IIS) integration tests")
.DependsOn(BuildWindowsIntegrationTests)
+ .DependsOn(CompileSamples)
+ .DependsOn(CompileTrimmingSamples)
.DependsOn(RunWindowsIntegrationTests);
Target BuildAndRunWindowsRegressionTests => _ => _
.Requires(() => IsWin)
.Description("Builds and runs the Windows regression tests")
.DependsOn(BuildWindowsRegressionTests)
+ .DependsOn(CompileSamples)
.DependsOn(RunWindowsRegressionTests);
Target BuildAndRunWindowsAzureFunctionsTests => _ => _
@@ -319,11 +317,7 @@ void DeleteReparsePoints(string path)
Target BuildLinuxIntegrationTests => _ => _
.Requires(() => !IsWin)
.Description("Builds the linux integration tests")
- .DependsOn(CompileDependencyLibs)
- .DependsOn(CompileRegressionDependencyLibs)
.DependsOn(CompileManagedTestHelpers)
- .DependsOn(CompileSamplesLinuxOrOsx)
- .DependsOn(CompileMultiApiPackageVersionSamples)
.DependsOn(CompileLinuxOrOsxIntegrationTests)
.DependsOn(CompileLinuxDdDotnetIntegrationTests)
.DependsOn(BuildRunnerTool)
@@ -339,11 +333,7 @@ void DeleteReparsePoints(string path)
Target BuildOsxIntegrationTests => _ => _
.Requires(() => IsOsx)
.Description("Builds the osx integration tests")
- .DependsOn(CompileDependencyLibs)
- .DependsOn(CompileRegressionDependencyLibs)
.DependsOn(CompileManagedTestHelpers)
- .DependsOn(CompileSamplesLinuxOrOsx)
- .DependsOn(CompileMultiApiPackageVersionSamples)
.DependsOn(CompileLinuxOrOsxIntegrationTests)
.DependsOn(BuildRunnerTool)
.DependsOn(CopyServerlessArtifacts);
@@ -352,6 +342,8 @@ void DeleteReparsePoints(string path)
.Requires(() => IsOsx)
.Description("Builds and runs the osx integration tests. Requires docker-compose dependencies")
.DependsOn(BuildOsxIntegrationTests)
+ .DependsOn(CompileSamples)
+ .DependsOn(CompileTrimmingSamples)
.DependsOn(RunOsxIntegrationTests);
Target BuildAndRunToolArtifactTests => _ => _
diff --git a/tracer/build/_build/CodeGenerators/CallTargetsGenerator.cs b/tracer/build/_build/CodeGenerators/CallTargetsGenerator.cs
index 061e8d24822b..35533651b512 100644
--- a/tracer/build/_build/CodeGenerators/CallTargetsGenerator.cs
+++ b/tracer/build/_build/CodeGenerators/CallTargetsGenerator.cs
@@ -231,27 +231,31 @@ static AdoNetSignature GetAdoNetSignature(TypeDefinition type, CustomAttribute a
int? integrationKind = null;
int? returnType = null;
string callTargetType = null;
+ var instrumentationCategory = InstrumentationCategory.Tracing;
foreach (var namedArgument in attribute.Properties)
{
switch (namedArgument.Name)
{
- case nameof(AdoNetSignatureAttributeProperties.MethodName):
+ case nameof(AdoNetTargetSignatureAttributeProperties.MethodName):
methodName = namedArgument.Argument.Value?.ToString();
break;
- case nameof(AdoNetSignatureAttributeProperties.ReturnTypeName):
+ case nameof(AdoNetTargetSignatureAttributeProperties.ReturnTypeName):
returnTypeName = namedArgument.Argument.Value?.ToString();
break;
- case nameof(AdoNetSignatureAttributeProperties.ParameterTypeNames):
+ case nameof(AdoNetTargetSignatureAttributeProperties.ParameterTypeNames):
parameterTypeNames = GetStringArray(namedArgument.Argument.Value);
break;
- case nameof(AdoNetSignatureAttributeProperties.CallTargetType):
+ case nameof(AdoNetTargetSignatureAttributeProperties.CallTargetType):
callTargetType = ((TypeDefinition)namedArgument.Argument.Value).FullName;
break;
- case nameof(AdoNetSignatureAttributeProperties.CallTargetIntegrationKind):
+ case nameof(AdoNetTargetSignatureAttributeProperties.CallTargetIntegrationKind):
integrationKind = namedArgument.Argument.Value as int?;
break;
- case nameof(AdoNetSignatureAttributeProperties.ReturnType):
+ case nameof(AdoNetTargetSignatureAttributeProperties.InstrumentationCategory):
+ instrumentationCategory = (InstrumentationCategory)(namedArgument.Argument.Value as uint?).GetValueOrDefault();
+ break;
+ case nameof(AdoNetTargetSignatureAttributeProperties.ReturnType):
returnType = namedArgument.Argument.Value as int?;
break;
default:
@@ -279,9 +283,10 @@ static AdoNetSignature GetAdoNetSignature(TypeDefinition type, CustomAttribute a
targetMethodName: methodName!,
targetReturnType: returnTypeName,
targetParameterTypes: parameterTypeNames ?? Array.Empty(),
+ returnType: returnType ?? 0,
instrumentationTypeName: callTargetType!.ToString(),
callTargetIntegrationKind: integrationKind ?? 0,
- returnType: returnType ?? 0);
+ instrumentationCategory: instrumentationCategory);
}
static List GetAdoNetClientInstruments(CustomAttribute attribute)
@@ -421,7 +426,7 @@ static List MergeAdoNetAttributes(List
//
#include "generated_definitions.h"
+ #include "../../../../shared/src/native-src/version.h"
namespace trace
{
int GeneratedDefinitions::InitCallTargets(UINT32 enabledCategories, UINT32 platform)
{
+ std::string version = PROFILER_VERSION;
+ std::string name = "Datadog.Trace, Version=" + version + ".0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb";
+ shared::WSTRING nameW = ToWSTRING(name);
+ WCHAR* assemblyName = (WCHAR*) (nameW.c_str());
""");
- var assemblyName = $"Datadog.Trace, Version={version}.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb";
- sb.AppendLine($"WCHAR* assemblyName = (WCHAR*)WStr(\"{assemblyName}\");");
sb.AppendLine();
// Retrieve all signatures
@@ -713,7 +721,7 @@ public CallTargetDefinitionSource(string integrationName, string assemblyName, s
internal record AdoNetSignature
{
- public AdoNetSignature(string className, string targetMethodName, string targetReturnType, string[] targetParameterTypes, string instrumentationTypeName, int callTargetIntegrationKind, int returnType)
+ public AdoNetSignature(string className, string targetMethodName, string targetReturnType, string[] targetParameterTypes, string instrumentationTypeName, int callTargetIntegrationKind, int returnType, InstrumentationCategory instrumentationCategory)
{
ClassName = className;
TargetMethodName = targetMethodName;
@@ -721,6 +729,7 @@ public AdoNetSignature(string className, string targetMethodName, string targetR
TargetParameterTypes = new(targetParameterTypes);
InstrumentationTypeName = instrumentationTypeName;
CallTargetIntegrationKind = callTargetIntegrationKind;
+ InstrumentationCategory = instrumentationCategory;
ReturnType = returnType;
}
@@ -736,6 +745,8 @@ public AdoNetSignature(string className, string targetMethodName, string targetR
public int CallTargetIntegrationKind { get; }
+ public InstrumentationCategory InstrumentationCategory { get; }
+
public int ReturnType { get; }
}
@@ -793,14 +804,15 @@ private static class InstrumentAttributeProperties
public const string InstrumentationCategory = nameof(InstrumentationCategory);
}
- private static class AdoNetSignatureAttributeProperties
+ private static class AdoNetTargetSignatureAttributeProperties
{
public const string MethodName = nameof(MethodName);
public const string ReturnTypeName = nameof(ReturnTypeName);
public const string ParameterTypeNames = nameof(ParameterTypeNames);
+ public const string ReturnType = nameof(ReturnType);
public const string CallTargetType = nameof(CallTargetType);
public const string CallTargetIntegrationKind = nameof(CallTargetIntegrationKind);
- public const string ReturnType = nameof(ReturnType);
+ public const string InstrumentationCategory = nameof(InstrumentationCategory);
}
private static class AdoNetInstrumentAttributeProperties
diff --git a/tracer/build/_build/GeneratePackageVersions/MSBuildPropsFileGenerator.cs b/tracer/build/_build/GeneratePackageVersions/MSBuildPropsFileGenerator.cs
index 5d1d04da8052..9db08db6f3fd 100644
--- a/tracer/build/_build/GeneratePackageVersions/MSBuildPropsFileGenerator.cs
+++ b/tracer/build/_build/GeneratePackageVersions/MSBuildPropsFileGenerator.cs
@@ -48,7 +48,7 @@ with the correct arguments outside of Visual Studio.
true";
private const string EntryFormat =
-@"
+@"
ApiVersion={1};RestoreRecursive=false;BuildProjectReferences=false{2}
{3}
{0}
@@ -90,7 +90,19 @@ public override void Write(PackageVersionEntry packageVersionEntry, IEnumerable<
var properties = targetFrameworkProperty + skipAlpineProperty + skipArm64Property;
- FileStringBuilder.AppendLine(string.Format(EntryFormat, packageVersionEntry.SampleProjectName, packageVersion, properties, requiresDockerDependency));
+ // HACK: support Azure Functions as it is in a different location
+ var testFolder = "integrations";
+ if (packageVersionEntry.SampleProjectName.Contains("Samples.AzureFunctions"))
+ {
+ testFolder = "azure-functions";
+ }
+
+ FileStringBuilder.AppendLine(string.Format(EntryFormat,
+ packageVersionEntry.SampleProjectName, // {0}
+ packageVersion, // {1}
+ properties, // {2}
+ requiresDockerDependency, // {3}
+ testFolder)); // {4}
}
}
diff --git a/tracer/build/_build/Honeypot/IntegrationGroups.cs b/tracer/build/_build/Honeypot/IntegrationGroups.cs
index 4909af83077e..9fd4019362af 100644
--- a/tracer/build/_build/Honeypot/IntegrationGroups.cs
+++ b/tracer/build/_build/Honeypot/IntegrationGroups.cs
@@ -81,7 +81,8 @@ static IntegrationMap()
NugetPackages.Add("Serilog", new [] { "Serilog" });
NugetPackages.Add("NLog", new [] { "NLog" });
NugetPackages.Add("log4net", new [] { "log4net" });
- NugetPackages.Add("Microsoft.Azure.Functions.Worker.Core", new string[] { });
+ NugetPackages.Add("Microsoft.Azure.Functions.Worker.Core", new string[] { "Microsoft.Azure.Functions.Worker.Core" });
+ NugetPackages.Add("Microsoft.Azure.Functions.Worker", new string[] { "Microsoft.Azure.Functions.Worker" });
NugetPackages.Add("Microsoft.Azure.WebJobs.Host", new [] { "Microsoft.Azure.WebJobs" });
NugetPackages.Add("Microsoft.Azure.WebJobs.Script.Grpc", new string[] { });
NugetPackages.Add("Microsoft.Azure.WebJobs.Script.WebHost", new string[] { });
diff --git a/tracer/build/_build/NukeExtensions/DockerDependencyType.cs b/tracer/build/_build/NukeExtensions/DockerDependencyType.cs
index ad30a5dc4ec8..3c01fb5bb76b 100644
--- a/tracer/build/_build/NukeExtensions/DockerDependencyType.cs
+++ b/tracer/build/_build/NukeExtensions/DockerDependencyType.cs
@@ -1,4 +1,4 @@
-public enum DockerDependencyType
+public enum DockerDependencyType
{
///
/// Does not require Docker to run sample
@@ -14,4 +14,9 @@
/// Requires Docker on all platforms except Windows to run samples.
///
LinuxAndMac,
+
+ ///
+ /// Contains both tests that require Docker and tests that do not.
+ ///
+ Mixed,
}
diff --git a/tracer/build/_build/NukeExtensions/ProjectExtensions.cs b/tracer/build/_build/NukeExtensions/ProjectExtensions.cs
index a32011d11393..8817debbe944 100644
--- a/tracer/build/_build/NukeExtensions/ProjectExtensions.cs
+++ b/tracer/build/_build/NukeExtensions/ProjectExtensions.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
+using System.IO;
using Nuke.Common.ProjectModel;
using Logger = Serilog.Log;
@@ -43,6 +44,29 @@ public static DockerDependencyType RequiresDockerDependency(this Project project
}
}
+ public static bool ReferencesDatadogTrace(this Project project)
+ {
+ try
+ {
+ if(Path.GetExtension(project.Path) != ".csproj")
+ {
+ return false;
+ }
+
+ // Using GetMsBuildProject() instead of built-in so that we can cache the MSBuild projects,
+ // because this is very expensive
+ var propertyValue = GetMsBuildProject(project).GetProperty("AllowDatadogTraceReference")?.EvaluatedValue;
+ return propertyValue is not null
+ && bool.TryParse(propertyValue, out var result)
+ && result;
+ }
+ catch (Exception ex)
+ {
+ Logger.Information(ex, "Error checking ReferencesDatadogTrace for {ProjectName}", project?.Name);
+ return false;
+ }
+ }
+
static Microsoft.Build.Evaluation.Project GetMsBuildProject(Project project)
{
return MsBuildProjects.GetOrAdd(project.Path, x => ProjectModelTasks.ParseProject(x));
diff --git a/tracer/build/_build/UpdateVendors/UpdateVendors.cs b/tracer/build/_build/UpdateVendors/UpdateVendors.cs
index 82f5909b1fb7..e382ab9f0ba2 100644
--- a/tracer/build/_build/UpdateVendors/UpdateVendors.cs
+++ b/tracer/build/_build/UpdateVendors/UpdateVendors.cs
@@ -71,10 +71,14 @@ private static async Task UpdateVendor(VendoredDependency dependency, AbsolutePa
File.Delete(projFile);
Console.WriteLine($"Renamed {libraryName} project file.");
- // Delete the assembly properties
- var assemblyPropertiesFolder = Path.Combine(sourceLocation, @"Properties");
- SafeDeleteDirectory(assemblyPropertiesFolder);
- Console.WriteLine($"Deleted {libraryName} assembly properties file.");
+ // Delete the assembly info file
+ var assemblyInfo = Path.Combine(sourceLocation, @"Properties", "AssemblyInfo.cs");
+ if (File.Exists(assemblyInfo))
+ {
+ File.Delete(assemblyInfo);
+ }
+
+ Console.WriteLine($"Deleted {libraryName} assembly info file.");
Console.WriteLine($"Running transforms on files for {libraryName}.");
@@ -111,7 +115,9 @@ private static bool ShouldDropFile(VendoredDependency dependency, string basePat
foreach (var relativeFileToDrop in dependency.RelativePathsToExclude)
{
var absolutePath = Path.Combine(basePath, relativeFileToDrop).Replace('/', '\\');
- if (normalizedFilePath.Equals(absolutePath, StringComparison.OrdinalIgnoreCase))
+ if (normalizedFilePath.Equals(absolutePath, StringComparison.OrdinalIgnoreCase)
+ || (absolutePath.EndsWith('\\') &&
+ normalizedFilePath.StartsWith(absolutePath, StringComparison.OrdinalIgnoreCase)))
{
return true;
}
diff --git a/tracer/build/_build/UpdateVendors/VendoredDependency.cs b/tracer/build/_build/UpdateVendors/VendoredDependency.cs
index 7f911712c89e..15a082e3c2d1 100644
--- a/tracer/build/_build/UpdateVendors/VendoredDependency.cs
+++ b/tracer/build/_build/UpdateVendors/VendoredDependency.cs
@@ -15,12 +15,34 @@ public class VendoredDependency
{
private const string AutoGeneratedMessage = @"//------------------------------------------------------------------------------
//
-// This file was automatically generated by the UpdateVendors tool.
+// This file was automatically generated by the UpdateVendoredCode tool.
//------------------------------------------------------------------------------
";
static VendoredDependency()
{
+ Add(
+ libraryName: "Microsoft.OpenApi",
+ "1.6.23",
+ "https://github.com/microsoft/OpenAPI.NET/archive/1.6.23.zip",
+ new[] { "OpenAPI.NET-1.6.23", "src", "Microsoft.OpenApi" },
+ filePath => RewriteCsFileWithStandardTransform(filePath, "Microsoft.OpenApi"),
+ new[]
+ {
+ "Extensions/OpenApiElementExtensions.cs",
+ "Extensions/OpenApiSerializableExtensions.cs",
+ "Extensions/OpenApiTypeMapper.cs",
+ "MicrosoftExtensions/", // whole folder
+ "Services/CopyReferences.cs",
+ "Services/OpenApiFilterService.cs",
+ "Services/OpenApiUrlTreeNode.cs",
+ "Services/OperationSearch.cs",
+ "Services/SearchResult.cs",
+ "Validations/", // whole folder
+ "Writers/FormattingStreamWriter.cs",
+ "Writers/OpenApiYamlWriter.cs"
+ });
+
Add(
libraryName: "Serilog",
version: "2.10.0",
diff --git a/tracer/build/_build/_build.csproj b/tracer/build/_build/_build.csproj
index 71daf46fc325..e31f57e6602a 100644
--- a/tracer/build/_build/_build.csproj
+++ b/tracer/build/_build/_build.csproj
@@ -61,7 +61,10 @@
-
-
+
+
+
+ Honeypot.Datadog.Dependabot.Honeypot.template
+
diff --git a/tracer/build/artifacts/dd-dotnet.sh b/tracer/build/artifacts/dd-dotnet.sh
index 98857df64a8c..250a841a25cc 100755
--- a/tracer/build/artifacts/dd-dotnet.sh
+++ b/tracer/build/artifacts/dd-dotnet.sh
@@ -1,6 +1,6 @@
#!/bin/sh
-TRACER_VERSION="3.8.0"
+TRACER_VERSION="3.9.0"
# Get the directory of the script
DIR=$(dirname "$(readlink -f "$0")")
diff --git a/tracer/build/supported_calltargets.g.json b/tracer/build/supported_calltargets.g.json
index 64d5a9520402..1bb5d9aef965 100644
--- a/tracer/build/supported_calltargets.g.json
+++ b/tracer/build/supported_calltargets.g.json
@@ -87,7 +87,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderCloseIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "AdoNet",
@@ -111,7 +111,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderGetStringIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "AdoNet",
@@ -135,7 +135,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderGetStringIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "AdoNet",
@@ -157,7 +157,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderReadIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "AdoNet",
@@ -181,7 +181,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderReadAsyncIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "AdoNet",
@@ -344,7 +344,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderCloseIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "AdoNet",
@@ -366,7 +366,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderCloseIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "AdoNet",
@@ -390,7 +390,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderGetStringIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "AdoNet",
@@ -414,7 +414,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderGetStringIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "AdoNet",
@@ -438,7 +438,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderGetStringIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "AdoNet",
@@ -462,7 +462,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderGetStringIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "AdoNet",
@@ -484,7 +484,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderReadIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "AdoNet",
@@ -506,7 +506,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderReadIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "AdoNet",
@@ -530,7 +530,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderReadAsyncIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "AdoNet",
@@ -554,7 +554,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderReadAsyncIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "AdoNet",
@@ -717,7 +717,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderCloseIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "AdoNet",
@@ -741,7 +741,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderGetStringIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "AdoNet",
@@ -765,7 +765,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderGetStringIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "AdoNet",
@@ -787,7 +787,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderReadIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "AdoNet",
@@ -811,7 +811,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderReadAsyncIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "Aerospike",
@@ -2563,7 +2563,7 @@
"Item3": 0
},
"MaximumVersion": {
- "Item1": 1,
+ "Item1": 2,
"Item2": 65535,
"Item3": 65535
},
@@ -9177,7 +9177,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderCloseIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "MySql",
@@ -9551,7 +9551,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderGetStringIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "MySql",
@@ -9575,7 +9575,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderGetStringIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "MySql",
@@ -9597,7 +9597,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderReadIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "MySql",
@@ -9621,7 +9621,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderReadAsyncIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "MySql",
@@ -9643,7 +9643,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderCloseIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "MySql",
@@ -9667,7 +9667,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderGetStringIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "MySql",
@@ -9691,7 +9691,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderGetStringIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "MySql",
@@ -9713,7 +9713,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderReadIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "MySql",
@@ -9737,7 +9737,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderReadAsyncIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "MySql",
@@ -10182,7 +10182,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderCloseIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "MySql",
@@ -10206,7 +10206,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderGetStringIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "MySql",
@@ -10230,7 +10230,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderGetStringIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "MySql",
@@ -10252,7 +10252,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderReadIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "MySql",
@@ -10276,7 +10276,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderReadAsyncIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "NLog",
@@ -10667,7 +10667,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderGetStringIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "Npgsql",
@@ -10691,7 +10691,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderGetStringIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "Npgsql",
@@ -10713,7 +10713,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderReadIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "Npgsql",
@@ -10737,7 +10737,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderReadAsyncIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "NUnit",
@@ -11119,7 +11119,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderCloseIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "Oracle",
@@ -11143,7 +11143,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderGetStringIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "Oracle",
@@ -11167,7 +11167,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderGetStringIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "Oracle",
@@ -11189,7 +11189,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderReadIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "Oracle",
@@ -11213,7 +11213,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderReadAsyncIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "Oracle",
@@ -11235,7 +11235,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderCloseIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "Oracle",
@@ -11487,7 +11487,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderGetStringIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "Oracle",
@@ -11511,7 +11511,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderGetStringIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "Oracle",
@@ -11533,7 +11533,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderReadIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "Oracle",
@@ -11557,7 +11557,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderReadAsyncIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "Oracle",
@@ -11579,7 +11579,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderCloseIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "Oracle",
@@ -11603,7 +11603,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderGetStringIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "Oracle",
@@ -11627,7 +11627,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderGetStringIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "Oracle",
@@ -11649,7 +11649,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderReadIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "Oracle",
@@ -11673,7 +11673,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderReadAsyncIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "Process",
@@ -12885,7 +12885,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderCloseIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "SqlClient",
@@ -12909,7 +12909,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderGetStringIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "SqlClient",
@@ -12933,7 +12933,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderGetStringIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "SqlClient",
@@ -12955,7 +12955,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderReadIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "SqlClient",
@@ -12979,7 +12979,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderReadAsyncIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "SqlClient",
@@ -13001,7 +13001,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderCloseIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "SqlClient",
@@ -13025,7 +13025,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderGetStringIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "SqlClient",
@@ -13049,7 +13049,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderGetStringIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "SqlClient",
@@ -13071,7 +13071,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderReadIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "SqlClient",
@@ -13095,7 +13095,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderReadAsyncIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "SqlClient",
@@ -13329,7 +13329,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderCloseIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "SqlClient",
@@ -13353,7 +13353,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderGetStringIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "SqlClient",
@@ -13377,7 +13377,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderGetStringIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "SqlClient",
@@ -13399,7 +13399,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderReadIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "SqlClient",
@@ -13423,7 +13423,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderReadAsyncIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "SqlClient",
@@ -13657,7 +13657,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderCloseIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "SqlClient",
@@ -13681,7 +13681,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderGetStringIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "SqlClient",
@@ -13705,7 +13705,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderGetStringIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "SqlClient",
@@ -13727,7 +13727,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderReadIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "SqlClient",
@@ -13751,7 +13751,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderReadAsyncIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "SqlClient",
@@ -13773,7 +13773,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderCloseIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "SqlClient",
@@ -13797,7 +13797,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderGetStringIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "SqlClient",
@@ -13821,7 +13821,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderGetStringIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "SqlClient",
@@ -13843,7 +13843,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderReadIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "SqlClient",
@@ -13867,7 +13867,7 @@
"InstrumentationTypeName": "Datadog.Trace.ClrProfiler.AutoInstrumentation.AdoNet.ReaderReadAsyncIntegration",
"IntegrationKind": 0,
"IsAdoNetIntegration": true,
- "InstrumentationCategory": 1
+ "InstrumentationCategory": 4
},
{
"IntegrationName": "Sqlite",
diff --git a/tracer/build/supported_versions.json b/tracer/build/supported_versions.json
index f27595214cc0..6f34e68455da 100644
--- a/tracer/build/supported_versions.json
+++ b/tracer/build/supported_versions.json
@@ -242,9 +242,9 @@
"minVersionAvailableInclusive": "3.1.0",
"minVersionSupportedInclusive": "3.1.0",
"minVersionTestedInclusive": "3.1.5.3",
- "maxVersionSupportedInclusive": "3.7.404.5",
- "maxVersionAvailableInclusive": "3.7.404.5",
- "maxVersionTestedInclusive": "3.7.404.5"
+ "maxVersionSupportedInclusive": "3.7.405.3",
+ "maxVersionAvailableInclusive": "3.7.405.3",
+ "maxVersionTestedInclusive": "3.7.405.3"
}
]
},
@@ -259,9 +259,9 @@
"minVersionAvailableInclusive": "3.3.100",
"minVersionSupportedInclusive": "3.3.100",
"minVersionTestedInclusive": "3.3.102.16",
- "maxVersionSupportedInclusive": "3.7.402.6",
- "maxVersionAvailableInclusive": "3.7.402.6",
- "maxVersionTestedInclusive": "3.7.402.6"
+ "maxVersionSupportedInclusive": "3.7.402.19",
+ "maxVersionAvailableInclusive": "3.7.402.19",
+ "maxVersionTestedInclusive": "3.7.402.19"
}
]
},
@@ -276,9 +276,9 @@
"minVersionAvailableInclusive": "3.1.0",
"minVersionSupportedInclusive": "3.1.0",
"minVersionTestedInclusive": "3.1.3.5",
- "maxVersionSupportedInclusive": "3.7.402.41",
- "maxVersionAvailableInclusive": "3.7.402.41",
- "maxVersionTestedInclusive": "3.7.402.41"
+ "maxVersionSupportedInclusive": "3.7.402.54",
+ "maxVersionAvailableInclusive": "3.7.402.54",
+ "maxVersionTestedInclusive": "3.7.402.54"
}
]
},
@@ -310,8 +310,8 @@
"minVersionAvailableInclusive": "3.1.0",
"minVersionSupportedInclusive": "3.1.0",
"minVersionTestedInclusive": null,
- "maxVersionSupportedInclusive": "3.7.400.64",
- "maxVersionAvailableInclusive": "3.7.400.64",
+ "maxVersionSupportedInclusive": "3.7.400.77",
+ "maxVersionAvailableInclusive": "3.7.400.77",
"maxVersionTestedInclusive": null
}
]
@@ -327,9 +327,9 @@
"minVersionAvailableInclusive": "3.1.0",
"minVersionSupportedInclusive": "3.1.0",
"minVersionTestedInclusive": "3.1.2.1",
- "maxVersionSupportedInclusive": "3.7.400.64",
- "maxVersionAvailableInclusive": "3.7.400.64",
- "maxVersionTestedInclusive": "3.7.400.64"
+ "maxVersionSupportedInclusive": "3.7.400.77",
+ "maxVersionAvailableInclusive": "3.7.400.77",
+ "maxVersionTestedInclusive": "3.7.400.77"
}
]
},
@@ -344,9 +344,9 @@
"minVersionAvailableInclusive": "3.1.0",
"minVersionSupportedInclusive": "3.1.0",
"minVersionTestedInclusive": "3.1.0.13",
- "maxVersionSupportedInclusive": "3.7.400.64",
- "maxVersionAvailableInclusive": "3.7.400.64",
- "maxVersionTestedInclusive": "3.7.400.64"
+ "maxVersionSupportedInclusive": "3.7.400.77",
+ "maxVersionAvailableInclusive": "3.7.400.77",
+ "maxVersionTestedInclusive": "3.7.400.77"
}
]
},
@@ -354,8 +354,18 @@
"integrationName": "AzureFunctions",
"assemblyName": "Microsoft.Azure.Functions.Worker.Core",
"minAssemblyVersionInclusive": "1.4.0",
- "maxAssemblyVersionInclusive": "1.65535.65535",
- "packages": []
+ "maxAssemblyVersionInclusive": "2.65535.65535",
+ "packages": [
+ {
+ "name": "Microsoft.Azure.Functions.Worker.Core",
+ "minVersionAvailableInclusive": "1.0.0",
+ "minVersionSupportedInclusive": "1.4.0",
+ "minVersionTestedInclusive": null,
+ "maxVersionSupportedInclusive": "2.0.0",
+ "maxVersionAvailableInclusive": "2.0.0",
+ "maxVersionTestedInclusive": null
+ }
+ ]
},
{
"integrationName": "AzureFunctions",
@@ -416,9 +426,9 @@
"minVersionAvailableInclusive": "3.0.0",
"minVersionSupportedInclusive": "3.6.0",
"minVersionTestedInclusive": "3.6.0",
- "maxVersionSupportedInclusive": "3.46.0",
- "maxVersionAvailableInclusive": "3.46.0",
- "maxVersionTestedInclusive": "3.46.0"
+ "maxVersionSupportedInclusive": "3.46.1",
+ "maxVersionAvailableInclusive": "3.46.1",
+ "maxVersionTestedInclusive": "3.46.1"
}
]
},
@@ -550,8 +560,8 @@
"minVersionAvailableInclusive": "3.0.0",
"minVersionSupportedInclusive": "3.0.0",
"minVersionTestedInclusive": null,
- "maxVersionSupportedInclusive": "3.29.1",
- "maxVersionAvailableInclusive": "3.29.1",
+ "maxVersionSupportedInclusive": "3.29.3",
+ "maxVersionAvailableInclusive": "3.29.3",
"maxVersionTestedInclusive": null
}
]
@@ -768,9 +778,9 @@
"minVersionAvailableInclusive": "0.0.1",
"minVersionSupportedInclusive": "1.4.0",
"minVersionTestedInclusive": "1.4.4",
- "maxVersionSupportedInclusive": "2.6.1",
- "maxVersionAvailableInclusive": "2.6.1",
- "maxVersionTestedInclusive": "2.6.1"
+ "maxVersionSupportedInclusive": "2.8.0",
+ "maxVersionAvailableInclusive": "2.8.0",
+ "maxVersionTestedInclusive": "2.8.0"
}
]
},
@@ -852,8 +862,8 @@
"minVersionAvailableInclusive": "1.1.11",
"minVersionSupportedInclusive": "1.1.11",
"minVersionTestedInclusive": null,
- "maxVersionSupportedInclusive": "3.6.4",
- "maxVersionAvailableInclusive": "3.6.4",
+ "maxVersionSupportedInclusive": "3.7.0",
+ "maxVersionAvailableInclusive": "3.7.0",
"maxVersionTestedInclusive": null
}
]
@@ -954,9 +964,9 @@
"minVersionAvailableInclusive": "2.5.7.10213",
"minVersionSupportedInclusive": "3.0.0",
"minVersionTestedInclusive": "3.6.1",
- "maxVersionSupportedInclusive": "4.3.0",
- "maxVersionAvailableInclusive": "4.3.0",
- "maxVersionTestedInclusive": "4.3.0"
+ "maxVersionSupportedInclusive": "4.3.2",
+ "maxVersionAvailableInclusive": "4.3.2",
+ "maxVersionTestedInclusive": "4.3.2"
}
]
},
@@ -1012,8 +1022,8 @@
"minVersionAvailableInclusive": "12.1.21",
"minVersionSupportedInclusive": "12.1.21",
"minVersionTestedInclusive": null,
- "maxVersionSupportedInclusive": "23.6.1",
- "maxVersionAvailableInclusive": "23.6.1",
+ "maxVersionSupportedInclusive": "23.7.0",
+ "maxVersionAvailableInclusive": "23.7.0",
"maxVersionTestedInclusive": null
}
]
@@ -1193,9 +1203,9 @@
"minVersionAvailableInclusive": "1.0.187",
"minVersionSupportedInclusive": "1.0.187",
"minVersionTestedInclusive": "1.0.488",
- "maxVersionSupportedInclusive": "2.8.22",
- "maxVersionAvailableInclusive": "2.8.22",
- "maxVersionTestedInclusive": "2.8.22"
+ "maxVersionSupportedInclusive": "2.8.24",
+ "maxVersionAvailableInclusive": "2.8.24",
+ "maxVersionTestedInclusive": "2.8.24"
}
]
},
@@ -1302,9 +1312,9 @@
"minVersionAvailableInclusive": "1.7.0.1540",
"minVersionSupportedInclusive": "2.2.0",
"minVersionTestedInclusive": "2.2.0",
- "maxVersionSupportedInclusive": "2.9.2",
- "maxVersionAvailableInclusive": "2.9.2",
- "maxVersionTestedInclusive": "2.9.2"
+ "maxVersionSupportedInclusive": "2.9.3",
+ "maxVersionAvailableInclusive": "2.9.3",
+ "maxVersionTestedInclusive": "2.9.3"
}
]
},
@@ -1319,8 +1329,8 @@
"minVersionAvailableInclusive": "2.0.0",
"minVersionSupportedInclusive": "2.2.0",
"minVersionTestedInclusive": null,
- "maxVersionSupportedInclusive": "2.9.2",
- "maxVersionAvailableInclusive": "2.9.2",
+ "maxVersionSupportedInclusive": "2.9.3",
+ "maxVersionAvailableInclusive": "2.9.3",
"maxVersionTestedInclusive": null
}
]
diff --git a/tracer/dependabot/Datadog.Dependabot.Integrations.csproj b/tracer/dependabot/Datadog.Dependabot.Integrations.csproj
index 54dfcb93af3e..8e1db2e60223 100644
--- a/tracer/dependabot/Datadog.Dependabot.Integrations.csproj
+++ b/tracer/dependabot/Datadog.Dependabot.Integrations.csproj
@@ -18,33 +18,33 @@
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
@@ -53,8 +53,8 @@
-
-
+
+
@@ -68,8 +68,8 @@
-
-
+
+
@@ -160,8 +160,13 @@
-
-
+
+
+
+
+
+
+
@@ -217,8 +222,8 @@
-
-
+
+
@@ -242,8 +247,8 @@
-
-
+
+
@@ -257,8 +262,8 @@
-
-
+
+
@@ -282,8 +287,8 @@
-
-
+
+
@@ -329,13 +334,13 @@
-
-
+
+
-
-
+
+
diff --git a/tracer/dependabot/Datadog.Dependabot.Vendors.csproj b/tracer/dependabot/Datadog.Dependabot.Vendors.csproj
index cefa00f782b0..57a26e75a5b2 100644
--- a/tracer/dependabot/Datadog.Dependabot.Vendors.csproj
+++ b/tracer/dependabot/Datadog.Dependabot.Vendors.csproj
@@ -1,11 +1,14 @@
- netcoreapp3.1
+ net8.0
Datadog.Dependabot.Honeypot
+
+
+
@@ -30,18 +33,24 @@
-
+
-
+
-
+
+
+
+
+
+
+
diff --git a/tracer/samples/AutomaticTraceIdInjection/Log4NetExample/Log4NetExample.csproj b/tracer/samples/AutomaticTraceIdInjection/Log4NetExample/Log4NetExample.csproj
index dc5e326c3749..1992ad11decc 100644
--- a/tracer/samples/AutomaticTraceIdInjection/Log4NetExample/Log4NetExample.csproj
+++ b/tracer/samples/AutomaticTraceIdInjection/Log4NetExample/Log4NetExample.csproj
@@ -7,7 +7,7 @@
-
+
diff --git a/tracer/samples/AutomaticTraceIdInjection/MicrosoftExtensionsExample/MicrosoftExtensionsExample.csproj b/tracer/samples/AutomaticTraceIdInjection/MicrosoftExtensionsExample/MicrosoftExtensionsExample.csproj
index 27519377cfe8..7fd97cea7caf 100644
--- a/tracer/samples/AutomaticTraceIdInjection/MicrosoftExtensionsExample/MicrosoftExtensionsExample.csproj
+++ b/tracer/samples/AutomaticTraceIdInjection/MicrosoftExtensionsExample/MicrosoftExtensionsExample.csproj
@@ -6,7 +6,7 @@
-
+
diff --git a/tracer/samples/AutomaticTraceIdInjection/NLog40Example/NLog40Example.csproj b/tracer/samples/AutomaticTraceIdInjection/NLog40Example/NLog40Example.csproj
index fab470a9e313..9d7424f75cc0 100644
--- a/tracer/samples/AutomaticTraceIdInjection/NLog40Example/NLog40Example.csproj
+++ b/tracer/samples/AutomaticTraceIdInjection/NLog40Example/NLog40Example.csproj
@@ -7,7 +7,7 @@
-
+
diff --git a/tracer/samples/AutomaticTraceIdInjection/NLog45Example/NLog45Example.csproj b/tracer/samples/AutomaticTraceIdInjection/NLog45Example/NLog45Example.csproj
index 82ebc289ff35..ea440a778b42 100644
--- a/tracer/samples/AutomaticTraceIdInjection/NLog45Example/NLog45Example.csproj
+++ b/tracer/samples/AutomaticTraceIdInjection/NLog45Example/NLog45Example.csproj
@@ -7,7 +7,7 @@
-
+
diff --git a/tracer/samples/AutomaticTraceIdInjection/NLog46Example/NLog46Example.csproj b/tracer/samples/AutomaticTraceIdInjection/NLog46Example/NLog46Example.csproj
index 4cc59859e86d..b6c485c2dade 100644
--- a/tracer/samples/AutomaticTraceIdInjection/NLog46Example/NLog46Example.csproj
+++ b/tracer/samples/AutomaticTraceIdInjection/NLog46Example/NLog46Example.csproj
@@ -7,7 +7,7 @@
-
+
diff --git a/tracer/samples/AutomaticTraceIdInjection/SerilogExample/SerilogExample.csproj b/tracer/samples/AutomaticTraceIdInjection/SerilogExample/SerilogExample.csproj
index 862ab0e31abc..4574f1e0970f 100644
--- a/tracer/samples/AutomaticTraceIdInjection/SerilogExample/SerilogExample.csproj
+++ b/tracer/samples/AutomaticTraceIdInjection/SerilogExample/SerilogExample.csproj
@@ -7,7 +7,7 @@
-
+
diff --git a/tracer/samples/ConsoleApp/Alpine3.10.dockerfile b/tracer/samples/ConsoleApp/Alpine3.10.dockerfile
index 118105bcc0e3..9e4657d190c5 100644
--- a/tracer/samples/ConsoleApp/Alpine3.10.dockerfile
+++ b/tracer/samples/ConsoleApp/Alpine3.10.dockerfile
@@ -16,7 +16,7 @@ COPY --from=build /app/out .
# Set up Datadog APM
RUN apk --no-cache update && apk add curl
-ARG TRACER_VERSION=3.7.0
+ARG TRACER_VERSION=3.8.0
RUN mkdir -p /var/log/datadog
RUN mkdir -p /opt/datadog
RUN curl -L https://github.com/DataDog/dd-trace-dotnet/releases/download/v${TRACER_VERSION}/datadog-dotnet-apm-${TRACER_VERSION}-musl.tar.gz \
diff --git a/tracer/samples/ConsoleApp/Alpine3.9.dockerfile b/tracer/samples/ConsoleApp/Alpine3.9.dockerfile
index 7c690836dc82..0f965151c22f 100644
--- a/tracer/samples/ConsoleApp/Alpine3.9.dockerfile
+++ b/tracer/samples/ConsoleApp/Alpine3.9.dockerfile
@@ -16,7 +16,7 @@ COPY --from=build /app/out .
# Set up Datadog APM
RUN apk --no-cache update && apk add curl
-ARG TRACER_VERSION=3.7.0
+ARG TRACER_VERSION=3.8.0
RUN mkdir -p /var/log/datadog
RUN mkdir -p /opt/datadog
RUN curl -L https://github.com/DataDog/dd-trace-dotnet/releases/download/v${TRACER_VERSION}/datadog-dotnet-apm-${TRACER_VERSION}-musl.tar.gz \
diff --git a/tracer/samples/ConsoleApp/Debian.dockerfile b/tracer/samples/ConsoleApp/Debian.dockerfile
index a3d1f8e6a4c7..e941afdaa270 100644
--- a/tracer/samples/ConsoleApp/Debian.dockerfile
+++ b/tracer/samples/ConsoleApp/Debian.dockerfile
@@ -15,7 +15,7 @@ WORKDIR /app
COPY --from=build /app/out .
# Set up Datadog APM
-ARG TRACER_VERSION=3.7.0
+ARG TRACER_VERSION=3.8.0
RUN mkdir -p /var/log/datadog
RUN mkdir -p /opt/datadog
RUN curl -LO https://github.com/DataDog/dd-trace-dotnet/releases/download/v${TRACER_VERSION}/datadog-dotnet-apm_${TRACER_VERSION}_amd64.deb
diff --git a/tracer/samples/OpenTelemetry/Debian.dockerfile b/tracer/samples/OpenTelemetry/Debian.dockerfile
index 3039e9ebb30d..82b34e0c4bf7 100644
--- a/tracer/samples/OpenTelemetry/Debian.dockerfile
+++ b/tracer/samples/OpenTelemetry/Debian.dockerfile
@@ -16,7 +16,7 @@ WORKDIR /app
COPY --from=build /app/out .
# Download the Datadog .NET Tracer
-ARG TRACER_VERSION=3.7.0
+ARG TRACER_VERSION=3.8.0
RUN mkdir -p /var/log/datadog
RUN mkdir -p /opt/datadog
RUN curl -LO https://github.com/DataDog/dd-trace-dotnet/releases/download/v${TRACER_VERSION}/datadog-dotnet-apm_${TRACER_VERSION}_amd64.deb
diff --git a/tracer/samples/ServiceFabricRemoting/WeatherService.NetCore31/WeatherService.NetCore31.csproj b/tracer/samples/ServiceFabricRemoting/WeatherService.NetCore31/WeatherService.NetCore31.csproj
index 0716d36a058f..4ecfb5349556 100644
--- a/tracer/samples/ServiceFabricRemoting/WeatherService.NetCore31/WeatherService.NetCore31.csproj
+++ b/tracer/samples/ServiceFabricRemoting/WeatherService.NetCore31/WeatherService.NetCore31.csproj
@@ -10,10 +10,10 @@
- Always
+ PreserveNewest
- Always
+ PreserveNewest
diff --git a/tracer/samples/ServiceFabricRemoting/WeatherService.NetFx461/WeatherService.NetFx461.csproj b/tracer/samples/ServiceFabricRemoting/WeatherService.NetFx461/WeatherService.NetFx461.csproj
index 658adab83763..384f051a335d 100644
--- a/tracer/samples/ServiceFabricRemoting/WeatherService.NetFx461/WeatherService.NetFx461.csproj
+++ b/tracer/samples/ServiceFabricRemoting/WeatherService.NetFx461/WeatherService.NetFx461.csproj
@@ -10,10 +10,10 @@
- Always
+ PreserveNewest
- Always
+ PreserveNewest
diff --git a/tracer/samples/ServiceFabricRemoting/WebApp/WebApp.csproj b/tracer/samples/ServiceFabricRemoting/WebApp/WebApp.csproj
index 016cb9e0705e..a53d81560d1f 100644
--- a/tracer/samples/ServiceFabricRemoting/WebApp/WebApp.csproj
+++ b/tracer/samples/ServiceFabricRemoting/WebApp/WebApp.csproj
@@ -9,10 +9,10 @@
- Always
+ PreserveNewest
- Always
+ PreserveNewest
diff --git a/tracer/samples/WindowsContainer/Dockerfile b/tracer/samples/WindowsContainer/Dockerfile
index 4d3da81f606f..c7ad6deb85cb 100644
--- a/tracer/samples/WindowsContainer/Dockerfile
+++ b/tracer/samples/WindowsContainer/Dockerfile
@@ -6,7 +6,7 @@
FROM mcr.microsoft.com/dotnet/aspnet:5.0-windowsservercore-ltsc2019 AS base
WORKDIR /app
-ARG TRACER_VERSION=3.7.0
+ARG TRACER_VERSION=3.8.0
ENV DD_TRACER_VERSION=$TRACER_VERSION
ENV ASPNETCORE_URLS=http://*.80
diff --git a/tracer/src/Datadog.Trace.BenchmarkDotNet/Datadog.Trace.BenchmarkDotNet.csproj b/tracer/src/Datadog.Trace.BenchmarkDotNet/Datadog.Trace.BenchmarkDotNet.csproj
index b088d1f1e4d9..d6d2bc5cab1f 100644
--- a/tracer/src/Datadog.Trace.BenchmarkDotNet/Datadog.Trace.BenchmarkDotNet.csproj
+++ b/tracer/src/Datadog.Trace.BenchmarkDotNet/Datadog.Trace.BenchmarkDotNet.csproj
@@ -1,7 +1,7 @@
- 3.8.0
+ 3.9.0
Datadog CI Visibility - BenchmarkDotNet
BenchmarkDotNet exporter for Datadog CI Visibility
enable
diff --git a/tracer/src/Datadog.Trace.Bundle/Datadog.Trace.Bundle.csproj b/tracer/src/Datadog.Trace.Bundle/Datadog.Trace.Bundle.csproj
index 2a1331d73955..b303a8a67649 100644
--- a/tracer/src/Datadog.Trace.Bundle/Datadog.Trace.Bundle.csproj
+++ b/tracer/src/Datadog.Trace.Bundle/Datadog.Trace.Bundle.csproj
@@ -1,7 +1,7 @@
- 3.8.0
+ 3.9.0
Datadog APM Auto-instrumentation Assets
Auto-instrumentation assets for Datadog APM
false
diff --git a/tracer/src/Datadog.Trace.ClrProfiler.Managed.Loader/Datadog.Trace.ClrProfiler.Managed.Loader.csproj b/tracer/src/Datadog.Trace.ClrProfiler.Managed.Loader/Datadog.Trace.ClrProfiler.Managed.Loader.csproj
index 4cbdaca89ca0..bf38e38a2aae 100644
--- a/tracer/src/Datadog.Trace.ClrProfiler.Managed.Loader/Datadog.Trace.ClrProfiler.Managed.Loader.csproj
+++ b/tracer/src/Datadog.Trace.ClrProfiler.Managed.Loader/Datadog.Trace.ClrProfiler.Managed.Loader.csproj
@@ -6,7 +6,7 @@
..\bin\ProfilerResources\
- 3.8.0
+ 3.9.0
false
diff --git a/tracer/src/Datadog.Trace.ClrProfiler.Managed.Loader/Startup.NetCore.cs b/tracer/src/Datadog.Trace.ClrProfiler.Managed.Loader/Startup.NetCore.cs
index 8bc690f88360..bebb9b738ae7 100644
--- a/tracer/src/Datadog.Trace.ClrProfiler.Managed.Loader/Startup.NetCore.cs
+++ b/tracer/src/Datadog.Trace.ClrProfiler.Managed.Loader/Startup.NetCore.cs
@@ -33,11 +33,11 @@ private static string ResolveManagedProfilerDirectory()
}
var tracerHomeDirectory = ReadEnvironmentVariable("DD_DOTNET_TRACER_HOME") ?? string.Empty;
- var fullPath = Path.Combine(tracerHomeDirectory, tracerFrameworkDirectory);
+ var fullPath = Path.GetFullPath(Path.Combine(tracerHomeDirectory, tracerFrameworkDirectory));
if (!Directory.Exists(fullPath))
{
- StartupLogger.Log($"The tracer home directory cannot be found at '{fullPath}', based on the DD_DOTNET_TRACER_HOME value '{tracerHomeDirectory}'");
+ StartupLogger.Log($"The tracer home directory cannot be found at '{fullPath}', based on the DD_DOTNET_TRACER_HOME value '{tracerHomeDirectory}' and current directory {Environment.CurrentDirectory}");
return null;
}
diff --git a/tracer/src/Datadog.Trace.ClrProfiler.Managed.Loader/Startup.NetFramework.cs b/tracer/src/Datadog.Trace.ClrProfiler.Managed.Loader/Startup.NetFramework.cs
index 5cebb1be71bc..9b504c1e8131 100644
--- a/tracer/src/Datadog.Trace.ClrProfiler.Managed.Loader/Startup.NetFramework.cs
+++ b/tracer/src/Datadog.Trace.ClrProfiler.Managed.Loader/Startup.NetFramework.cs
@@ -19,10 +19,10 @@ public partial class Startup
private static string ResolveManagedProfilerDirectory()
{
var tracerHomeDirectory = ReadEnvironmentVariable("DD_DOTNET_TRACER_HOME") ?? string.Empty;
- var fullPath = Path.Combine(tracerHomeDirectory, "net461");
+ var fullPath = Path.GetFullPath(Path.Combine(tracerHomeDirectory, "net461"));
if (!Directory.Exists(fullPath))
{
- StartupLogger.Log($"The tracer home directory cannot be found at '{fullPath}', based on the DD_DOTNET_TRACER_HOME value '{tracerHomeDirectory}'");
+ StartupLogger.Log($"The tracer home directory cannot be found at '{fullPath}', based on the DD_DOTNET_TRACER_HOME value '{tracerHomeDirectory}' and current directory {Environment.CurrentDirectory}");
return null;
}
diff --git a/tracer/src/Datadog.Trace.ClrProfiler.Managed.Loader/Startup.cs b/tracer/src/Datadog.Trace.ClrProfiler.Managed.Loader/Startup.cs
index 060c6b87e6a8..c32b977b8786 100644
--- a/tracer/src/Datadog.Trace.ClrProfiler.Managed.Loader/Startup.cs
+++ b/tracer/src/Datadog.Trace.ClrProfiler.Managed.Loader/Startup.cs
@@ -16,7 +16,7 @@ namespace Datadog.Trace.ClrProfiler.Managed.Loader
///
public partial class Startup
{
- private const string AssemblyName = "Datadog.Trace, Version=3.8.0.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb";
+ private const string AssemblyName = "Datadog.Trace, Version=3.9.0.0, Culture=neutral, PublicKeyToken=def86d061d0d2eeb";
private const string AzureAppServicesKey = "DD_AZURE_APP_SERVICES";
private static int _startupCtorInitialized;
diff --git a/tracer/src/Datadog.Trace.Coverage.collector/CoverageCollector.cs b/tracer/src/Datadog.Trace.Coverage.collector/CoverageCollector.cs
index 7c307339b042..0426b1f04c4b 100644
--- a/tracer/src/Datadog.Trace.Coverage.collector/CoverageCollector.cs
+++ b/tracer/src/Datadog.Trace.Coverage.collector/CoverageCollector.cs
@@ -183,7 +183,7 @@ private void ProcessFolder(string folder, SearchOption searchOption)
{
List? exceptions = null;
var remain = 3;
- Retry:
+ Retry:
if (--remain > 0)
{
try
@@ -305,9 +305,9 @@ private void ProcessFolder(string folder, SearchOption searchOption)
// Is not part of the spec but useful for support tickets.
// We try to extract session variables (from out of process sessions)
// and try to send a message to the IPC server for setting the test.code_coverage.injected tag.
- var extractedContext = SpanContextPropagator.Instance.Extract(
- EnvironmentHelpers.GetEnvironmentVariables(),
- new DictionaryGetterAndSetter(DictionaryGetterAndSetter.EnvironmentVariableKeyProcessor));
+ var extractedContext = Tracer.Instance.TracerManager.SpanContextPropagator.Extract(
+ EnvironmentHelpers.GetEnvironmentVariables(),
+ new DictionaryGetterAndSetter(DictionaryGetterAndSetter.EnvironmentVariableKeyProcessor));
if (extractedContext.SpanContext is { } sessionContext)
{
diff --git a/tracer/src/Datadog.Trace.MSBuild/Datadog.Trace.MSBuild.csproj b/tracer/src/Datadog.Trace.MSBuild/Datadog.Trace.MSBuild.csproj
index c811e498ba7f..8e5d918fd4ef 100644
--- a/tracer/src/Datadog.Trace.MSBuild/Datadog.Trace.MSBuild.csproj
+++ b/tracer/src/Datadog.Trace.MSBuild/Datadog.Trace.MSBuild.csproj
@@ -1,7 +1,7 @@
- 3.8.0
+ 3.9.0
- 3.8.0
+ 3.9.0
net461;netstandard2.0;netcoreapp3.1
Datadog.Trace
Datadog APM
diff --git a/tracer/src/Datadog.Trace.OpenTracing/Datadog.Trace.OpenTracing.csproj b/tracer/src/Datadog.Trace.OpenTracing/Datadog.Trace.OpenTracing.csproj
index 4232a591cb01..fef6ac8fa7fe 100644
--- a/tracer/src/Datadog.Trace.OpenTracing/Datadog.Trace.OpenTracing.csproj
+++ b/tracer/src/Datadog.Trace.OpenTracing/Datadog.Trace.OpenTracing.csproj
@@ -2,7 +2,7 @@
- 3.8.0
+ 3.9.0
Datadog APM - OpenTracing
Provides OpenTracing support for Datadog APM
$(PackageTags);OpenTracing
diff --git a/tracer/src/Datadog.Trace.SourceGenerators/InstrumentationDefinitions/AdoNetSignature.cs b/tracer/src/Datadog.Trace.SourceGenerators/InstrumentationDefinitions/AdoNetSignature.cs
index 4271f15187f6..701f0c6edace 100644
--- a/tracer/src/Datadog.Trace.SourceGenerators/InstrumentationDefinitions/AdoNetSignature.cs
+++ b/tracer/src/Datadog.Trace.SourceGenerators/InstrumentationDefinitions/AdoNetSignature.cs
@@ -3,19 +3,21 @@
// This product includes software developed at Datadog (https://www.datadoghq.com/). Copyright 2017 Datadog, Inc.
//
+using Datadog.Trace.ClrProfiler;
using Datadog.Trace.SourceGenerators.Helpers;
namespace Datadog.Trace.SourceGenerators.InstrumentationDefinitions;
internal record AdoNetSignature
{
- public AdoNetSignature(string targetMethodName, string? targetReturnType, string[] targetParameterTypes, string instrumentationTypeName, int callTargetIntegrationKind, int returnType)
+ public AdoNetSignature(string targetMethodName, string? targetReturnType, string[] targetParameterTypes, string instrumentationTypeName, int callTargetIntegrationKind, int returnType, InstrumentationCategory instrumentationCategory)
{
TargetMethodName = targetMethodName;
TargetReturnType = targetReturnType;
TargetParameterTypes = new(targetParameterTypes);
InstrumentationTypeName = instrumentationTypeName;
CallTargetIntegrationKind = callTargetIntegrationKind;
+ InstrumentationCategory = instrumentationCategory;
ReturnType = returnType;
}
@@ -29,5 +31,7 @@ public AdoNetSignature(string targetMethodName, string? targetReturnType, string
public int CallTargetIntegrationKind { get; }
+ public InstrumentationCategory InstrumentationCategory { get; }
+
public int ReturnType { get; }
}
diff --git a/tracer/src/Datadog.Trace.SourceGenerators/InstrumentationDefinitions/Constants.cs b/tracer/src/Datadog.Trace.SourceGenerators/InstrumentationDefinitions/Constants.cs
index 0632ba47fefa..2604250df780 100644
--- a/tracer/src/Datadog.Trace.SourceGenerators/InstrumentationDefinitions/Constants.cs
+++ b/tracer/src/Datadog.Trace.SourceGenerators/InstrumentationDefinitions/Constants.cs
@@ -36,6 +36,7 @@ public static class AdoNetSignatureAttributeProperties
public const string ParameterTypeNames = nameof(ParameterTypeNames);
public const string CallTargetType = nameof(CallTargetType);
public const string CallTargetIntegrationKind = nameof(CallTargetIntegrationKind);
+ public const string InstrumentationCategory = nameof(InstrumentationCategory);
public const string ReturnType = nameof(ReturnType);
}
diff --git a/tracer/src/Datadog.Trace.SourceGenerators/InstrumentationDefinitions/InstrumentationDefinitionsGenerator.cs b/tracer/src/Datadog.Trace.SourceGenerators/InstrumentationDefinitions/InstrumentationDefinitionsGenerator.cs
index 9c29e6ddaad2..2eb081df2328 100644
--- a/tracer/src/Datadog.Trace.SourceGenerators/InstrumentationDefinitions/InstrumentationDefinitionsGenerator.cs
+++ b/tracer/src/Datadog.Trace.SourceGenerators/InstrumentationDefinitions/InstrumentationDefinitionsGenerator.cs
@@ -366,6 +366,7 @@ private static Result> GetCallTargetD
int? integrationKind = null;
int? returnType = null;
string? callTargetType = null;
+ InstrumentationCategory instrumentationCategory = InstrumentationCategory.Tracing;
foreach (KeyValuePair namedArgument in attributeData.NamedArguments)
{
@@ -392,6 +393,9 @@ private static Result> GetCallTargetD
case nameof(Constants.AdoNetSignatureAttributeProperties.CallTargetIntegrationKind):
integrationKind = namedArgument.Value.Value as int?;
break;
+ case nameof(Constants.AdoNetSignatureAttributeProperties.InstrumentationCategory):
+ instrumentationCategory = (InstrumentationCategory)(namedArgument.Value.Value as uint?).GetValueOrDefault();
+ break;
case nameof(Constants.AdoNetSignatureAttributeProperties.ReturnType):
returnType = namedArgument.Value.Value as int?;
break;
@@ -457,6 +461,7 @@ private static Result> GetCallTargetD
targetParameterTypes: parameterTypeNames ?? Array.Empty(),
instrumentationTypeName: callTargetType!.ToString(),
callTargetIntegrationKind: integrationKind ?? 0,
+ instrumentationCategory: instrumentationCategory,
returnType: returnType ?? 0)));
}
@@ -702,7 +707,7 @@ private static Result> GetAss
instrumentationTypeName: signature.Signature.InstrumentationTypeName,
integrationKind: signature.Signature.CallTargetIntegrationKind,
isAdoNetIntegration: true,
- instrumentationCategory: InstrumentationCategory.Tracing);
+ instrumentationCategory: signature.Signature.InstrumentationCategory);
return new Result(callTargetSource, default);
}
diff --git a/tracer/src/Datadog.Trace.SourceGenerators/TelemetryMetric/Sources.Attributes.cs b/tracer/src/Datadog.Trace.SourceGenerators/TelemetryMetric/Sources.Attributes.cs
index bee0077c2984..da3b3a45d19f 100644
--- a/tracer/src/Datadog.Trace.SourceGenerators/TelemetryMetric/Sources.Attributes.cs
+++ b/tracer/src/Datadog.Trace.SourceGenerators/TelemetryMetric/Sources.Attributes.cs
@@ -122,7 +122,7 @@ public TelemetryMetricAttribute(string metricName)
/// which has a single tag
///
[System.AttributeUsage(System.AttributeTargets.Field, AllowMultiple = false)]
- internal class TelemetryMetricAttribute : System.Attribute
+ internal class TelemetryMetricAttribute : Datadog.Trace.SourceGenerators.TelemetryMetricAttribute
where TTag : System.Enum
{
///
@@ -132,10 +132,8 @@ internal class TelemetryMetricAttribute : System.Attribute
/// Is the metric a "common" metric, shared across languages?
/// The namespace of the metric, if not the default (Tracer)
public TelemetryMetricAttribute(string metricName, bool isCommon, string nameSpace)
+ : base(metricName, isCommon, nameSpace)
{
- MetricName = metricName;
- IsCommon = isCommon;
- NameSpace = nameSpace;
}
///
@@ -145,45 +143,119 @@ public TelemetryMetricAttribute(string metricName, bool isCommon, string nameSpa
/// The name of the metric, as reported to Datadog
/// Is the metric a "common" metric, shared across languages?
public TelemetryMetricAttribute(string metricName, bool isCommon)
- : this(metricName, isCommon, null!)
+ : base(metricName, isCommon, null!)
{
}
///
/// Initializes a new instance of the class.
- /// Uses the default namespace and sets to true
+ /// Uses the default namespace and sets to true
///
/// The name of the metric, as reported to Datadog
public TelemetryMetricAttribute(string metricName)
- : this(metricName, isCommon: true, null!)
+ : base(metricName, isCommon: true, null!)
{
}
+ }
+ ///
+ /// Used to describe a specific metric defined as a field
+ /// inside an enum decorated with
+ /// which has two tags
+ ///
+ [System.AttributeUsage(System.AttributeTargets.Field, AllowMultiple = false)]
+ internal class TelemetryMetricAttribute : Datadog.Trace.SourceGenerators.TelemetryMetricAttribute
+ where TTag1 : System.Enum
+ where TTag2 : System.Enum
+ {
///
- /// Gets the name of the metric, as reported to Datadog
+ /// Initializes a new instance of the class.
///
- public string MetricName { get; }
+ /// The name of the metric, as reported to Datadog
+ /// Is the metric a "common" metric, shared across languages?
+ /// The namespace of the metric, if not the default (Tracer)
+ public TelemetryMetricAttribute(string metricName, bool isCommon, string nameSpace)
+ : base(metricName, isCommon, nameSpace)
+ {
+ }
///
- /// Gets a value indicating whether the metric a "common" metric, shared across languages?
+ /// Initializes a new instance of the class.
+ /// Uses the default namespace
///
- public bool IsCommon { get; }
+ /// The name of the metric, as reported to Datadog
+ /// Is the metric a "common" metric, shared across languages?
+ public TelemetryMetricAttribute(string metricName, bool isCommon)
+ : base(metricName, isCommon, null!)
+ {
+ }
///
- /// Gets the namespace of the metric, if not the default (Tracer)
+ /// Initializes a new instance of the class.
+ /// Uses the default namespace and sets to true
///
- public string? NameSpace { get; }
+ /// The name of the metric, as reported to Datadog
+ public TelemetryMetricAttribute(string metricName)
+ : base(metricName, isCommon: true, null!)
+ {
+ }
}
+
+ ///
+ /// Used to describe a specific metric defined as a field
+ /// inside an enum decorated with
+ /// which has two tags
+ ///
+ [System.AttributeUsage(System.AttributeTargets.Field, AllowMultiple = false)]
+ internal class TelemetryMetricAttribute : Datadog.Trace.SourceGenerators.TelemetryMetricAttribute
+ where TTag1 : System.Enum
+ where TTag2 : System.Enum
+ where TTag3 : System.Enum
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The name of the metric, as reported to Datadog
+ /// Is the metric a "common" metric, shared across languages?
+ /// The namespace of the metric, if not the default (Tracer)
+ public TelemetryMetricAttribute(string metricName, bool isCommon, string nameSpace)
+ : base(metricName, isCommon, nameSpace)
+ {
+ }
+ ///
+ /// Initializes a new instance of the class.
+ /// Uses the default namespace
+ ///
+ /// The name of the metric, as reported to Datadog
+ /// Is the metric a "common" metric, shared across languages?
+ public TelemetryMetricAttribute(string metricName, bool isCommon)
+ : base(metricName, isCommon, null!)
+ {
+ }
+
+ ///
+ /// Initializes a new instance of the class.
+ /// Uses the default namespace and sets to true
+ ///
+ /// The name of the metric, as reported to Datadog
+ public TelemetryMetricAttribute(string metricName)
+ : base(metricName, isCommon: true, null!)
+ {
+ }
+ }
+
///
/// Used to describe a specific metric defined as a field
/// inside an enum decorated with
/// which has two tags
///
[System.AttributeUsage(System.AttributeTargets.Field, AllowMultiple = false)]
- internal class TelemetryMetricAttribute : System.Attribute
+ internal class TelemetryMetricAttribute : Datadog.Trace.SourceGenerators.TelemetryMetricAttribute
where TTag1 : System.Enum
where TTag2 : System.Enum
+ where TTag3 : System.Enum
+ where TTag4 : System.Enum
{
///
/// Initializes a new instance of the class.
@@ -192,10 +264,8 @@ internal class TelemetryMetricAttribute : System.Attribute
/// Is the metric a "common" metric, shared across languages?
/// The namespace of the metric, if not the default (Tracer)
public TelemetryMetricAttribute(string metricName, bool isCommon, string nameSpace)
+ : base(metricName, isCommon, nameSpace)
{
- MetricName = metricName;
- IsCommon = isCommon;
- NameSpace = nameSpace;
}
///
@@ -205,34 +275,112 @@ public TelemetryMetricAttribute(string metricName, bool isCommon, string nameSpa
/// The name of the metric, as reported to Datadog
/// Is the metric a "common" metric, shared across languages?
public TelemetryMetricAttribute(string metricName, bool isCommon)
- : this(metricName, isCommon, null!)
+ : base(metricName, isCommon, null!)
{
}
///
/// Initializes a new instance of the class.
- /// Uses the default namespace and sets to true
+ /// Uses the default namespace and sets to true
///
/// The name of the metric, as reported to Datadog
public TelemetryMetricAttribute(string metricName)
- : this(metricName, isCommon: true, null!)
+ : base(metricName, isCommon: true, null!)
+ {
+ }
+ }
+
+ ///
+ /// Used to describe a specific metric defined as a field
+ /// inside an enum decorated with
+ /// which has two tags
+ ///
+ [System.AttributeUsage(System.AttributeTargets.Field, AllowMultiple = false)]
+ internal class TelemetryMetricAttribute : Datadog.Trace.SourceGenerators.TelemetryMetricAttribute
+ where TTag1 : System.Enum
+ where TTag2 : System.Enum
+ where TTag3 : System.Enum
+ where TTag4 : System.Enum
+ where TTag5 : System.Enum
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The name of the metric, as reported to Datadog
+ /// Is the metric a "common" metric, shared across languages?
+ /// The namespace of the metric, if not the default (Tracer)
+ public TelemetryMetricAttribute(string metricName, bool isCommon, string nameSpace)
+ : base(metricName, isCommon, nameSpace)
{
}
///
- /// Gets the name of the metric, as reported to Datadog
+ /// Initializes a new instance of the class.
+ /// Uses the default namespace
///
- public string MetricName { get; }
+ /// The name of the metric, as reported to Datadog
+ /// Is the metric a "common" metric, shared across languages?
+ public TelemetryMetricAttribute(string metricName, bool isCommon)
+ : base(metricName, isCommon, null!)
+ {
+ }
///
- /// Gets a value indicating whether the metric a "common" metric, shared across languages?
+ /// Initializes a new instance of the class.
+ /// Uses the default namespace and sets to true
///
- public bool IsCommon { get; }
+ /// The name of the metric, as reported to Datadog
+ public TelemetryMetricAttribute(string metricName)
+ : base(metricName, isCommon: true, null!)
+ {
+ }
+ }
+
+ ///
+ /// Used to describe a specific metric defined as a field
+ /// inside an enum decorated with
+ /// which has two tags
+ ///
+ [System.AttributeUsage(System.AttributeTargets.Field, AllowMultiple = false)]
+ internal class TelemetryMetricAttribute : Datadog.Trace.SourceGenerators.TelemetryMetricAttribute
+ where TTag1 : System.Enum
+ where TTag2 : System.Enum
+ where TTag3 : System.Enum
+ where TTag4 : System.Enum
+ where TTag5 : System.Enum
+ where TTag6 : System.Enum
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The name of the metric, as reported to Datadog
+ /// Is the metric a "common" metric, shared across languages?
+ /// The namespace of the metric, if not the default (Tracer)
+ public TelemetryMetricAttribute(string metricName, bool isCommon, string nameSpace)
+ : base(metricName, isCommon, nameSpace)
+ {
+ }
///
- /// Gets the namespace of the metric, if not the default (Tracer)
+ /// Initializes a new instance of the class.
+ /// Uses the default namespace
///
- public string? NameSpace { get; }
+ /// The name of the metric, as reported to Datadog
+ /// Is the metric a "common" metric, shared across languages?
+ public TelemetryMetricAttribute(string metricName, bool isCommon)
+ : base(metricName, isCommon, null!)
+ {
+ }
+
+ ///
+ /// Initializes a new instance of the class.
+ /// Uses the default namespace and sets to true
+ ///
+ /// The name of the metric, as reported to Datadog
+ public TelemetryMetricAttribute(string metricName)
+ : base(metricName, isCommon: true, null!)
+ {
+ }
}
""";
}
diff --git a/tracer/src/Datadog.Trace.SourceGenerators/TelemetryMetric/Sources.cs b/tracer/src/Datadog.Trace.SourceGenerators/TelemetryMetric/Sources.cs
index a84981ec4da1..68c3cab96e6d 100644
--- a/tracer/src/Datadog.Trace.SourceGenerators/TelemetryMetric/Sources.cs
+++ b/tracer/src/Datadog.Trace.SourceGenerators/TelemetryMetric/Sources.cs
@@ -97,28 +97,15 @@ internal partial interface IMetricsTelemetryCollector
sb.AppendLine();
var (property, metric) = names[i];
- if (metric.Tag2FullyQualifiedName is { } tagName2)
- {
- var tagName1 = metric.Tag1FullyQualifiedName!;
- sb.AppendLine(
- $$"""
- public void Record{{details.ShortName}}{{property}}({{tagName1}} tag1, {{tagName2}} tag2, int increment = 1);
- """);
- }
- else if (metric.Tag1FullyQualifiedName is { } tagName)
- {
- sb.AppendLine(
- $$"""
- public void Record{{details.ShortName}}{{property}}({{tagName}} tag, int increment = 1);
- """);
- }
- else
- {
- sb.AppendLine(
- $$"""
- public void Record{{details.ShortName}}{{property}}(int increment = 1);
- """);
- }
+ sb.Append(
+ $$"""
+ public void Record{{details.ShortName}}{{property}}(
+ """);
+
+ var array = metric.TagFullyQualifiedNames.AsArray() ?? [];
+ WriteTagArgList(sb, array);
+
+ sb.AppendLine("int increment = 1);");
}
}
@@ -153,28 +140,15 @@ internal partial interface IMetricsTelemetryCollector
sb.AppendLine();
var (property, metric) = names[i];
- if (metric.Tag2FullyQualifiedName is { } tagName2)
- {
- var tagName1 = metric.Tag1FullyQualifiedName!;
- sb.AppendLine(
- $$"""
- public void Record{{details.ShortName}}{{property}}({{tagName1}} tag1, {{tagName2}} tag2, int value);
- """);
- }
- else if (metric.Tag1FullyQualifiedName is { } tagName)
- {
- sb.AppendLine(
- $$"""
- public void Record{{details.ShortName}}{{property}}({{tagName}} tag, int value);
- """);
- }
- else
- {
- sb.AppendLine(
- $$"""
- public void Record{{details.ShortName}}{{property}}(int value);
- """);
- }
+ sb.Append(
+ $$"""
+ public void Record{{details.ShortName}}{{property}}(
+ """);
+
+ var array = metric.TagFullyQualifiedNames.AsArray() ?? [];
+ WriteTagArgList(sb, array);
+
+ sb.AppendLine("int value);");
}
}
@@ -209,28 +183,15 @@ internal partial interface IMetricsTelemetryCollector
sb.AppendLine();
var (property, metric) = names[i];
- if (metric.Tag2FullyQualifiedName is { } tagName2)
- {
- var tagName1 = metric.Tag1FullyQualifiedName!;
- sb.AppendLine(
- $$"""
- public void Record{{details.ShortName}}{{property}}({{tagName1}} tag1, {{tagName2}} tag2, double value);
- """);
- }
- else if (metric.Tag1FullyQualifiedName is { } tagName)
- {
- sb.AppendLine(
- $$"""
- public void Record{{details.ShortName}}{{property}}({{tagName}} tag, double value);
- """);
- }
- else
- {
- sb.AppendLine(
- $$"""
- public void Record{{details.ShortName}}{{property}}(double value);
- """);
- }
+ sb.Append(
+ $$"""
+ public void Record{{details.ShortName}}{{property}}(
+ """);
+
+ var array = metric.TagFullyQualifiedNames.AsArray() ?? [];
+ WriteTagArgList(sb, array);
+
+ sb.AppendLine("double value);");
}
}
@@ -760,38 +721,13 @@ internal partial class {{collectorName}}
var (property, metric) = names[i];
var index = metricsToLocation[i];
- if (metric.Tag2FullyQualifiedName is { } tagName2)
+ if (doRecord)
{
- if (doRecord)
- {
- WriteRecordCount(sb, in details, property, index, metric.Tag1FullyQualifiedName!, tagName2, enumDictionary[tagName2].Count);
- }
- else
- {
- WriteNoopCount(sb, in details, property, metric.Tag1FullyQualifiedName!, tagName2);
- }
- }
- else if (metric.Tag1FullyQualifiedName is { } tagName)
- {
- if (doRecord)
- {
- WriteRecordCount(sb, in details, property, index, tagName);
- }
- else
- {
- WriteNoopCount(sb, in details, property, tagName);
- }
+ WriteRecordCount(sb, in details, property, index, metric.TagFullyQualifiedNames, enumDictionary);
}
else
{
- if (doRecord)
- {
- WriteRecordCount(sb, details, property, index);
- }
- else
- {
- WriteNoopCount(sb, in details, property);
- }
+ WriteNoopCount(sb, in details, property, metric.TagFullyQualifiedNames, enumDictionary);
}
}
}
@@ -860,38 +796,13 @@ internal partial class {{collectorName}}
var (property, metric) = names[i];
var index = metricsToLocation[i];
- if (metric.Tag2FullyQualifiedName is { } tagName2)
- {
- if (doRecord)
- {
- WriteRecordGauge(sb, in details, property, index, metric.Tag1FullyQualifiedName!, tagName2, enumDictionary[tagName2].Count);
- }
- else
- {
- WriteNoopGauge(sb, in details, property, metric.Tag1FullyQualifiedName!, tagName2);
- }
- }
- else if (metric.Tag1FullyQualifiedName is { } tagName)
+ if (doRecord)
{
- if (doRecord)
- {
- WriteRecordGauge(sb, in details, property, index, tagName);
- }
- else
- {
- WriteNoopGauge(sb, in details, property, tagName);
- }
+ WriteRecordGauge(sb, in details, property, index, metric.TagFullyQualifiedNames, enumDictionary);
}
else
{
- if (doRecord)
- {
- WriteRecordGauge(sb, details, property, index);
- }
- else
- {
- WriteNoopGauge(sb, in details, property);
- }
+ WriteNoopGauge(sb, in details, property, metric.TagFullyQualifiedNames, enumDictionary);
}
}
}
@@ -959,38 +870,13 @@ internal partial class {{collectorName}}
var (property, metric) = names[i];
var index = metricsToLocation[i];
- if (metric.Tag2FullyQualifiedName is { } tagName2)
+ if (doRecord)
{
- if (doRecord)
- {
- WriteRecordDistribution(sb, in details, property, index, metric.Tag1FullyQualifiedName!, tagName2, enumDictionary[tagName2].Count);
- }
- else
- {
- WriteNoopDistribution(sb, in details, property, metric.Tag1FullyQualifiedName!, tagName2);
- }
- }
- else if (metric.Tag1FullyQualifiedName is { } tagName)
- {
- if (doRecord)
- {
- WriteRecordDistribution(sb, in details, property, index, tagName);
- }
- else
- {
- WriteNoopDistribution(sb, in details, property, tagName);
- }
+ WriteRecordDistribution(sb, in details, property, index, metric.TagFullyQualifiedNames, enumDictionary);
}
else
{
- if (doRecord)
- {
- WriteRecordDistribution(sb, details, property, index);
- }
- else
- {
- WriteNoopDistribution(sb, in details, property);
- }
+ WriteNoopDistribution(sb, in details, property, metric.TagFullyQualifiedNames, enumDictionary);
}
}
}
@@ -1027,69 +913,96 @@ private static void AddAggregatedMetrics(StringBuilder sb, in TelemetryMetricGen
return;
}
- var i = 0;
+ var index = 0;
foreach (var (_, metric) in names)
{
sb.AppendLine(
$$"""
- // {{metric.MetricName}}, index = {{i}}
+ // {{metric.MetricName}}, index = {{index}}
""");
const string prefix =
"""
new(
""";
- if (metric.Tag1FullyQualifiedName is { } tag1Type && enumDictionary[tag1Type].AsArray() is { } tag1Values)
+
+ // Write the cartesian product of all the arrays
+ var tags = metric.TagFullyQualifiedNames.AsArray() ?? [];
+ List tagValues = new(tags.Length);
+ bool haveTags = false;
+
+ foreach (var tag in tags)
{
- foreach (var tag1Value in tag1Values)
+ var values = enumDictionary[tag].AsArray() ?? [];
+ tagValues.Add([..values]);
+ haveTags |= values.Length > 0;
+ }
+
+ if (haveTags)
+ {
+ // Could reduce allocations here, e.g. use stackalloc, but in a loop so meh
+ var indices = new int[tagValues.Count];
+ while (true)
{
- if (metric.Tag2FullyQualifiedName is { } tag2Type && enumDictionary[tag2Type].AsArray() is { } tag2Values)
+ index++;
+ // Build the current combination
+ // if every entry is empty, we write null instead of an array
+ // so need to check first
+ bool haveNonNullValues = false;
+ for (var i = 0; i < tagValues.Count; i++)
{
- foreach (var tag2Value in tag2Values)
+ if (!string.IsNullOrEmpty(tagValues[i][indices[i]]))
{
- i++;
- sb.Append(prefix);
-
- if (string.IsNullOrEmpty(tag1Value) && string.IsNullOrEmpty(tag2Value))
- {
- sb.AppendLine("null),");
- continue;
- }
-
- sb.Append("new[] { ");
-
- WriteAllValues(sb, tag1Value);
- WriteAllValues(sb, tag2Value);
+ haveNonNullValues = true;
+ break;
+ }
+ }
- sb.Remove(sb.Length - 2, 2); // remove the final ', '
- sb.AppendLine(" }),");
+ if (haveNonNullValues)
+ {
+ // write the full set
+ sb.Append($$"""{{prefix}}new[] { """);
+ for (var i = 0; i < tagValues.Count; i++)
+ {
+ WriteAllValues(sb, tagValues[i][indices[i]]);
}
+
+ sb.Remove(sb.Length - 2, 2); // remove the final ', '
+ sb.AppendLine(" }),");
}
else
{
- i++;
- sb.Append(prefix);
+ // no non-empty tags
+ sb.AppendLine($$"""{{prefix}}null),""");
+ }
- if (string.IsNullOrEmpty(tag1Value))
+ // Advance to the next combination
+ var incrementIndex = tagValues.Count - 1;
+ while (incrementIndex >= 0)
+ {
+ indices[incrementIndex]++;
+ if (indices[incrementIndex] < tagValues[incrementIndex].Length)
{
- sb.AppendLine("null),");
- continue;
+ // We've successfully incremented this index, so we're ready to write the next combo
+ break;
}
- sb.Append("new[] { ");
-
- WriteAllValues(sb, tag1Value);
+ // we went off the end, so reset, and increment the first tag
+ indices[incrementIndex] = 0;
+ incrementIndex--;
+ }
- sb.Remove(sb.Length - 2, 2); // remove the final ', '
- sb.AppendLine(" }),");
+ // If we've wrapped around at the first index, we're done
+ if (incrementIndex < 0)
+ {
+ break;
}
}
}
else
{
- i++;
- sb
- .Append(prefix)
- .AppendLine("null),");
+ // no tags
+ index++;
+ sb.AppendLine($$"""{{prefix}}null),""");
}
}
@@ -1160,196 +1073,311 @@ private static string GetValues(
return sb.ToString();
}
- private static void WriteRecordCount(StringBuilder sb, in TelemetryMetricGenerator.EnumDetails details, string property, int index)
+ private static void WriteRecordCount(StringBuilder sb, in TelemetryMetricGenerator.EnumDetails details, string property, int index, EquatableArray tagNames, Dictionary> enumDictionary)
{
- sb.AppendLine(
+ var tagArray = tagNames.AsArray() ?? [];
+ if (tagArray.Length == 0)
+ {
+ // we don't need to keep this separate technically, could easily inline it, but it would change the generated code
+ // very slightly (though the IL will remain the same)
+
+ sb.AppendLine(
+ $$"""
+ public void Record{{details.ShortName}}{{property}}(int increment = 1)
+ {
+ Interlocked.Add(ref _buffer.{{details.ShortName}}[{{index}}], increment);
+ }
+ """);
+ return;
+ }
+
+ // Produces something similar to this:
+ // public void Record{{details.ShortName}}{{property}}({{tagName1}} tag1, {{tagName2}} tag2, int increment = 1)
+ // {
+ // var index = {{index}} + ((int)tag1 * {{tag2EntryCount}}) + (int)tag2;
+ // Interlocked.Add(ref _buffer.{{details.ShortName}}[index], increment);
+ // }
+
+ sb.Append(
$$"""
- public void Record{{details.ShortName}}{{property}}(int increment = 1)
- {
- Interlocked.Add(ref _buffer.{{details.ShortName}}[{{index}}], increment);
- }
+ public void Record{{details.ShortName}}{{property}}(
""");
- }
- private static void WriteRecordCount(StringBuilder sb, in TelemetryMetricGenerator.EnumDetails details, string property, int index, string tagName)
- {
- sb.AppendLine(
+ WriteTagArgList(sb, tagArray);
+
+ sb.Append(
$$"""
- public void Record{{details.ShortName}}{{property}}({{tagName}} tag, int increment = 1)
+ int increment = 1)
{
- var index = {{index}} + (int)tag;
- Interlocked.Add(ref _buffer.{{details.ShortName}}[index], increment);
- }
+ var index = {{index}}
""");
- }
- private static void WriteRecordCount(StringBuilder sb, in TelemetryMetricGenerator.EnumDetails details, string property, int index, string tagName1, string tagName2, int tag2EntryCount)
- {
+ WriteTagIndices(sb, enumDictionary, tagArray);
+
sb.AppendLine(
$$"""
- public void Record{{details.ShortName}}{{property}}({{tagName1}} tag1, {{tagName2}} tag2, int increment = 1)
- {
- var index = {{index}} + ((int)tag1 * {{tag2EntryCount}}) + (int)tag2;
+ ;
Interlocked.Add(ref _buffer.{{details.ShortName}}[index], increment);
}
""");
}
- private static void WriteRecordGauge(StringBuilder sb, in TelemetryMetricGenerator.EnumDetails details, string property, int index)
+ private static void WriteRecordGauge(StringBuilder sb, in TelemetryMetricGenerator.EnumDetails details, string property, int index, EquatableArray tagNames, Dictionary> enumDictionary)
{
- sb.AppendLine(
+ var tagArray = tagNames.AsArray() ?? [];
+ if (tagArray.Length == 0)
+ {
+ // we don't need to keep this separate technically, could easily inline it, but it would change the generated code
+ // very slightly (though the IL will remain the same)
+
+ sb.AppendLine(
+ $$"""
+ public void Record{{details.ShortName}}{{property}}(int value)
+ {
+ Interlocked.Exchange(ref _buffer.{{details.ShortName}}[{{index}}], value);
+ }
+ """);
+ return;
+ }
+
+ // Produces something similar to this:
+ // public void Record{{details.ShortName}}{{property}}({{tagName1}} tag1, {{tagName2}} tag2, int value)
+ // {
+ // var index = {{index}} + ((int)tag1 * {{tag2EntryCount}}) + (int)tag2;
+ // Interlocked.Exchange(ref _buffer.{{details.ShortName}}[index], value);
+ // }
+
+ sb.Append(
$$"""
- public void Record{{details.ShortName}}{{property}}(int value)
- {
- Interlocked.Exchange(ref _buffer.{{details.ShortName}}[{{index}}], value);
- }
+ public void Record{{details.ShortName}}{{property}}(
""");
- }
- private static void WriteRecordGauge(StringBuilder sb, in TelemetryMetricGenerator.EnumDetails details, string property, int index, string tagName)
- {
- sb.AppendLine(
+ WriteTagArgList(sb, tagArray);
+
+ sb.Append(
$$"""
- public void Record{{details.ShortName}}{{property}}({{tagName}} tag, int value)
+ int value)
{
- var index = {{index}} + (int)tag;
- Interlocked.Exchange(ref _buffer.{{details.ShortName}}[index], value);
- }
+ var index = {{index}}
""");
- }
- private static void WriteRecordGauge(StringBuilder sb, in TelemetryMetricGenerator.EnumDetails details, string property, int index, string tagName1, string tagName2, int tag2EntryCount)
- {
+ WriteTagIndices(sb, enumDictionary, tagArray);
+
sb.AppendLine(
$$"""
- public void Record{{details.ShortName}}{{property}}({{tagName1}} tag1, {{tagName2}} tag2, int value)
- {
- var index = {{index}} + ((int)tag1 * {{tag2EntryCount}}) + (int)tag2;
+ ;
Interlocked.Exchange(ref _buffer.{{details.ShortName}}[index], value);
}
""");
}
- private static void WriteRecordDistribution(StringBuilder sb, in TelemetryMetricGenerator.EnumDetails details, string property, int index)
+ private static void WriteRecordDistribution(StringBuilder sb, in TelemetryMetricGenerator.EnumDetails details, string property, int index, EquatableArray tagNames, Dictionary> enumDictionary)
{
- sb.AppendLine(
+ var tagArray = tagNames.AsArray() ?? [];
+ if (tagArray.Length == 0)
+ {
+ // we don't need to keep this separate technically, could easily inline it, but it would change the generated code
+ // very slightly (though the IL will remain the same)
+ sb.AppendLine(
+ $$"""
+ public void Record{{details.ShortName}}{{property}}(double value)
+ {
+ _buffer.{{details.ShortName}}[{{index}}].TryEnqueue(value);
+ }
+ """);
+ return;
+ }
+
+ // Produces something similar to this:
+ // public void Record{{details.ShortName}}{{property}}({{tagName1}} tag1, {{tagName2}} tag2, int value)
+ // {
+ // var index = {{index}} + ((int)tag1 * {{tag2EntryCount}}) + (int)tag2;
+ // Interlocked.Exchange(ref _buffer.{{details.ShortName}}[index], value);
+ // }
+
+ sb.Append(
$$"""
- public void Record{{details.ShortName}}{{property}}(double value)
- {
- _buffer.{{details.ShortName}}[{{index}}].TryEnqueue(value);
- }
+ public void Record{{details.ShortName}}{{property}}(
""");
- }
- private static void WriteRecordDistribution(StringBuilder sb, in TelemetryMetricGenerator.EnumDetails details, string property, int index, string tagName)
- {
- sb.AppendLine(
+ WriteTagArgList(sb, tagArray);
+
+ sb.Append(
$$"""
- public void Record{{details.ShortName}}{{property}}({{tagName}} tag, double value)
+ double value)
{
- var index = {{index}} + (int)tag;
- _buffer.{{details.ShortName}}[index].TryEnqueue(value);
- }
+ var index = {{index}}
""");
- }
- private static void WriteRecordDistribution(StringBuilder sb, in TelemetryMetricGenerator.EnumDetails details, string property, int index, string tagName1, string tagName2, int tag2EntryCount)
- {
+ WriteTagIndices(sb, enumDictionary, tagArray);
+
sb.AppendLine(
$$"""
- public void Record{{details.ShortName}}{{property}}({{tagName1}} tag1, {{tagName2}} tag2, double value)
- {
- var index = {{index}} + ((int)tag1 * {{tag2EntryCount}}) + (int)tag2;
+ ;
_buffer.{{details.ShortName}}[index].TryEnqueue(value);
}
""");
}
- private static void WriteNoopCount(StringBuilder sb, in TelemetryMetricGenerator.EnumDetails details, string property)
+ private static void WriteTagArgList(StringBuilder sb, string[] tagArray)
{
- sb.AppendLine(
- $$"""
- public void Record{{details.ShortName}}{{property}}(int increment = 1)
- {
- }
- """);
- }
+ for (var i = 0; i < tagArray.Length; i++)
+ {
+ sb.Append(tagArray[i])
+ .Append(" tag");
- private static void WriteNoopCount(StringBuilder sb, in TelemetryMetricGenerator.EnumDetails details, string property, string tagName)
- {
- sb.AppendLine(
- $$"""
- public void Record{{details.ShortName}}{{property}}({{tagName}} tag, int increment = 1)
- {
- }
- """);
+ if (tagArray.Length > 1)
+ {
+ sb.Append(i + 1);
+ }
+
+ sb.Append(", ");
+ }
}
- private static void WriteNoopCount(StringBuilder sb, in TelemetryMetricGenerator.EnumDetails details, string property, string tagName1, string tagName2)
+ private static void WriteTagIndices(StringBuilder sb, Dictionary> enumDictionary, string[] tagArray)
{
- sb.AppendLine(
- $$"""
- public void Record{{details.ShortName}}{{property}}({{tagName1}} tag1, {{tagName2}} tag2, int increment = 1)
- {
- }
- """);
+ if (tagArray.Length == 0)
+ {
+ return;
+ }
+
+ Span multipliers = stackalloc int[tagArray.Length];
+ var indexer = 1;
+
+ // set the multipliers for each tag
+ for (var i = tagArray.Length - 1; i >= 0; i--)
+ {
+ multipliers[i] = indexer;
+ indexer *= enumDictionary.TryGetValue(tagArray[i], out var entries) ? entries.Count : 1;
+ }
+
+ for (var i = 0; i < tagArray.Length; i++)
+ {
+ var multiplier = multipliers[i];
+ if (multiplier == 1)
+ {
+ sb.Append(" + (int)tag");
+
+ if (tagArray.Length > 1)
+ {
+ sb.Append(i + 1);
+ }
+ }
+ else
+ {
+ sb.Append(" + ((int)tag")
+ .Append(i + 1)
+ .Append(" * ")
+ .Append(multiplier)
+ .Append(')');
+ }
+ }
}
- private static void WriteNoopGauge(StringBuilder sb, in TelemetryMetricGenerator.EnumDetails details, string property)
+ private static void WriteNoopCount(StringBuilder sb, in TelemetryMetricGenerator.EnumDetails details, string property, EquatableArray tagNames, Dictionary> enumDictionary)
{
- sb.AppendLine(
+ var tagArray = tagNames.AsArray() ?? [];
+ if (tagArray.Length == 0)
+ {
+ // we don't need to keep this separate technically, could easily inline it, but it would change the generated code
+ // very slightly (though the IL will remain the same)
+ sb.AppendLine(
+ $$"""
+ public void Record{{details.ShortName}}{{property}}(int increment = 1)
+ {
+ }
+ """);
+ return;
+ }
+
+ // Produces something similar to this:
+ // public void Record{{details.ShortName}}{{property}}({{tagName1}} tag1, {{tagName2}} tag2, int increment = 1)
+ // {
+ // }
+
+ sb.Append(
$$"""
- public void Record{{details.ShortName}}{{property}}(int value)
- {
- }
+ public void Record{{details.ShortName}}{{property}}(
""");
- }
- private static void WriteNoopGauge(StringBuilder sb, in TelemetryMetricGenerator.EnumDetails details, string property, string tagName)
- {
+ WriteTagArgList(sb, tagArray);
+
sb.AppendLine(
- $$"""
- public void Record{{details.ShortName}}{{property}}({{tagName}} tag, int value)
+ """
+ int increment = 1)
{
}
""");
}
- private static void WriteNoopGauge(StringBuilder sb, in TelemetryMetricGenerator.EnumDetails details, string property, string tagName1, string tagName2)
+ private static void WriteNoopGauge(StringBuilder sb, in TelemetryMetricGenerator.EnumDetails details, string property, EquatableArray tagNames, Dictionary> enumDictionary)
{
- sb.AppendLine(
+ var tagArray = tagNames.AsArray() ?? [];
+ if (tagArray.Length == 0)
+ {
+ // we don't need to keep this separate technically, could easily inline it, but it would change the generated code
+ // very slightly (though the IL will remain the same)
+ sb.AppendLine(
+ $$"""
+ public void Record{{details.ShortName}}{{property}}(int value)
+ {
+ }
+ """);
+ return;
+ }
+
+ // Produces something similar to this:
+ // public void Record{{details.ShortName}}{{property}}({{tagName1}} tag1, {{tagName2}} tag2, int value)
+ // {
+ // }
+
+ sb.Append(
$$"""
- public void Record{{details.ShortName}}{{property}}({{tagName1}} tag1, {{tagName2}} tag2, int value)
- {
- }
+ public void Record{{details.ShortName}}{{property}}(
""");
- }
- private static void WriteNoopDistribution(StringBuilder sb, in TelemetryMetricGenerator.EnumDetails details, string property)
- {
+ WriteTagArgList(sb, tagArray);
+
sb.AppendLine(
- $$"""
- public void Record{{details.ShortName}}{{property}}(double value)
+ """
+ int value)
{
}
""");
}
- private static void WriteNoopDistribution(StringBuilder sb, in TelemetryMetricGenerator.EnumDetails details, string property, string tagName)
+ private static void WriteNoopDistribution(StringBuilder sb, in TelemetryMetricGenerator.EnumDetails details, string property, EquatableArray tagNames, Dictionary> enumDictionary)
{
- sb.AppendLine(
+ var tagArray = tagNames.AsArray() ?? [];
+ if (tagArray.Length == 0)
+ {
+ // we don't need to keep this separate technically, could easily inline it, but it would change the generated code
+ // very slightly (though the IL will remain the same)
+ sb.AppendLine(
+ $$"""
+ public void Record{{details.ShortName}}{{property}}(double value)
+ {
+ }
+ """);
+ return;
+ }
+
+ // Produces something similar to this:
+ // public void Record{{details.ShortName}}{{property}}({{tagName1}} tag1, {{tagName2}} tag2, int value)
+ // {
+ // }
+
+ sb.Append(
$$"""
- public void Record{{details.ShortName}}{{property}}({{tagName}} tag, double value)
- {
- }
+ public void Record{{details.ShortName}}{{property}}(
""");
- }
- private static void WriteNoopDistribution(StringBuilder sb, in TelemetryMetricGenerator.EnumDetails details, string property, string tagName1, string tagName2)
- {
+ WriteTagArgList(sb, tagArray);
+
sb.AppendLine(
- $$"""
- public void Record{{details.ShortName}}{{property}}({{tagName1}} tag1, {{tagName2}} tag2, double value)
+ """
+ double value)
{
}
""");
diff --git a/tracer/src/Datadog.Trace.SourceGenerators/TelemetryMetric/TelemetryMetricGenerator.cs b/tracer/src/Datadog.Trace.SourceGenerators/TelemetryMetric/TelemetryMetricGenerator.cs
index 8f00708c8e15..f5a9180e9e3d 100644
--- a/tracer/src/Datadog.Trace.SourceGenerators/TelemetryMetric/TelemetryMetricGenerator.cs
+++ b/tracer/src/Datadog.Trace.SourceGenerators/TelemetryMetric/TelemetryMetricGenerator.cs
@@ -136,15 +136,16 @@ static Dictionary> GetEnumDictionary(in EnumDetai
{
locations[i] = index;
var (_, metric) = names[i];
- var tag1Count = metric.Tag1FullyQualifiedName is { } tag1Type && enumDictionary[tag1Type].AsArray() is { } tag1Values
- ? tag1Values.Length
- : 1;
- var tag2Count = metric.Tag2FullyQualifiedName is { } tag2Type && enumDictionary[tag2Type].AsArray() is { } tag2Values
- ? tag2Values.Length
- : 1;
+ var entryCount = 1;
+ foreach (var tagType in metric.TagFullyQualifiedNames.AsArray() ?? [])
+ {
+ if (enumDictionary[tagType].AsArray() is { } tagValues)
+ {
+ entryCount *= tagValues.Length;
+ }
+ }
- var entryCount = tag1Count * tag2Count;
entryCounts[i] = entryCount;
index += entryCount;
}
@@ -224,8 +225,7 @@ private static void GenerateAggregateCollectors(in ImmutableArray e
string? metricName = null;
bool isCommon = true;
string? nameSpace = null;
- string? tag1FullyQualifiedName = null;
- string? tag2FullyQualifiedName = null;
+ string[]? tagFullyQualifiedNames = null;
foreach (var attribute in memberSymbol.GetAttributes())
{
if (attribute.AttributeClass?.Name is "TelemetryMetricAttribute" or "TelemetryMetric"
@@ -245,24 +245,20 @@ private static void GenerateAggregateCollectors(in ImmutableArray e
nameSpace = args[2].Value?.ToString();
}
- var tagCount = attribute.AttributeClass.TypeParameters.Length;
- if (tagCount > 0)
- {
- var tag1TypeParameter = attribute.AttributeClass.TypeArguments[0];
- tag1FullyQualifiedName = tag1TypeParameter.ToString();
- if (!enumTypeDictionary.ContainsKey(tag1FullyQualifiedName))
- {
- enumTypeDictionary[tag1FullyQualifiedName] = GetTagValues(tag1TypeParameter, ref diagnostics);
- }
- }
-
- if (tagCount == 2)
+ var typeArgCount = attribute.AttributeClass.TypeParameters.Length;
+ if (typeArgCount > 0)
{
- var tag2TypeParameter = attribute.AttributeClass.TypeArguments[1];
- tag2FullyQualifiedName = tag2TypeParameter.ToString();
- if (!enumTypeDictionary.ContainsKey(tag2FullyQualifiedName))
+ tagFullyQualifiedNames ??= new string[typeArgCount];
+ for (var typeArg = 0; typeArg < typeArgCount; typeArg++)
{
- enumTypeDictionary[tag2FullyQualifiedName] = GetTagValues(tag2TypeParameter, ref diagnostics);
+ var tagType = attribute.AttributeClass.TypeArguments[typeArg];
+ var tagFullyQualifiedName = tagType.ToString();
+ if (!enumTypeDictionary.ContainsKey(tagFullyQualifiedName))
+ {
+ enumTypeDictionary[tagFullyQualifiedName] = GetTagValues(tagType, ref diagnostics);
+ }
+
+ tagFullyQualifiedNames[typeArg] = tagFullyQualifiedName;
}
}
}
@@ -276,7 +272,8 @@ private static void GenerateAggregateCollectors(in ImmutableArray e
continue;
}
- members.Add((memberSymbol.Name, new MetricDetails(metricName!, isCommon, nameSpace, tag1FullyQualifiedName, tag2FullyQualifiedName)));
+ var tagNames = tagFullyQualifiedNames is not null ? new EquatableArray(tagFullyQualifiedNames) : new();
+ members.Add((memberSymbol.Name, new MetricDetails(metricName!, isCommon, nameSpace, tagNames)));
if (!uniqueValues.Add($"{metricName} {nameSpace ?? string.Empty} {(isCommon ? "true" : "false")}"))
{
diagnostics ??= new List();
@@ -388,16 +385,14 @@ internal readonly record struct MetricDetails
public readonly string MetricName;
public readonly bool IsCommon;
public readonly string? NameSpace;
- public readonly string? Tag1FullyQualifiedName;
- public readonly string? Tag2FullyQualifiedName;
+ public readonly EquatableArray TagFullyQualifiedNames;
- public MetricDetails(string metricName, bool isCommon, string? nameSpace, string? tag1FullyQualifiedName, string? tag2FullyQualifiedName)
+ public MetricDetails(string metricName, bool isCommon, string? nameSpace, EquatableArray tagFullyQualifiedNames)
{
MetricName = metricName;
IsCommon = isCommon;
NameSpace = nameSpace;
- Tag1FullyQualifiedName = tag1FullyQualifiedName;
- Tag2FullyQualifiedName = tag2FullyQualifiedName;
+ TagFullyQualifiedNames = tagFullyQualifiedNames;
}
}
}
diff --git a/tracer/src/Datadog.Trace.Tools.Analyzers/AspectAnalyzers/BeforeAfterAspectCodeFixProvider.cs b/tracer/src/Datadog.Trace.Tools.Analyzers/AspectAnalyzers/BeforeAfterAspectCodeFixProvider.cs
index d0384990df58..b1197bbf4172 100644
--- a/tracer/src/Datadog.Trace.Tools.Analyzers/AspectAnalyzers/BeforeAfterAspectCodeFixProvider.cs
+++ b/tracer/src/Datadog.Trace.Tools.Analyzers/AspectAnalyzers/BeforeAfterAspectCodeFixProvider.cs
@@ -106,7 +106,7 @@ private async Task AddTryCatch(Document document, MethodDeclarationSyn
// create the trystatementsyntax with the internals of the method declaration
var catchDeclaration = SyntaxFactory.CatchDeclaration(SyntaxFactory.IdentifierName("Exception"), SyntaxFactory.Identifier("ex"));
var logExpression = SyntaxFactory.ExpressionStatement(
- SyntaxFactory.ParseExpression($$"""IastModule.Log.Error(ex, $"Error invoking {nameof({{typeName}})}.{nameof({{methodName}})}")"""));
+ SyntaxFactory.ParseExpression($$"""IastModule.LogAspectException(ex, $"{nameof({{typeName}})}.{nameof({{methodName}})}")"""));
var returnStatement = paramName is not null
? SyntaxFactory.ReturnStatement(SyntaxFactory.IdentifierName(paramName))
: SyntaxFactory.ReturnStatement();
diff --git a/tracer/src/Datadog.Trace.Tools.Analyzers/AspectAnalyzers/ReplaceAspectCodeFixProvider.cs b/tracer/src/Datadog.Trace.Tools.Analyzers/AspectAnalyzers/ReplaceAspectCodeFixProvider.cs
index ea5be4493f7c..d43a0a418329 100644
--- a/tracer/src/Datadog.Trace.Tools.Analyzers/AspectAnalyzers/ReplaceAspectCodeFixProvider.cs
+++ b/tracer/src/Datadog.Trace.Tools.Analyzers/AspectAnalyzers/ReplaceAspectCodeFixProvider.cs
@@ -106,7 +106,7 @@ private async Task AddTryCatch(Document document, MethodDeclarationSyn
var catchDeclaration = SyntaxFactory.CatchDeclaration(SyntaxFactory.IdentifierName("Exception"), SyntaxFactory.Identifier("ex"));
var logExpression = SyntaxFactory.ExpressionStatement(
- SyntaxFactory.ParseExpression($$"""IastModule.Log.Error(ex, $"Error invoking {nameof({{typeName}})}.{nameof({{methodName}})}")"""));
+ SyntaxFactory.ParseExpression($$"""IastModule.LogAspectException(ex, $"{nameof({{typeName}})}.{nameof({{methodName}})}")"""));
var catchSyntax = SyntaxFactory.CatchClause()
.WithDeclaration(catchDeclaration)
diff --git a/tracer/src/Datadog.Trace.Tools.Runner/ConfigureCiCommand.cs b/tracer/src/Datadog.Trace.Tools.Runner/ConfigureCiCommand.cs
index ffe32315a7c2..daf1d8c4191a 100644
--- a/tracer/src/Datadog.Trace.Tools.Runner/ConfigureCiCommand.cs
+++ b/tracer/src/Datadog.Trace.Tools.Runner/ConfigureCiCommand.cs
@@ -71,6 +71,8 @@ private async Task ExecuteAsync(InvocationContext context)
return;
}
+ await initResults.UploadRepositoryChangesTask().ConfigureAwait(false);
+
if (!TryExtractCiName(name, out var ciName))
{
context.ExitCode = 1;
diff --git a/tracer/src/Datadog.Trace.Tools.Runner/Datadog.Trace.Tools.Runner.csproj b/tracer/src/Datadog.Trace.Tools.Runner/Datadog.Trace.Tools.Runner.csproj
index b7cf9b2d31d4..f43bc62b941b 100644
--- a/tracer/src/Datadog.Trace.Tools.Runner/Datadog.Trace.Tools.Runner.csproj
+++ b/tracer/src/Datadog.Trace.Tools.Runner/Datadog.Trace.Tools.Runner.csproj
@@ -1,7 +1,7 @@
- 3.8.0
+ 3.9.0
Datadog APM Auto-instrumentation Runner
Copyright 2020 Datadog, Inc.
Auto-instrumentation dotnet global tool for Datadog APM
@@ -61,8 +61,8 @@
- Always
- Always
+ PreserveNewest
+ PreserveNewest
diff --git a/tracer/src/Datadog.Trace.Tools.dd_dotnet/CreatedumpCommand.cs b/tracer/src/Datadog.Trace.Tools.dd_dotnet/CreatedumpCommand.cs
index 1d0c5adc06d0..6298bd0930a1 100644
--- a/tracer/src/Datadog.Trace.Tools.dd_dotnet/CreatedumpCommand.cs
+++ b/tracer/src/Datadog.Trace.Tools.dd_dotnet/CreatedumpCommand.cs
@@ -586,14 +586,18 @@ private unsafe void GenerateCrashReport(int pid, int? signal, int? crashThread)
"System.InvalidProgramException",
"System.MissingFieldException",
"System.MissingMemberException",
- "System.BadImageFormatException",
- "System.TypeLoadException"
+ "System.BadImageFormatException"
};
if (exceptionType.StartsWith("Datadog", StringComparison.OrdinalIgnoreCase) || suspiciousExceptionTypes.Contains(exceptionType))
{
isSuspicious = true;
}
+ else if (exceptionType == "System.TypeLoadException")
+ {
+ isSuspicious = exception.Message?.Contains("datadog", StringComparison.OrdinalIgnoreCase) == true
+ || exception.StackTrace.Any(f => f.Method != null && IsMethodSuspicious(f.Method));
+ }
}
if (!isSuspicious)
diff --git a/tracer/src/Datadog.Trace.Tools.dd_dotnet/Datadog.Trace.Tools.dd_dotnet.csproj b/tracer/src/Datadog.Trace.Tools.dd_dotnet/Datadog.Trace.Tools.dd_dotnet.csproj
index 30c430b15ddd..30cbde8016d0 100644
--- a/tracer/src/Datadog.Trace.Tools.dd_dotnet/Datadog.Trace.Tools.dd_dotnet.csproj
+++ b/tracer/src/Datadog.Trace.Tools.dd_dotnet/Datadog.Trace.Tools.dd_dotnet.csproj
@@ -1,7 +1,7 @@
- 3.8.0
+ 3.9.0
Datadog APM Auto-instrumentation Launcher
Copyright 2020 Datadog, Inc.
Auto-instrumentation dotnet tool for Datadog APM
diff --git a/tracer/src/Datadog.Trace.Trimming/Datadog.Trace.Trimming.csproj b/tracer/src/Datadog.Trace.Trimming/Datadog.Trace.Trimming.csproj
index 9445c902aab1..7a3ec13aa4d2 100644
--- a/tracer/src/Datadog.Trace.Trimming/Datadog.Trace.Trimming.csproj
+++ b/tracer/src/Datadog.Trace.Trimming/Datadog.Trace.Trimming.csproj
@@ -1,7 +1,7 @@
- 3.8.0
+ 3.9.0
$(Version)-prerelease
diff --git a/tracer/src/Datadog.Trace.Trimming/build/Datadog.Trace.Trimming.xml b/tracer/src/Datadog.Trace.Trimming/build/Datadog.Trace.Trimming.xml
index 6567951c659f..52dbf326a37d 100644
--- a/tracer/src/Datadog.Trace.Trimming/build/Datadog.Trace.Trimming.xml
+++ b/tracer/src/Datadog.Trace.Trimming/build/Datadog.Trace.Trimming.xml
@@ -223,6 +223,7 @@
+
@@ -246,6 +247,7 @@
+
@@ -494,6 +496,7 @@
+
@@ -538,6 +541,8 @@
+
+
@@ -546,6 +551,8 @@
+
+
@@ -554,6 +561,7 @@
+
@@ -719,6 +727,7 @@
+
@@ -970,7 +979,10 @@
+
+
+
diff --git a/tracer/src/Datadog.Trace/Activity/OtlpHelpers.cs b/tracer/src/Datadog.Trace/Activity/OtlpHelpers.cs
index 91ad56f5a3bf..816daca016ce 100644
--- a/tracer/src/Datadog.Trace/Activity/OtlpHelpers.cs
+++ b/tracer/src/Datadog.Trace/Activity/OtlpHelpers.cs
@@ -254,9 +254,7 @@ private static void ExtractActivityLinks(Span span, IActivity5? activity
spanContext.LastParentId = traceState.LastParent;
spanContext.PropagatedTags = traceTags;
- var extractedSpan = new Span(spanContext, DateTimeOffset.Now, new CommonTags());
- var spanLink = span.AddSpanLink(extractedSpan);
-
+ List> attributes = new();
if (duckLink.Tags is not null)
{
foreach (var kvp in duckLink.Tags)
@@ -271,18 +269,20 @@ private static void ExtractActivityLinks(Span span, IActivity5? activity
{
if (item?.ToString() is { } value)
{
- spanLink.AddAttribute($"{kvp.Key}.{index}", value);
+ attributes.Add(new($"{kvp.Key}.{index}", value));
index++;
}
}
}
else if (kvp.Value?.ToString() is { } kvpValue)
{
- spanLink.AddAttribute(kvp.Key, kvpValue);
+ attributes.Add(new(kvp.Key, kvpValue));
}
}
}
}
+
+ span.AddLink(new SpanLink(spanContext, attributes));
}
}
diff --git a/tracer/src/Datadog.Trace/AppSec/Coordinator/SecurityCoordinator.Core.cs b/tracer/src/Datadog.Trace/AppSec/Coordinator/SecurityCoordinator.Core.cs
index 6026f1b84e2e..40ec7f1b4da9 100644
--- a/tracer/src/Datadog.Trace/AppSec/Coordinator/SecurityCoordinator.Core.cs
+++ b/tracer/src/Datadog.Trace/AppSec/Coordinator/SecurityCoordinator.Core.cs
@@ -26,10 +26,9 @@ private SecurityCoordinator(Security security, Span span, HttpTransport transpor
_security = security;
_localRootSpan = TryGetRoot(span);
_httpTransport = transport;
+ Reporter = new SecurityReporter(_localRootSpan, transport, true);
}
- private static bool CanAccessHeaders => true;
-
internal static SecurityCoordinator? TryGet(Security security, Span span)
{
var context = CoreHttpContextStore.Instance.Get();
@@ -59,27 +58,6 @@ private static void GetCookieKeyValueFromIndex(IRequestCookieCollection cookies,
value = cookie.Value;
}
- [MethodImpl(MethodImplOptions.NoInlining)]
- internal static void CollectHeaders(Span internalSpan)
- {
- if (AspNetCoreAvailabilityChecker.IsAspNetCoreAvailable())
- {
- CollectHeadersImpl(internalSpan);
- }
-
- [MethodImpl(MethodImplOptions.NoInlining)]
- static void CollectHeadersImpl(Span internalSpan)
- {
- var context = CoreHttpContextStore.Instance.Get();
- internalSpan = TryGetRoot(internalSpan);
- if (context is not null)
- {
- var headers = new HeadersCollectionAdapter(context.Request.Headers);
- AddRequestHeaders(internalSpan, headers);
- }
- }
- }
-
internal void BlockAndReport(IResult? result)
{
if (result is not null)
@@ -89,7 +67,7 @@ internal void BlockAndReport(IResult? result)
throw new BlockException(result, result.RedirectInfo ?? result.BlockInfo!);
}
- TryReport(result, result.ShouldBlock);
+ Reporter.TryReport(result, result.ShouldBlock);
}
}
@@ -97,7 +75,7 @@ internal void ReportAndBlock(IResult? result)
{
if (result is not null)
{
- TryReport(result, result.ShouldBlock);
+ Reporter.TryReport(result, result.ShouldBlock);
if (result.ShouldBlock)
{
@@ -128,7 +106,13 @@ private Dictionary GetBasicRequestArgsForWaf()
}
}
- var addressesDictionary = new Dictionary { { AddressesConstants.RequestMethod, request.Method }, { AddressesConstants.ResponseStatus, request.HttpContext.Response.StatusCode.ToString() }, { AddressesConstants.RequestUriRaw, request.GetUrlForWaf() }, { AddressesConstants.RequestClientIp, _localRootSpan.GetTag(Tags.HttpClientIp) } };
+ var addressesDictionary = new Dictionary
+ {
+ { AddressesConstants.RequestMethod, request.Method },
+ { AddressesConstants.ResponseStatus, request.HttpContext.Response.StatusCode.ToString() },
+ { AddressesConstants.RequestUriRaw, request.GetUrlForWaf() },
+ { AddressesConstants.RequestClientIp, _localRootSpan.GetTag(Tags.HttpClientIp) }
+ };
var userId = _localRootSpan.Context?.TraceContext?.Tags.GetTag(Tags.User.Id);
if (!string.IsNullOrEmpty(userId))
diff --git a/tracer/src/Datadog.Trace/AppSec/Coordinator/SecurityCoordinator.Framework.cs b/tracer/src/Datadog.Trace/AppSec/Coordinator/SecurityCoordinator.Framework.cs
index 5e4d9a33f488..0cfedc68be93 100644
--- a/tracer/src/Datadog.Trace/AppSec/Coordinator/SecurityCoordinator.Framework.cs
+++ b/tracer/src/Datadog.Trace/AppSec/Coordinator/SecurityCoordinator.Framework.cs
@@ -27,33 +27,15 @@ internal readonly partial struct SecurityCoordinator
private const string WebApiControllerHandlerTypeFullname = "System.Web.Http.WebHost.HttpControllerHandler";
private static readonly Lazy?> _throwHttpResponseRedirectException = new(CreateThrowHttpResponseExceptionDynMethForRedirect);
private static readonly Lazy?> _throwHttpResponseException = new(CreateThrowHttpResponseExceptionDynMeth);
- private static readonly bool? UsingIntegratedPipeline;
-
- static SecurityCoordinator()
- {
- if (UsingIntegratedPipeline == null)
- {
- try
- {
- UsingIntegratedPipeline = TryGetUsingIntegratedPipelineBool();
- }
- catch (Exception ex)
- {
- UsingIntegratedPipeline = false;
- Log.Error(ex, "Unable to query the IIS pipeline. Request and response information may be limited.");
- }
- }
- }
private SecurityCoordinator(Security security, Span span, HttpTransport transport)
{
_security = security;
_localRootSpan = TryGetRoot(span);
_httpTransport = transport;
+ Reporter = new SecurityReporter(_localRootSpan, transport, true);
}
- private bool CanAccessHeaders => UsingIntegratedPipeline is true or null;
-
internal static SecurityCoordinator? TryGet(Security security, Span span)
{
if (HttpContext.Current is not { } current)
@@ -283,16 +265,16 @@ private SecurityCoordinator(Security security, Span span, HttpTransport transpor
///
/// Framework can do it all at once, but framework only unfortunately
///
- internal void BlockAndReport(Dictionary args, bool lastWafCall = false)
+ internal void BlockAndReport(Dictionary args, bool lastWafCall = false, bool isInHttpTracingModule = false)
{
var result = RunWaf(args, lastWafCall);
if (result is not null)
{
- var reporting = MakeReportingFunction(result);
+ var reporting = Reporter.MakeReportingFunction(result);
if (result.ShouldBlock)
{
- ChooseBlockingMethodAndBlock(result, reporting, result.BlockInfo, result.RedirectInfo);
+ ChooseBlockingMethodAndBlock(result, reporting, result.BlockInfo, result.RedirectInfo, isInHttpTracingModule);
}
// here we assume if we haven't blocked we'll have collected the correct status elsewhere
@@ -304,7 +286,7 @@ internal void ReportAndBlock(IResult? result)
{
if (result is not null)
{
- var reporting = MakeReportingFunction(result);
+ var reporting = Reporter.MakeReportingFunction(result);
reporting(null, result.ShouldBlock);
if (result.ShouldBlock)
@@ -323,26 +305,12 @@ internal void ReportAndBlock(IResult? result)
}
}
- private Action MakeReportingFunction(IResult result)
- {
- var securityCoordinator = this;
- return (status, blocked) =>
- {
- if (result.ShouldBlock)
- {
- securityCoordinator._httpTransport.MarkBlocked();
- }
-
- securityCoordinator.TryReport(result, blocked, status);
- };
- }
-
- private void ChooseBlockingMethodAndBlock(IResult result, Action reporting, Dictionary? blockInfo, Dictionary? redirectInfo)
+ private void ChooseBlockingMethodAndBlock(IResult result, Action reporting, Dictionary? blockInfo, Dictionary? redirectInfo, bool inTracingHttpModule = false)
{
var headers = RequestDataHelper.GetHeaders(_httpTransport.Context.Request) ?? new NameValueCollection();
var blockingAction = _security.GetBlockingAction([headers["Accept"]], blockInfo, redirectInfo);
var isWebApiRequest = _httpTransport.Context.CurrentHandler?.GetType().FullName == WebApiControllerHandlerTypeFullname;
- if (isWebApiRequest)
+ if (isWebApiRequest && !inTracingHttpModule)
{
if (!blockingAction.IsRedirect && _throwHttpResponseException.Value is { } throwException)
{
@@ -371,7 +339,7 @@ private void WriteAndEndResponse(BlockingAction blockingAction)
httpResponse.Cookies.Clear();
// cant clear headers, on some iis version we get a platform not supported exception
- if (CanAccessHeaders)
+ if (Reporter.CanAccessHeaders)
{
var keys = httpResponse.Headers.Keys.Cast().ToList();
foreach (var key in keys)
@@ -400,8 +368,8 @@ private void WriteAndEndResponse(BlockingAction blockingAction)
public Dictionary GetBasicRequestArgsForWaf()
{
var request = _httpTransport.Context.Request;
- var headers = RequestDataHelper.GetHeaders(request);
- var headersDic = ExtractHeadersFromRequest(request.Headers);
+ var headers = request.Headers;
+ var headersDic = ExtractHeaders(headers.AllKeys, key => GetHeaderValueForWaf(headers, key));
var cookiesDic = ExtractCookiesFromRequest(request);
var queryString = RequestDataHelper.GetQueryString(request);
@@ -473,8 +441,6 @@ public Dictionary GetBasicRequestArgsForWaf()
return dict;
}
- internal static Dictionary ExtractHeadersFromRequest(NameValueCollection headers) => ExtractHeaders(headers.AllKeys, key => GetHeaderValueForWaf(headers, key));
-
private static object GetHeaderAsArray(string[] value) => value.Length == 1 ? value[0] : value;
private static object GetHeaderValueForWaf(NameValueCollection headers, string currentKey) => GetHeaderAsArray(RequestDataHelper.GetNameValueCollectionValues(headers, currentKey) ?? []);
@@ -511,18 +477,7 @@ public Dictionary GetResponseHeadersForWaf()
return headersDic;
}
- internal static void CollectHeaders(Span internalSpan)
- {
- var context = HttpContext.Current;
-
- if (context != null)
- {
- var headers = new NameValueHeadersCollection(context.Request.Headers);
- AddRequestHeaders(internalSpan, headers);
- }
- }
-
- internal class HttpTransport : HttpTransportBase
+ internal class HttpTransport(HttpContext context) : HttpTransportBase
{
private const string WafKey = "waf";
@@ -530,16 +485,11 @@ internal class HttpTransport : HttpTransportBase
private static bool _canReadHttpResponseHeaders = true;
- public HttpTransport(HttpContext context)
- {
- Context = context;
- }
-
internal override bool IsBlocked => Context.Items[BlockingAction.BlockDefaultActionName] is true;
internal override int StatusCode => Context.Response.StatusCode;
- public override HttpContext Context { get; }
+ public override HttpContext Context { get; } = context;
internal override IDictionary? RouteData => Context.Request.RequestContext.RouteData?.Values;
diff --git a/tracer/src/Datadog.Trace/AppSec/Coordinator/SecurityCoordinator.cs b/tracer/src/Datadog.Trace/AppSec/Coordinator/SecurityCoordinator.cs
index 1ccf8ab4a152..84cb2b3c8cc7 100644
--- a/tracer/src/Datadog.Trace/AppSec/Coordinator/SecurityCoordinator.cs
+++ b/tracer/src/Datadog.Trace/AppSec/Coordinator/SecurityCoordinator.cs
@@ -7,17 +7,12 @@
#pragma warning disable CS0282
using System;
using System.Collections.Generic;
-using System.Text;
using Datadog.Trace.AppSec.Waf;
using Datadog.Trace.Logging;
-using Datadog.Trace.Telemetry;
-using Datadog.Trace.Telemetry.Metrics;
using Datadog.Trace.Util;
-using Datadog.Trace.Vendors.Serilog.Events;
#if !NETFRAMEWORK
using Microsoft.AspNetCore.Http;
#else
-using System.Collections.Specialized;
using System.Web;
#endif
@@ -36,32 +31,9 @@ internal readonly partial struct SecurityCoordinator
public bool IsBlocked => _httpTransport.IsBlocked;
- public void MarkBlocked() => _httpTransport.MarkBlocked();
+ public SecurityReporter Reporter { get; }
- private static void LogMatchesIfDebugEnabled(IReadOnlyCollection
diff --git a/tracer/src/Datadog.Trace/DiagnosticListeners/AspNetCoreDiagnosticObserver.cs b/tracer/src/Datadog.Trace/DiagnosticListeners/AspNetCoreDiagnosticObserver.cs
index 139295f025a0..46764eef12d0 100644
--- a/tracer/src/Datadog.Trace/DiagnosticListeners/AspNetCoreDiagnosticObserver.cs
+++ b/tracer/src/Datadog.Trace/DiagnosticListeners/AspNetCoreDiagnosticObserver.cs
@@ -432,7 +432,8 @@ private void OnHostingHttpRequestInStart(object arg)
if (shouldSecure)
{
CoreHttpContextStore.Instance.Set(httpContext);
- SecurityCoordinator.ReportWafInitInfoOnce(security, scope.Span);
+ var securityReporter = new SecurityReporter(scope.Span, new SecurityCoordinator.HttpTransport(httpContext));
+ securityReporter.ReportWafInitInfoOnce(security.WafInitResult);
}
}
}
diff --git a/tracer/src/Datadog.Trace/ExtensionMethods/SpanExtensions.cs b/tracer/src/Datadog.Trace/ExtensionMethods/SpanExtensions.cs
index 468bbd802d49..5bf955089b1d 100644
--- a/tracer/src/Datadog.Trace/ExtensionMethods/SpanExtensions.cs
+++ b/tracer/src/Datadog.Trace/ExtensionMethods/SpanExtensions.cs
@@ -79,7 +79,7 @@ internal static void SetHeaderTags(this ISpan span, T headers, IReadOnlyDicti
{
try
{
- SpanContextPropagator.Instance.AddHeadersToSpanAsTags(span, headers, headerTags, defaultTagPrefix);
+ Tracer.Instance.TracerManager.SpanContextPropagator.AddHeadersToSpanAsTags(span, headers, headerTags, defaultTagPrefix);
}
catch (Exception ex)
{
diff --git a/tracer/src/Datadog.Trace/Generated/net461/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/CiVisibilityMetricsTelemetryCollector_CountCIVisibility.g.cs b/tracer/src/Datadog.Trace/Generated/net461/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/CiVisibilityMetricsTelemetryCollector_CountCIVisibility.g.cs
index 2766115d192b..eb26f45d2c8d 100644
--- a/tracer/src/Datadog.Trace/Generated/net461/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/CiVisibilityMetricsTelemetryCollector_CountCIVisibility.g.cs
+++ b/tracer/src/Datadog.Trace/Generated/net461/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/CiVisibilityMetricsTelemetryCollector_CountCIVisibility.g.cs
@@ -11,7 +11,7 @@
namespace Datadog.Trace.Telemetry;
internal partial class CiVisibilityMetricsTelemetryCollector
{
- private const int CountCIVisibilityLength = 343;
+ private const int CountCIVisibilityLength = 371;
///
/// Creates the buffer for the values.
@@ -69,6 +69,10 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "test_framework:xunit", "event_type:session", "is_unsupported_ci" }),
new(new[] { "test_framework:xunit", "event_type:session", "has_codeowner", "is_unsupported_ci" }),
new(new[] { "test_framework:xunit", "event_type:session", "has_codeowner" }),
+ new(new[] { "test_framework:xunit", "event_type:session", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:xunit", "event_type:session", "is_unsupported_ci", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:xunit", "event_type:session", "has_codeowner", "is_unsupported_ci", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:xunit", "event_type:session", "has_codeowner", "agentless_log_submission_enabled" }),
new(new[] { "test_framework:xunit", "event_type:test", "is_new:true" }),
new(new[] { "test_framework:xunit", "event_type:test", "is_new:true", "early_flake_detection_abort_reason:slow" }),
new(new[] { "test_framework:xunit", "event_type:test", "browser_driver:selenium" }),
@@ -85,6 +89,10 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "test_framework:nunit", "event_type:session", "is_unsupported_ci" }),
new(new[] { "test_framework:nunit", "event_type:session", "has_codeowner", "is_unsupported_ci" }),
new(new[] { "test_framework:nunit", "event_type:session", "has_codeowner" }),
+ new(new[] { "test_framework:nunit", "event_type:session", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:nunit", "event_type:session", "is_unsupported_ci", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:nunit", "event_type:session", "has_codeowner", "is_unsupported_ci", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:nunit", "event_type:session", "has_codeowner", "agentless_log_submission_enabled" }),
new(new[] { "test_framework:nunit", "event_type:test", "is_new:true" }),
new(new[] { "test_framework:nunit", "event_type:test", "is_new:true", "early_flake_detection_abort_reason:slow" }),
new(new[] { "test_framework:nunit", "event_type:test", "browser_driver:selenium" }),
@@ -101,6 +109,10 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "test_framework:mstest", "event_type:session", "is_unsupported_ci" }),
new(new[] { "test_framework:mstest", "event_type:session", "has_codeowner", "is_unsupported_ci" }),
new(new[] { "test_framework:mstest", "event_type:session", "has_codeowner" }),
+ new(new[] { "test_framework:mstest", "event_type:session", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:mstest", "event_type:session", "is_unsupported_ci", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:mstest", "event_type:session", "has_codeowner", "is_unsupported_ci", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:mstest", "event_type:session", "has_codeowner", "agentless_log_submission_enabled" }),
new(new[] { "test_framework:mstest", "event_type:test", "is_new:true" }),
new(new[] { "test_framework:mstest", "event_type:test", "is_new:true", "early_flake_detection_abort_reason:slow" }),
new(new[] { "test_framework:mstest", "event_type:test", "browser_driver:selenium" }),
@@ -117,6 +129,10 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "test_framework:benchmarkdotnet", "event_type:session", "is_unsupported_ci" }),
new(new[] { "test_framework:benchmarkdotnet", "event_type:session", "has_codeowner", "is_unsupported_ci" }),
new(new[] { "test_framework:benchmarkdotnet", "event_type:session", "has_codeowner" }),
+ new(new[] { "test_framework:benchmarkdotnet", "event_type:session", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:benchmarkdotnet", "event_type:session", "is_unsupported_ci", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:benchmarkdotnet", "event_type:session", "has_codeowner", "is_unsupported_ci", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:benchmarkdotnet", "event_type:session", "has_codeowner", "agentless_log_submission_enabled" }),
new(new[] { "test_framework:benchmarkdotnet", "event_type:test", "is_new:true" }),
new(new[] { "test_framework:benchmarkdotnet", "event_type:test", "is_new:true", "early_flake_detection_abort_reason:slow" }),
new(new[] { "test_framework:benchmarkdotnet", "event_type:test", "browser_driver:selenium" }),
@@ -133,6 +149,10 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "test_framework:unknown", "event_type:session", "is_unsupported_ci" }),
new(new[] { "test_framework:unknown", "event_type:session", "has_codeowner", "is_unsupported_ci" }),
new(new[] { "test_framework:unknown", "event_type:session", "has_codeowner" }),
+ new(new[] { "test_framework:unknown", "event_type:session", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:unknown", "event_type:session", "is_unsupported_ci", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:unknown", "event_type:session", "has_codeowner", "is_unsupported_ci", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:unknown", "event_type:session", "has_codeowner", "agentless_log_submission_enabled" }),
new(new[] { "test_framework:unknown", "event_type:test", "is_new:true" }),
new(new[] { "test_framework:unknown", "event_type:test", "is_new:true", "early_flake_detection_abort_reason:slow" }),
new(new[] { "test_framework:unknown", "event_type:test", "browser_driver:selenium" }),
@@ -141,7 +161,7 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "test_framework:unknown", "event_type:test", "browser_driver:selenium", "is_rum:true" }),
new(new[] { "test_framework:unknown", "event_type:test", "is_new:true", "browser_driver:selenium", "is_rum:true" }),
new(new[] { "test_framework:unknown", "event_type:test", "is_new:true", "early_flake_detection_abort_reason:slow", "browser_driver:selenium", "is_rum:true" }),
- // code_coverage_started, index = 120
+ // code_coverage_started, index = 140
new(new[] { "test_framework:xunit", "library:custom" }),
new(new[] { "test_framework:xunit", "library:unknown" }),
new(new[] { "test_framework:nunit", "library:custom" }),
@@ -152,7 +172,7 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "test_framework:benchmarkdotnet", "library:unknown" }),
new(new[] { "test_framework:unknown", "library:custom" }),
new(new[] { "test_framework:unknown", "library:unknown" }),
- // code_coverage_finished, index = 130
+ // code_coverage_finished, index = 150
new(new[] { "test_framework:xunit", "library:custom" }),
new(new[] { "test_framework:xunit", "library:unknown" }),
new(new[] { "test_framework:nunit", "library:custom" }),
@@ -163,19 +183,19 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "test_framework:benchmarkdotnet", "library:unknown" }),
new(new[] { "test_framework:unknown", "library:custom" }),
new(new[] { "test_framework:unknown", "library:unknown" }),
- // manual_api_events, index = 140
+ // manual_api_events, index = 160
new(new[] { "event_type:test" }),
new(new[] { "event_type:suite" }),
new(new[] { "event_type:module" }),
new(new[] { "event_type:session" }),
- // events_enqueued_for_serialization, index = 144
+ // events_enqueued_for_serialization, index = 164
new(null),
- // endpoint_payload.requests, index = 145
+ // endpoint_payload.requests, index = 165
new(new[] { "endpoint:test_cycle" }),
new(new[] { "endpoint:test_cycle", "rq_compressed:true" }),
new(new[] { "endpoint:code_coverage" }),
new(new[] { "endpoint:code_coverage", "rq_compressed:true" }),
- // endpoint_payload.requests_errors, index = 149
+ // endpoint_payload.requests_errors, index = 169
new(new[] { "endpoint:test_cycle", "error_type:timeout" }),
new(new[] { "endpoint:test_cycle", "error_type:network" }),
new(new[] { "endpoint:test_cycle", "error_type:status_code" }),
@@ -198,10 +218,10 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "endpoint:code_coverage", "error_type:status_code_4xx_response", "status_code:404" }),
new(new[] { "endpoint:code_coverage", "error_type:status_code_4xx_response", "status_code:408" }),
new(new[] { "endpoint:code_coverage", "error_type:status_code_4xx_response", "status_code:429" }),
- // endpoint_payload.dropped, index = 171
+ // endpoint_payload.dropped, index = 191
new(new[] { "endpoint:test_cycle" }),
new(new[] { "endpoint:code_coverage" }),
- // git.command, index = 173
+ // git.command, index = 193
new(new[] { "command:get_repository" }),
new(new[] { "command:get_branch" }),
new(new[] { "command:get_remote" }),
@@ -211,7 +231,7 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "command:get_local_commits" }),
new(new[] { "command:get_objects" }),
new(new[] { "command:pack_objects" }),
- // git.command_errors, index = 182
+ // git.command_errors, index = 202
new(new[] { "command:get_repository", "exit_code:missing" }),
new(new[] { "command:get_repository", "exit_code:unknown" }),
new(new[] { "command:get_repository", "exit_code:-1" }),
@@ -284,10 +304,10 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "command:pack_objects", "exit_code:127" }),
new(new[] { "command:pack_objects", "exit_code:128" }),
new(new[] { "command:pack_objects", "exit_code:129" }),
- // git_requests.search_commits, index = 254
+ // git_requests.search_commits, index = 274
new(null),
new(new[] { "rq_compressed:true" }),
- // git_requests.search_commits_errors, index = 256
+ // git_requests.search_commits_errors, index = 276
new(new[] { "error_type:timeout" }),
new(new[] { "error_type:network" }),
new(new[] { "error_type:status_code" }),
@@ -299,10 +319,10 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "error_type:status_code_4xx_response", "status_code:404" }),
new(new[] { "error_type:status_code_4xx_response", "status_code:408" }),
new(new[] { "error_type:status_code_4xx_response", "status_code:429" }),
- // git_requests.objects_pack, index = 267
+ // git_requests.objects_pack, index = 287
new(null),
new(new[] { "rq_compressed:true" }),
- // git_requests.objects_pack_errors, index = 269
+ // git_requests.objects_pack_errors, index = 289
new(new[] { "error_type:timeout" }),
new(new[] { "error_type:network" }),
new(new[] { "error_type:status_code" }),
@@ -314,10 +334,10 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "error_type:status_code_4xx_response", "status_code:404" }),
new(new[] { "error_type:status_code_4xx_response", "status_code:408" }),
new(new[] { "error_type:status_code_4xx_response", "status_code:429" }),
- // git_requests.settings, index = 280
+ // git_requests.settings, index = 300
new(null),
new(new[] { "rq_compressed:true" }),
- // git_requests.settings_errors, index = 282
+ // git_requests.settings_errors, index = 302
new(new[] { "error_type:timeout" }),
new(new[] { "error_type:network" }),
new(new[] { "error_type:status_code" }),
@@ -329,7 +349,7 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "error_type:status_code_4xx_response", "status_code:404" }),
new(new[] { "error_type:status_code_4xx_response", "status_code:408" }),
new(new[] { "error_type:status_code_4xx_response", "status_code:429" }),
- // git_requests.settings_response, index = 293
+ // git_requests.settings_response, index = 313
new(null),
new(new[] { "coverage_enabled" }),
new(new[] { "itrskip_enabled" }),
@@ -338,10 +358,18 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "coverage_enabled", "early_flake_detection_enabled:true" }),
new(new[] { "itrskip_enabled", "early_flake_detection_enabled:true" }),
new(new[] { "coverage_enabled", "itrskip_enabled", "early_flake_detection_enabled:true" }),
- // itr_skippable_tests.request, index = 301
+ new(new[] { "flaky_test_retries_enabled:true" }),
+ new(new[] { "coverage_enabled", "flaky_test_retries_enabled:true" }),
+ new(new[] { "itrskip_enabled", "flaky_test_retries_enabled:true" }),
+ new(new[] { "coverage_enabled", "itrskip_enabled", "flaky_test_retries_enabled:true" }),
+ new(new[] { "early_flake_detection_enabled:true", "flaky_test_retries_enabled:true" }),
+ new(new[] { "coverage_enabled", "early_flake_detection_enabled:true", "flaky_test_retries_enabled:true" }),
+ new(new[] { "itrskip_enabled", "early_flake_detection_enabled:true", "flaky_test_retries_enabled:true" }),
+ new(new[] { "coverage_enabled", "itrskip_enabled", "early_flake_detection_enabled:true", "flaky_test_retries_enabled:true" }),
+ // itr_skippable_tests.request, index = 329
new(null),
new(new[] { "rq_compressed:true" }),
- // itr_skippable_tests.request_errors, index = 303
+ // itr_skippable_tests.request_errors, index = 331
new(new[] { "error_type:timeout" }),
new(new[] { "error_type:network" }),
new(new[] { "error_type:status_code" }),
@@ -353,33 +381,33 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "error_type:status_code_4xx_response", "status_code:404" }),
new(new[] { "error_type:status_code_4xx_response", "status_code:408" }),
new(new[] { "error_type:status_code_4xx_response", "status_code:429" }),
- // itr_skippable_tests.response_tests, index = 314
+ // itr_skippable_tests.response_tests, index = 342
new(null),
- // itr_skippable_tests.response_suites, index = 315
+ // itr_skippable_tests.response_suites, index = 343
new(null),
- // itr_skipped, index = 316
+ // itr_skipped, index = 344
new(new[] { "event_type:test" }),
new(new[] { "event_type:suite" }),
new(new[] { "event_type:module" }),
new(new[] { "event_type:session" }),
- // itr_unskippable, index = 320
+ // itr_unskippable, index = 348
new(new[] { "event_type:test" }),
new(new[] { "event_type:suite" }),
new(new[] { "event_type:module" }),
new(new[] { "event_type:session" }),
- // itr_forced_run, index = 324
+ // itr_forced_run, index = 352
new(new[] { "event_type:test" }),
new(new[] { "event_type:suite" }),
new(new[] { "event_type:module" }),
new(new[] { "event_type:session" }),
- // code_coverage.is_empty, index = 328
+ // code_coverage.is_empty, index = 356
new(null),
- // code_coverage.errors, index = 329
+ // code_coverage.errors, index = 357
new(null),
- // early_flake_detection.request, index = 330
+ // early_flake_detection.request, index = 358
new(null),
new(new[] { "rq_compressed:true" }),
- // early_flake_detection.request_errors, index = 332
+ // early_flake_detection.request_errors, index = 360
new(new[] { "error_type:timeout" }),
new(new[] { "error_type:network" }),
new(new[] { "error_type:status_code" }),
@@ -399,7 +427,7 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
/// It is equal to the cardinality of the tag combinations (or 1 if there are no tags)
///
private static int[] CountCIVisibilityEntryCounts { get; }
- = new int[]{ 40, 80, 10, 10, 4, 1, 4, 22, 2, 9, 72, 2, 11, 2, 11, 2, 11, 8, 2, 11, 1, 1, 4, 4, 4, 1, 1, 2, 11, };
+ = new int[]{ 40, 100, 10, 10, 4, 1, 4, 22, 2, 9, 72, 2, 11, 2, 11, 2, 11, 16, 2, 11, 1, 1, 4, 4, 4, 1, 1, 2, 11, };
public void RecordCountCIVisibilityEventCreated(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityTestFramework tag1, Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityTestingEventTypeWithCodeOwnerAndSupportedCiAndBenchmark tag2, int increment = 1)
{
@@ -409,164 +437,164 @@ public void RecordCountCIVisibilityEventCreated(Datadog.Trace.Telemetry.Metrics.
public void RecordCountCIVisibilityEventFinished(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityTestFramework tag1, Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityTestingEventTypeWithCodeOwnerAndSupportedCiAndBenchmarkAndEarlyFlakeDetectionAndRum tag2, int increment = 1)
{
- var index = 40 + ((int)tag1 * 16) + (int)tag2;
+ var index = 40 + ((int)tag1 * 20) + (int)tag2;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityCodeCoverageStarted(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityTestFramework tag1, Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityCoverageLibrary tag2, int increment = 1)
{
- var index = 120 + ((int)tag1 * 2) + (int)tag2;
+ var index = 140 + ((int)tag1 * 2) + (int)tag2;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityCodeCoverageFinished(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityTestFramework tag1, Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityCoverageLibrary tag2, int increment = 1)
{
- var index = 130 + ((int)tag1 * 2) + (int)tag2;
+ var index = 150 + ((int)tag1 * 2) + (int)tag2;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityManualApiEvent(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityTestingEventType tag, int increment = 1)
{
- var index = 140 + (int)tag;
+ var index = 160 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityEventsEnqueueForSerialization(int increment = 1)
{
- Interlocked.Add(ref _buffer.CountCIVisibility[144], increment);
+ Interlocked.Add(ref _buffer.CountCIVisibility[164], increment);
}
public void RecordCountCIVisibilityEndpointPayloadRequests(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityEndpointAndCompression tag, int increment = 1)
{
- var index = 145 + (int)tag;
+ var index = 165 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityEndpointPayloadRequestsErrors(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityEndpoints tag1, Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityErrorType tag2, int increment = 1)
{
- var index = 149 + ((int)tag1 * 11) + (int)tag2;
+ var index = 169 + ((int)tag1 * 11) + (int)tag2;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityEndpointPayloadDropped(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityEndpoints tag, int increment = 1)
{
- var index = 171 + (int)tag;
+ var index = 191 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityGitCommand(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityCommands tag, int increment = 1)
{
- var index = 173 + (int)tag;
+ var index = 193 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityGitCommandErrors(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityCommands tag1, Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityExitCodes tag2, int increment = 1)
{
- var index = 182 + ((int)tag1 * 8) + (int)tag2;
+ var index = 202 + ((int)tag1 * 8) + (int)tag2;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityGitRequestsSearchCommits(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityRequestCompressed tag, int increment = 1)
{
- var index = 254 + (int)tag;
+ var index = 274 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityGitRequestsSearchCommitsErrors(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityErrorType tag, int increment = 1)
{
- var index = 256 + (int)tag;
+ var index = 276 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityGitRequestsObjectsPack(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityRequestCompressed tag, int increment = 1)
{
- var index = 267 + (int)tag;
+ var index = 287 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityGitRequestsObjectsPackErrors(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityErrorType tag, int increment = 1)
{
- var index = 269 + (int)tag;
+ var index = 289 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityGitRequestsSettings(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityRequestCompressed tag, int increment = 1)
{
- var index = 280 + (int)tag;
+ var index = 300 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityGitRequestsSettingsErrors(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityErrorType tag, int increment = 1)
{
- var index = 282 + (int)tag;
+ var index = 302 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityGitRequestsSettingsResponse(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityITRSettingsResponse tag, int increment = 1)
{
- var index = 293 + (int)tag;
+ var index = 313 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityITRSkippableTestsRequest(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityRequestCompressed tag, int increment = 1)
{
- var index = 301 + (int)tag;
+ var index = 329 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityITRSkippableTestsRequestErrors(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityErrorType tag, int increment = 1)
{
- var index = 303 + (int)tag;
+ var index = 331 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityITRSkippableTestsResponseTests(int increment = 1)
{
- Interlocked.Add(ref _buffer.CountCIVisibility[314], increment);
+ Interlocked.Add(ref _buffer.CountCIVisibility[342], increment);
}
public void RecordCountCIVisibilityITRSkippableTestsResponseSuites(int increment = 1)
{
- Interlocked.Add(ref _buffer.CountCIVisibility[315], increment);
+ Interlocked.Add(ref _buffer.CountCIVisibility[343], increment);
}
public void RecordCountCIVisibilityITRSkipped(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityTestingEventType tag, int increment = 1)
{
- var index = 316 + (int)tag;
+ var index = 344 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityITRUnskippable(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityTestingEventType tag, int increment = 1)
{
- var index = 320 + (int)tag;
+ var index = 348 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityITRForcedRun(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityTestingEventType tag, int increment = 1)
{
- var index = 324 + (int)tag;
+ var index = 352 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityCodeCoverageIsEmpty(int increment = 1)
{
- Interlocked.Add(ref _buffer.CountCIVisibility[328], increment);
+ Interlocked.Add(ref _buffer.CountCIVisibility[356], increment);
}
public void RecordCountCIVisibilityCodeCoverageErrors(int increment = 1)
{
- Interlocked.Add(ref _buffer.CountCIVisibility[329], increment);
+ Interlocked.Add(ref _buffer.CountCIVisibility[357], increment);
}
public void RecordCountCIVisibilityEarlyFlakeDetectionRequest(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityRequestCompressed tag, int increment = 1)
{
- var index = 330 + (int)tag;
+ var index = 358 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityEarlyFlakeDetectionRequestErrors(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityErrorType tag, int increment = 1)
{
- var index = 332 + (int)tag;
+ var index = 360 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
}
\ No newline at end of file
diff --git a/tracer/src/Datadog.Trace/Generated/net461/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/CiVisibilityMetricsTelemetryCollector_CountShared.g.cs b/tracer/src/Datadog.Trace/Generated/net461/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/CiVisibilityMetricsTelemetryCollector_CountShared.g.cs
index fcfd1e38ed4a..a34c9bfd512b 100644
--- a/tracer/src/Datadog.Trace/Generated/net461/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/CiVisibilityMetricsTelemetryCollector_CountShared.g.cs
+++ b/tracer/src/Datadog.Trace/Generated/net461/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/CiVisibilityMetricsTelemetryCollector_CountShared.g.cs
@@ -176,9 +176,9 @@ private static AggregatedMetric[] GetCountSharedBuffer()
new(new[] { "integration_name:symmetricalgorithm", "error_type:duck_typing" }),
new(new[] { "integration_name:symmetricalgorithm", "error_type:invoker" }),
new(new[] { "integration_name:symmetricalgorithm", "error_type:execution" }),
- new(new[] { "integration_name:opentelemetry", "error_type:duck_typing" }),
- new(new[] { "integration_name:opentelemetry", "error_type:invoker" }),
- new(new[] { "integration_name:opentelemetry", "error_type:execution" }),
+ new(new[] { "integration_name:otel", "error_type:duck_typing" }),
+ new(new[] { "integration_name:otel", "error_type:invoker" }),
+ new(new[] { "integration_name:otel", "error_type:execution" }),
new(new[] { "integration_name:pathtraversal", "error_type:duck_typing" }),
new(new[] { "integration_name:pathtraversal", "error_type:invoker" }),
new(new[] { "integration_name:pathtraversal", "error_type:execution" }),
diff --git a/tracer/src/Datadog.Trace/Generated/net461/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/MetricsTelemetryCollector_Count.g.cs b/tracer/src/Datadog.Trace/Generated/net461/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/MetricsTelemetryCollector_Count.g.cs
index b91aebc832be..7b20fa050a1d 100644
--- a/tracer/src/Datadog.Trace/Generated/net461/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/MetricsTelemetryCollector_Count.g.cs
+++ b/tracer/src/Datadog.Trace/Generated/net461/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/MetricsTelemetryCollector_Count.g.cs
@@ -77,7 +77,7 @@ private static AggregatedMetric[] GetCountBuffer()
new(new[] { "integration_name:process" }),
new(new[] { "integration_name:hashalgorithm" }),
new(new[] { "integration_name:symmetricalgorithm" }),
- new(new[] { "integration_name:opentelemetry" }),
+ new(new[] { "integration_name:otel" }),
new(new[] { "integration_name:pathtraversal" }),
new(new[] { "integration_name:ssrf" }),
new(new[] { "integration_name:ldap" }),
@@ -498,7 +498,7 @@ private static AggregatedMetric[] GetCountBuffer()
new(new[] { "integration_name:process" }),
new(new[] { "integration_name:hashalgorithm" }),
new(new[] { "integration_name:symmetricalgorithm" }),
- new(new[] { "integration_name:opentelemetry" }),
+ new(new[] { "integration_name:otel" }),
new(new[] { "integration_name:pathtraversal" }),
new(new[] { "integration_name:ssrf" }),
new(new[] { "integration_name:ldap" }),
diff --git a/tracer/src/Datadog.Trace/Generated/net461/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/MetricsTelemetryCollector_CountShared.g.cs b/tracer/src/Datadog.Trace/Generated/net461/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/MetricsTelemetryCollector_CountShared.g.cs
index 2a54bea2390a..e94fcb451a68 100644
--- a/tracer/src/Datadog.Trace/Generated/net461/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/MetricsTelemetryCollector_CountShared.g.cs
+++ b/tracer/src/Datadog.Trace/Generated/net461/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/MetricsTelemetryCollector_CountShared.g.cs
@@ -176,9 +176,9 @@ private static AggregatedMetric[] GetCountSharedBuffer()
new(new[] { "integration_name:symmetricalgorithm", "error_type:duck_typing" }),
new(new[] { "integration_name:symmetricalgorithm", "error_type:invoker" }),
new(new[] { "integration_name:symmetricalgorithm", "error_type:execution" }),
- new(new[] { "integration_name:opentelemetry", "error_type:duck_typing" }),
- new(new[] { "integration_name:opentelemetry", "error_type:invoker" }),
- new(new[] { "integration_name:opentelemetry", "error_type:execution" }),
+ new(new[] { "integration_name:otel", "error_type:duck_typing" }),
+ new(new[] { "integration_name:otel", "error_type:invoker" }),
+ new(new[] { "integration_name:otel", "error_type:execution" }),
new(new[] { "integration_name:pathtraversal", "error_type:duck_typing" }),
new(new[] { "integration_name:pathtraversal", "error_type:invoker" }),
new(new[] { "integration_name:pathtraversal", "error_type:execution" }),
diff --git a/tracer/src/Datadog.Trace/Generated/net461/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/TelemetryMetricAttribute.g.cs b/tracer/src/Datadog.Trace/Generated/net461/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/TelemetryMetricAttribute.g.cs
index e7f48e2b15c6..586d54aba6dd 100644
--- a/tracer/src/Datadog.Trace/Generated/net461/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/TelemetryMetricAttribute.g.cs
+++ b/tracer/src/Datadog.Trace/Generated/net461/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/TelemetryMetricAttribute.g.cs
@@ -118,7 +118,7 @@ public TelemetryMetricAttribute(string metricName)
/// which has a single tag
///
[System.AttributeUsage(System.AttributeTargets.Field, AllowMultiple = false)]
-internal class TelemetryMetricAttribute : System.Attribute
+internal class TelemetryMetricAttribute : Datadog.Trace.SourceGenerators.TelemetryMetricAttribute
where TTag : System.Enum
{
///
@@ -128,10 +128,8 @@ internal class TelemetryMetricAttribute : System.Attribute
/// Is the metric a "common" metric, shared across languages?
/// The namespace of the metric, if not the default (Tracer)
public TelemetryMetricAttribute(string metricName, bool isCommon, string nameSpace)
+ : base(metricName, isCommon, nameSpace)
{
- MetricName = metricName;
- IsCommon = isCommon;
- NameSpace = nameSpace;
}
///
@@ -141,34 +139,62 @@ public TelemetryMetricAttribute(string metricName, bool isCommon, string nameSpa
/// The name of the metric, as reported to Datadog
/// Is the metric a "common" metric, shared across languages?
public TelemetryMetricAttribute(string metricName, bool isCommon)
- : this(metricName, isCommon, null!)
+ : base(metricName, isCommon, null!)
{
}
///
/// Initializes a new instance of the class.
- /// Uses the default namespace and sets to true
+ /// Uses the default namespace and sets to true
///
/// The name of the metric, as reported to Datadog
public TelemetryMetricAttribute(string metricName)
- : this(metricName, isCommon: true, null!)
+ : base(metricName, isCommon: true, null!)
{
}
+}
+///
+/// Used to describe a specific metric defined as a field
+/// inside an enum decorated with
+/// which has two tags
+///
+[System.AttributeUsage(System.AttributeTargets.Field, AllowMultiple = false)]
+internal class TelemetryMetricAttribute : Datadog.Trace.SourceGenerators.TelemetryMetricAttribute
+ where TTag1 : System.Enum
+ where TTag2 : System.Enum
+{
///
- /// Gets the name of the metric, as reported to Datadog
+ /// Initializes a new instance of the class.
///
- public string MetricName { get; }
+ /// The name of the metric, as reported to Datadog
+ /// Is the metric a "common" metric, shared across languages?
+ /// The namespace of the metric, if not the default (Tracer)
+ public TelemetryMetricAttribute(string metricName, bool isCommon, string nameSpace)
+ : base(metricName, isCommon, nameSpace)
+ {
+ }
///
- /// Gets a value indicating whether the metric a "common" metric, shared across languages?
+ /// Initializes a new instance of the class.
+ /// Uses the default namespace
///
- public bool IsCommon { get; }
+ /// The name of the metric, as reported to Datadog
+ /// Is the metric a "common" metric, shared across languages?
+ public TelemetryMetricAttribute(string metricName, bool isCommon)
+ : base(metricName, isCommon, null!)
+ {
+ }
///
- /// Gets the namespace of the metric, if not the default (Tracer)
+ /// Initializes a new instance of the class.
+ /// Uses the default namespace and sets to true
///
- public string? NameSpace { get; }
+ /// The name of the metric, as reported to Datadog
+ public TelemetryMetricAttribute(string metricName)
+ : base(metricName, isCommon: true, null!)
+ {
+ }
}
///
@@ -177,9 +203,10 @@ public TelemetryMetricAttribute(string metricName)
/// which has two tags
///
[System.AttributeUsage(System.AttributeTargets.Field, AllowMultiple = false)]
-internal class TelemetryMetricAttribute : System.Attribute
+internal class TelemetryMetricAttribute : Datadog.Trace.SourceGenerators.TelemetryMetricAttribute
where TTag1 : System.Enum
where TTag2 : System.Enum
+ where TTag3 : System.Enum
{
///
/// Initializes a new instance of the class.
@@ -188,10 +215,8 @@ internal class TelemetryMetricAttribute : System.Attribute
/// Is the metric a "common" metric, shared across languages?
/// The namespace of the metric, if not the default (Tracer)
public TelemetryMetricAttribute(string metricName, bool isCommon, string nameSpace)
+ : base(metricName, isCommon, nameSpace)
{
- MetricName = metricName;
- IsCommon = isCommon;
- NameSpace = nameSpace;
}
///
@@ -201,32 +226,155 @@ public TelemetryMetricAttribute(string metricName, bool isCommon, string nameSpa
/// The name of the metric, as reported to Datadog
/// Is the metric a "common" metric, shared across languages?
public TelemetryMetricAttribute(string metricName, bool isCommon)
- : this(metricName, isCommon, null!)
+ : base(metricName, isCommon, null!)
{
}
///
/// Initializes a new instance of the class.
- /// Uses the default namespace and sets to true
+ /// Uses the default namespace and sets to true
///
/// The name of the metric, as reported to Datadog
public TelemetryMetricAttribute(string metricName)
- : this(metricName, isCommon: true, null!)
+ : base(metricName, isCommon: true, null!)
{
}
+}
+///
+/// Used to describe a specific metric defined as a field
+/// inside an enum decorated with
+/// which has two tags
+///
+[System.AttributeUsage(System.AttributeTargets.Field, AllowMultiple = false)]
+internal class TelemetryMetricAttribute : Datadog.Trace.SourceGenerators.TelemetryMetricAttribute
+ where TTag1 : System.Enum
+ where TTag2 : System.Enum
+ where TTag3 : System.Enum
+ where TTag4 : System.Enum
+{
///
- /// Gets the name of the metric, as reported to Datadog
+ /// Initializes a new instance of the class.
///
- public string MetricName { get; }
+ /// The name of the metric, as reported to Datadog
+ /// Is the metric a "common" metric, shared across languages?
+ /// The namespace of the metric, if not the default (Tracer)
+ public TelemetryMetricAttribute(string metricName, bool isCommon, string nameSpace)
+ : base(metricName, isCommon, nameSpace)
+ {
+ }
///
- /// Gets a value indicating whether the metric a "common" metric, shared across languages?
+ /// Initializes a new instance of the class.
+ /// Uses the default namespace
///
- public bool IsCommon { get; }
+ /// The name of the metric, as reported to Datadog
+ /// Is the metric a "common" metric, shared across languages?
+ public TelemetryMetricAttribute(string metricName, bool isCommon)
+ : base(metricName, isCommon, null!)
+ {
+ }
///
- /// Gets the namespace of the metric, if not the default (Tracer)
+ /// Initializes a new instance of the class.
+ /// Uses the default namespace and sets to true
///
- public string? NameSpace { get; }
+ /// The name of the metric, as reported to Datadog
+ public TelemetryMetricAttribute(string metricName)
+ : base(metricName, isCommon: true, null!)
+ {
+ }
+}
+
+///
+/// Used to describe a specific metric defined as a field
+/// inside an enum decorated with
+/// which has two tags
+///
+[System.AttributeUsage(System.AttributeTargets.Field, AllowMultiple = false)]
+internal class TelemetryMetricAttribute : Datadog.Trace.SourceGenerators.TelemetryMetricAttribute
+ where TTag1 : System.Enum
+ where TTag2 : System.Enum
+ where TTag3 : System.Enum
+ where TTag4 : System.Enum
+ where TTag5 : System.Enum
+{
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The name of the metric, as reported to Datadog
+ /// Is the metric a "common" metric, shared across languages?
+ /// The namespace of the metric, if not the default (Tracer)
+ public TelemetryMetricAttribute(string metricName, bool isCommon, string nameSpace)
+ : base(metricName, isCommon, nameSpace)
+ {
+ }
+
+ ///
+ /// Initializes a new instance of the class.
+ /// Uses the default namespace
+ ///
+ /// The name of the metric, as reported to Datadog
+ /// Is the metric a "common" metric, shared across languages?
+ public TelemetryMetricAttribute(string metricName, bool isCommon)
+ : base(metricName, isCommon, null!)
+ {
+ }
+
+ ///
+ /// Initializes a new instance of the class.
+ /// Uses the default namespace and sets to true
+ ///
+ /// The name of the metric, as reported to Datadog
+ public TelemetryMetricAttribute(string metricName)
+ : base(metricName, isCommon: true, null!)
+ {
+ }
+}
+
+///
+/// Used to describe a specific metric defined as a field
+/// inside an enum decorated with
+/// which has two tags
+///
+[System.AttributeUsage(System.AttributeTargets.Field, AllowMultiple = false)]
+internal class TelemetryMetricAttribute : Datadog.Trace.SourceGenerators.TelemetryMetricAttribute
+ where TTag1 : System.Enum
+ where TTag2 : System.Enum
+ where TTag3 : System.Enum
+ where TTag4 : System.Enum
+ where TTag5 : System.Enum
+ where TTag6 : System.Enum
+{
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The name of the metric, as reported to Datadog
+ /// Is the metric a "common" metric, shared across languages?
+ /// The namespace of the metric, if not the default (Tracer)
+ public TelemetryMetricAttribute(string metricName, bool isCommon, string nameSpace)
+ : base(metricName, isCommon, nameSpace)
+ {
+ }
+
+ ///
+ /// Initializes a new instance of the class.
+ /// Uses the default namespace
+ ///
+ /// The name of the metric, as reported to Datadog
+ /// Is the metric a "common" metric, shared across languages?
+ public TelemetryMetricAttribute(string metricName, bool isCommon)
+ : base(metricName, isCommon, null!)
+ {
+ }
+
+ ///
+ /// Initializes a new instance of the class.
+ /// Uses the default namespace and sets to true
+ ///
+ /// The name of the metric, as reported to Datadog
+ public TelemetryMetricAttribute(string metricName)
+ : base(metricName, isCommon: true, null!)
+ {
+ }
}
\ No newline at end of file
diff --git a/tracer/src/Datadog.Trace/Generated/net6.0/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/CiVisibilityMetricsTelemetryCollector_CountCIVisibility.g.cs b/tracer/src/Datadog.Trace/Generated/net6.0/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/CiVisibilityMetricsTelemetryCollector_CountCIVisibility.g.cs
index 2766115d192b..eb26f45d2c8d 100644
--- a/tracer/src/Datadog.Trace/Generated/net6.0/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/CiVisibilityMetricsTelemetryCollector_CountCIVisibility.g.cs
+++ b/tracer/src/Datadog.Trace/Generated/net6.0/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/CiVisibilityMetricsTelemetryCollector_CountCIVisibility.g.cs
@@ -11,7 +11,7 @@
namespace Datadog.Trace.Telemetry;
internal partial class CiVisibilityMetricsTelemetryCollector
{
- private const int CountCIVisibilityLength = 343;
+ private const int CountCIVisibilityLength = 371;
///
/// Creates the buffer for the values.
@@ -69,6 +69,10 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "test_framework:xunit", "event_type:session", "is_unsupported_ci" }),
new(new[] { "test_framework:xunit", "event_type:session", "has_codeowner", "is_unsupported_ci" }),
new(new[] { "test_framework:xunit", "event_type:session", "has_codeowner" }),
+ new(new[] { "test_framework:xunit", "event_type:session", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:xunit", "event_type:session", "is_unsupported_ci", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:xunit", "event_type:session", "has_codeowner", "is_unsupported_ci", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:xunit", "event_type:session", "has_codeowner", "agentless_log_submission_enabled" }),
new(new[] { "test_framework:xunit", "event_type:test", "is_new:true" }),
new(new[] { "test_framework:xunit", "event_type:test", "is_new:true", "early_flake_detection_abort_reason:slow" }),
new(new[] { "test_framework:xunit", "event_type:test", "browser_driver:selenium" }),
@@ -85,6 +89,10 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "test_framework:nunit", "event_type:session", "is_unsupported_ci" }),
new(new[] { "test_framework:nunit", "event_type:session", "has_codeowner", "is_unsupported_ci" }),
new(new[] { "test_framework:nunit", "event_type:session", "has_codeowner" }),
+ new(new[] { "test_framework:nunit", "event_type:session", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:nunit", "event_type:session", "is_unsupported_ci", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:nunit", "event_type:session", "has_codeowner", "is_unsupported_ci", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:nunit", "event_type:session", "has_codeowner", "agentless_log_submission_enabled" }),
new(new[] { "test_framework:nunit", "event_type:test", "is_new:true" }),
new(new[] { "test_framework:nunit", "event_type:test", "is_new:true", "early_flake_detection_abort_reason:slow" }),
new(new[] { "test_framework:nunit", "event_type:test", "browser_driver:selenium" }),
@@ -101,6 +109,10 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "test_framework:mstest", "event_type:session", "is_unsupported_ci" }),
new(new[] { "test_framework:mstest", "event_type:session", "has_codeowner", "is_unsupported_ci" }),
new(new[] { "test_framework:mstest", "event_type:session", "has_codeowner" }),
+ new(new[] { "test_framework:mstest", "event_type:session", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:mstest", "event_type:session", "is_unsupported_ci", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:mstest", "event_type:session", "has_codeowner", "is_unsupported_ci", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:mstest", "event_type:session", "has_codeowner", "agentless_log_submission_enabled" }),
new(new[] { "test_framework:mstest", "event_type:test", "is_new:true" }),
new(new[] { "test_framework:mstest", "event_type:test", "is_new:true", "early_flake_detection_abort_reason:slow" }),
new(new[] { "test_framework:mstest", "event_type:test", "browser_driver:selenium" }),
@@ -117,6 +129,10 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "test_framework:benchmarkdotnet", "event_type:session", "is_unsupported_ci" }),
new(new[] { "test_framework:benchmarkdotnet", "event_type:session", "has_codeowner", "is_unsupported_ci" }),
new(new[] { "test_framework:benchmarkdotnet", "event_type:session", "has_codeowner" }),
+ new(new[] { "test_framework:benchmarkdotnet", "event_type:session", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:benchmarkdotnet", "event_type:session", "is_unsupported_ci", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:benchmarkdotnet", "event_type:session", "has_codeowner", "is_unsupported_ci", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:benchmarkdotnet", "event_type:session", "has_codeowner", "agentless_log_submission_enabled" }),
new(new[] { "test_framework:benchmarkdotnet", "event_type:test", "is_new:true" }),
new(new[] { "test_framework:benchmarkdotnet", "event_type:test", "is_new:true", "early_flake_detection_abort_reason:slow" }),
new(new[] { "test_framework:benchmarkdotnet", "event_type:test", "browser_driver:selenium" }),
@@ -133,6 +149,10 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "test_framework:unknown", "event_type:session", "is_unsupported_ci" }),
new(new[] { "test_framework:unknown", "event_type:session", "has_codeowner", "is_unsupported_ci" }),
new(new[] { "test_framework:unknown", "event_type:session", "has_codeowner" }),
+ new(new[] { "test_framework:unknown", "event_type:session", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:unknown", "event_type:session", "is_unsupported_ci", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:unknown", "event_type:session", "has_codeowner", "is_unsupported_ci", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:unknown", "event_type:session", "has_codeowner", "agentless_log_submission_enabled" }),
new(new[] { "test_framework:unknown", "event_type:test", "is_new:true" }),
new(new[] { "test_framework:unknown", "event_type:test", "is_new:true", "early_flake_detection_abort_reason:slow" }),
new(new[] { "test_framework:unknown", "event_type:test", "browser_driver:selenium" }),
@@ -141,7 +161,7 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "test_framework:unknown", "event_type:test", "browser_driver:selenium", "is_rum:true" }),
new(new[] { "test_framework:unknown", "event_type:test", "is_new:true", "browser_driver:selenium", "is_rum:true" }),
new(new[] { "test_framework:unknown", "event_type:test", "is_new:true", "early_flake_detection_abort_reason:slow", "browser_driver:selenium", "is_rum:true" }),
- // code_coverage_started, index = 120
+ // code_coverage_started, index = 140
new(new[] { "test_framework:xunit", "library:custom" }),
new(new[] { "test_framework:xunit", "library:unknown" }),
new(new[] { "test_framework:nunit", "library:custom" }),
@@ -152,7 +172,7 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "test_framework:benchmarkdotnet", "library:unknown" }),
new(new[] { "test_framework:unknown", "library:custom" }),
new(new[] { "test_framework:unknown", "library:unknown" }),
- // code_coverage_finished, index = 130
+ // code_coverage_finished, index = 150
new(new[] { "test_framework:xunit", "library:custom" }),
new(new[] { "test_framework:xunit", "library:unknown" }),
new(new[] { "test_framework:nunit", "library:custom" }),
@@ -163,19 +183,19 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "test_framework:benchmarkdotnet", "library:unknown" }),
new(new[] { "test_framework:unknown", "library:custom" }),
new(new[] { "test_framework:unknown", "library:unknown" }),
- // manual_api_events, index = 140
+ // manual_api_events, index = 160
new(new[] { "event_type:test" }),
new(new[] { "event_type:suite" }),
new(new[] { "event_type:module" }),
new(new[] { "event_type:session" }),
- // events_enqueued_for_serialization, index = 144
+ // events_enqueued_for_serialization, index = 164
new(null),
- // endpoint_payload.requests, index = 145
+ // endpoint_payload.requests, index = 165
new(new[] { "endpoint:test_cycle" }),
new(new[] { "endpoint:test_cycle", "rq_compressed:true" }),
new(new[] { "endpoint:code_coverage" }),
new(new[] { "endpoint:code_coverage", "rq_compressed:true" }),
- // endpoint_payload.requests_errors, index = 149
+ // endpoint_payload.requests_errors, index = 169
new(new[] { "endpoint:test_cycle", "error_type:timeout" }),
new(new[] { "endpoint:test_cycle", "error_type:network" }),
new(new[] { "endpoint:test_cycle", "error_type:status_code" }),
@@ -198,10 +218,10 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "endpoint:code_coverage", "error_type:status_code_4xx_response", "status_code:404" }),
new(new[] { "endpoint:code_coverage", "error_type:status_code_4xx_response", "status_code:408" }),
new(new[] { "endpoint:code_coverage", "error_type:status_code_4xx_response", "status_code:429" }),
- // endpoint_payload.dropped, index = 171
+ // endpoint_payload.dropped, index = 191
new(new[] { "endpoint:test_cycle" }),
new(new[] { "endpoint:code_coverage" }),
- // git.command, index = 173
+ // git.command, index = 193
new(new[] { "command:get_repository" }),
new(new[] { "command:get_branch" }),
new(new[] { "command:get_remote" }),
@@ -211,7 +231,7 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "command:get_local_commits" }),
new(new[] { "command:get_objects" }),
new(new[] { "command:pack_objects" }),
- // git.command_errors, index = 182
+ // git.command_errors, index = 202
new(new[] { "command:get_repository", "exit_code:missing" }),
new(new[] { "command:get_repository", "exit_code:unknown" }),
new(new[] { "command:get_repository", "exit_code:-1" }),
@@ -284,10 +304,10 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "command:pack_objects", "exit_code:127" }),
new(new[] { "command:pack_objects", "exit_code:128" }),
new(new[] { "command:pack_objects", "exit_code:129" }),
- // git_requests.search_commits, index = 254
+ // git_requests.search_commits, index = 274
new(null),
new(new[] { "rq_compressed:true" }),
- // git_requests.search_commits_errors, index = 256
+ // git_requests.search_commits_errors, index = 276
new(new[] { "error_type:timeout" }),
new(new[] { "error_type:network" }),
new(new[] { "error_type:status_code" }),
@@ -299,10 +319,10 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "error_type:status_code_4xx_response", "status_code:404" }),
new(new[] { "error_type:status_code_4xx_response", "status_code:408" }),
new(new[] { "error_type:status_code_4xx_response", "status_code:429" }),
- // git_requests.objects_pack, index = 267
+ // git_requests.objects_pack, index = 287
new(null),
new(new[] { "rq_compressed:true" }),
- // git_requests.objects_pack_errors, index = 269
+ // git_requests.objects_pack_errors, index = 289
new(new[] { "error_type:timeout" }),
new(new[] { "error_type:network" }),
new(new[] { "error_type:status_code" }),
@@ -314,10 +334,10 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "error_type:status_code_4xx_response", "status_code:404" }),
new(new[] { "error_type:status_code_4xx_response", "status_code:408" }),
new(new[] { "error_type:status_code_4xx_response", "status_code:429" }),
- // git_requests.settings, index = 280
+ // git_requests.settings, index = 300
new(null),
new(new[] { "rq_compressed:true" }),
- // git_requests.settings_errors, index = 282
+ // git_requests.settings_errors, index = 302
new(new[] { "error_type:timeout" }),
new(new[] { "error_type:network" }),
new(new[] { "error_type:status_code" }),
@@ -329,7 +349,7 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "error_type:status_code_4xx_response", "status_code:404" }),
new(new[] { "error_type:status_code_4xx_response", "status_code:408" }),
new(new[] { "error_type:status_code_4xx_response", "status_code:429" }),
- // git_requests.settings_response, index = 293
+ // git_requests.settings_response, index = 313
new(null),
new(new[] { "coverage_enabled" }),
new(new[] { "itrskip_enabled" }),
@@ -338,10 +358,18 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "coverage_enabled", "early_flake_detection_enabled:true" }),
new(new[] { "itrskip_enabled", "early_flake_detection_enabled:true" }),
new(new[] { "coverage_enabled", "itrskip_enabled", "early_flake_detection_enabled:true" }),
- // itr_skippable_tests.request, index = 301
+ new(new[] { "flaky_test_retries_enabled:true" }),
+ new(new[] { "coverage_enabled", "flaky_test_retries_enabled:true" }),
+ new(new[] { "itrskip_enabled", "flaky_test_retries_enabled:true" }),
+ new(new[] { "coverage_enabled", "itrskip_enabled", "flaky_test_retries_enabled:true" }),
+ new(new[] { "early_flake_detection_enabled:true", "flaky_test_retries_enabled:true" }),
+ new(new[] { "coverage_enabled", "early_flake_detection_enabled:true", "flaky_test_retries_enabled:true" }),
+ new(new[] { "itrskip_enabled", "early_flake_detection_enabled:true", "flaky_test_retries_enabled:true" }),
+ new(new[] { "coverage_enabled", "itrskip_enabled", "early_flake_detection_enabled:true", "flaky_test_retries_enabled:true" }),
+ // itr_skippable_tests.request, index = 329
new(null),
new(new[] { "rq_compressed:true" }),
- // itr_skippable_tests.request_errors, index = 303
+ // itr_skippable_tests.request_errors, index = 331
new(new[] { "error_type:timeout" }),
new(new[] { "error_type:network" }),
new(new[] { "error_type:status_code" }),
@@ -353,33 +381,33 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "error_type:status_code_4xx_response", "status_code:404" }),
new(new[] { "error_type:status_code_4xx_response", "status_code:408" }),
new(new[] { "error_type:status_code_4xx_response", "status_code:429" }),
- // itr_skippable_tests.response_tests, index = 314
+ // itr_skippable_tests.response_tests, index = 342
new(null),
- // itr_skippable_tests.response_suites, index = 315
+ // itr_skippable_tests.response_suites, index = 343
new(null),
- // itr_skipped, index = 316
+ // itr_skipped, index = 344
new(new[] { "event_type:test" }),
new(new[] { "event_type:suite" }),
new(new[] { "event_type:module" }),
new(new[] { "event_type:session" }),
- // itr_unskippable, index = 320
+ // itr_unskippable, index = 348
new(new[] { "event_type:test" }),
new(new[] { "event_type:suite" }),
new(new[] { "event_type:module" }),
new(new[] { "event_type:session" }),
- // itr_forced_run, index = 324
+ // itr_forced_run, index = 352
new(new[] { "event_type:test" }),
new(new[] { "event_type:suite" }),
new(new[] { "event_type:module" }),
new(new[] { "event_type:session" }),
- // code_coverage.is_empty, index = 328
+ // code_coverage.is_empty, index = 356
new(null),
- // code_coverage.errors, index = 329
+ // code_coverage.errors, index = 357
new(null),
- // early_flake_detection.request, index = 330
+ // early_flake_detection.request, index = 358
new(null),
new(new[] { "rq_compressed:true" }),
- // early_flake_detection.request_errors, index = 332
+ // early_flake_detection.request_errors, index = 360
new(new[] { "error_type:timeout" }),
new(new[] { "error_type:network" }),
new(new[] { "error_type:status_code" }),
@@ -399,7 +427,7 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
/// It is equal to the cardinality of the tag combinations (or 1 if there are no tags)
///
private static int[] CountCIVisibilityEntryCounts { get; }
- = new int[]{ 40, 80, 10, 10, 4, 1, 4, 22, 2, 9, 72, 2, 11, 2, 11, 2, 11, 8, 2, 11, 1, 1, 4, 4, 4, 1, 1, 2, 11, };
+ = new int[]{ 40, 100, 10, 10, 4, 1, 4, 22, 2, 9, 72, 2, 11, 2, 11, 2, 11, 16, 2, 11, 1, 1, 4, 4, 4, 1, 1, 2, 11, };
public void RecordCountCIVisibilityEventCreated(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityTestFramework tag1, Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityTestingEventTypeWithCodeOwnerAndSupportedCiAndBenchmark tag2, int increment = 1)
{
@@ -409,164 +437,164 @@ public void RecordCountCIVisibilityEventCreated(Datadog.Trace.Telemetry.Metrics.
public void RecordCountCIVisibilityEventFinished(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityTestFramework tag1, Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityTestingEventTypeWithCodeOwnerAndSupportedCiAndBenchmarkAndEarlyFlakeDetectionAndRum tag2, int increment = 1)
{
- var index = 40 + ((int)tag1 * 16) + (int)tag2;
+ var index = 40 + ((int)tag1 * 20) + (int)tag2;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityCodeCoverageStarted(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityTestFramework tag1, Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityCoverageLibrary tag2, int increment = 1)
{
- var index = 120 + ((int)tag1 * 2) + (int)tag2;
+ var index = 140 + ((int)tag1 * 2) + (int)tag2;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityCodeCoverageFinished(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityTestFramework tag1, Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityCoverageLibrary tag2, int increment = 1)
{
- var index = 130 + ((int)tag1 * 2) + (int)tag2;
+ var index = 150 + ((int)tag1 * 2) + (int)tag2;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityManualApiEvent(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityTestingEventType tag, int increment = 1)
{
- var index = 140 + (int)tag;
+ var index = 160 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityEventsEnqueueForSerialization(int increment = 1)
{
- Interlocked.Add(ref _buffer.CountCIVisibility[144], increment);
+ Interlocked.Add(ref _buffer.CountCIVisibility[164], increment);
}
public void RecordCountCIVisibilityEndpointPayloadRequests(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityEndpointAndCompression tag, int increment = 1)
{
- var index = 145 + (int)tag;
+ var index = 165 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityEndpointPayloadRequestsErrors(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityEndpoints tag1, Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityErrorType tag2, int increment = 1)
{
- var index = 149 + ((int)tag1 * 11) + (int)tag2;
+ var index = 169 + ((int)tag1 * 11) + (int)tag2;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityEndpointPayloadDropped(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityEndpoints tag, int increment = 1)
{
- var index = 171 + (int)tag;
+ var index = 191 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityGitCommand(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityCommands tag, int increment = 1)
{
- var index = 173 + (int)tag;
+ var index = 193 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityGitCommandErrors(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityCommands tag1, Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityExitCodes tag2, int increment = 1)
{
- var index = 182 + ((int)tag1 * 8) + (int)tag2;
+ var index = 202 + ((int)tag1 * 8) + (int)tag2;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityGitRequestsSearchCommits(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityRequestCompressed tag, int increment = 1)
{
- var index = 254 + (int)tag;
+ var index = 274 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityGitRequestsSearchCommitsErrors(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityErrorType tag, int increment = 1)
{
- var index = 256 + (int)tag;
+ var index = 276 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityGitRequestsObjectsPack(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityRequestCompressed tag, int increment = 1)
{
- var index = 267 + (int)tag;
+ var index = 287 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityGitRequestsObjectsPackErrors(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityErrorType tag, int increment = 1)
{
- var index = 269 + (int)tag;
+ var index = 289 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityGitRequestsSettings(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityRequestCompressed tag, int increment = 1)
{
- var index = 280 + (int)tag;
+ var index = 300 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityGitRequestsSettingsErrors(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityErrorType tag, int increment = 1)
{
- var index = 282 + (int)tag;
+ var index = 302 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityGitRequestsSettingsResponse(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityITRSettingsResponse tag, int increment = 1)
{
- var index = 293 + (int)tag;
+ var index = 313 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityITRSkippableTestsRequest(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityRequestCompressed tag, int increment = 1)
{
- var index = 301 + (int)tag;
+ var index = 329 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityITRSkippableTestsRequestErrors(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityErrorType tag, int increment = 1)
{
- var index = 303 + (int)tag;
+ var index = 331 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityITRSkippableTestsResponseTests(int increment = 1)
{
- Interlocked.Add(ref _buffer.CountCIVisibility[314], increment);
+ Interlocked.Add(ref _buffer.CountCIVisibility[342], increment);
}
public void RecordCountCIVisibilityITRSkippableTestsResponseSuites(int increment = 1)
{
- Interlocked.Add(ref _buffer.CountCIVisibility[315], increment);
+ Interlocked.Add(ref _buffer.CountCIVisibility[343], increment);
}
public void RecordCountCIVisibilityITRSkipped(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityTestingEventType tag, int increment = 1)
{
- var index = 316 + (int)tag;
+ var index = 344 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityITRUnskippable(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityTestingEventType tag, int increment = 1)
{
- var index = 320 + (int)tag;
+ var index = 348 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityITRForcedRun(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityTestingEventType tag, int increment = 1)
{
- var index = 324 + (int)tag;
+ var index = 352 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityCodeCoverageIsEmpty(int increment = 1)
{
- Interlocked.Add(ref _buffer.CountCIVisibility[328], increment);
+ Interlocked.Add(ref _buffer.CountCIVisibility[356], increment);
}
public void RecordCountCIVisibilityCodeCoverageErrors(int increment = 1)
{
- Interlocked.Add(ref _buffer.CountCIVisibility[329], increment);
+ Interlocked.Add(ref _buffer.CountCIVisibility[357], increment);
}
public void RecordCountCIVisibilityEarlyFlakeDetectionRequest(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityRequestCompressed tag, int increment = 1)
{
- var index = 330 + (int)tag;
+ var index = 358 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityEarlyFlakeDetectionRequestErrors(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityErrorType tag, int increment = 1)
{
- var index = 332 + (int)tag;
+ var index = 360 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
}
\ No newline at end of file
diff --git a/tracer/src/Datadog.Trace/Generated/net6.0/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/CiVisibilityMetricsTelemetryCollector_CountShared.g.cs b/tracer/src/Datadog.Trace/Generated/net6.0/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/CiVisibilityMetricsTelemetryCollector_CountShared.g.cs
index fcfd1e38ed4a..a34c9bfd512b 100644
--- a/tracer/src/Datadog.Trace/Generated/net6.0/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/CiVisibilityMetricsTelemetryCollector_CountShared.g.cs
+++ b/tracer/src/Datadog.Trace/Generated/net6.0/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/CiVisibilityMetricsTelemetryCollector_CountShared.g.cs
@@ -176,9 +176,9 @@ private static AggregatedMetric[] GetCountSharedBuffer()
new(new[] { "integration_name:symmetricalgorithm", "error_type:duck_typing" }),
new(new[] { "integration_name:symmetricalgorithm", "error_type:invoker" }),
new(new[] { "integration_name:symmetricalgorithm", "error_type:execution" }),
- new(new[] { "integration_name:opentelemetry", "error_type:duck_typing" }),
- new(new[] { "integration_name:opentelemetry", "error_type:invoker" }),
- new(new[] { "integration_name:opentelemetry", "error_type:execution" }),
+ new(new[] { "integration_name:otel", "error_type:duck_typing" }),
+ new(new[] { "integration_name:otel", "error_type:invoker" }),
+ new(new[] { "integration_name:otel", "error_type:execution" }),
new(new[] { "integration_name:pathtraversal", "error_type:duck_typing" }),
new(new[] { "integration_name:pathtraversal", "error_type:invoker" }),
new(new[] { "integration_name:pathtraversal", "error_type:execution" }),
diff --git a/tracer/src/Datadog.Trace/Generated/net6.0/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/MetricsTelemetryCollector_Count.g.cs b/tracer/src/Datadog.Trace/Generated/net6.0/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/MetricsTelemetryCollector_Count.g.cs
index b91aebc832be..7b20fa050a1d 100644
--- a/tracer/src/Datadog.Trace/Generated/net6.0/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/MetricsTelemetryCollector_Count.g.cs
+++ b/tracer/src/Datadog.Trace/Generated/net6.0/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/MetricsTelemetryCollector_Count.g.cs
@@ -77,7 +77,7 @@ private static AggregatedMetric[] GetCountBuffer()
new(new[] { "integration_name:process" }),
new(new[] { "integration_name:hashalgorithm" }),
new(new[] { "integration_name:symmetricalgorithm" }),
- new(new[] { "integration_name:opentelemetry" }),
+ new(new[] { "integration_name:otel" }),
new(new[] { "integration_name:pathtraversal" }),
new(new[] { "integration_name:ssrf" }),
new(new[] { "integration_name:ldap" }),
@@ -498,7 +498,7 @@ private static AggregatedMetric[] GetCountBuffer()
new(new[] { "integration_name:process" }),
new(new[] { "integration_name:hashalgorithm" }),
new(new[] { "integration_name:symmetricalgorithm" }),
- new(new[] { "integration_name:opentelemetry" }),
+ new(new[] { "integration_name:otel" }),
new(new[] { "integration_name:pathtraversal" }),
new(new[] { "integration_name:ssrf" }),
new(new[] { "integration_name:ldap" }),
diff --git a/tracer/src/Datadog.Trace/Generated/net6.0/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/MetricsTelemetryCollector_CountShared.g.cs b/tracer/src/Datadog.Trace/Generated/net6.0/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/MetricsTelemetryCollector_CountShared.g.cs
index 2a54bea2390a..e94fcb451a68 100644
--- a/tracer/src/Datadog.Trace/Generated/net6.0/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/MetricsTelemetryCollector_CountShared.g.cs
+++ b/tracer/src/Datadog.Trace/Generated/net6.0/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/MetricsTelemetryCollector_CountShared.g.cs
@@ -176,9 +176,9 @@ private static AggregatedMetric[] GetCountSharedBuffer()
new(new[] { "integration_name:symmetricalgorithm", "error_type:duck_typing" }),
new(new[] { "integration_name:symmetricalgorithm", "error_type:invoker" }),
new(new[] { "integration_name:symmetricalgorithm", "error_type:execution" }),
- new(new[] { "integration_name:opentelemetry", "error_type:duck_typing" }),
- new(new[] { "integration_name:opentelemetry", "error_type:invoker" }),
- new(new[] { "integration_name:opentelemetry", "error_type:execution" }),
+ new(new[] { "integration_name:otel", "error_type:duck_typing" }),
+ new(new[] { "integration_name:otel", "error_type:invoker" }),
+ new(new[] { "integration_name:otel", "error_type:execution" }),
new(new[] { "integration_name:pathtraversal", "error_type:duck_typing" }),
new(new[] { "integration_name:pathtraversal", "error_type:invoker" }),
new(new[] { "integration_name:pathtraversal", "error_type:execution" }),
diff --git a/tracer/src/Datadog.Trace/Generated/net6.0/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/TelemetryMetricAttribute.g.cs b/tracer/src/Datadog.Trace/Generated/net6.0/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/TelemetryMetricAttribute.g.cs
index e7f48e2b15c6..586d54aba6dd 100644
--- a/tracer/src/Datadog.Trace/Generated/net6.0/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/TelemetryMetricAttribute.g.cs
+++ b/tracer/src/Datadog.Trace/Generated/net6.0/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/TelemetryMetricAttribute.g.cs
@@ -118,7 +118,7 @@ public TelemetryMetricAttribute(string metricName)
/// which has a single tag
///
[System.AttributeUsage(System.AttributeTargets.Field, AllowMultiple = false)]
-internal class TelemetryMetricAttribute : System.Attribute
+internal class TelemetryMetricAttribute : Datadog.Trace.SourceGenerators.TelemetryMetricAttribute
where TTag : System.Enum
{
///
@@ -128,10 +128,8 @@ internal class TelemetryMetricAttribute : System.Attribute
/// Is the metric a "common" metric, shared across languages?
/// The namespace of the metric, if not the default (Tracer)
public TelemetryMetricAttribute(string metricName, bool isCommon, string nameSpace)
+ : base(metricName, isCommon, nameSpace)
{
- MetricName = metricName;
- IsCommon = isCommon;
- NameSpace = nameSpace;
}
///
@@ -141,34 +139,62 @@ public TelemetryMetricAttribute(string metricName, bool isCommon, string nameSpa
/// The name of the metric, as reported to Datadog
/// Is the metric a "common" metric, shared across languages?
public TelemetryMetricAttribute(string metricName, bool isCommon)
- : this(metricName, isCommon, null!)
+ : base(metricName, isCommon, null!)
{
}
///
/// Initializes a new instance of the class.
- /// Uses the default namespace and sets to true
+ /// Uses the default namespace and sets to true
///
/// The name of the metric, as reported to Datadog
public TelemetryMetricAttribute(string metricName)
- : this(metricName, isCommon: true, null!)
+ : base(metricName, isCommon: true, null!)
{
}
+}
+///
+/// Used to describe a specific metric defined as a field
+/// inside an enum decorated with
+/// which has two tags
+///
+[System.AttributeUsage(System.AttributeTargets.Field, AllowMultiple = false)]
+internal class TelemetryMetricAttribute : Datadog.Trace.SourceGenerators.TelemetryMetricAttribute
+ where TTag1 : System.Enum
+ where TTag2 : System.Enum
+{
///
- /// Gets the name of the metric, as reported to Datadog
+ /// Initializes a new instance of the class.
///
- public string MetricName { get; }
+ /// The name of the metric, as reported to Datadog
+ /// Is the metric a "common" metric, shared across languages?
+ /// The namespace of the metric, if not the default (Tracer)
+ public TelemetryMetricAttribute(string metricName, bool isCommon, string nameSpace)
+ : base(metricName, isCommon, nameSpace)
+ {
+ }
///
- /// Gets a value indicating whether the metric a "common" metric, shared across languages?
+ /// Initializes a new instance of the class.
+ /// Uses the default namespace
///
- public bool IsCommon { get; }
+ /// The name of the metric, as reported to Datadog
+ /// Is the metric a "common" metric, shared across languages?
+ public TelemetryMetricAttribute(string metricName, bool isCommon)
+ : base(metricName, isCommon, null!)
+ {
+ }
///
- /// Gets the namespace of the metric, if not the default (Tracer)
+ /// Initializes a new instance of the class.
+ /// Uses the default namespace and sets to true
///
- public string? NameSpace { get; }
+ /// The name of the metric, as reported to Datadog
+ public TelemetryMetricAttribute(string metricName)
+ : base(metricName, isCommon: true, null!)
+ {
+ }
}
///
@@ -177,9 +203,10 @@ public TelemetryMetricAttribute(string metricName)
/// which has two tags
///
[System.AttributeUsage(System.AttributeTargets.Field, AllowMultiple = false)]
-internal class TelemetryMetricAttribute : System.Attribute
+internal class TelemetryMetricAttribute : Datadog.Trace.SourceGenerators.TelemetryMetricAttribute
where TTag1 : System.Enum
where TTag2 : System.Enum
+ where TTag3 : System.Enum
{
///
/// Initializes a new instance of the class.
@@ -188,10 +215,8 @@ internal class TelemetryMetricAttribute : System.Attribute
/// Is the metric a "common" metric, shared across languages?
/// The namespace of the metric, if not the default (Tracer)
public TelemetryMetricAttribute(string metricName, bool isCommon, string nameSpace)
+ : base(metricName, isCommon, nameSpace)
{
- MetricName = metricName;
- IsCommon = isCommon;
- NameSpace = nameSpace;
}
///
@@ -201,32 +226,155 @@ public TelemetryMetricAttribute(string metricName, bool isCommon, string nameSpa
/// The name of the metric, as reported to Datadog
/// Is the metric a "common" metric, shared across languages?
public TelemetryMetricAttribute(string metricName, bool isCommon)
- : this(metricName, isCommon, null!)
+ : base(metricName, isCommon, null!)
{
}
///
/// Initializes a new instance of the class.
- /// Uses the default namespace and sets to true
+ /// Uses the default namespace and sets to true
///
/// The name of the metric, as reported to Datadog
public TelemetryMetricAttribute(string metricName)
- : this(metricName, isCommon: true, null!)
+ : base(metricName, isCommon: true, null!)
{
}
+}
+///
+/// Used to describe a specific metric defined as a field
+/// inside an enum decorated with
+/// which has two tags
+///
+[System.AttributeUsage(System.AttributeTargets.Field, AllowMultiple = false)]
+internal class TelemetryMetricAttribute : Datadog.Trace.SourceGenerators.TelemetryMetricAttribute
+ where TTag1 : System.Enum
+ where TTag2 : System.Enum
+ where TTag3 : System.Enum
+ where TTag4 : System.Enum
+{
///
- /// Gets the name of the metric, as reported to Datadog
+ /// Initializes a new instance of the class.
///
- public string MetricName { get; }
+ /// The name of the metric, as reported to Datadog
+ /// Is the metric a "common" metric, shared across languages?
+ /// The namespace of the metric, if not the default (Tracer)
+ public TelemetryMetricAttribute(string metricName, bool isCommon, string nameSpace)
+ : base(metricName, isCommon, nameSpace)
+ {
+ }
///
- /// Gets a value indicating whether the metric a "common" metric, shared across languages?
+ /// Initializes a new instance of the class.
+ /// Uses the default namespace
///
- public bool IsCommon { get; }
+ /// The name of the metric, as reported to Datadog
+ /// Is the metric a "common" metric, shared across languages?
+ public TelemetryMetricAttribute(string metricName, bool isCommon)
+ : base(metricName, isCommon, null!)
+ {
+ }
///
- /// Gets the namespace of the metric, if not the default (Tracer)
+ /// Initializes a new instance of the class.
+ /// Uses the default namespace and sets to true
///
- public string? NameSpace { get; }
+ /// The name of the metric, as reported to Datadog
+ public TelemetryMetricAttribute(string metricName)
+ : base(metricName, isCommon: true, null!)
+ {
+ }
+}
+
+///
+/// Used to describe a specific metric defined as a field
+/// inside an enum decorated with
+/// which has two tags
+///
+[System.AttributeUsage(System.AttributeTargets.Field, AllowMultiple = false)]
+internal class TelemetryMetricAttribute : Datadog.Trace.SourceGenerators.TelemetryMetricAttribute
+ where TTag1 : System.Enum
+ where TTag2 : System.Enum
+ where TTag3 : System.Enum
+ where TTag4 : System.Enum
+ where TTag5 : System.Enum
+{
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The name of the metric, as reported to Datadog
+ /// Is the metric a "common" metric, shared across languages?
+ /// The namespace of the metric, if not the default (Tracer)
+ public TelemetryMetricAttribute(string metricName, bool isCommon, string nameSpace)
+ : base(metricName, isCommon, nameSpace)
+ {
+ }
+
+ ///
+ /// Initializes a new instance of the class.
+ /// Uses the default namespace
+ ///
+ /// The name of the metric, as reported to Datadog
+ /// Is the metric a "common" metric, shared across languages?
+ public TelemetryMetricAttribute(string metricName, bool isCommon)
+ : base(metricName, isCommon, null!)
+ {
+ }
+
+ ///
+ /// Initializes a new instance of the class.
+ /// Uses the default namespace and sets to true
+ ///
+ /// The name of the metric, as reported to Datadog
+ public TelemetryMetricAttribute(string metricName)
+ : base(metricName, isCommon: true, null!)
+ {
+ }
+}
+
+///
+/// Used to describe a specific metric defined as a field
+/// inside an enum decorated with
+/// which has two tags
+///
+[System.AttributeUsage(System.AttributeTargets.Field, AllowMultiple = false)]
+internal class TelemetryMetricAttribute : Datadog.Trace.SourceGenerators.TelemetryMetricAttribute
+ where TTag1 : System.Enum
+ where TTag2 : System.Enum
+ where TTag3 : System.Enum
+ where TTag4 : System.Enum
+ where TTag5 : System.Enum
+ where TTag6 : System.Enum
+{
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The name of the metric, as reported to Datadog
+ /// Is the metric a "common" metric, shared across languages?
+ /// The namespace of the metric, if not the default (Tracer)
+ public TelemetryMetricAttribute(string metricName, bool isCommon, string nameSpace)
+ : base(metricName, isCommon, nameSpace)
+ {
+ }
+
+ ///
+ /// Initializes a new instance of the class.
+ /// Uses the default namespace
+ ///
+ /// The name of the metric, as reported to Datadog
+ /// Is the metric a "common" metric, shared across languages?
+ public TelemetryMetricAttribute(string metricName, bool isCommon)
+ : base(metricName, isCommon, null!)
+ {
+ }
+
+ ///
+ /// Initializes a new instance of the class.
+ /// Uses the default namespace and sets to true
+ ///
+ /// The name of the metric, as reported to Datadog
+ public TelemetryMetricAttribute(string metricName)
+ : base(metricName, isCommon: true, null!)
+ {
+ }
}
\ No newline at end of file
diff --git a/tracer/src/Datadog.Trace/Generated/netcoreapp3.1/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/CiVisibilityMetricsTelemetryCollector_CountCIVisibility.g.cs b/tracer/src/Datadog.Trace/Generated/netcoreapp3.1/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/CiVisibilityMetricsTelemetryCollector_CountCIVisibility.g.cs
index 2766115d192b..eb26f45d2c8d 100644
--- a/tracer/src/Datadog.Trace/Generated/netcoreapp3.1/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/CiVisibilityMetricsTelemetryCollector_CountCIVisibility.g.cs
+++ b/tracer/src/Datadog.Trace/Generated/netcoreapp3.1/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/CiVisibilityMetricsTelemetryCollector_CountCIVisibility.g.cs
@@ -11,7 +11,7 @@
namespace Datadog.Trace.Telemetry;
internal partial class CiVisibilityMetricsTelemetryCollector
{
- private const int CountCIVisibilityLength = 343;
+ private const int CountCIVisibilityLength = 371;
///
/// Creates the buffer for the values.
@@ -69,6 +69,10 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "test_framework:xunit", "event_type:session", "is_unsupported_ci" }),
new(new[] { "test_framework:xunit", "event_type:session", "has_codeowner", "is_unsupported_ci" }),
new(new[] { "test_framework:xunit", "event_type:session", "has_codeowner" }),
+ new(new[] { "test_framework:xunit", "event_type:session", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:xunit", "event_type:session", "is_unsupported_ci", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:xunit", "event_type:session", "has_codeowner", "is_unsupported_ci", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:xunit", "event_type:session", "has_codeowner", "agentless_log_submission_enabled" }),
new(new[] { "test_framework:xunit", "event_type:test", "is_new:true" }),
new(new[] { "test_framework:xunit", "event_type:test", "is_new:true", "early_flake_detection_abort_reason:slow" }),
new(new[] { "test_framework:xunit", "event_type:test", "browser_driver:selenium" }),
@@ -85,6 +89,10 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "test_framework:nunit", "event_type:session", "is_unsupported_ci" }),
new(new[] { "test_framework:nunit", "event_type:session", "has_codeowner", "is_unsupported_ci" }),
new(new[] { "test_framework:nunit", "event_type:session", "has_codeowner" }),
+ new(new[] { "test_framework:nunit", "event_type:session", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:nunit", "event_type:session", "is_unsupported_ci", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:nunit", "event_type:session", "has_codeowner", "is_unsupported_ci", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:nunit", "event_type:session", "has_codeowner", "agentless_log_submission_enabled" }),
new(new[] { "test_framework:nunit", "event_type:test", "is_new:true" }),
new(new[] { "test_framework:nunit", "event_type:test", "is_new:true", "early_flake_detection_abort_reason:slow" }),
new(new[] { "test_framework:nunit", "event_type:test", "browser_driver:selenium" }),
@@ -101,6 +109,10 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "test_framework:mstest", "event_type:session", "is_unsupported_ci" }),
new(new[] { "test_framework:mstest", "event_type:session", "has_codeowner", "is_unsupported_ci" }),
new(new[] { "test_framework:mstest", "event_type:session", "has_codeowner" }),
+ new(new[] { "test_framework:mstest", "event_type:session", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:mstest", "event_type:session", "is_unsupported_ci", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:mstest", "event_type:session", "has_codeowner", "is_unsupported_ci", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:mstest", "event_type:session", "has_codeowner", "agentless_log_submission_enabled" }),
new(new[] { "test_framework:mstest", "event_type:test", "is_new:true" }),
new(new[] { "test_framework:mstest", "event_type:test", "is_new:true", "early_flake_detection_abort_reason:slow" }),
new(new[] { "test_framework:mstest", "event_type:test", "browser_driver:selenium" }),
@@ -117,6 +129,10 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "test_framework:benchmarkdotnet", "event_type:session", "is_unsupported_ci" }),
new(new[] { "test_framework:benchmarkdotnet", "event_type:session", "has_codeowner", "is_unsupported_ci" }),
new(new[] { "test_framework:benchmarkdotnet", "event_type:session", "has_codeowner" }),
+ new(new[] { "test_framework:benchmarkdotnet", "event_type:session", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:benchmarkdotnet", "event_type:session", "is_unsupported_ci", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:benchmarkdotnet", "event_type:session", "has_codeowner", "is_unsupported_ci", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:benchmarkdotnet", "event_type:session", "has_codeowner", "agentless_log_submission_enabled" }),
new(new[] { "test_framework:benchmarkdotnet", "event_type:test", "is_new:true" }),
new(new[] { "test_framework:benchmarkdotnet", "event_type:test", "is_new:true", "early_flake_detection_abort_reason:slow" }),
new(new[] { "test_framework:benchmarkdotnet", "event_type:test", "browser_driver:selenium" }),
@@ -133,6 +149,10 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "test_framework:unknown", "event_type:session", "is_unsupported_ci" }),
new(new[] { "test_framework:unknown", "event_type:session", "has_codeowner", "is_unsupported_ci" }),
new(new[] { "test_framework:unknown", "event_type:session", "has_codeowner" }),
+ new(new[] { "test_framework:unknown", "event_type:session", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:unknown", "event_type:session", "is_unsupported_ci", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:unknown", "event_type:session", "has_codeowner", "is_unsupported_ci", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:unknown", "event_type:session", "has_codeowner", "agentless_log_submission_enabled" }),
new(new[] { "test_framework:unknown", "event_type:test", "is_new:true" }),
new(new[] { "test_framework:unknown", "event_type:test", "is_new:true", "early_flake_detection_abort_reason:slow" }),
new(new[] { "test_framework:unknown", "event_type:test", "browser_driver:selenium" }),
@@ -141,7 +161,7 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "test_framework:unknown", "event_type:test", "browser_driver:selenium", "is_rum:true" }),
new(new[] { "test_framework:unknown", "event_type:test", "is_new:true", "browser_driver:selenium", "is_rum:true" }),
new(new[] { "test_framework:unknown", "event_type:test", "is_new:true", "early_flake_detection_abort_reason:slow", "browser_driver:selenium", "is_rum:true" }),
- // code_coverage_started, index = 120
+ // code_coverage_started, index = 140
new(new[] { "test_framework:xunit", "library:custom" }),
new(new[] { "test_framework:xunit", "library:unknown" }),
new(new[] { "test_framework:nunit", "library:custom" }),
@@ -152,7 +172,7 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "test_framework:benchmarkdotnet", "library:unknown" }),
new(new[] { "test_framework:unknown", "library:custom" }),
new(new[] { "test_framework:unknown", "library:unknown" }),
- // code_coverage_finished, index = 130
+ // code_coverage_finished, index = 150
new(new[] { "test_framework:xunit", "library:custom" }),
new(new[] { "test_framework:xunit", "library:unknown" }),
new(new[] { "test_framework:nunit", "library:custom" }),
@@ -163,19 +183,19 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "test_framework:benchmarkdotnet", "library:unknown" }),
new(new[] { "test_framework:unknown", "library:custom" }),
new(new[] { "test_framework:unknown", "library:unknown" }),
- // manual_api_events, index = 140
+ // manual_api_events, index = 160
new(new[] { "event_type:test" }),
new(new[] { "event_type:suite" }),
new(new[] { "event_type:module" }),
new(new[] { "event_type:session" }),
- // events_enqueued_for_serialization, index = 144
+ // events_enqueued_for_serialization, index = 164
new(null),
- // endpoint_payload.requests, index = 145
+ // endpoint_payload.requests, index = 165
new(new[] { "endpoint:test_cycle" }),
new(new[] { "endpoint:test_cycle", "rq_compressed:true" }),
new(new[] { "endpoint:code_coverage" }),
new(new[] { "endpoint:code_coverage", "rq_compressed:true" }),
- // endpoint_payload.requests_errors, index = 149
+ // endpoint_payload.requests_errors, index = 169
new(new[] { "endpoint:test_cycle", "error_type:timeout" }),
new(new[] { "endpoint:test_cycle", "error_type:network" }),
new(new[] { "endpoint:test_cycle", "error_type:status_code" }),
@@ -198,10 +218,10 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "endpoint:code_coverage", "error_type:status_code_4xx_response", "status_code:404" }),
new(new[] { "endpoint:code_coverage", "error_type:status_code_4xx_response", "status_code:408" }),
new(new[] { "endpoint:code_coverage", "error_type:status_code_4xx_response", "status_code:429" }),
- // endpoint_payload.dropped, index = 171
+ // endpoint_payload.dropped, index = 191
new(new[] { "endpoint:test_cycle" }),
new(new[] { "endpoint:code_coverage" }),
- // git.command, index = 173
+ // git.command, index = 193
new(new[] { "command:get_repository" }),
new(new[] { "command:get_branch" }),
new(new[] { "command:get_remote" }),
@@ -211,7 +231,7 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "command:get_local_commits" }),
new(new[] { "command:get_objects" }),
new(new[] { "command:pack_objects" }),
- // git.command_errors, index = 182
+ // git.command_errors, index = 202
new(new[] { "command:get_repository", "exit_code:missing" }),
new(new[] { "command:get_repository", "exit_code:unknown" }),
new(new[] { "command:get_repository", "exit_code:-1" }),
@@ -284,10 +304,10 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "command:pack_objects", "exit_code:127" }),
new(new[] { "command:pack_objects", "exit_code:128" }),
new(new[] { "command:pack_objects", "exit_code:129" }),
- // git_requests.search_commits, index = 254
+ // git_requests.search_commits, index = 274
new(null),
new(new[] { "rq_compressed:true" }),
- // git_requests.search_commits_errors, index = 256
+ // git_requests.search_commits_errors, index = 276
new(new[] { "error_type:timeout" }),
new(new[] { "error_type:network" }),
new(new[] { "error_type:status_code" }),
@@ -299,10 +319,10 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "error_type:status_code_4xx_response", "status_code:404" }),
new(new[] { "error_type:status_code_4xx_response", "status_code:408" }),
new(new[] { "error_type:status_code_4xx_response", "status_code:429" }),
- // git_requests.objects_pack, index = 267
+ // git_requests.objects_pack, index = 287
new(null),
new(new[] { "rq_compressed:true" }),
- // git_requests.objects_pack_errors, index = 269
+ // git_requests.objects_pack_errors, index = 289
new(new[] { "error_type:timeout" }),
new(new[] { "error_type:network" }),
new(new[] { "error_type:status_code" }),
@@ -314,10 +334,10 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "error_type:status_code_4xx_response", "status_code:404" }),
new(new[] { "error_type:status_code_4xx_response", "status_code:408" }),
new(new[] { "error_type:status_code_4xx_response", "status_code:429" }),
- // git_requests.settings, index = 280
+ // git_requests.settings, index = 300
new(null),
new(new[] { "rq_compressed:true" }),
- // git_requests.settings_errors, index = 282
+ // git_requests.settings_errors, index = 302
new(new[] { "error_type:timeout" }),
new(new[] { "error_type:network" }),
new(new[] { "error_type:status_code" }),
@@ -329,7 +349,7 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "error_type:status_code_4xx_response", "status_code:404" }),
new(new[] { "error_type:status_code_4xx_response", "status_code:408" }),
new(new[] { "error_type:status_code_4xx_response", "status_code:429" }),
- // git_requests.settings_response, index = 293
+ // git_requests.settings_response, index = 313
new(null),
new(new[] { "coverage_enabled" }),
new(new[] { "itrskip_enabled" }),
@@ -338,10 +358,18 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "coverage_enabled", "early_flake_detection_enabled:true" }),
new(new[] { "itrskip_enabled", "early_flake_detection_enabled:true" }),
new(new[] { "coverage_enabled", "itrskip_enabled", "early_flake_detection_enabled:true" }),
- // itr_skippable_tests.request, index = 301
+ new(new[] { "flaky_test_retries_enabled:true" }),
+ new(new[] { "coverage_enabled", "flaky_test_retries_enabled:true" }),
+ new(new[] { "itrskip_enabled", "flaky_test_retries_enabled:true" }),
+ new(new[] { "coverage_enabled", "itrskip_enabled", "flaky_test_retries_enabled:true" }),
+ new(new[] { "early_flake_detection_enabled:true", "flaky_test_retries_enabled:true" }),
+ new(new[] { "coverage_enabled", "early_flake_detection_enabled:true", "flaky_test_retries_enabled:true" }),
+ new(new[] { "itrskip_enabled", "early_flake_detection_enabled:true", "flaky_test_retries_enabled:true" }),
+ new(new[] { "coverage_enabled", "itrskip_enabled", "early_flake_detection_enabled:true", "flaky_test_retries_enabled:true" }),
+ // itr_skippable_tests.request, index = 329
new(null),
new(new[] { "rq_compressed:true" }),
- // itr_skippable_tests.request_errors, index = 303
+ // itr_skippable_tests.request_errors, index = 331
new(new[] { "error_type:timeout" }),
new(new[] { "error_type:network" }),
new(new[] { "error_type:status_code" }),
@@ -353,33 +381,33 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "error_type:status_code_4xx_response", "status_code:404" }),
new(new[] { "error_type:status_code_4xx_response", "status_code:408" }),
new(new[] { "error_type:status_code_4xx_response", "status_code:429" }),
- // itr_skippable_tests.response_tests, index = 314
+ // itr_skippable_tests.response_tests, index = 342
new(null),
- // itr_skippable_tests.response_suites, index = 315
+ // itr_skippable_tests.response_suites, index = 343
new(null),
- // itr_skipped, index = 316
+ // itr_skipped, index = 344
new(new[] { "event_type:test" }),
new(new[] { "event_type:suite" }),
new(new[] { "event_type:module" }),
new(new[] { "event_type:session" }),
- // itr_unskippable, index = 320
+ // itr_unskippable, index = 348
new(new[] { "event_type:test" }),
new(new[] { "event_type:suite" }),
new(new[] { "event_type:module" }),
new(new[] { "event_type:session" }),
- // itr_forced_run, index = 324
+ // itr_forced_run, index = 352
new(new[] { "event_type:test" }),
new(new[] { "event_type:suite" }),
new(new[] { "event_type:module" }),
new(new[] { "event_type:session" }),
- // code_coverage.is_empty, index = 328
+ // code_coverage.is_empty, index = 356
new(null),
- // code_coverage.errors, index = 329
+ // code_coverage.errors, index = 357
new(null),
- // early_flake_detection.request, index = 330
+ // early_flake_detection.request, index = 358
new(null),
new(new[] { "rq_compressed:true" }),
- // early_flake_detection.request_errors, index = 332
+ // early_flake_detection.request_errors, index = 360
new(new[] { "error_type:timeout" }),
new(new[] { "error_type:network" }),
new(new[] { "error_type:status_code" }),
@@ -399,7 +427,7 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
/// It is equal to the cardinality of the tag combinations (or 1 if there are no tags)
///
private static int[] CountCIVisibilityEntryCounts { get; }
- = new int[]{ 40, 80, 10, 10, 4, 1, 4, 22, 2, 9, 72, 2, 11, 2, 11, 2, 11, 8, 2, 11, 1, 1, 4, 4, 4, 1, 1, 2, 11, };
+ = new int[]{ 40, 100, 10, 10, 4, 1, 4, 22, 2, 9, 72, 2, 11, 2, 11, 2, 11, 16, 2, 11, 1, 1, 4, 4, 4, 1, 1, 2, 11, };
public void RecordCountCIVisibilityEventCreated(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityTestFramework tag1, Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityTestingEventTypeWithCodeOwnerAndSupportedCiAndBenchmark tag2, int increment = 1)
{
@@ -409,164 +437,164 @@ public void RecordCountCIVisibilityEventCreated(Datadog.Trace.Telemetry.Metrics.
public void RecordCountCIVisibilityEventFinished(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityTestFramework tag1, Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityTestingEventTypeWithCodeOwnerAndSupportedCiAndBenchmarkAndEarlyFlakeDetectionAndRum tag2, int increment = 1)
{
- var index = 40 + ((int)tag1 * 16) + (int)tag2;
+ var index = 40 + ((int)tag1 * 20) + (int)tag2;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityCodeCoverageStarted(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityTestFramework tag1, Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityCoverageLibrary tag2, int increment = 1)
{
- var index = 120 + ((int)tag1 * 2) + (int)tag2;
+ var index = 140 + ((int)tag1 * 2) + (int)tag2;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityCodeCoverageFinished(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityTestFramework tag1, Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityCoverageLibrary tag2, int increment = 1)
{
- var index = 130 + ((int)tag1 * 2) + (int)tag2;
+ var index = 150 + ((int)tag1 * 2) + (int)tag2;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityManualApiEvent(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityTestingEventType tag, int increment = 1)
{
- var index = 140 + (int)tag;
+ var index = 160 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityEventsEnqueueForSerialization(int increment = 1)
{
- Interlocked.Add(ref _buffer.CountCIVisibility[144], increment);
+ Interlocked.Add(ref _buffer.CountCIVisibility[164], increment);
}
public void RecordCountCIVisibilityEndpointPayloadRequests(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityEndpointAndCompression tag, int increment = 1)
{
- var index = 145 + (int)tag;
+ var index = 165 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityEndpointPayloadRequestsErrors(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityEndpoints tag1, Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityErrorType tag2, int increment = 1)
{
- var index = 149 + ((int)tag1 * 11) + (int)tag2;
+ var index = 169 + ((int)tag1 * 11) + (int)tag2;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityEndpointPayloadDropped(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityEndpoints tag, int increment = 1)
{
- var index = 171 + (int)tag;
+ var index = 191 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityGitCommand(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityCommands tag, int increment = 1)
{
- var index = 173 + (int)tag;
+ var index = 193 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityGitCommandErrors(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityCommands tag1, Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityExitCodes tag2, int increment = 1)
{
- var index = 182 + ((int)tag1 * 8) + (int)tag2;
+ var index = 202 + ((int)tag1 * 8) + (int)tag2;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityGitRequestsSearchCommits(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityRequestCompressed tag, int increment = 1)
{
- var index = 254 + (int)tag;
+ var index = 274 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityGitRequestsSearchCommitsErrors(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityErrorType tag, int increment = 1)
{
- var index = 256 + (int)tag;
+ var index = 276 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityGitRequestsObjectsPack(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityRequestCompressed tag, int increment = 1)
{
- var index = 267 + (int)tag;
+ var index = 287 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityGitRequestsObjectsPackErrors(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityErrorType tag, int increment = 1)
{
- var index = 269 + (int)tag;
+ var index = 289 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityGitRequestsSettings(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityRequestCompressed tag, int increment = 1)
{
- var index = 280 + (int)tag;
+ var index = 300 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityGitRequestsSettingsErrors(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityErrorType tag, int increment = 1)
{
- var index = 282 + (int)tag;
+ var index = 302 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityGitRequestsSettingsResponse(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityITRSettingsResponse tag, int increment = 1)
{
- var index = 293 + (int)tag;
+ var index = 313 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityITRSkippableTestsRequest(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityRequestCompressed tag, int increment = 1)
{
- var index = 301 + (int)tag;
+ var index = 329 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityITRSkippableTestsRequestErrors(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityErrorType tag, int increment = 1)
{
- var index = 303 + (int)tag;
+ var index = 331 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityITRSkippableTestsResponseTests(int increment = 1)
{
- Interlocked.Add(ref _buffer.CountCIVisibility[314], increment);
+ Interlocked.Add(ref _buffer.CountCIVisibility[342], increment);
}
public void RecordCountCIVisibilityITRSkippableTestsResponseSuites(int increment = 1)
{
- Interlocked.Add(ref _buffer.CountCIVisibility[315], increment);
+ Interlocked.Add(ref _buffer.CountCIVisibility[343], increment);
}
public void RecordCountCIVisibilityITRSkipped(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityTestingEventType tag, int increment = 1)
{
- var index = 316 + (int)tag;
+ var index = 344 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityITRUnskippable(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityTestingEventType tag, int increment = 1)
{
- var index = 320 + (int)tag;
+ var index = 348 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityITRForcedRun(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityTestingEventType tag, int increment = 1)
{
- var index = 324 + (int)tag;
+ var index = 352 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityCodeCoverageIsEmpty(int increment = 1)
{
- Interlocked.Add(ref _buffer.CountCIVisibility[328], increment);
+ Interlocked.Add(ref _buffer.CountCIVisibility[356], increment);
}
public void RecordCountCIVisibilityCodeCoverageErrors(int increment = 1)
{
- Interlocked.Add(ref _buffer.CountCIVisibility[329], increment);
+ Interlocked.Add(ref _buffer.CountCIVisibility[357], increment);
}
public void RecordCountCIVisibilityEarlyFlakeDetectionRequest(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityRequestCompressed tag, int increment = 1)
{
- var index = 330 + (int)tag;
+ var index = 358 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityEarlyFlakeDetectionRequestErrors(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityErrorType tag, int increment = 1)
{
- var index = 332 + (int)tag;
+ var index = 360 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
}
\ No newline at end of file
diff --git a/tracer/src/Datadog.Trace/Generated/netcoreapp3.1/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/CiVisibilityMetricsTelemetryCollector_CountShared.g.cs b/tracer/src/Datadog.Trace/Generated/netcoreapp3.1/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/CiVisibilityMetricsTelemetryCollector_CountShared.g.cs
index fcfd1e38ed4a..a34c9bfd512b 100644
--- a/tracer/src/Datadog.Trace/Generated/netcoreapp3.1/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/CiVisibilityMetricsTelemetryCollector_CountShared.g.cs
+++ b/tracer/src/Datadog.Trace/Generated/netcoreapp3.1/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/CiVisibilityMetricsTelemetryCollector_CountShared.g.cs
@@ -176,9 +176,9 @@ private static AggregatedMetric[] GetCountSharedBuffer()
new(new[] { "integration_name:symmetricalgorithm", "error_type:duck_typing" }),
new(new[] { "integration_name:symmetricalgorithm", "error_type:invoker" }),
new(new[] { "integration_name:symmetricalgorithm", "error_type:execution" }),
- new(new[] { "integration_name:opentelemetry", "error_type:duck_typing" }),
- new(new[] { "integration_name:opentelemetry", "error_type:invoker" }),
- new(new[] { "integration_name:opentelemetry", "error_type:execution" }),
+ new(new[] { "integration_name:otel", "error_type:duck_typing" }),
+ new(new[] { "integration_name:otel", "error_type:invoker" }),
+ new(new[] { "integration_name:otel", "error_type:execution" }),
new(new[] { "integration_name:pathtraversal", "error_type:duck_typing" }),
new(new[] { "integration_name:pathtraversal", "error_type:invoker" }),
new(new[] { "integration_name:pathtraversal", "error_type:execution" }),
diff --git a/tracer/src/Datadog.Trace/Generated/netcoreapp3.1/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/MetricsTelemetryCollector_Count.g.cs b/tracer/src/Datadog.Trace/Generated/netcoreapp3.1/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/MetricsTelemetryCollector_Count.g.cs
index b91aebc832be..7b20fa050a1d 100644
--- a/tracer/src/Datadog.Trace/Generated/netcoreapp3.1/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/MetricsTelemetryCollector_Count.g.cs
+++ b/tracer/src/Datadog.Trace/Generated/netcoreapp3.1/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/MetricsTelemetryCollector_Count.g.cs
@@ -77,7 +77,7 @@ private static AggregatedMetric[] GetCountBuffer()
new(new[] { "integration_name:process" }),
new(new[] { "integration_name:hashalgorithm" }),
new(new[] { "integration_name:symmetricalgorithm" }),
- new(new[] { "integration_name:opentelemetry" }),
+ new(new[] { "integration_name:otel" }),
new(new[] { "integration_name:pathtraversal" }),
new(new[] { "integration_name:ssrf" }),
new(new[] { "integration_name:ldap" }),
@@ -498,7 +498,7 @@ private static AggregatedMetric[] GetCountBuffer()
new(new[] { "integration_name:process" }),
new(new[] { "integration_name:hashalgorithm" }),
new(new[] { "integration_name:symmetricalgorithm" }),
- new(new[] { "integration_name:opentelemetry" }),
+ new(new[] { "integration_name:otel" }),
new(new[] { "integration_name:pathtraversal" }),
new(new[] { "integration_name:ssrf" }),
new(new[] { "integration_name:ldap" }),
diff --git a/tracer/src/Datadog.Trace/Generated/netcoreapp3.1/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/MetricsTelemetryCollector_CountShared.g.cs b/tracer/src/Datadog.Trace/Generated/netcoreapp3.1/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/MetricsTelemetryCollector_CountShared.g.cs
index 2a54bea2390a..e94fcb451a68 100644
--- a/tracer/src/Datadog.Trace/Generated/netcoreapp3.1/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/MetricsTelemetryCollector_CountShared.g.cs
+++ b/tracer/src/Datadog.Trace/Generated/netcoreapp3.1/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/MetricsTelemetryCollector_CountShared.g.cs
@@ -176,9 +176,9 @@ private static AggregatedMetric[] GetCountSharedBuffer()
new(new[] { "integration_name:symmetricalgorithm", "error_type:duck_typing" }),
new(new[] { "integration_name:symmetricalgorithm", "error_type:invoker" }),
new(new[] { "integration_name:symmetricalgorithm", "error_type:execution" }),
- new(new[] { "integration_name:opentelemetry", "error_type:duck_typing" }),
- new(new[] { "integration_name:opentelemetry", "error_type:invoker" }),
- new(new[] { "integration_name:opentelemetry", "error_type:execution" }),
+ new(new[] { "integration_name:otel", "error_type:duck_typing" }),
+ new(new[] { "integration_name:otel", "error_type:invoker" }),
+ new(new[] { "integration_name:otel", "error_type:execution" }),
new(new[] { "integration_name:pathtraversal", "error_type:duck_typing" }),
new(new[] { "integration_name:pathtraversal", "error_type:invoker" }),
new(new[] { "integration_name:pathtraversal", "error_type:execution" }),
diff --git a/tracer/src/Datadog.Trace/Generated/netcoreapp3.1/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/TelemetryMetricAttribute.g.cs b/tracer/src/Datadog.Trace/Generated/netcoreapp3.1/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/TelemetryMetricAttribute.g.cs
index e7f48e2b15c6..586d54aba6dd 100644
--- a/tracer/src/Datadog.Trace/Generated/netcoreapp3.1/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/TelemetryMetricAttribute.g.cs
+++ b/tracer/src/Datadog.Trace/Generated/netcoreapp3.1/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/TelemetryMetricAttribute.g.cs
@@ -118,7 +118,7 @@ public TelemetryMetricAttribute(string metricName)
/// which has a single tag
///
[System.AttributeUsage(System.AttributeTargets.Field, AllowMultiple = false)]
-internal class TelemetryMetricAttribute : System.Attribute
+internal class TelemetryMetricAttribute : Datadog.Trace.SourceGenerators.TelemetryMetricAttribute
where TTag : System.Enum
{
///
@@ -128,10 +128,8 @@ internal class TelemetryMetricAttribute : System.Attribute
/// Is the metric a "common" metric, shared across languages?
/// The namespace of the metric, if not the default (Tracer)
public TelemetryMetricAttribute(string metricName, bool isCommon, string nameSpace)
+ : base(metricName, isCommon, nameSpace)
{
- MetricName = metricName;
- IsCommon = isCommon;
- NameSpace = nameSpace;
}
///
@@ -141,34 +139,62 @@ public TelemetryMetricAttribute(string metricName, bool isCommon, string nameSpa
/// The name of the metric, as reported to Datadog
/// Is the metric a "common" metric, shared across languages?
public TelemetryMetricAttribute(string metricName, bool isCommon)
- : this(metricName, isCommon, null!)
+ : base(metricName, isCommon, null!)
{
}
///
/// Initializes a new instance of the class.
- /// Uses the default namespace and sets to true
+ /// Uses the default namespace and sets to true
///
/// The name of the metric, as reported to Datadog
public TelemetryMetricAttribute(string metricName)
- : this(metricName, isCommon: true, null!)
+ : base(metricName, isCommon: true, null!)
{
}
+}
+///
+/// Used to describe a specific metric defined as a field
+/// inside an enum decorated with
+/// which has two tags
+///
+[System.AttributeUsage(System.AttributeTargets.Field, AllowMultiple = false)]
+internal class TelemetryMetricAttribute : Datadog.Trace.SourceGenerators.TelemetryMetricAttribute
+ where TTag1 : System.Enum
+ where TTag2 : System.Enum
+{
///
- /// Gets the name of the metric, as reported to Datadog
+ /// Initializes a new instance of the class.
///
- public string MetricName { get; }
+ /// The name of the metric, as reported to Datadog
+ /// Is the metric a "common" metric, shared across languages?
+ /// The namespace of the metric, if not the default (Tracer)
+ public TelemetryMetricAttribute(string metricName, bool isCommon, string nameSpace)
+ : base(metricName, isCommon, nameSpace)
+ {
+ }
///
- /// Gets a value indicating whether the metric a "common" metric, shared across languages?
+ /// Initializes a new instance of the class.
+ /// Uses the default namespace
///
- public bool IsCommon { get; }
+ /// The name of the metric, as reported to Datadog
+ /// Is the metric a "common" metric, shared across languages?
+ public TelemetryMetricAttribute(string metricName, bool isCommon)
+ : base(metricName, isCommon, null!)
+ {
+ }
///
- /// Gets the namespace of the metric, if not the default (Tracer)
+ /// Initializes a new instance of the class.
+ /// Uses the default namespace and sets to true
///
- public string? NameSpace { get; }
+ /// The name of the metric, as reported to Datadog
+ public TelemetryMetricAttribute(string metricName)
+ : base(metricName, isCommon: true, null!)
+ {
+ }
}
///
@@ -177,9 +203,10 @@ public TelemetryMetricAttribute(string metricName)
/// which has two tags
///
[System.AttributeUsage(System.AttributeTargets.Field, AllowMultiple = false)]
-internal class TelemetryMetricAttribute : System.Attribute
+internal class TelemetryMetricAttribute : Datadog.Trace.SourceGenerators.TelemetryMetricAttribute
where TTag1 : System.Enum
where TTag2 : System.Enum
+ where TTag3 : System.Enum
{
///
/// Initializes a new instance of the class.
@@ -188,10 +215,8 @@ internal class TelemetryMetricAttribute : System.Attribute
/// Is the metric a "common" metric, shared across languages?
/// The namespace of the metric, if not the default (Tracer)
public TelemetryMetricAttribute(string metricName, bool isCommon, string nameSpace)
+ : base(metricName, isCommon, nameSpace)
{
- MetricName = metricName;
- IsCommon = isCommon;
- NameSpace = nameSpace;
}
///
@@ -201,32 +226,155 @@ public TelemetryMetricAttribute(string metricName, bool isCommon, string nameSpa
/// The name of the metric, as reported to Datadog
/// Is the metric a "common" metric, shared across languages?
public TelemetryMetricAttribute(string metricName, bool isCommon)
- : this(metricName, isCommon, null!)
+ : base(metricName, isCommon, null!)
{
}
///
/// Initializes a new instance of the class.
- /// Uses the default namespace and sets to true
+ /// Uses the default namespace and sets to true
///
/// The name of the metric, as reported to Datadog
public TelemetryMetricAttribute(string metricName)
- : this(metricName, isCommon: true, null!)
+ : base(metricName, isCommon: true, null!)
{
}
+}
+///
+/// Used to describe a specific metric defined as a field
+/// inside an enum decorated with
+/// which has two tags
+///
+[System.AttributeUsage(System.AttributeTargets.Field, AllowMultiple = false)]
+internal class TelemetryMetricAttribute : Datadog.Trace.SourceGenerators.TelemetryMetricAttribute
+ where TTag1 : System.Enum
+ where TTag2 : System.Enum
+ where TTag3 : System.Enum
+ where TTag4 : System.Enum
+{
///
- /// Gets the name of the metric, as reported to Datadog
+ /// Initializes a new instance of the class.
///
- public string MetricName { get; }
+ /// The name of the metric, as reported to Datadog
+ /// Is the metric a "common" metric, shared across languages?
+ /// The namespace of the metric, if not the default (Tracer)
+ public TelemetryMetricAttribute(string metricName, bool isCommon, string nameSpace)
+ : base(metricName, isCommon, nameSpace)
+ {
+ }
///
- /// Gets a value indicating whether the metric a "common" metric, shared across languages?
+ /// Initializes a new instance of the class.
+ /// Uses the default namespace
///
- public bool IsCommon { get; }
+ /// The name of the metric, as reported to Datadog
+ /// Is the metric a "common" metric, shared across languages?
+ public TelemetryMetricAttribute(string metricName, bool isCommon)
+ : base(metricName, isCommon, null!)
+ {
+ }
///
- /// Gets the namespace of the metric, if not the default (Tracer)
+ /// Initializes a new instance of the class.
+ /// Uses the default namespace and sets to true
///
- public string? NameSpace { get; }
+ /// The name of the metric, as reported to Datadog
+ public TelemetryMetricAttribute(string metricName)
+ : base(metricName, isCommon: true, null!)
+ {
+ }
+}
+
+///
+/// Used to describe a specific metric defined as a field
+/// inside an enum decorated with
+/// which has two tags
+///
+[System.AttributeUsage(System.AttributeTargets.Field, AllowMultiple = false)]
+internal class TelemetryMetricAttribute : Datadog.Trace.SourceGenerators.TelemetryMetricAttribute
+ where TTag1 : System.Enum
+ where TTag2 : System.Enum
+ where TTag3 : System.Enum
+ where TTag4 : System.Enum
+ where TTag5 : System.Enum
+{
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The name of the metric, as reported to Datadog
+ /// Is the metric a "common" metric, shared across languages?
+ /// The namespace of the metric, if not the default (Tracer)
+ public TelemetryMetricAttribute(string metricName, bool isCommon, string nameSpace)
+ : base(metricName, isCommon, nameSpace)
+ {
+ }
+
+ ///
+ /// Initializes a new instance of the class.
+ /// Uses the default namespace
+ ///
+ /// The name of the metric, as reported to Datadog
+ /// Is the metric a "common" metric, shared across languages?
+ public TelemetryMetricAttribute(string metricName, bool isCommon)
+ : base(metricName, isCommon, null!)
+ {
+ }
+
+ ///
+ /// Initializes a new instance of the class.
+ /// Uses the default namespace and sets to true
+ ///
+ /// The name of the metric, as reported to Datadog
+ public TelemetryMetricAttribute(string metricName)
+ : base(metricName, isCommon: true, null!)
+ {
+ }
+}
+
+///
+/// Used to describe a specific metric defined as a field
+/// inside an enum decorated with
+/// which has two tags
+///
+[System.AttributeUsage(System.AttributeTargets.Field, AllowMultiple = false)]
+internal class TelemetryMetricAttribute : Datadog.Trace.SourceGenerators.TelemetryMetricAttribute
+ where TTag1 : System.Enum
+ where TTag2 : System.Enum
+ where TTag3 : System.Enum
+ where TTag4 : System.Enum
+ where TTag5 : System.Enum
+ where TTag6 : System.Enum
+{
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The name of the metric, as reported to Datadog
+ /// Is the metric a "common" metric, shared across languages?
+ /// The namespace of the metric, if not the default (Tracer)
+ public TelemetryMetricAttribute(string metricName, bool isCommon, string nameSpace)
+ : base(metricName, isCommon, nameSpace)
+ {
+ }
+
+ ///
+ /// Initializes a new instance of the class.
+ /// Uses the default namespace
+ ///
+ /// The name of the metric, as reported to Datadog
+ /// Is the metric a "common" metric, shared across languages?
+ public TelemetryMetricAttribute(string metricName, bool isCommon)
+ : base(metricName, isCommon, null!)
+ {
+ }
+
+ ///
+ /// Initializes a new instance of the class.
+ /// Uses the default namespace and sets to true
+ ///
+ /// The name of the metric, as reported to Datadog
+ public TelemetryMetricAttribute(string metricName)
+ : base(metricName, isCommon: true, null!)
+ {
+ }
}
\ No newline at end of file
diff --git a/tracer/src/Datadog.Trace/Generated/netstandard2.0/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/CiVisibilityMetricsTelemetryCollector_CountCIVisibility.g.cs b/tracer/src/Datadog.Trace/Generated/netstandard2.0/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/CiVisibilityMetricsTelemetryCollector_CountCIVisibility.g.cs
index 2766115d192b..eb26f45d2c8d 100644
--- a/tracer/src/Datadog.Trace/Generated/netstandard2.0/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/CiVisibilityMetricsTelemetryCollector_CountCIVisibility.g.cs
+++ b/tracer/src/Datadog.Trace/Generated/netstandard2.0/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/CiVisibilityMetricsTelemetryCollector_CountCIVisibility.g.cs
@@ -11,7 +11,7 @@
namespace Datadog.Trace.Telemetry;
internal partial class CiVisibilityMetricsTelemetryCollector
{
- private const int CountCIVisibilityLength = 343;
+ private const int CountCIVisibilityLength = 371;
///
/// Creates the buffer for the values.
@@ -69,6 +69,10 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "test_framework:xunit", "event_type:session", "is_unsupported_ci" }),
new(new[] { "test_framework:xunit", "event_type:session", "has_codeowner", "is_unsupported_ci" }),
new(new[] { "test_framework:xunit", "event_type:session", "has_codeowner" }),
+ new(new[] { "test_framework:xunit", "event_type:session", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:xunit", "event_type:session", "is_unsupported_ci", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:xunit", "event_type:session", "has_codeowner", "is_unsupported_ci", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:xunit", "event_type:session", "has_codeowner", "agentless_log_submission_enabled" }),
new(new[] { "test_framework:xunit", "event_type:test", "is_new:true" }),
new(new[] { "test_framework:xunit", "event_type:test", "is_new:true", "early_flake_detection_abort_reason:slow" }),
new(new[] { "test_framework:xunit", "event_type:test", "browser_driver:selenium" }),
@@ -85,6 +89,10 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "test_framework:nunit", "event_type:session", "is_unsupported_ci" }),
new(new[] { "test_framework:nunit", "event_type:session", "has_codeowner", "is_unsupported_ci" }),
new(new[] { "test_framework:nunit", "event_type:session", "has_codeowner" }),
+ new(new[] { "test_framework:nunit", "event_type:session", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:nunit", "event_type:session", "is_unsupported_ci", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:nunit", "event_type:session", "has_codeowner", "is_unsupported_ci", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:nunit", "event_type:session", "has_codeowner", "agentless_log_submission_enabled" }),
new(new[] { "test_framework:nunit", "event_type:test", "is_new:true" }),
new(new[] { "test_framework:nunit", "event_type:test", "is_new:true", "early_flake_detection_abort_reason:slow" }),
new(new[] { "test_framework:nunit", "event_type:test", "browser_driver:selenium" }),
@@ -101,6 +109,10 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "test_framework:mstest", "event_type:session", "is_unsupported_ci" }),
new(new[] { "test_framework:mstest", "event_type:session", "has_codeowner", "is_unsupported_ci" }),
new(new[] { "test_framework:mstest", "event_type:session", "has_codeowner" }),
+ new(new[] { "test_framework:mstest", "event_type:session", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:mstest", "event_type:session", "is_unsupported_ci", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:mstest", "event_type:session", "has_codeowner", "is_unsupported_ci", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:mstest", "event_type:session", "has_codeowner", "agentless_log_submission_enabled" }),
new(new[] { "test_framework:mstest", "event_type:test", "is_new:true" }),
new(new[] { "test_framework:mstest", "event_type:test", "is_new:true", "early_flake_detection_abort_reason:slow" }),
new(new[] { "test_framework:mstest", "event_type:test", "browser_driver:selenium" }),
@@ -117,6 +129,10 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "test_framework:benchmarkdotnet", "event_type:session", "is_unsupported_ci" }),
new(new[] { "test_framework:benchmarkdotnet", "event_type:session", "has_codeowner", "is_unsupported_ci" }),
new(new[] { "test_framework:benchmarkdotnet", "event_type:session", "has_codeowner" }),
+ new(new[] { "test_framework:benchmarkdotnet", "event_type:session", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:benchmarkdotnet", "event_type:session", "is_unsupported_ci", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:benchmarkdotnet", "event_type:session", "has_codeowner", "is_unsupported_ci", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:benchmarkdotnet", "event_type:session", "has_codeowner", "agentless_log_submission_enabled" }),
new(new[] { "test_framework:benchmarkdotnet", "event_type:test", "is_new:true" }),
new(new[] { "test_framework:benchmarkdotnet", "event_type:test", "is_new:true", "early_flake_detection_abort_reason:slow" }),
new(new[] { "test_framework:benchmarkdotnet", "event_type:test", "browser_driver:selenium" }),
@@ -133,6 +149,10 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "test_framework:unknown", "event_type:session", "is_unsupported_ci" }),
new(new[] { "test_framework:unknown", "event_type:session", "has_codeowner", "is_unsupported_ci" }),
new(new[] { "test_framework:unknown", "event_type:session", "has_codeowner" }),
+ new(new[] { "test_framework:unknown", "event_type:session", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:unknown", "event_type:session", "is_unsupported_ci", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:unknown", "event_type:session", "has_codeowner", "is_unsupported_ci", "agentless_log_submission_enabled" }),
+ new(new[] { "test_framework:unknown", "event_type:session", "has_codeowner", "agentless_log_submission_enabled" }),
new(new[] { "test_framework:unknown", "event_type:test", "is_new:true" }),
new(new[] { "test_framework:unknown", "event_type:test", "is_new:true", "early_flake_detection_abort_reason:slow" }),
new(new[] { "test_framework:unknown", "event_type:test", "browser_driver:selenium" }),
@@ -141,7 +161,7 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "test_framework:unknown", "event_type:test", "browser_driver:selenium", "is_rum:true" }),
new(new[] { "test_framework:unknown", "event_type:test", "is_new:true", "browser_driver:selenium", "is_rum:true" }),
new(new[] { "test_framework:unknown", "event_type:test", "is_new:true", "early_flake_detection_abort_reason:slow", "browser_driver:selenium", "is_rum:true" }),
- // code_coverage_started, index = 120
+ // code_coverage_started, index = 140
new(new[] { "test_framework:xunit", "library:custom" }),
new(new[] { "test_framework:xunit", "library:unknown" }),
new(new[] { "test_framework:nunit", "library:custom" }),
@@ -152,7 +172,7 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "test_framework:benchmarkdotnet", "library:unknown" }),
new(new[] { "test_framework:unknown", "library:custom" }),
new(new[] { "test_framework:unknown", "library:unknown" }),
- // code_coverage_finished, index = 130
+ // code_coverage_finished, index = 150
new(new[] { "test_framework:xunit", "library:custom" }),
new(new[] { "test_framework:xunit", "library:unknown" }),
new(new[] { "test_framework:nunit", "library:custom" }),
@@ -163,19 +183,19 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "test_framework:benchmarkdotnet", "library:unknown" }),
new(new[] { "test_framework:unknown", "library:custom" }),
new(new[] { "test_framework:unknown", "library:unknown" }),
- // manual_api_events, index = 140
+ // manual_api_events, index = 160
new(new[] { "event_type:test" }),
new(new[] { "event_type:suite" }),
new(new[] { "event_type:module" }),
new(new[] { "event_type:session" }),
- // events_enqueued_for_serialization, index = 144
+ // events_enqueued_for_serialization, index = 164
new(null),
- // endpoint_payload.requests, index = 145
+ // endpoint_payload.requests, index = 165
new(new[] { "endpoint:test_cycle" }),
new(new[] { "endpoint:test_cycle", "rq_compressed:true" }),
new(new[] { "endpoint:code_coverage" }),
new(new[] { "endpoint:code_coverage", "rq_compressed:true" }),
- // endpoint_payload.requests_errors, index = 149
+ // endpoint_payload.requests_errors, index = 169
new(new[] { "endpoint:test_cycle", "error_type:timeout" }),
new(new[] { "endpoint:test_cycle", "error_type:network" }),
new(new[] { "endpoint:test_cycle", "error_type:status_code" }),
@@ -198,10 +218,10 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "endpoint:code_coverage", "error_type:status_code_4xx_response", "status_code:404" }),
new(new[] { "endpoint:code_coverage", "error_type:status_code_4xx_response", "status_code:408" }),
new(new[] { "endpoint:code_coverage", "error_type:status_code_4xx_response", "status_code:429" }),
- // endpoint_payload.dropped, index = 171
+ // endpoint_payload.dropped, index = 191
new(new[] { "endpoint:test_cycle" }),
new(new[] { "endpoint:code_coverage" }),
- // git.command, index = 173
+ // git.command, index = 193
new(new[] { "command:get_repository" }),
new(new[] { "command:get_branch" }),
new(new[] { "command:get_remote" }),
@@ -211,7 +231,7 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "command:get_local_commits" }),
new(new[] { "command:get_objects" }),
new(new[] { "command:pack_objects" }),
- // git.command_errors, index = 182
+ // git.command_errors, index = 202
new(new[] { "command:get_repository", "exit_code:missing" }),
new(new[] { "command:get_repository", "exit_code:unknown" }),
new(new[] { "command:get_repository", "exit_code:-1" }),
@@ -284,10 +304,10 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "command:pack_objects", "exit_code:127" }),
new(new[] { "command:pack_objects", "exit_code:128" }),
new(new[] { "command:pack_objects", "exit_code:129" }),
- // git_requests.search_commits, index = 254
+ // git_requests.search_commits, index = 274
new(null),
new(new[] { "rq_compressed:true" }),
- // git_requests.search_commits_errors, index = 256
+ // git_requests.search_commits_errors, index = 276
new(new[] { "error_type:timeout" }),
new(new[] { "error_type:network" }),
new(new[] { "error_type:status_code" }),
@@ -299,10 +319,10 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "error_type:status_code_4xx_response", "status_code:404" }),
new(new[] { "error_type:status_code_4xx_response", "status_code:408" }),
new(new[] { "error_type:status_code_4xx_response", "status_code:429" }),
- // git_requests.objects_pack, index = 267
+ // git_requests.objects_pack, index = 287
new(null),
new(new[] { "rq_compressed:true" }),
- // git_requests.objects_pack_errors, index = 269
+ // git_requests.objects_pack_errors, index = 289
new(new[] { "error_type:timeout" }),
new(new[] { "error_type:network" }),
new(new[] { "error_type:status_code" }),
@@ -314,10 +334,10 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "error_type:status_code_4xx_response", "status_code:404" }),
new(new[] { "error_type:status_code_4xx_response", "status_code:408" }),
new(new[] { "error_type:status_code_4xx_response", "status_code:429" }),
- // git_requests.settings, index = 280
+ // git_requests.settings, index = 300
new(null),
new(new[] { "rq_compressed:true" }),
- // git_requests.settings_errors, index = 282
+ // git_requests.settings_errors, index = 302
new(new[] { "error_type:timeout" }),
new(new[] { "error_type:network" }),
new(new[] { "error_type:status_code" }),
@@ -329,7 +349,7 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "error_type:status_code_4xx_response", "status_code:404" }),
new(new[] { "error_type:status_code_4xx_response", "status_code:408" }),
new(new[] { "error_type:status_code_4xx_response", "status_code:429" }),
- // git_requests.settings_response, index = 293
+ // git_requests.settings_response, index = 313
new(null),
new(new[] { "coverage_enabled" }),
new(new[] { "itrskip_enabled" }),
@@ -338,10 +358,18 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "coverage_enabled", "early_flake_detection_enabled:true" }),
new(new[] { "itrskip_enabled", "early_flake_detection_enabled:true" }),
new(new[] { "coverage_enabled", "itrskip_enabled", "early_flake_detection_enabled:true" }),
- // itr_skippable_tests.request, index = 301
+ new(new[] { "flaky_test_retries_enabled:true" }),
+ new(new[] { "coverage_enabled", "flaky_test_retries_enabled:true" }),
+ new(new[] { "itrskip_enabled", "flaky_test_retries_enabled:true" }),
+ new(new[] { "coverage_enabled", "itrskip_enabled", "flaky_test_retries_enabled:true" }),
+ new(new[] { "early_flake_detection_enabled:true", "flaky_test_retries_enabled:true" }),
+ new(new[] { "coverage_enabled", "early_flake_detection_enabled:true", "flaky_test_retries_enabled:true" }),
+ new(new[] { "itrskip_enabled", "early_flake_detection_enabled:true", "flaky_test_retries_enabled:true" }),
+ new(new[] { "coverage_enabled", "itrskip_enabled", "early_flake_detection_enabled:true", "flaky_test_retries_enabled:true" }),
+ // itr_skippable_tests.request, index = 329
new(null),
new(new[] { "rq_compressed:true" }),
- // itr_skippable_tests.request_errors, index = 303
+ // itr_skippable_tests.request_errors, index = 331
new(new[] { "error_type:timeout" }),
new(new[] { "error_type:network" }),
new(new[] { "error_type:status_code" }),
@@ -353,33 +381,33 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
new(new[] { "error_type:status_code_4xx_response", "status_code:404" }),
new(new[] { "error_type:status_code_4xx_response", "status_code:408" }),
new(new[] { "error_type:status_code_4xx_response", "status_code:429" }),
- // itr_skippable_tests.response_tests, index = 314
+ // itr_skippable_tests.response_tests, index = 342
new(null),
- // itr_skippable_tests.response_suites, index = 315
+ // itr_skippable_tests.response_suites, index = 343
new(null),
- // itr_skipped, index = 316
+ // itr_skipped, index = 344
new(new[] { "event_type:test" }),
new(new[] { "event_type:suite" }),
new(new[] { "event_type:module" }),
new(new[] { "event_type:session" }),
- // itr_unskippable, index = 320
+ // itr_unskippable, index = 348
new(new[] { "event_type:test" }),
new(new[] { "event_type:suite" }),
new(new[] { "event_type:module" }),
new(new[] { "event_type:session" }),
- // itr_forced_run, index = 324
+ // itr_forced_run, index = 352
new(new[] { "event_type:test" }),
new(new[] { "event_type:suite" }),
new(new[] { "event_type:module" }),
new(new[] { "event_type:session" }),
- // code_coverage.is_empty, index = 328
+ // code_coverage.is_empty, index = 356
new(null),
- // code_coverage.errors, index = 329
+ // code_coverage.errors, index = 357
new(null),
- // early_flake_detection.request, index = 330
+ // early_flake_detection.request, index = 358
new(null),
new(new[] { "rq_compressed:true" }),
- // early_flake_detection.request_errors, index = 332
+ // early_flake_detection.request_errors, index = 360
new(new[] { "error_type:timeout" }),
new(new[] { "error_type:network" }),
new(new[] { "error_type:status_code" }),
@@ -399,7 +427,7 @@ private static AggregatedMetric[] GetCountCIVisibilityBuffer()
/// It is equal to the cardinality of the tag combinations (or 1 if there are no tags)
///
private static int[] CountCIVisibilityEntryCounts { get; }
- = new int[]{ 40, 80, 10, 10, 4, 1, 4, 22, 2, 9, 72, 2, 11, 2, 11, 2, 11, 8, 2, 11, 1, 1, 4, 4, 4, 1, 1, 2, 11, };
+ = new int[]{ 40, 100, 10, 10, 4, 1, 4, 22, 2, 9, 72, 2, 11, 2, 11, 2, 11, 16, 2, 11, 1, 1, 4, 4, 4, 1, 1, 2, 11, };
public void RecordCountCIVisibilityEventCreated(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityTestFramework tag1, Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityTestingEventTypeWithCodeOwnerAndSupportedCiAndBenchmark tag2, int increment = 1)
{
@@ -409,164 +437,164 @@ public void RecordCountCIVisibilityEventCreated(Datadog.Trace.Telemetry.Metrics.
public void RecordCountCIVisibilityEventFinished(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityTestFramework tag1, Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityTestingEventTypeWithCodeOwnerAndSupportedCiAndBenchmarkAndEarlyFlakeDetectionAndRum tag2, int increment = 1)
{
- var index = 40 + ((int)tag1 * 16) + (int)tag2;
+ var index = 40 + ((int)tag1 * 20) + (int)tag2;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityCodeCoverageStarted(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityTestFramework tag1, Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityCoverageLibrary tag2, int increment = 1)
{
- var index = 120 + ((int)tag1 * 2) + (int)tag2;
+ var index = 140 + ((int)tag1 * 2) + (int)tag2;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityCodeCoverageFinished(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityTestFramework tag1, Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityCoverageLibrary tag2, int increment = 1)
{
- var index = 130 + ((int)tag1 * 2) + (int)tag2;
+ var index = 150 + ((int)tag1 * 2) + (int)tag2;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityManualApiEvent(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityTestingEventType tag, int increment = 1)
{
- var index = 140 + (int)tag;
+ var index = 160 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityEventsEnqueueForSerialization(int increment = 1)
{
- Interlocked.Add(ref _buffer.CountCIVisibility[144], increment);
+ Interlocked.Add(ref _buffer.CountCIVisibility[164], increment);
}
public void RecordCountCIVisibilityEndpointPayloadRequests(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityEndpointAndCompression tag, int increment = 1)
{
- var index = 145 + (int)tag;
+ var index = 165 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityEndpointPayloadRequestsErrors(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityEndpoints tag1, Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityErrorType tag2, int increment = 1)
{
- var index = 149 + ((int)tag1 * 11) + (int)tag2;
+ var index = 169 + ((int)tag1 * 11) + (int)tag2;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityEndpointPayloadDropped(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityEndpoints tag, int increment = 1)
{
- var index = 171 + (int)tag;
+ var index = 191 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityGitCommand(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityCommands tag, int increment = 1)
{
- var index = 173 + (int)tag;
+ var index = 193 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityGitCommandErrors(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityCommands tag1, Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityExitCodes tag2, int increment = 1)
{
- var index = 182 + ((int)tag1 * 8) + (int)tag2;
+ var index = 202 + ((int)tag1 * 8) + (int)tag2;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityGitRequestsSearchCommits(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityRequestCompressed tag, int increment = 1)
{
- var index = 254 + (int)tag;
+ var index = 274 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityGitRequestsSearchCommitsErrors(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityErrorType tag, int increment = 1)
{
- var index = 256 + (int)tag;
+ var index = 276 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityGitRequestsObjectsPack(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityRequestCompressed tag, int increment = 1)
{
- var index = 267 + (int)tag;
+ var index = 287 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityGitRequestsObjectsPackErrors(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityErrorType tag, int increment = 1)
{
- var index = 269 + (int)tag;
+ var index = 289 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityGitRequestsSettings(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityRequestCompressed tag, int increment = 1)
{
- var index = 280 + (int)tag;
+ var index = 300 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityGitRequestsSettingsErrors(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityErrorType tag, int increment = 1)
{
- var index = 282 + (int)tag;
+ var index = 302 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityGitRequestsSettingsResponse(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityITRSettingsResponse tag, int increment = 1)
{
- var index = 293 + (int)tag;
+ var index = 313 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityITRSkippableTestsRequest(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityRequestCompressed tag, int increment = 1)
{
- var index = 301 + (int)tag;
+ var index = 329 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityITRSkippableTestsRequestErrors(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityErrorType tag, int increment = 1)
{
- var index = 303 + (int)tag;
+ var index = 331 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityITRSkippableTestsResponseTests(int increment = 1)
{
- Interlocked.Add(ref _buffer.CountCIVisibility[314], increment);
+ Interlocked.Add(ref _buffer.CountCIVisibility[342], increment);
}
public void RecordCountCIVisibilityITRSkippableTestsResponseSuites(int increment = 1)
{
- Interlocked.Add(ref _buffer.CountCIVisibility[315], increment);
+ Interlocked.Add(ref _buffer.CountCIVisibility[343], increment);
}
public void RecordCountCIVisibilityITRSkipped(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityTestingEventType tag, int increment = 1)
{
- var index = 316 + (int)tag;
+ var index = 344 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityITRUnskippable(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityTestingEventType tag, int increment = 1)
{
- var index = 320 + (int)tag;
+ var index = 348 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityITRForcedRun(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityTestingEventType tag, int increment = 1)
{
- var index = 324 + (int)tag;
+ var index = 352 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityCodeCoverageIsEmpty(int increment = 1)
{
- Interlocked.Add(ref _buffer.CountCIVisibility[328], increment);
+ Interlocked.Add(ref _buffer.CountCIVisibility[356], increment);
}
public void RecordCountCIVisibilityCodeCoverageErrors(int increment = 1)
{
- Interlocked.Add(ref _buffer.CountCIVisibility[329], increment);
+ Interlocked.Add(ref _buffer.CountCIVisibility[357], increment);
}
public void RecordCountCIVisibilityEarlyFlakeDetectionRequest(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityRequestCompressed tag, int increment = 1)
{
- var index = 330 + (int)tag;
+ var index = 358 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
public void RecordCountCIVisibilityEarlyFlakeDetectionRequestErrors(Datadog.Trace.Telemetry.Metrics.MetricTags.CIVisibilityErrorType tag, int increment = 1)
{
- var index = 332 + (int)tag;
+ var index = 360 + (int)tag;
Interlocked.Add(ref _buffer.CountCIVisibility[index], increment);
}
}
\ No newline at end of file
diff --git a/tracer/src/Datadog.Trace/Generated/netstandard2.0/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/CiVisibilityMetricsTelemetryCollector_CountShared.g.cs b/tracer/src/Datadog.Trace/Generated/netstandard2.0/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/CiVisibilityMetricsTelemetryCollector_CountShared.g.cs
index fcfd1e38ed4a..a34c9bfd512b 100644
--- a/tracer/src/Datadog.Trace/Generated/netstandard2.0/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/CiVisibilityMetricsTelemetryCollector_CountShared.g.cs
+++ b/tracer/src/Datadog.Trace/Generated/netstandard2.0/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/CiVisibilityMetricsTelemetryCollector_CountShared.g.cs
@@ -176,9 +176,9 @@ private static AggregatedMetric[] GetCountSharedBuffer()
new(new[] { "integration_name:symmetricalgorithm", "error_type:duck_typing" }),
new(new[] { "integration_name:symmetricalgorithm", "error_type:invoker" }),
new(new[] { "integration_name:symmetricalgorithm", "error_type:execution" }),
- new(new[] { "integration_name:opentelemetry", "error_type:duck_typing" }),
- new(new[] { "integration_name:opentelemetry", "error_type:invoker" }),
- new(new[] { "integration_name:opentelemetry", "error_type:execution" }),
+ new(new[] { "integration_name:otel", "error_type:duck_typing" }),
+ new(new[] { "integration_name:otel", "error_type:invoker" }),
+ new(new[] { "integration_name:otel", "error_type:execution" }),
new(new[] { "integration_name:pathtraversal", "error_type:duck_typing" }),
new(new[] { "integration_name:pathtraversal", "error_type:invoker" }),
new(new[] { "integration_name:pathtraversal", "error_type:execution" }),
diff --git a/tracer/src/Datadog.Trace/Generated/netstandard2.0/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/MetricsTelemetryCollector_Count.g.cs b/tracer/src/Datadog.Trace/Generated/netstandard2.0/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/MetricsTelemetryCollector_Count.g.cs
index b91aebc832be..7b20fa050a1d 100644
--- a/tracer/src/Datadog.Trace/Generated/netstandard2.0/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/MetricsTelemetryCollector_Count.g.cs
+++ b/tracer/src/Datadog.Trace/Generated/netstandard2.0/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/MetricsTelemetryCollector_Count.g.cs
@@ -77,7 +77,7 @@ private static AggregatedMetric[] GetCountBuffer()
new(new[] { "integration_name:process" }),
new(new[] { "integration_name:hashalgorithm" }),
new(new[] { "integration_name:symmetricalgorithm" }),
- new(new[] { "integration_name:opentelemetry" }),
+ new(new[] { "integration_name:otel" }),
new(new[] { "integration_name:pathtraversal" }),
new(new[] { "integration_name:ssrf" }),
new(new[] { "integration_name:ldap" }),
@@ -498,7 +498,7 @@ private static AggregatedMetric[] GetCountBuffer()
new(new[] { "integration_name:process" }),
new(new[] { "integration_name:hashalgorithm" }),
new(new[] { "integration_name:symmetricalgorithm" }),
- new(new[] { "integration_name:opentelemetry" }),
+ new(new[] { "integration_name:otel" }),
new(new[] { "integration_name:pathtraversal" }),
new(new[] { "integration_name:ssrf" }),
new(new[] { "integration_name:ldap" }),
diff --git a/tracer/src/Datadog.Trace/Generated/netstandard2.0/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/MetricsTelemetryCollector_CountShared.g.cs b/tracer/src/Datadog.Trace/Generated/netstandard2.0/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/MetricsTelemetryCollector_CountShared.g.cs
index 2a54bea2390a..e94fcb451a68 100644
--- a/tracer/src/Datadog.Trace/Generated/netstandard2.0/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/MetricsTelemetryCollector_CountShared.g.cs
+++ b/tracer/src/Datadog.Trace/Generated/netstandard2.0/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/MetricsTelemetryCollector_CountShared.g.cs
@@ -176,9 +176,9 @@ private static AggregatedMetric[] GetCountSharedBuffer()
new(new[] { "integration_name:symmetricalgorithm", "error_type:duck_typing" }),
new(new[] { "integration_name:symmetricalgorithm", "error_type:invoker" }),
new(new[] { "integration_name:symmetricalgorithm", "error_type:execution" }),
- new(new[] { "integration_name:opentelemetry", "error_type:duck_typing" }),
- new(new[] { "integration_name:opentelemetry", "error_type:invoker" }),
- new(new[] { "integration_name:opentelemetry", "error_type:execution" }),
+ new(new[] { "integration_name:otel", "error_type:duck_typing" }),
+ new(new[] { "integration_name:otel", "error_type:invoker" }),
+ new(new[] { "integration_name:otel", "error_type:execution" }),
new(new[] { "integration_name:pathtraversal", "error_type:duck_typing" }),
new(new[] { "integration_name:pathtraversal", "error_type:invoker" }),
new(new[] { "integration_name:pathtraversal", "error_type:execution" }),
diff --git a/tracer/src/Datadog.Trace/Generated/netstandard2.0/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/TelemetryMetricAttribute.g.cs b/tracer/src/Datadog.Trace/Generated/netstandard2.0/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/TelemetryMetricAttribute.g.cs
index e7f48e2b15c6..586d54aba6dd 100644
--- a/tracer/src/Datadog.Trace/Generated/netstandard2.0/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/TelemetryMetricAttribute.g.cs
+++ b/tracer/src/Datadog.Trace/Generated/netstandard2.0/Datadog.Trace.SourceGenerators/TelemetryMetricGenerator/TelemetryMetricAttribute.g.cs
@@ -118,7 +118,7 @@ public TelemetryMetricAttribute(string metricName)
/// which has a single tag
///
[System.AttributeUsage(System.AttributeTargets.Field, AllowMultiple = false)]
-internal class TelemetryMetricAttribute : System.Attribute
+internal class TelemetryMetricAttribute : Datadog.Trace.SourceGenerators.TelemetryMetricAttribute
where TTag : System.Enum
{
///
@@ -128,10 +128,8 @@ internal class TelemetryMetricAttribute : System.Attribute
/// Is the metric a "common" metric, shared across languages?
/// The namespace of the metric, if not the default (Tracer)
public TelemetryMetricAttribute(string metricName, bool isCommon, string nameSpace)
+ : base(metricName, isCommon, nameSpace)
{
- MetricName = metricName;
- IsCommon = isCommon;
- NameSpace = nameSpace;
}
///
@@ -141,34 +139,62 @@ public TelemetryMetricAttribute(string metricName, bool isCommon, string nameSpa
/// The name of the metric, as reported to Datadog
/// Is the metric a "common" metric, shared across languages?
public TelemetryMetricAttribute(string metricName, bool isCommon)
- : this(metricName, isCommon, null!)
+ : base(metricName, isCommon, null!)
{
}
///
/// Initializes a new instance of the class.
- /// Uses the default namespace and sets to true
+ /// Uses the default namespace and sets to true
///
/// The name of the metric, as reported to Datadog
public TelemetryMetricAttribute(string metricName)
- : this(metricName, isCommon: true, null!)
+ : base(metricName, isCommon: true, null!)
{
}
+}
+///
+/// Used to describe a specific metric defined as a field
+/// inside an enum decorated with
+/// which has two tags
+///
+[System.AttributeUsage(System.AttributeTargets.Field, AllowMultiple = false)]
+internal class TelemetryMetricAttribute : Datadog.Trace.SourceGenerators.TelemetryMetricAttribute
+ where TTag1 : System.Enum
+ where TTag2 : System.Enum
+{
///
- /// Gets the name of the metric, as reported to Datadog
+ /// Initializes a new instance of the class.
///
- public string MetricName { get; }
+ /// The name of the metric, as reported to Datadog
+ /// Is the metric a "common" metric, shared across languages?
+ /// The namespace of the metric, if not the default (Tracer)
+ public TelemetryMetricAttribute(string metricName, bool isCommon, string nameSpace)
+ : base(metricName, isCommon, nameSpace)
+ {
+ }
///
- /// Gets a value indicating whether the metric a "common" metric, shared across languages?
+ /// Initializes a new instance of the class.
+ /// Uses the default namespace
///
- public bool IsCommon { get; }
+ /// The name of the metric, as reported to Datadog
+ /// Is the metric a "common" metric, shared across languages?
+ public TelemetryMetricAttribute(string metricName, bool isCommon)
+ : base(metricName, isCommon, null!)
+ {
+ }
///
- /// Gets the namespace of the metric, if not the default (Tracer)
+ /// Initializes a new instance of the class.
+ /// Uses the default namespace and sets to true
///
- public string? NameSpace { get; }
+ /// The name of the metric, as reported to Datadog
+ public TelemetryMetricAttribute(string metricName)
+ : base(metricName, isCommon: true, null!)
+ {
+ }
}
///
@@ -177,9 +203,10 @@ public TelemetryMetricAttribute(string metricName)
/// which has two tags
///
[System.AttributeUsage(System.AttributeTargets.Field, AllowMultiple = false)]
-internal class TelemetryMetricAttribute : System.Attribute
+internal class TelemetryMetricAttribute : Datadog.Trace.SourceGenerators.TelemetryMetricAttribute
where TTag1 : System.Enum
where TTag2 : System.Enum
+ where TTag3 : System.Enum
{
///
/// Initializes a new instance of the class.
@@ -188,10 +215,8 @@ internal class TelemetryMetricAttribute : System.Attribute
/// Is the metric a "common" metric, shared across languages?
/// The namespace of the metric, if not the default (Tracer)
public TelemetryMetricAttribute(string metricName, bool isCommon, string nameSpace)
+ : base(metricName, isCommon, nameSpace)
{
- MetricName = metricName;
- IsCommon = isCommon;
- NameSpace = nameSpace;
}
///
@@ -201,32 +226,155 @@ public TelemetryMetricAttribute(string metricName, bool isCommon, string nameSpa
/// The name of the metric, as reported to Datadog
/// Is the metric a "common" metric, shared across languages?
public TelemetryMetricAttribute(string metricName, bool isCommon)
- : this(metricName, isCommon, null!)
+ : base(metricName, isCommon, null!)
{
}
///
/// Initializes a new instance of the class.
- /// Uses the default namespace and sets to true
+ /// Uses the default namespace and sets to true
///
/// The name of the metric, as reported to Datadog
public TelemetryMetricAttribute(string metricName)
- : this(metricName, isCommon: true, null!)
+ : base(metricName, isCommon: true, null!)
{
}
+}
+///
+/// Used to describe a specific metric defined as a field
+/// inside an enum decorated with
+/// which has two tags
+///
+[System.AttributeUsage(System.AttributeTargets.Field, AllowMultiple = false)]
+internal class TelemetryMetricAttribute : Datadog.Trace.SourceGenerators.TelemetryMetricAttribute
+ where TTag1 : System.Enum
+ where TTag2 : System.Enum
+ where TTag3 : System.Enum
+ where TTag4 : System.Enum
+{
///
- /// Gets the name of the metric, as reported to Datadog
+ /// Initializes a new instance of the class.
///
- public string MetricName { get; }
+ /// The name of the metric, as reported to Datadog
+ /// Is the metric a "common" metric, shared across languages?
+ /// The namespace of the metric, if not the default (Tracer)
+ public TelemetryMetricAttribute(string metricName, bool isCommon, string nameSpace)
+ : base(metricName, isCommon, nameSpace)
+ {
+ }
///
- /// Gets a value indicating whether the metric a "common" metric, shared across languages?
+ /// Initializes a new instance of the class.
+ /// Uses the default namespace
///
- public bool IsCommon { get; }
+ /// The name of the metric, as reported to Datadog
+ /// Is the metric a "common" metric, shared across languages?
+ public TelemetryMetricAttribute(string metricName, bool isCommon)
+ : base(metricName, isCommon, null!)
+ {
+ }
///
- /// Gets the namespace of the metric, if not the default (Tracer)
+ /// Initializes a new instance of the class.
+ /// Uses the default namespace and sets to true
///
- public string? NameSpace { get; }
+ /// The name of the metric, as reported to Datadog
+ public TelemetryMetricAttribute(string metricName)
+ : base(metricName, isCommon: true, null!)
+ {
+ }
+}
+
+///
+/// Used to describe a specific metric defined as a field
+/// inside an enum decorated with
+/// which has two tags
+///
+[System.AttributeUsage(System.AttributeTargets.Field, AllowMultiple = false)]
+internal class TelemetryMetricAttribute : Datadog.Trace.SourceGenerators.TelemetryMetricAttribute
+ where TTag1 : System.Enum
+ where TTag2 : System.Enum
+ where TTag3 : System.Enum
+ where TTag4 : System.Enum
+ where TTag5 : System.Enum
+{
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The name of the metric, as reported to Datadog
+ /// Is the metric a "common" metric, shared across languages?
+ /// The namespace of the metric, if not the default (Tracer)
+ public TelemetryMetricAttribute(string metricName, bool isCommon, string nameSpace)
+ : base(metricName, isCommon, nameSpace)
+ {
+ }
+
+ ///
+ /// Initializes a new instance of the class.
+ /// Uses the default namespace
+ ///
+ /// The name of the metric, as reported to Datadog
+ /// Is the metric a "common" metric, shared across languages?
+ public TelemetryMetricAttribute(string metricName, bool isCommon)
+ : base(metricName, isCommon, null!)
+ {
+ }
+
+ ///
+ /// Initializes a new instance of the class.
+ /// Uses the default namespace and sets to true
+ ///
+ /// The name of the metric, as reported to Datadog
+ public TelemetryMetricAttribute(string metricName)
+ : base(metricName, isCommon: true, null!)
+ {
+ }
+}
+
+///
+/// Used to describe a specific metric defined as a field
+/// inside an enum decorated with
+/// which has two tags
+///
+[System.AttributeUsage(System.AttributeTargets.Field, AllowMultiple = false)]
+internal class TelemetryMetricAttribute : Datadog.Trace.SourceGenerators.TelemetryMetricAttribute
+ where TTag1 : System.Enum
+ where TTag2 : System.Enum
+ where TTag3 : System.Enum
+ where TTag4 : System.Enum
+ where TTag5 : System.Enum
+ where TTag6 : System.Enum
+{
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The name of the metric, as reported to Datadog
+ /// Is the metric a "common" metric, shared across languages?
+ /// The namespace of the metric, if not the default (Tracer)
+ public TelemetryMetricAttribute(string metricName, bool isCommon, string nameSpace)
+ : base(metricName, isCommon, nameSpace)
+ {
+ }
+
+ ///
+ /// Initializes a new instance of the class.
+ /// Uses the default namespace
+ ///
+ /// The name of the metric, as reported to Datadog
+ /// Is the metric a "common" metric, shared across languages?
+ public TelemetryMetricAttribute(string metricName, bool isCommon)
+ : base(metricName, isCommon, null!)
+ {
+ }
+
+ ///
+ /// Initializes a new instance of the class.
+ /// Uses the default namespace and sets to true
+ ///
+ /// The name of the metric, as reported to Datadog
+ public TelemetryMetricAttribute(string metricName)
+ : base(metricName, isCommon: true, null!)
+ {
+ }
}
\ No newline at end of file
diff --git a/tracer/src/Datadog.Trace/Iast/Aspects/AspNetCore.Http/HttpResponseAspect.cs b/tracer/src/Datadog.Trace/Iast/Aspects/AspNetCore.Http/HttpResponseAspect.cs
index f9a2335876da..2e391a37a98a 100644
--- a/tracer/src/Datadog.Trace/Iast/Aspects/AspNetCore.Http/HttpResponseAspect.cs
+++ b/tracer/src/Datadog.Trace/Iast/Aspects/AspNetCore.Http/HttpResponseAspect.cs
@@ -31,7 +31,7 @@ public class HttpResponseAspect
}
catch (global::System.Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(HttpResponseAspect)}.{nameof(Redirect)}");
+ IastModule.LogAspectException(ex, $"{nameof(HttpResponseAspect)}.{nameof(Redirect)}");
return url;
}
}
diff --git a/tracer/src/Datadog.Trace/Iast/Aspects/AspNetCore.Mvc/ControllerBaseAspect.cs b/tracer/src/Datadog.Trace/Iast/Aspects/AspNetCore.Mvc/ControllerBaseAspect.cs
index 7bde8a0e9394..b7a95118c910 100644
--- a/tracer/src/Datadog.Trace/Iast/Aspects/AspNetCore.Mvc/ControllerBaseAspect.cs
+++ b/tracer/src/Datadog.Trace/Iast/Aspects/AspNetCore.Mvc/ControllerBaseAspect.cs
@@ -37,7 +37,7 @@ public class ControllerBaseAspect
}
catch (global::System.Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(ControllerBaseAspect)}.{nameof(Redirect)}");
+ IastModule.LogAspectException(ex, $"{nameof(ControllerBaseAspect)}.{nameof(Redirect)}");
return url;
}
}
diff --git a/tracer/src/Datadog.Trace/Iast/Aspects/EntityFramework/EntityCommandAspect.cs b/tracer/src/Datadog.Trace/Iast/Aspects/EntityFramework/EntityCommandAspect.cs
index 90f839601b7b..f79c1f61e9a3 100644
--- a/tracer/src/Datadog.Trace/Iast/Aspects/EntityFramework/EntityCommandAspect.cs
+++ b/tracer/src/Datadog.Trace/Iast/Aspects/EntityFramework/EntityCommandAspect.cs
@@ -42,7 +42,7 @@ public static object ReviewSqlCommand(object command)
}
catch (Exception ex) when (ex is not BlockException)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(EntityCommandAspect)}.{nameof(ReviewSqlCommand)}");
+ IastModule.LogAspectException(ex, $"{nameof(EntityCommandAspect)}.{nameof(ReviewSqlCommand)}");
return command;
}
}
diff --git a/tracer/src/Datadog.Trace/Iast/Aspects/EntityFrameworkCore/EntityFrameworkCoreAspect.cs b/tracer/src/Datadog.Trace/Iast/Aspects/EntityFrameworkCore/EntityFrameworkCoreAspect.cs
index a29b9564d291..da910057dea8 100644
--- a/tracer/src/Datadog.Trace/Iast/Aspects/EntityFrameworkCore/EntityFrameworkCoreAspect.cs
+++ b/tracer/src/Datadog.Trace/Iast/Aspects/EntityFrameworkCore/EntityFrameworkCoreAspect.cs
@@ -40,7 +40,7 @@ public static object ReviewSqlString(string sqlAsString)
}
catch (Exception ex) when (ex is not BlockException)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(EntityFrameworkCoreAspect)}.{nameof(ReviewSqlString)}");
+ IastModule.LogAspectException(ex, $"{nameof(EntityFrameworkCoreAspect)}.{nameof(ReviewSqlString)}");
return sqlAsString;
}
}
diff --git a/tracer/src/Datadog.Trace/Iast/Aspects/MongoDB/BsonAspect.cs b/tracer/src/Datadog.Trace/Iast/Aspects/MongoDB/BsonAspect.cs
index d5028257a698..087c3b91b2b9 100644
--- a/tracer/src/Datadog.Trace/Iast/Aspects/MongoDB/BsonAspect.cs
+++ b/tracer/src/Datadog.Trace/Iast/Aspects/MongoDB/BsonAspect.cs
@@ -35,7 +35,7 @@ public static object AnalyzeJsonString(string json)
}
catch (global::System.Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(BsonAspect)}.{nameof(AnalyzeJsonString)}");
+ IastModule.LogAspectException(ex, $"{nameof(BsonAspect)}.{nameof(AnalyzeJsonString)}");
return json;
}
}
diff --git a/tracer/src/Datadog.Trace/Iast/Aspects/MongoDB/MongoDatabaseAspect.cs b/tracer/src/Datadog.Trace/Iast/Aspects/MongoDB/MongoDatabaseAspect.cs
index 76510f3c2447..1064b1ac1895 100644
--- a/tracer/src/Datadog.Trace/Iast/Aspects/MongoDB/MongoDatabaseAspect.cs
+++ b/tracer/src/Datadog.Trace/Iast/Aspects/MongoDB/MongoDatabaseAspect.cs
@@ -51,9 +51,9 @@ public class MongoDatabaseAspect
return command;
}
- catch (global::System.Exception ex)
+ catch (Exception ex)
{
- IastModule.Log.Warning(ex, $"Error invoking {nameof(MongoDatabaseAspect)}.{nameof(AnalyzeCommand)}");
+ IastModule.LogAspectException(ex, $"{nameof(MongoDatabaseAspect)}.{nameof(AnalyzeCommand)}");
return command;
}
}
diff --git a/tracer/src/Datadog.Trace/Iast/Aspects/NHibernate/ISessionAspect.cs b/tracer/src/Datadog.Trace/Iast/Aspects/NHibernate/ISessionAspect.cs
index 3bd0f1ca5867..ecf34c095b52 100644
--- a/tracer/src/Datadog.Trace/Iast/Aspects/NHibernate/ISessionAspect.cs
+++ b/tracer/src/Datadog.Trace/Iast/Aspects/NHibernate/ISessionAspect.cs
@@ -35,7 +35,7 @@ public static object AnalyzeQuery(string query)
}
catch (Exception ex) when (ex is not BlockException)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(ISessionAspect)}.{nameof(AnalyzeQuery)}");
+ IastModule.LogAspectException(ex, $"{nameof(ISessionAspect)}.{nameof(AnalyzeQuery)}");
return query;
}
}
diff --git a/tracer/src/Datadog.Trace/Iast/Aspects/Newtonsoft.Json/NewtonsoftJsonAspects.cs b/tracer/src/Datadog.Trace/Iast/Aspects/Newtonsoft.Json/NewtonsoftJsonAspects.cs
index 9d14c262b534..cf6ed6bc2ae8 100644
--- a/tracer/src/Datadog.Trace/Iast/Aspects/Newtonsoft.Json/NewtonsoftJsonAspects.cs
+++ b/tracer/src/Datadog.Trace/Iast/Aspects/Newtonsoft.Json/NewtonsoftJsonAspects.cs
@@ -63,7 +63,7 @@ static NewtonsoftJsonAspects()
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, "Error while initializing NewtonsoftJsonAspects");
+ IastModule.LogAspectException(ex, $"{nameof(NewtonsoftJsonAspects)}.Ctor");
}
}
@@ -85,7 +85,7 @@ static NewtonsoftJsonAspects()
}
catch (Exception ex)
{
- IastModule.Log.Warning(ex, "Error while tainting the JObject");
+ IastModule.LogAspectException(ex, $"{nameof(NewtonsoftJsonAspects)}.{nameof(ParseObject)}");
}
return result;
@@ -113,7 +113,7 @@ static NewtonsoftJsonAspects()
}
catch (Exception ex)
{
- IastModule.Log.Warning(ex, "Error while tainting the JArray");
+ IastModule.LogAspectException(ex, $"{nameof(NewtonsoftJsonAspects)}.{nameof(ParseArray)}");
}
return result;
@@ -136,7 +136,7 @@ static NewtonsoftJsonAspects()
}
catch (Exception ex)
{
- IastModule.Log.Warning(ex, "Error while tainting the JToken");
+ IastModule.LogAspectException(ex, $"{nameof(NewtonsoftJsonAspects)}.{nameof(ParseToken)}");
}
return result;
diff --git a/tracer/src/Datadog.Trace/Iast/Aspects/System.Data.Common/DbCommandAspect.cs b/tracer/src/Datadog.Trace/Iast/Aspects/System.Data.Common/DbCommandAspect.cs
index 8ec4ab537350..30cb45184e0b 100644
--- a/tracer/src/Datadog.Trace/Iast/Aspects/System.Data.Common/DbCommandAspect.cs
+++ b/tracer/src/Datadog.Trace/Iast/Aspects/System.Data.Common/DbCommandAspect.cs
@@ -41,7 +41,7 @@ public static object ReviewExecuteNonQuery(object command)
}
catch (Exception ex) when (ex is not BlockException)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(DbCommandAspect)}.{nameof(ReviewExecuteNonQuery)}");
+ IastModule.LogAspectException(ex, $"{nameof(DbCommandAspect)}.{nameof(ReviewExecuteNonQuery)}");
return command;
}
}
diff --git a/tracer/src/Datadog.Trace/Iast/Aspects/System.DirectoryServices/DirectoryEntryAspect.cs b/tracer/src/Datadog.Trace/Iast/Aspects/System.DirectoryServices/DirectoryEntryAspect.cs
index 283a865d5508..66d5597a6b7d 100644
--- a/tracer/src/Datadog.Trace/Iast/Aspects/System.DirectoryServices/DirectoryEntryAspect.cs
+++ b/tracer/src/Datadog.Trace/Iast/Aspects/System.DirectoryServices/DirectoryEntryAspect.cs
@@ -37,7 +37,7 @@ public static object Init(string path)
}
catch (global::System.Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(DirectoryEntryAspect)}.{nameof(Init)}");
+ IastModule.LogAspectException(ex, $"{nameof(DirectoryEntryAspect)}.{nameof(Init)}");
return path;
}
}
diff --git a/tracer/src/Datadog.Trace/Iast/Aspects/System.DirectoryServices/DirectorySearcherAspect.cs b/tracer/src/Datadog.Trace/Iast/Aspects/System.DirectoryServices/DirectorySearcherAspect.cs
index 2b986fe9c205..81b167c6b57d 100644
--- a/tracer/src/Datadog.Trace/Iast/Aspects/System.DirectoryServices/DirectorySearcherAspect.cs
+++ b/tracer/src/Datadog.Trace/Iast/Aspects/System.DirectoryServices/DirectorySearcherAspect.cs
@@ -37,7 +37,7 @@ public static object Init(string path)
}
catch (global::System.Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(DirectorySearcherAspect)}.{nameof(Init)}");
+ IastModule.LogAspectException(ex, $"{nameof(DirectorySearcherAspect)}.{nameof(Init)}");
return path;
}
}
diff --git a/tracer/src/Datadog.Trace/Iast/Aspects/System.DirectoryServices/PrincipalContextAspect.cs b/tracer/src/Datadog.Trace/Iast/Aspects/System.DirectoryServices/PrincipalContextAspect.cs
index 49ee14e9f981..8702c3284b09 100644
--- a/tracer/src/Datadog.Trace/Iast/Aspects/System.DirectoryServices/PrincipalContextAspect.cs
+++ b/tracer/src/Datadog.Trace/Iast/Aspects/System.DirectoryServices/PrincipalContextAspect.cs
@@ -35,7 +35,7 @@ public static object Init(string path)
}
catch (global::System.Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(PrincipalContextAspect)}.{nameof(Init)}");
+ IastModule.LogAspectException(ex, $"{nameof(PrincipalContextAspect)}.{nameof(Init)}");
return path;
}
}
diff --git a/tracer/src/Datadog.Trace/Iast/Aspects/System.DirectoryServices/SearchRequestAspect.cs b/tracer/src/Datadog.Trace/Iast/Aspects/System.DirectoryServices/SearchRequestAspect.cs
index b146e11c2535..5cb17213b9c3 100644
--- a/tracer/src/Datadog.Trace/Iast/Aspects/System.DirectoryServices/SearchRequestAspect.cs
+++ b/tracer/src/Datadog.Trace/Iast/Aspects/System.DirectoryServices/SearchRequestAspect.cs
@@ -34,7 +34,7 @@ public static object Init(object path)
}
catch (global::System.Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(SearchRequestAspect)}.{nameof(Init)}");
+ IastModule.LogAspectException(ex, $"{nameof(SearchRequestAspect)}.{nameof(Init)}");
return path;
}
}
diff --git a/tracer/src/Datadog.Trace/Iast/Aspects/System.IO/DirectoryAspect.cs b/tracer/src/Datadog.Trace/Iast/Aspects/System.IO/DirectoryAspect.cs
index 3d2d6dd31d01..dacac1f331b5 100644
--- a/tracer/src/Datadog.Trace/Iast/Aspects/System.IO/DirectoryAspect.cs
+++ b/tracer/src/Datadog.Trace/Iast/Aspects/System.IO/DirectoryAspect.cs
@@ -83,7 +83,7 @@ public static string ReviewPath(string path)
}
catch (Exception ex) when (ex is not BlockException)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(DirectoryAspect)}.{nameof(ReviewPath)}");
+ IastModule.LogAspectException(ex, $"{nameof(DirectoryAspect)}.{nameof(ReviewPath)}");
return path;
}
}
diff --git a/tracer/src/Datadog.Trace/Iast/Aspects/System.IO/DirectoryInfoAspect.cs b/tracer/src/Datadog.Trace/Iast/Aspects/System.IO/DirectoryInfoAspect.cs
index 0235035587f6..5dd02f9d1884 100644
--- a/tracer/src/Datadog.Trace/Iast/Aspects/System.IO/DirectoryInfoAspect.cs
+++ b/tracer/src/Datadog.Trace/Iast/Aspects/System.IO/DirectoryInfoAspect.cs
@@ -68,7 +68,7 @@ public static string ReviewPath(string path)
}
catch (Exception ex) when (ex is not BlockException)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(DirectoryInfoAspect)}.{nameof(ReviewPath)}");
+ IastModule.LogAspectException(ex, $"{nameof(DirectoryInfoAspect)}.{nameof(ReviewPath)}");
return path;
}
}
diff --git a/tracer/src/Datadog.Trace/Iast/Aspects/System.IO/FileAspect.cs b/tracer/src/Datadog.Trace/Iast/Aspects/System.IO/FileAspect.cs
index dfb390532bb5..344fc6dcca01 100644
--- a/tracer/src/Datadog.Trace/Iast/Aspects/System.IO/FileAspect.cs
+++ b/tracer/src/Datadog.Trace/Iast/Aspects/System.IO/FileAspect.cs
@@ -101,7 +101,7 @@ public static string ReviewPath(string path)
}
catch (Exception ex) when (ex is not BlockException)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(FileAspect)}.{nameof(ReviewPath)}");
+ IastModule.LogAspectException(ex, $"{nameof(FileAspect)}.{nameof(ReviewPath)}");
return path;
}
}
@@ -152,7 +152,7 @@ public static string ReviewPathRead(string path)
}
catch (Exception ex) when (ex is not BlockException)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(FileAspect)}.{nameof(ReviewPathRead)}");
+ IastModule.LogAspectException(ex, $"{nameof(FileAspect)}.{nameof(ReviewPathRead)}");
return path;
}
}
diff --git a/tracer/src/Datadog.Trace/Iast/Aspects/System.IO/FileInfoAspect.cs b/tracer/src/Datadog.Trace/Iast/Aspects/System.IO/FileInfoAspect.cs
index 65e4dff1b885..f63c78203f01 100644
--- a/tracer/src/Datadog.Trace/Iast/Aspects/System.IO/FileInfoAspect.cs
+++ b/tracer/src/Datadog.Trace/Iast/Aspects/System.IO/FileInfoAspect.cs
@@ -41,7 +41,7 @@ public static string ReviewPath(string path)
}
catch (Exception ex) when (ex is not BlockException)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(FileInfoAspect)}.{nameof(ReviewPath)}");
+ IastModule.LogAspectException(ex, $"{nameof(FileInfoAspect)}.{nameof(ReviewPath)}");
return path;
}
}
diff --git a/tracer/src/Datadog.Trace/Iast/Aspects/System.IO/FileStreamAspect.cs b/tracer/src/Datadog.Trace/Iast/Aspects/System.IO/FileStreamAspect.cs
index cc8a67d8dd6b..9b96a0be8cb2 100644
--- a/tracer/src/Datadog.Trace/Iast/Aspects/System.IO/FileStreamAspect.cs
+++ b/tracer/src/Datadog.Trace/Iast/Aspects/System.IO/FileStreamAspect.cs
@@ -45,7 +45,7 @@ public static string ReviewPath(string path)
}
catch (Exception ex) when (ex is not BlockException)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(FileStreamAspect)}.{nameof(ReviewPath)}");
+ IastModule.LogAspectException(ex, $"{nameof(FileStreamAspect)}.{nameof(ReviewPath)}");
return path;
}
}
diff --git a/tracer/src/Datadog.Trace/Iast/Aspects/System.IO/StreamReaderAspect.cs b/tracer/src/Datadog.Trace/Iast/Aspects/System.IO/StreamReaderAspect.cs
index 7a2a175deb0f..f9037dfffef1 100644
--- a/tracer/src/Datadog.Trace/Iast/Aspects/System.IO/StreamReaderAspect.cs
+++ b/tracer/src/Datadog.Trace/Iast/Aspects/System.IO/StreamReaderAspect.cs
@@ -41,7 +41,7 @@ public static string ReviewPath(string path)
}
catch (Exception ex) when (ex is not BlockException)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StreamReaderAspect)}.{nameof(ReviewPath)}");
+ IastModule.LogAspectException(ex, $"{nameof(StreamReaderAspect)}.{nameof(ReviewPath)}");
return path;
}
}
diff --git a/tracer/src/Datadog.Trace/Iast/Aspects/System.IO/StreamWriterAspect.cs b/tracer/src/Datadog.Trace/Iast/Aspects/System.IO/StreamWriterAspect.cs
index b9ffc399df2c..616ab9d06e4e 100644
--- a/tracer/src/Datadog.Trace/Iast/Aspects/System.IO/StreamWriterAspect.cs
+++ b/tracer/src/Datadog.Trace/Iast/Aspects/System.IO/StreamWriterAspect.cs
@@ -40,7 +40,7 @@ public static string ReviewPath(string path)
}
catch (global::System.Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StreamWriterAspect)}.{nameof(ReviewPath)}");
+ IastModule.LogAspectException(ex, $"{nameof(StreamWriterAspect)}.{nameof(ReviewPath)}");
return path;
}
}
diff --git a/tracer/src/Datadog.Trace/Iast/Aspects/System.Net.Mail/SmtpClientAspect.cs b/tracer/src/Datadog.Trace/Iast/Aspects/System.Net.Mail/SmtpClientAspect.cs
index a2abe40b5606..2e558441a7ed 100644
--- a/tracer/src/Datadog.Trace/Iast/Aspects/System.Net.Mail/SmtpClientAspect.cs
+++ b/tracer/src/Datadog.Trace/Iast/Aspects/System.Net.Mail/SmtpClientAspect.cs
@@ -38,7 +38,7 @@ public class SmtpClientAspect
}
catch (Exception ex) when (ex is not BlockException)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(SmtpClientAspect)}.{nameof(Send)}");
+ IastModule.LogAspectException(ex, $"{nameof(SmtpClientAspect)}.{nameof(Send)}");
return message;
}
}
diff --git a/tracer/src/Datadog.Trace/Iast/Aspects/System.Net/HttpClientAspect.cs b/tracer/src/Datadog.Trace/Iast/Aspects/System.Net/HttpClientAspect.cs
index cf5d89f73590..917f9485c0b0 100644
--- a/tracer/src/Datadog.Trace/Iast/Aspects/System.Net/HttpClientAspect.cs
+++ b/tracer/src/Datadog.Trace/Iast/Aspects/System.Net/HttpClientAspect.cs
@@ -62,7 +62,7 @@ public static string Review(string parameter)
}
catch (Exception ex) when (ex is not BlockException)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(HttpClientAspect)}.{nameof(Review)}");
+ IastModule.LogAspectException(ex, $"{nameof(HttpClientAspect)}.{nameof(Review)}");
return parameter;
}
}
@@ -108,7 +108,7 @@ public static Uri ReviewUri(Uri parameter)
}
catch (Exception ex) when (ex is not BlockException)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(HttpClientAspect)}.{nameof(ReviewUri)}");
+ IastModule.LogAspectException(ex, $"{nameof(HttpClientAspect)}.{nameof(ReviewUri)}");
return parameter;
}
}
@@ -143,7 +143,7 @@ public static HttpRequestMessage ReviewHttpRequestMessage(HttpRequestMessage par
}
catch (Exception ex) when (ex is not BlockException)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(HttpClientAspect)}.{nameof(ReviewHttpRequestMessage)}");
+ IastModule.LogAspectException(ex, $"{nameof(HttpClientAspect)}.{nameof(ReviewHttpRequestMessage)}");
return parameter;
}
}
@@ -166,7 +166,7 @@ public static object ReviewHttpRequestMessage(object parameter)
}
catch (Exception ex) when (ex is not BlockException)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(HttpClientAspect)}.{nameof(ReviewHttpRequestMessage)}");
+ IastModule.LogAspectException(ex, $"{nameof(HttpClientAspect)}.{nameof(ReviewHttpRequestMessage)}");
return parameter;
}
}
diff --git a/tracer/src/Datadog.Trace/Iast/Aspects/System.Net/WebClientAspect.cs b/tracer/src/Datadog.Trace/Iast/Aspects/System.Net/WebClientAspect.cs
index 61cf81869da5..f4fb9132a579 100644
--- a/tracer/src/Datadog.Trace/Iast/Aspects/System.Net/WebClientAspect.cs
+++ b/tracer/src/Datadog.Trace/Iast/Aspects/System.Net/WebClientAspect.cs
@@ -65,7 +65,7 @@ public static string Review(string parameter)
}
catch (Exception ex) when (ex is not BlockException)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(WebClientAspect)}.{nameof(Review)}");
+ IastModule.LogAspectException(ex, $"{nameof(WebClientAspect)}.{nameof(Review)}");
return parameter;
}
}
@@ -139,7 +139,7 @@ public static Uri ReviewUri(Uri parameter)
}
catch (Exception ex) when (ex is not BlockException)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(WebClientAspect)}.{nameof(ReviewUri)}");
+ IastModule.LogAspectException(ex, $"{nameof(WebClientAspect)}.{nameof(ReviewUri)}");
return parameter;
}
}
diff --git a/tracer/src/Datadog.Trace/Iast/Aspects/System.Net/WebRequestAspect.cs b/tracer/src/Datadog.Trace/Iast/Aspects/System.Net/WebRequestAspect.cs
index bae99b46457e..f1d41d3e999c 100644
--- a/tracer/src/Datadog.Trace/Iast/Aspects/System.Net/WebRequestAspect.cs
+++ b/tracer/src/Datadog.Trace/Iast/Aspects/System.Net/WebRequestAspect.cs
@@ -34,7 +34,7 @@ public static string Review(string parameter)
}
catch (Exception ex) when (ex is not BlockException)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(WebRequestAspect)}.{nameof(Review)}");
+ IastModule.LogAspectException(ex, $"{nameof(WebRequestAspect)}.{nameof(Review)}");
return parameter;
}
}
@@ -56,7 +56,7 @@ public static Uri Review(Uri parameter)
}
catch (Exception ex) when (ex is not BlockException)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(WebRequestAspect)}.{nameof(Review)}");
+ IastModule.LogAspectException(ex, $"{nameof(WebRequestAspect)}.{nameof(Review)}");
return parameter;
}
}
diff --git a/tracer/src/Datadog.Trace/Iast/Aspects/System.Net/WebUtilityAspect.cs b/tracer/src/Datadog.Trace/Iast/Aspects/System.Net/WebUtilityAspect.cs
index 8c334eb2c65b..3f06f5d0c04b 100644
--- a/tracer/src/Datadog.Trace/Iast/Aspects/System.Net/WebUtilityAspect.cs
+++ b/tracer/src/Datadog.Trace/Iast/Aspects/System.Net/WebUtilityAspect.cs
@@ -36,7 +36,7 @@ public class WebUtilityAspect
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(WebUtilityAspect)}.{nameof(XssEscape)}");
+ IastModule.LogAspectException(ex, $"{nameof(WebUtilityAspect)}.{nameof(XssEscape)}");
}
return result;
@@ -60,7 +60,7 @@ public class WebUtilityAspect
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(WebUtilityAspect)}.{nameof(SsrfEscape)}");
+ IastModule.LogAspectException(ex, $"{nameof(WebUtilityAspect)}.{nameof(SsrfEscape)}");
}
return result;
diff --git a/tracer/src/Datadog.Trace/Iast/Aspects/System.Reflection/ActivatorAspect.cs b/tracer/src/Datadog.Trace/Iast/Aspects/System.Reflection/ActivatorAspect.cs
index b83c8dab5b5a..2ebab2f49600 100644
--- a/tracer/src/Datadog.Trace/Iast/Aspects/System.Reflection/ActivatorAspect.cs
+++ b/tracer/src/Datadog.Trace/Iast/Aspects/System.Reflection/ActivatorAspect.cs
@@ -45,7 +45,7 @@ public static string ReflectionInjectionParam(string param)
}
catch (global::System.Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(ActivatorAspect)}.{nameof(ReflectionInjectionParam)}");
+ IastModule.LogAspectException(ex, $"{nameof(ActivatorAspect)}.{nameof(ReflectionInjectionParam)}");
return param;
}
}
diff --git a/tracer/src/Datadog.Trace/Iast/Aspects/System.Reflection/AssemblyAspect.cs b/tracer/src/Datadog.Trace/Iast/Aspects/System.Reflection/AssemblyAspect.cs
index b5fe6aa8c3ac..7b2daa698ef8 100644
--- a/tracer/src/Datadog.Trace/Iast/Aspects/System.Reflection/AssemblyAspect.cs
+++ b/tracer/src/Datadog.Trace/Iast/Aspects/System.Reflection/AssemblyAspect.cs
@@ -37,7 +37,7 @@ public static string ReflectionAssemblyInjection(string assemblyString)
}
catch (global::System.Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(AssemblyAspect)}.{nameof(ReflectionAssemblyInjection)}");
+ IastModule.LogAspectException(ex, $"{nameof(AssemblyAspect)}.{nameof(ReflectionAssemblyInjection)}");
return assemblyString;
}
}
diff --git a/tracer/src/Datadog.Trace/Iast/Aspects/System.Reflection/TypeAspect.cs b/tracer/src/Datadog.Trace/Iast/Aspects/System.Reflection/TypeAspect.cs
index d5ae7ca2eda6..d367b886491b 100644
--- a/tracer/src/Datadog.Trace/Iast/Aspects/System.Reflection/TypeAspect.cs
+++ b/tracer/src/Datadog.Trace/Iast/Aspects/System.Reflection/TypeAspect.cs
@@ -51,7 +51,7 @@ public static string ReflectionInjectionParam(string param)
}
catch (global::System.Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(TypeAspect)}.{nameof(ReflectionInjectionParam)}");
+ IastModule.LogAspectException(ex, $"{nameof(TypeAspect)}.{nameof(ReflectionInjectionParam)}");
return param;
}
}
diff --git a/tracer/src/Datadog.Trace/Iast/Aspects/System.Runtime/DefaultInterpolatedStringHandlerAspect.cs b/tracer/src/Datadog.Trace/Iast/Aspects/System.Runtime/DefaultInterpolatedStringHandlerAspect.cs
index 9f38177b8c49..82550b1ec971 100644
--- a/tracer/src/Datadog.Trace/Iast/Aspects/System.Runtime/DefaultInterpolatedStringHandlerAspect.cs
+++ b/tracer/src/Datadog.Trace/Iast/Aspects/System.Runtime/DefaultInterpolatedStringHandlerAspect.cs
@@ -38,7 +38,7 @@ public static void AppendFormatted1(ref DefaultInterpolatedStringHandler target,
}
catch (Exception ex)
{
- IastModule.Log.Warning(ex, $"Error invoking {nameof(DefaultInterpolatedStringHandlerAspect)}.{nameof(AppendFormatted1)}");
+ IastModule.LogAspectException(ex, $"{nameof(DefaultInterpolatedStringHandlerAspect)}.{nameof(AppendFormatted1)}");
}
}
@@ -59,7 +59,7 @@ public static void AppendFormatted2(ref DefaultInterpolatedStringHandler target,
}
catch (Exception ex)
{
- IastModule.Log.Warning(ex, $"Error invoking {nameof(DefaultInterpolatedStringHandlerAspect)}.{nameof(AppendFormatted2)}");
+ IastModule.LogAspectException(ex, $"{nameof(DefaultInterpolatedStringHandlerAspect)}.{nameof(AppendFormatted2)}");
}
}
@@ -83,7 +83,7 @@ public static void AppendFormatted3(ref DefaultInterpolatedStringHandler target,
}
catch (Exception ex)
{
- IastModule.Log.Warning(ex, $"Error invoking {nameof(DefaultInterpolatedStringHandlerAspect)}.{nameof(AppendFormatted3)}");
+ IastModule.LogAspectException(ex, $"{nameof(DefaultInterpolatedStringHandlerAspect)}.{nameof(AppendFormatted3)}");
}
}
@@ -106,7 +106,7 @@ public static void AppendFormatted4(ref DefaultInterpolatedStringHandler targ
}
catch (Exception ex)
{
- IastModule.Log.Warning(ex, $"Error invoking {nameof(DefaultInterpolatedStringHandlerAspect)}.{nameof(AppendFormatted4)}");
+ IastModule.LogAspectException(ex, $"{nameof(DefaultInterpolatedStringHandlerAspect)}.{nameof(AppendFormatted4)}");
}
}
@@ -130,7 +130,7 @@ public static void AppendFormatted5(ref DefaultInterpolatedStringHandler targ
}
catch (Exception ex)
{
- IastModule.Log.Warning(ex, $"Error invoking {nameof(DefaultInterpolatedStringHandlerAspect)}.{nameof(AppendFormatted5)}");
+ IastModule.LogAspectException(ex, $"{nameof(DefaultInterpolatedStringHandlerAspect)}.{nameof(AppendFormatted5)}");
}
}
@@ -154,7 +154,7 @@ public static void AppendFormatted6(ref DefaultInterpolatedStringHandler targ
}
catch (Exception ex)
{
- IastModule.Log.Warning(ex, $"Error invoking {nameof(DefaultInterpolatedStringHandlerAspect)}.{nameof(AppendFormatted6)}");
+ IastModule.LogAspectException(ex, $"{nameof(DefaultInterpolatedStringHandlerAspect)}.{nameof(AppendFormatted6)}");
}
}
@@ -179,7 +179,7 @@ public static void AppendFormatted7(ref DefaultInterpolatedStringHandler targ
}
catch (Exception ex)
{
- IastModule.Log.Warning(ex, $"Error invoking {nameof(DefaultInterpolatedStringHandlerAspect)}.{nameof(AppendFormatted7)}");
+ IastModule.LogAspectException(ex, $"{nameof(DefaultInterpolatedStringHandlerAspect)}.{nameof(AppendFormatted7)}");
}
}
@@ -198,7 +198,7 @@ public static void AppendLiteral(ref DefaultInterpolatedStringHandler target, st
}
catch (Exception ex)
{
- IastModule.Log.Warning(ex, $"Error invoking {nameof(DefaultInterpolatedStringHandlerAspect)}.{nameof(AppendLiteral)}");
+ IastModule.LogAspectException(ex, $"{nameof(DefaultInterpolatedStringHandlerAspect)}.{nameof(AppendLiteral)}");
}
}
@@ -217,7 +217,7 @@ public static string ToStringAndClear(ref DefaultInterpolatedStringHandler targe
}
catch (Exception ex)
{
- IastModule.Log.Warning(ex, $"Error invoking {nameof(DefaultInterpolatedStringHandlerAspect)}.{nameof(ToStringAndClear)}");
+ IastModule.LogAspectException(ex, $"{nameof(DefaultInterpolatedStringHandlerAspect)}.{nameof(ToStringAndClear)}");
}
return result;
diff --git a/tracer/src/Datadog.Trace/Iast/Aspects/System.Security.Cryptography/HashAlgorithmAspect.cs b/tracer/src/Datadog.Trace/Iast/Aspects/System.Security.Cryptography/HashAlgorithmAspect.cs
index 0167ecabbe2e..a9935175e43c 100644
--- a/tracer/src/Datadog.Trace/Iast/Aspects/System.Security.Cryptography/HashAlgorithmAspect.cs
+++ b/tracer/src/Datadog.Trace/Iast/Aspects/System.Security.Cryptography/HashAlgorithmAspect.cs
@@ -40,7 +40,7 @@ public static HashAlgorithm ComputeHash(HashAlgorithm target)
}
catch (global::System.Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(HashAlgorithmAspect)}.{nameof(ComputeHash)}");
+ IastModule.LogAspectException(ex, $"{nameof(HashAlgorithmAspect)}.{nameof(ComputeHash)}");
return target;
}
}
diff --git a/tracer/src/Datadog.Trace/Iast/Aspects/System.Security.Cryptography/SymmetricAlgorithmAspect.cs b/tracer/src/Datadog.Trace/Iast/Aspects/System.Security.Cryptography/SymmetricAlgorithmAspect.cs
index a5cc70aa3348..b579e220b037 100644
--- a/tracer/src/Datadog.Trace/Iast/Aspects/System.Security.Cryptography/SymmetricAlgorithmAspect.cs
+++ b/tracer/src/Datadog.Trace/Iast/Aspects/System.Security.Cryptography/SymmetricAlgorithmAspect.cs
@@ -29,7 +29,7 @@ private static void ProcessCipherClassCreation(SymmetricAlgorithm target)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, "Error in SymmetricAlgorithmAspect.");
+ IastModule.LogAspectException(ex, $"{nameof(SymmetricAlgorithmAspect)}.{nameof(ProcessCipherClassCreation)}");
}
}
@@ -47,7 +47,7 @@ public static DESCryptoServiceProvider InitDES()
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(SymmetricAlgorithmAspect)}.{nameof(InitDES)}");
+ IastModule.LogAspectException(ex, $"{nameof(SymmetricAlgorithmAspect)}.{nameof(InitDES)}");
}
return target;
@@ -67,7 +67,7 @@ public static RC2CryptoServiceProvider InitRC2()
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(SymmetricAlgorithmAspect)}.{nameof(InitRC2)}");
+ IastModule.LogAspectException(ex, $"{nameof(SymmetricAlgorithmAspect)}.{nameof(InitRC2)}");
}
return target;
@@ -87,7 +87,7 @@ public static TripleDESCryptoServiceProvider InitTripleDES()
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(SymmetricAlgorithmAspect)}.{nameof(InitTripleDES)}");
+ IastModule.LogAspectException(ex, $"{nameof(SymmetricAlgorithmAspect)}.{nameof(InitTripleDES)}");
}
return target;
@@ -107,7 +107,7 @@ public static RijndaelManaged InitRijndaelManaged()
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(SymmetricAlgorithmAspect)}.{nameof(InitRijndaelManaged)}");
+ IastModule.LogAspectException(ex, $"{nameof(SymmetricAlgorithmAspect)}.{nameof(InitRijndaelManaged)}");
}
return target;
@@ -127,7 +127,7 @@ public static AesCryptoServiceProvider InitAesCryptoServiceProvider()
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(SymmetricAlgorithmAspect)}.{nameof(InitAesCryptoServiceProvider)}");
+ IastModule.LogAspectException(ex, $"{nameof(SymmetricAlgorithmAspect)}.{nameof(InitAesCryptoServiceProvider)}");
}
return target;
@@ -157,7 +157,7 @@ public static SymmetricAlgorithm Create(SymmetricAlgorithm target)
}
catch (global::System.Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(SymmetricAlgorithmAspect)}.{nameof(Create)}");
+ IastModule.LogAspectException(ex, $"{nameof(SymmetricAlgorithmAspect)}.{nameof(Create)}");
return target;
}
}
diff --git a/tracer/src/Datadog.Trace/Iast/Aspects/System.Text.Json/JsonDocumentAspects.cs b/tracer/src/Datadog.Trace/Iast/Aspects/System.Text.Json/JsonDocumentAspects.cs
index fef66b38692f..85b1ecddeee2 100644
--- a/tracer/src/Datadog.Trace/Iast/Aspects/System.Text.Json/JsonDocumentAspects.cs
+++ b/tracer/src/Datadog.Trace/Iast/Aspects/System.Text.Json/JsonDocumentAspects.cs
@@ -37,7 +37,7 @@ public static object Parse(string json, JsonDocumentOptions options)
}
catch (Exception ex)
{
- IastModule.Log.Warning(ex, "Error tainting JsonDocument.Parse result");
+ IastModule.LogAspectException(ex, $"{nameof(JsonDocumentAspects)}.{nameof(Parse)}");
}
return doc;
@@ -60,7 +60,7 @@ public static object Parse(string json, JsonDocumentOptions options)
}
catch (Exception ex)
{
- IastModule.Log.Warning(ex, "Error casting to IJsonElement");
+ IastModule.LogAspectException(ex, $"{nameof(JsonDocumentAspects)}.{nameof(GetString)} (DuckCast)");
return null;
}
@@ -77,7 +77,7 @@ public static object Parse(string json, JsonDocumentOptions options)
}
catch (Exception ex)
{
- IastModule.Log.Warning(ex, "Error tainting JsonElement.GetString result");
+ IastModule.LogAspectException(ex, $"{nameof(JsonDocumentAspects)}.{nameof(GetString)}");
}
return str;
@@ -101,7 +101,7 @@ public static object Parse(string json, JsonDocumentOptions options)
}
catch (Exception ex)
{
- IastModule.Log.Warning(ex, "Error casting to IJsonElement");
+ IastModule.LogAspectException(ex, $"{nameof(JsonDocumentAspects)}.{nameof(GetRawText)} (DuckCast)");
return null;
}
@@ -118,7 +118,7 @@ public static object Parse(string json, JsonDocumentOptions options)
}
catch (Exception ex)
{
- IastModule.Log.Warning(ex, "Error tainting JsonElement.GetRawText result");
+ IastModule.LogAspectException(ex, $"{nameof(JsonDocumentAspects)}.{nameof(GetRawText)}");
}
return str;
diff --git a/tracer/src/Datadog.Trace/Iast/Aspects/System.Text/StringBuilderAspects.cs b/tracer/src/Datadog.Trace/Iast/Aspects/System.Text/StringBuilderAspects.cs
index dd1278578056..09dfd7aeec54 100644
--- a/tracer/src/Datadog.Trace/Iast/Aspects/System.Text/StringBuilderAspects.cs
+++ b/tracer/src/Datadog.Trace/Iast/Aspects/System.Text/StringBuilderAspects.cs
@@ -34,7 +34,7 @@ public static StringBuilder Init(string? value)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(Init)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringBuilderAspects)}.{nameof(Init)}");
}
return result;
@@ -54,7 +54,7 @@ public static StringBuilder Init(string? value, int capacity)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(Init)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringBuilderAspects)}.{nameof(Init)}");
}
return result;
@@ -76,7 +76,7 @@ public static StringBuilder Init(string? value, int startIndex, int length, int
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(Init)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringBuilderAspects)}.{nameof(Init)}");
}
return result;
@@ -99,7 +99,7 @@ public static StringBuilder Init(string? value, int startIndex, int length, int
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(ToString)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringBuilderAspects)}.{nameof(ToString)}");
}
return result;
@@ -121,7 +121,7 @@ public static string ToString(StringBuilder? target, int startIndex, int length)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(ToString)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringBuilderAspects)}.{nameof(ToString)}");
}
return result;
@@ -146,7 +146,7 @@ public static StringBuilder Append(StringBuilder? target, string? value)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(Append)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringBuilderAspects)}.{nameof(Append)}");
}
return result;
@@ -172,7 +172,7 @@ public static StringBuilder Append(StringBuilder? target, StringBuilder? value)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(Append)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringBuilderAspects)}.{nameof(Append)}");
}
return result;
@@ -199,7 +199,7 @@ public static StringBuilder Append(StringBuilder? target, string? value, int sta
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(Append)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringBuilderAspects)}.{nameof(Append)}");
}
return result;
@@ -226,7 +226,7 @@ public static StringBuilder Append(StringBuilder? target, StringBuilder? value,
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(Append)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringBuilderAspects)}.{nameof(Append)}");
}
return result;
@@ -253,7 +253,7 @@ public static StringBuilder Append(StringBuilder? target, char[]? value, int sta
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(Append)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringBuilderAspects)}.{nameof(Append)}");
}
return result;
@@ -290,7 +290,7 @@ public static StringBuilder Append(StringBuilder? target, object? value)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(Append)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringBuilderAspects)}.{nameof(Append)}");
}
return result;
@@ -315,7 +315,7 @@ public static StringBuilder Append(StringBuilder? target, char[]? value)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(Append)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringBuilderAspects)}.{nameof(Append)}");
}
return result;
@@ -341,7 +341,7 @@ public static StringBuilder AppendLine(StringBuilder? target, string? value)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(AppendLine)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringBuilderAspects)}.{nameof(AppendLine)}");
}
return result;
@@ -362,7 +362,7 @@ public static StringBuilder AppendFormat(StringBuilder? target, string? format,
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(AppendFormat)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringBuilderAspects)}.{nameof(AppendFormat)}");
}
return result;
@@ -384,7 +384,7 @@ public static StringBuilder AppendFormat(StringBuilder? target, string? format,
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(AppendFormat)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringBuilderAspects)}.{nameof(AppendFormat)}");
}
return result;
@@ -407,7 +407,7 @@ public static StringBuilder AppendFormat(StringBuilder? target, string? format,
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(AppendFormat)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringBuilderAspects)}.{nameof(AppendFormat)}");
}
return result;
@@ -428,7 +428,7 @@ public static StringBuilder AppendFormat(StringBuilder? target, string? format,
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(AppendFormat)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringBuilderAspects)}.{nameof(AppendFormat)}");
}
return result;
@@ -450,7 +450,7 @@ public static StringBuilder AppendFormat(StringBuilder? target, IFormatProvider?
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(AppendFormat)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringBuilderAspects)}.{nameof(AppendFormat)}");
}
return result;
@@ -473,7 +473,7 @@ public static StringBuilder AppendFormat(StringBuilder? target, IFormatProvider?
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(AppendFormat)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringBuilderAspects)}.{nameof(AppendFormat)}");
}
return result;
@@ -497,7 +497,7 @@ public static StringBuilder AppendFormat(StringBuilder? target, IFormatProvider?
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(AppendFormat)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringBuilderAspects)}.{nameof(AppendFormat)}");
}
return result;
@@ -519,7 +519,7 @@ public static StringBuilder AppendFormat(StringBuilder? target, IFormatProvider?
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(AppendFormat)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringBuilderAspects)}.{nameof(AppendFormat)}");
}
return result;
@@ -541,7 +541,7 @@ public static void CopyTo(StringBuilder? target, int sourceIndex, char[]? destin
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(CopyTo)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringBuilderAspects)}.{nameof(CopyTo)}");
}
}
@@ -564,7 +564,7 @@ public static StringBuilder Insert(StringBuilder? target, int index, string? val
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(Insert)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringBuilderAspects)}.{nameof(Insert)}");
}
return result;
@@ -590,7 +590,7 @@ public static StringBuilder Insert(StringBuilder? target, int index, string? val
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(Insert)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringBuilderAspects)}.{nameof(Insert)}");
}
return result;
@@ -615,7 +615,7 @@ public static StringBuilder Insert(StringBuilder? target, int index, char value)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(Insert)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringBuilderAspects)}.{nameof(Insert)}");
}
return result;
@@ -640,7 +640,7 @@ public static StringBuilder Insert(StringBuilder? target, int index, char[]? val
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(Insert)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringBuilderAspects)}.{nameof(Insert)}");
}
return result;
@@ -667,7 +667,7 @@ public static StringBuilder Insert(StringBuilder? target, int index, char[]? val
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(Insert)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringBuilderAspects)}.{nameof(Insert)}");
}
return result;
@@ -693,7 +693,7 @@ public static StringBuilder Insert(StringBuilder? target, int index, int value)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(Insert)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringBuilderAspects)}.{nameof(Insert)}");
}
return result;
@@ -719,7 +719,7 @@ public static StringBuilder Insert(StringBuilder? target, int index, long value)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(Insert)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringBuilderAspects)}.{nameof(Insert)}");
}
return result;
@@ -745,7 +745,7 @@ public static StringBuilder Insert(StringBuilder? target, int index, float value
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(Insert)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringBuilderAspects)}.{nameof(Insert)}");
}
return result;
@@ -771,7 +771,7 @@ public static StringBuilder Insert(StringBuilder? target, int index, double valu
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(Insert)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringBuilderAspects)}.{nameof(Insert)}");
}
return result;
@@ -797,7 +797,7 @@ public static StringBuilder Insert(StringBuilder? target, int index, decimal val
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(Insert)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringBuilderAspects)}.{nameof(Insert)}");
}
return result;
@@ -823,7 +823,7 @@ public static StringBuilder Insert(StringBuilder? target, int index, ushort valu
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(Insert)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringBuilderAspects)}.{nameof(Insert)}");
}
return result;
@@ -849,7 +849,7 @@ public static StringBuilder Insert(StringBuilder? target, int index, uint value)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(Insert)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringBuilderAspects)}.{nameof(Insert)}");
}
return result;
@@ -875,7 +875,7 @@ public static StringBuilder Insert(StringBuilder? target, int index, ulong value
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(Insert)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringBuilderAspects)}.{nameof(Insert)}");
}
return result;
@@ -901,7 +901,7 @@ public static StringBuilder Insert(StringBuilder? target, int index, bool value)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(Insert)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringBuilderAspects)}.{nameof(Insert)}");
}
return result;
@@ -927,7 +927,7 @@ public static StringBuilder Insert(StringBuilder? target, int index, sbyte value
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(Insert)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringBuilderAspects)}.{nameof(Insert)}");
}
return result;
@@ -953,7 +953,7 @@ public static StringBuilder Insert(StringBuilder? target, int index, byte value)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(Insert)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringBuilderAspects)}.{nameof(Insert)}");
}
return result;
@@ -979,7 +979,7 @@ public static StringBuilder Insert(StringBuilder? target, int index, short value
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(Insert)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringBuilderAspects)}.{nameof(Insert)}");
}
return result;
@@ -1005,7 +1005,7 @@ public static StringBuilder Insert(StringBuilder? target, int index, object? val
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(Insert)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringBuilderAspects)}.{nameof(Insert)}");
}
return result;
@@ -1026,7 +1026,7 @@ public static StringBuilder Remove(StringBuilder? target, int startIndex, int le
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(Remove)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringBuilderAspects)}.{nameof(Remove)}");
}
return result;
@@ -1047,7 +1047,7 @@ public static StringBuilder Replace(StringBuilder? target, string? oldValue, str
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(Replace)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringBuilderAspects)}.{nameof(Replace)}");
}
return result;
@@ -1070,7 +1070,7 @@ public static StringBuilder Replace(StringBuilder? target, string? oldValue, str
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(Replace)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringBuilderAspects)}.{nameof(Replace)}");
}
return result;
@@ -1091,7 +1091,7 @@ public static StringBuilder Replace(StringBuilder? target, char oldChar, char ne
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(Replace)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringBuilderAspects)}.{nameof(Replace)}");
}
return result;
@@ -1114,7 +1114,7 @@ public static StringBuilder Replace(StringBuilder? target, char oldChar, char ne
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(Replace)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringBuilderAspects)}.{nameof(Replace)}");
}
return result;
@@ -1133,7 +1133,7 @@ public static void SetLength(StringBuilder? target, int length)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(SetLength)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringBuilderAspects)}.{nameof(SetLength)}");
}
}
@@ -1153,7 +1153,7 @@ public static StringBuilder AppendJoin(StringBuilder? target, string? separator,
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(AppendJoin)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringBuilderAspects)}.{nameof(AppendJoin)}");
}
return result;
@@ -1174,7 +1174,7 @@ public static StringBuilder AppendJoin(StringBuilder? target, string? separator,
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(AppendJoin)}");
+ IastModule.LogAspectException(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(AppendJoin)}");
}
return result;
@@ -1195,7 +1195,7 @@ public static StringBuilder AppendJoin(StringBuilder? target, char separator, st
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(AppendJoin)}");
+ IastModule.LogAspectException(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(AppendJoin)}");
}
return result;
@@ -1216,7 +1216,7 @@ public static StringBuilder AppendJoin(StringBuilder? target, char separator, ob
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(AppendJoin)}");
+ IastModule.LogAspectException(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(AppendJoin)}");
}
return result;
@@ -1238,7 +1238,7 @@ public static StringBuilder AppendJoin(StringBuilder? target, char separator,
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(AppendJoin)}");
+ IastModule.LogAspectException(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(AppendJoin)}");
}
return result;
@@ -1260,7 +1260,7 @@ public static StringBuilder AppendJoin(StringBuilder? target, string separato
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(AppendJoin)}");
+ IastModule.LogAspectException(ex, $"Error invoking {nameof(StringBuilderAspects)}.{nameof(AppendJoin)}");
}
return result;
diff --git a/tracer/src/Datadog.Trace/Iast/Aspects/System.Web.Extensions/JavaScriptSerializerAspects.cs b/tracer/src/Datadog.Trace/Iast/Aspects/System.Web.Extensions/JavaScriptSerializerAspects.cs
index 3aaee1ba3683..d12375bf35dc 100644
--- a/tracer/src/Datadog.Trace/Iast/Aspects/System.Web.Extensions/JavaScriptSerializerAspects.cs
+++ b/tracer/src/Datadog.Trace/Iast/Aspects/System.Web.Extensions/JavaScriptSerializerAspects.cs
@@ -38,7 +38,7 @@ public class JavaScriptSerializerAspects
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, "Error while casting JavaScriptSerializer");
+ IastModule.LogAspectException(ex, $"{nameof(JavaScriptSerializerAspects)}.{nameof(DeserializeObject)} (DuckCast)");
return null;
}
@@ -57,7 +57,7 @@ public class JavaScriptSerializerAspects
}
catch (Exception ex)
{
- IastModule.Log.Warning(ex, "Error while tainting json in DeserializeObject");
+ IastModule.LogAspectException(ex, $"{nameof(JavaScriptSerializerAspects)}.{nameof(DeserializeObject)}");
}
return result;
diff --git a/tracer/src/Datadog.Trace/Iast/Aspects/System.Web.Mvc/HttpControllerAspect.cs b/tracer/src/Datadog.Trace/Iast/Aspects/System.Web.Mvc/HttpControllerAspect.cs
index 7b8b333f3510..835945314bf2 100644
--- a/tracer/src/Datadog.Trace/Iast/Aspects/System.Web.Mvc/HttpControllerAspect.cs
+++ b/tracer/src/Datadog.Trace/Iast/Aspects/System.Web.Mvc/HttpControllerAspect.cs
@@ -31,7 +31,7 @@ public class HttpControllerAspect
}
catch (global::System.Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(HttpControllerAspect)}.{nameof(Redirect)}");
+ IastModule.LogAspectException(ex, $"{nameof(HttpControllerAspect)}.{nameof(Redirect)}");
return url;
}
}
diff --git a/tracer/src/Datadog.Trace/Iast/Aspects/System.Web.SessionState/HttpSessionStateBaseAspect.cs b/tracer/src/Datadog.Trace/Iast/Aspects/System.Web.SessionState/HttpSessionStateBaseAspect.cs
index 0e2af73643c6..9c601a146868 100644
--- a/tracer/src/Datadog.Trace/Iast/Aspects/System.Web.SessionState/HttpSessionStateBaseAspect.cs
+++ b/tracer/src/Datadog.Trace/Iast/Aspects/System.Web.SessionState/HttpSessionStateBaseAspect.cs
@@ -40,7 +40,7 @@ public static object Add(object value)
}
catch (global::System.Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(HttpSessionStateBaseAspect)}.{nameof(Add)}");
+ IastModule.LogAspectException(ex, $"{nameof(HttpSessionStateBaseAspect)}.{nameof(Add)}");
return value;
}
}
diff --git a/tracer/src/Datadog.Trace/Iast/Aspects/System.Web.SessionState/SessionExtensionsAspect.cs b/tracer/src/Datadog.Trace/Iast/Aspects/System.Web.SessionState/SessionExtensionsAspect.cs
index df9c2fb6eb32..347d621ebf1a 100644
--- a/tracer/src/Datadog.Trace/Iast/Aspects/System.Web.SessionState/SessionExtensionsAspect.cs
+++ b/tracer/src/Datadog.Trace/Iast/Aspects/System.Web.SessionState/SessionExtensionsAspect.cs
@@ -43,7 +43,7 @@ public static string ReviewTbv(string value)
}
catch (global::System.Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(SessionExtensionsAspect)}.{nameof(ReviewTbv)}");
+ IastModule.LogAspectException(ex, $"{nameof(SessionExtensionsAspect)}.{nameof(ReviewTbv)}");
return value;
}
}
diff --git a/tracer/src/Datadog.Trace/Iast/Aspects/System.Web/HttpCookieAspect.cs b/tracer/src/Datadog.Trace/Iast/Aspects/System.Web/HttpCookieAspect.cs
index f0c94566a455..9b636e3a3df2 100644
--- a/tracer/src/Datadog.Trace/Iast/Aspects/System.Web/HttpCookieAspect.cs
+++ b/tracer/src/Datadog.Trace/Iast/Aspects/System.Web/HttpCookieAspect.cs
@@ -39,7 +39,7 @@ public static string GetValue(HttpCookie cookie)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(HttpCookieAspect)}.{nameof(GetValue)}");
+ IastModule.LogAspectException(ex, $"{nameof(HttpCookieAspect)}.{nameof(GetValue)}");
}
return value;
diff --git a/tracer/src/Datadog.Trace/Iast/Aspects/System.Web/HttpResponseAspect.cs b/tracer/src/Datadog.Trace/Iast/Aspects/System.Web/HttpResponseAspect.cs
index b0b8cddfe246..765d3f42d783 100644
--- a/tracer/src/Datadog.Trace/Iast/Aspects/System.Web/HttpResponseAspect.cs
+++ b/tracer/src/Datadog.Trace/Iast/Aspects/System.Web/HttpResponseAspect.cs
@@ -32,7 +32,7 @@ public class HttpResponseAspect
}
catch (global::System.Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(HttpResponseAspect)}.{nameof(Redirect)}");
+ IastModule.LogAspectException(ex, $"{nameof(HttpResponseAspect)}.{nameof(Redirect)}");
return url;
}
}
diff --git a/tracer/src/Datadog.Trace/Iast/Aspects/System.Web/HttpUtilityAspect.cs b/tracer/src/Datadog.Trace/Iast/Aspects/System.Web/HttpUtilityAspect.cs
index aff78e6cd9c5..e238d10ba4dd 100644
--- a/tracer/src/Datadog.Trace/Iast/Aspects/System.Web/HttpUtilityAspect.cs
+++ b/tracer/src/Datadog.Trace/Iast/Aspects/System.Web/HttpUtilityAspect.cs
@@ -34,7 +34,7 @@ public class HttpUtilityAspect
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(HttpUtilityAspect)}.{nameof(XssEscape)}");
+ IastModule.LogAspectException(ex, $"{nameof(HttpUtilityAspect)}.{nameof(XssEscape)}");
}
return result;
@@ -58,7 +58,7 @@ public class HttpUtilityAspect
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(HttpUtilityAspect)}.{nameof(SsrfEscape)}");
+ IastModule.LogAspectException(ex, $"{nameof(HttpUtilityAspect)}.{nameof(SsrfEscape)}");
}
return result;
@@ -83,7 +83,7 @@ public class HttpUtilityAspect
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(HttpUtilityAspect)}.{nameof(SsrfEscape)}");
+ IastModule.LogAspectException(ex, $"{nameof(HttpUtilityAspect)}.{nameof(SsrfEscape)}");
}
return result;
diff --git a/tracer/src/Datadog.Trace/Iast/Aspects/System.Xml/SystemXmlAspect.cs b/tracer/src/Datadog.Trace/Iast/Aspects/System.Xml/SystemXmlAspect.cs
index 79d3f6858037..6211e2b2206f 100644
--- a/tracer/src/Datadog.Trace/Iast/Aspects/System.Xml/SystemXmlAspect.cs
+++ b/tracer/src/Datadog.Trace/Iast/Aspects/System.Xml/SystemXmlAspect.cs
@@ -40,7 +40,7 @@ public static string ReviewPath(string xpath)
}
catch (global::System.Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(SystemXmlAspect)}.{nameof(ReviewPath)}");
+ IastModule.LogAspectException(ex, $"{nameof(SystemXmlAspect)}.{nameof(ReviewPath)}");
return xpath;
}
}
diff --git a/tracer/src/Datadog.Trace/Iast/Aspects/System.Xml/XPathExtensionAspect.cs b/tracer/src/Datadog.Trace/Iast/Aspects/System.Xml/XPathExtensionAspect.cs
index ccdad0ad53e0..a5353111b957 100644
--- a/tracer/src/Datadog.Trace/Iast/Aspects/System.Xml/XPathExtensionAspect.cs
+++ b/tracer/src/Datadog.Trace/Iast/Aspects/System.Xml/XPathExtensionAspect.cs
@@ -35,7 +35,7 @@ public static string ReviewPath(string xpath)
}
catch (global::System.Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(XPathExtensionAspect)}.{nameof(ReviewPath)}");
+ IastModule.LogAspectException(ex, $"{nameof(XPathExtensionAspect)}.{nameof(ReviewPath)}");
return xpath;
}
}
diff --git a/tracer/src/Datadog.Trace/Iast/Aspects/System/RandomAspect.cs b/tracer/src/Datadog.Trace/Iast/Aspects/System/RandomAspect.cs
index 70f3bb93fce4..0b627060256e 100644
--- a/tracer/src/Datadog.Trace/Iast/Aspects/System/RandomAspect.cs
+++ b/tracer/src/Datadog.Trace/Iast/Aspects/System/RandomAspect.cs
@@ -30,7 +30,7 @@ public static void Init()
}
catch (global::System.Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(RandomAspect)}.{nameof(Init)}");
+ IastModule.LogAspectException(ex, $"{nameof(RandomAspect)}.{nameof(Init)}");
return;
}
}
diff --git a/tracer/src/Datadog.Trace/Iast/Aspects/System/StringAspects.cs b/tracer/src/Datadog.Trace/Iast/Aspects/System/StringAspects.cs
index 6e74711f4a95..1c1294b0c6da 100644
--- a/tracer/src/Datadog.Trace/Iast/Aspects/System/StringAspects.cs
+++ b/tracer/src/Datadog.Trace/Iast/Aspects/System/StringAspects.cs
@@ -36,7 +36,7 @@ public static string Trim(string target)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Trim)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(Trim)}");
}
return result;
@@ -65,7 +65,7 @@ public static string Trim(string target, char[] trimChars)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Trim)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(Trim)}");
}
return result;
@@ -88,7 +88,7 @@ public static string Trim(string target, char trimChar)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Trim)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(Trim)}");
}
return result;
@@ -118,7 +118,7 @@ public static string TrimStart(string target, char[] trimChars)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(TrimStart)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(TrimStart)}");
}
return result;
@@ -141,7 +141,7 @@ public static string TrimStart(string target, char trimChar)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(TrimStart)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(TrimStart)}");
}
return result;
@@ -162,7 +162,7 @@ public static string TrimStart(string target)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(TrimStart)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(TrimStart)}");
}
return result;
@@ -192,7 +192,7 @@ public static string TrimEnd(string target, char[] trimChars)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(TrimEnd)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(TrimEnd)}");
}
return result;
@@ -215,7 +215,7 @@ public static string TrimEnd(string target, char trimChar)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(TrimEnd)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(TrimEnd)}");
}
return result;
@@ -236,7 +236,7 @@ public static string TrimEnd(string target)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(TrimEnd)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(TrimEnd)}");
}
return result;
@@ -259,7 +259,7 @@ public static string Concat(string param1, string param2)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Concat)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(Concat)}");
}
return result;
@@ -281,7 +281,7 @@ public static string Concat_0(string param1, string param2)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Concat_0)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(Concat_0)}");
}
return result;
@@ -303,7 +303,7 @@ public static string Concat_1(string param1, string param2)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Concat_1)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(Concat_1)}");
}
return result;
@@ -325,7 +325,7 @@ public static string Concat(object param1, object param2)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Concat)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(Concat)}");
}
return result;
@@ -348,7 +348,7 @@ public static string Concat(string param1, string param2, string param3)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Concat)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(Concat)}");
}
return result;
@@ -371,7 +371,7 @@ public static string Concat(object param1, object param2, object param3)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Concat)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(Concat)}");
}
return result;
@@ -395,7 +395,7 @@ public static string Concat(string param1, string param2, string param3, string
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Concat)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(Concat)}");
}
return result;
@@ -420,7 +420,7 @@ public static string Concat(object param1, object param2, object param3, object
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Concat)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(Concat)}");
}
return result;
@@ -442,7 +442,7 @@ public static string Concat(string[] values)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Concat)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(Concat)}");
}
return result;
@@ -463,7 +463,7 @@ public static string Concat(object[] values)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Concat)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(Concat)}");
}
return result;
@@ -484,7 +484,7 @@ public static string Concat(IEnumerable values)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Concat)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(Concat)}");
}
return result;
@@ -506,7 +506,7 @@ public static string Concat(IEnumerable values)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Concat)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(Concat)}");
}
return result;
@@ -528,7 +528,7 @@ public static string Substring(string target, int startIndex)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Substring)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(Substring)}");
}
return result;
@@ -551,7 +551,7 @@ public static string Substring(string target, int startIndex, int length)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Substring)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(Substring)}");
}
return result;
@@ -572,7 +572,7 @@ public static char[] ToCharArray(string target)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(ToCharArray)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(ToCharArray)}");
}
return result;
@@ -595,7 +595,7 @@ public static char[] ToCharArray(string target, int startIndex, int length)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(ToCharArray)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(ToCharArray)}");
}
return result;
@@ -619,7 +619,7 @@ public static string Join(string separator, string[] values, int startIndex, int
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Join)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(Join)}");
}
return result;
@@ -642,7 +642,7 @@ public static string Join(char separator, string[] values)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Join)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(Join)}");
}
return result;
@@ -664,7 +664,7 @@ public static string Join(char separator, object[] values)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Join)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(Join)}");
}
return result;
@@ -688,7 +688,7 @@ public static string Join(char separator, string[] values, int startIndex, int c
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Join)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(Join)}");
}
return result;
@@ -711,7 +711,7 @@ public static string Join(char separator, IEnumerable values)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Join)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(Join)}");
}
return result;
@@ -735,7 +735,7 @@ public static string Join(string separator, IEnumerable values)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Join)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(Join)}");
}
return result;
@@ -757,7 +757,7 @@ public static string Join(string separator, object[] values)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Join)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(Join)}");
}
return result;
@@ -779,7 +779,7 @@ public static string Join(string separator, string[] values)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Join)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(Join)}");
}
return result;
@@ -801,7 +801,7 @@ public static string JoinString(string separator, IEnumerable values)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Join)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(Join)}");
}
return result;
@@ -822,7 +822,7 @@ public static string ToUpper(string target)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(ToUpper)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(ToUpper)}");
}
return result;
@@ -844,7 +844,7 @@ public static string ToUpper(string target, global::System.Globalization.Culture
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(ToUpper)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(ToUpper)}");
}
return result;
@@ -865,7 +865,7 @@ public static string ToUpperInvariant(string target)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(ToUpperInvariant)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(ToUpperInvariant)}");
}
return result;
@@ -886,7 +886,7 @@ public static string ToLower(string target)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(ToLower)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(ToLower)}");
}
return result;
@@ -908,7 +908,7 @@ public static string ToLower(string target, global::System.Globalization.Culture
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(ToLower)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(ToLower)}");
}
return result;
@@ -929,7 +929,7 @@ public static string ToLowerInvariant(string target)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(ToLowerInvariant)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(ToLowerInvariant)}");
}
return result;
@@ -951,7 +951,7 @@ public static string Remove(string target, int startIndex)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Remove)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(Remove)}");
}
return result;
@@ -974,7 +974,7 @@ public static string Remove(string target, int startIndex, int count)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Remove)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(Remove)}");
}
return result;
@@ -997,7 +997,7 @@ public static string Insert(string target, int startIndex, string value)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Insert)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(Insert)}");
}
return result;
@@ -1019,7 +1019,7 @@ public static string PadLeft(string target, int totalWidth)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(PadLeft)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(PadLeft)}");
}
return result;
@@ -1042,7 +1042,7 @@ public static string PadLeft(string target, int totalWidth, char paddingChar)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(PadLeft)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(PadLeft)}");
}
return result;
@@ -1064,7 +1064,7 @@ public static string PadRight(string target, int totalWidth)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(PadRight)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(PadRight)}");
}
return result;
@@ -1087,7 +1087,7 @@ public static string PadRight(string target, int totalWidth, char paddingChar)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(PadRight)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(PadRight)}");
}
return result;
@@ -1109,7 +1109,7 @@ public static string Format(string format, object arg0)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Format)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(Format)}");
}
return result;
@@ -1132,7 +1132,7 @@ public static string Format(string format, object arg0, object arg1)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Format)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(Format)}");
}
return result;
@@ -1156,7 +1156,7 @@ public static string Format(string format, object arg0, object arg1, object arg2
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Format)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(Format)}");
}
return result;
@@ -1178,7 +1178,7 @@ public static string Format(string format, object[] args)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Format)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(Format)}");
}
return result;
@@ -1201,7 +1201,7 @@ public static string Format(IFormatProvider provider, string format, object arg0
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Format)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(Format)}");
}
return result;
@@ -1225,7 +1225,7 @@ public static string Format(IFormatProvider provider, string format, object arg0
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Format)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(Format)}");
}
return result;
@@ -1250,7 +1250,7 @@ public static string Format(IFormatProvider provider, string format, object arg0
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Format)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(Format)}");
}
return result;
@@ -1273,7 +1273,7 @@ public static string Format(IFormatProvider provider, string format, object[] ar
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Format)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(Format)}");
}
return result;
@@ -1299,7 +1299,7 @@ public static string Replace(string target, string oldValue, string newValue, bo
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Replace)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(Replace)}");
}
return result;
@@ -1323,7 +1323,7 @@ public static string Replace(string target, string oldValue, string newValue, St
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Replace)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(Replace)}");
}
return result;
@@ -1347,7 +1347,7 @@ public static string Replace(string target, char oldChar, char newChar)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Replace)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(Replace)}");
}
return result;
@@ -1370,7 +1370,7 @@ public static string Replace(string target, string oldValue, string newValue)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Replace)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(Replace)}");
}
return result;
@@ -1392,7 +1392,7 @@ public static string[] Split(string target, char[] separator)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Split)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(Split)}");
}
return result;
@@ -1415,7 +1415,7 @@ public static string[] Split(string target, char[] separator, int count)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Split)}");
+ IastModule.LogAspectException(ex, $"{nameof(StringAspects)}.{nameof(Split)}");
}
return result;
@@ -1438,7 +1438,7 @@ public static string[] Split(string target, char[] separator, StringSplitOptions
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Split)}");
+ IastModule.LogAspectException(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Split)}");
}
return result;
@@ -1462,7 +1462,7 @@ public static string[] Split(string target, char[] separator, int count, StringS
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Split)}");
+ IastModule.LogAspectException(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Split)}");
}
return result;
@@ -1485,7 +1485,7 @@ public static string[] Split(string target, string[] separator, StringSplitOptio
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Split)}");
+ IastModule.LogAspectException(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Split)}");
}
return result;
@@ -1509,7 +1509,7 @@ public static string[] Split(string target, string[] separator, int count, Strin
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Split)}");
+ IastModule.LogAspectException(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Split)}");
}
return result;
@@ -1535,7 +1535,7 @@ public static string[] Split(string target, string separator, int count, StringS
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Split)}");
+ IastModule.LogAspectException(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Split)}");
}
return result;
@@ -1558,7 +1558,7 @@ public static string[] Split(string target, string separator, StringSplitOptions
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Split)}");
+ IastModule.LogAspectException(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Split)}");
}
return result;
@@ -1581,7 +1581,7 @@ public static string[] Split(string target, char separator, StringSplitOptions o
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Split)}");
+ IastModule.LogAspectException(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Split)}");
}
return result;
@@ -1605,7 +1605,7 @@ public static string[] Split(string target, char separator, int count, StringSpl
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Split)}");
+ IastModule.LogAspectException(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Split)}");
}
return result;
@@ -1628,7 +1628,7 @@ public static string Copy(string target)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Copy)}");
+ IastModule.LogAspectException(ex, $"Error invoking {nameof(StringAspects)}.{nameof(Copy)}");
}
return result;
diff --git a/tracer/src/Datadog.Trace/Iast/Aspects/System/UriAspect.cs b/tracer/src/Datadog.Trace/Iast/Aspects/System/UriAspect.cs
index 878de9d7cd4f..adc9d15166dc 100644
--- a/tracer/src/Datadog.Trace/Iast/Aspects/System/UriAspect.cs
+++ b/tracer/src/Datadog.Trace/Iast/Aspects/System/UriAspect.cs
@@ -32,7 +32,7 @@ public static Uri Init(string uriBase)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(UriAspect)}.{nameof(Init)}");
+ IastModule.LogAspectException(ex, $"{nameof(UriAspect)}.{nameof(Init)}");
}
return result;
@@ -57,7 +57,7 @@ public static Uri Init(Uri uriBase, string uriText, bool escape)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(UriAspect)}.{nameof(Init)}");
+ IastModule.LogAspectException(ex, $"{nameof(UriAspect)}.{nameof(Init)}");
}
return result;
@@ -79,7 +79,7 @@ public static Uri Init(Uri uriBase, string relativeUri)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(UriAspect)}.{nameof(Init)}");
+ IastModule.LogAspectException(ex, $"{nameof(UriAspect)}.{nameof(Init)}");
}
return result;
@@ -101,7 +101,7 @@ public static Uri Init(Uri uriBase, Uri relativeUri)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(UriAspect)}.{nameof(Init)}");
+ IastModule.LogAspectException(ex, $"{nameof(UriAspect)}.{nameof(Init)}");
}
return result;
@@ -128,7 +128,7 @@ public static Uri Init(string uriBase, bool dontEscape)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(UriAspect)}.{nameof(Init)}");
+ IastModule.LogAspectException(ex, $"{nameof(UriAspect)}.{nameof(Init)}");
}
return result;
@@ -150,7 +150,7 @@ public static Uri Init(string uriBase, UriKind uriKind)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(UriAspect)}.{nameof(Init)}");
+ IastModule.LogAspectException(ex, $"{nameof(UriAspect)}.{nameof(Init)}");
}
return result;
@@ -173,7 +173,7 @@ public static Uri Init(string uriBase, in UriCreationOptions options)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(UriAspect)}.{nameof(Init)}");
+ IastModule.LogAspectException(ex, $"{nameof(UriAspect)}.{nameof(Init)}");
}
return result;
@@ -200,7 +200,7 @@ public static bool TryCreate(string uri, UriKind kind, out Uri? uriCreated)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(UriAspect)}.{nameof(TryCreate)}");
+ IastModule.LogAspectException(ex, $"{nameof(UriAspect)}.{nameof(TryCreate)}");
}
return result;
@@ -227,7 +227,7 @@ public static bool TryCreate(string uri, in UriCreationOptions options, out Uri?
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(UriAspect)}.{nameof(TryCreate)}");
+ IastModule.LogAspectException(ex, $"{nameof(UriAspect)}.{nameof(TryCreate)}");
}
return result;
@@ -254,7 +254,7 @@ public static bool TryCreate(Uri? baseUri, string? relativeUri, out Uri? uriCrea
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(UriAspect)}.{nameof(TryCreate)}");
+ IastModule.LogAspectException(ex, $"{nameof(UriAspect)}.{nameof(TryCreate)}");
}
return result;
@@ -280,7 +280,7 @@ public static bool TryCreate(Uri? baseUri, Uri? relativeUri, out Uri? uriCreated
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(UriAspect)}.{nameof(TryCreate)}");
+ IastModule.LogAspectException(ex, $"{nameof(UriAspect)}.{nameof(TryCreate)}");
}
return result;
@@ -301,7 +301,7 @@ public static string UnescapeDataString(string uri)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(UriAspect)}.{nameof(UnescapeDataString)}");
+ IastModule.LogAspectException(ex, $"{nameof(UriAspect)}.{nameof(UnescapeDataString)}");
}
return result;
@@ -324,7 +324,7 @@ public static string EscapeUriString(string uri)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(UriAspect)}.{nameof(EscapeUriString)}");
+ IastModule.LogAspectException(ex, $"{nameof(UriAspect)}.{nameof(EscapeUriString)}");
}
return result;
@@ -345,7 +345,7 @@ public static string EscapeDataString(string uri)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(UriAspect)}.{nameof(EscapeDataString)}");
+ IastModule.LogAspectException(ex, $"{nameof(UriAspect)}.{nameof(EscapeDataString)}");
}
return result;
@@ -366,7 +366,7 @@ public static string GetAbsoluteUri(Uri instance)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(UriAspect)}.{nameof(GetAbsoluteUri)}");
+ IastModule.LogAspectException(ex, $"{nameof(UriAspect)}.{nameof(GetAbsoluteUri)}");
}
return result;
@@ -387,7 +387,7 @@ public static string GetAbsolutePath(Uri instance)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(UriAspect)}.{nameof(GetAbsolutePath)}");
+ IastModule.LogAspectException(ex, $"{nameof(UriAspect)}.{nameof(GetAbsolutePath)}");
}
return result;
@@ -408,7 +408,7 @@ public static string GetLocalPath(Uri instance)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(UriAspect)}.{nameof(GetLocalPath)}");
+ IastModule.LogAspectException(ex, $"{nameof(UriAspect)}.{nameof(GetLocalPath)}");
}
return result;
@@ -435,7 +435,7 @@ public static string GetLocalPath(Uri instance)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(UriAspect)}.{nameof(MakeRelative)}");
+ IastModule.LogAspectException(ex, $"{nameof(UriAspect)}.{nameof(MakeRelative)}");
}
return result;
@@ -460,7 +460,7 @@ public static string GetLocalPath(Uri instance)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(UriAspect)}.{nameof(MakeRelativeUri)}");
+ IastModule.LogAspectException(ex, $"{nameof(UriAspect)}.{nameof(MakeRelativeUri)}");
}
return result;
@@ -481,7 +481,7 @@ public static string GetHost(Uri instance)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(UriAspect)}.{nameof(GetHost)}");
+ IastModule.LogAspectException(ex, $"{nameof(UriAspect)}.{nameof(GetHost)}");
}
return result;
@@ -502,7 +502,7 @@ public static string GetPathAndQuery(Uri instance)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(UriAspect)}.{nameof(GetPathAndQuery)}");
+ IastModule.LogAspectException(ex, $"{nameof(UriAspect)}.{nameof(GetPathAndQuery)}");
}
return result;
@@ -523,7 +523,7 @@ public static string GetAuthority(Uri instance)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(UriAspect)}.{nameof(GetAuthority)}");
+ IastModule.LogAspectException(ex, $"{nameof(UriAspect)}.{nameof(GetAuthority)}");
}
return result;
@@ -544,7 +544,7 @@ public static string GetQuery(Uri instance)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(UriAspect)}.{nameof(GetQuery)}");
+ IastModule.LogAspectException(ex, $"{nameof(UriAspect)}.{nameof(GetQuery)}");
}
return result;
@@ -566,7 +566,7 @@ public static string GetQuery(Uri instance)
}
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(UriAspect)}.{nameof(ToString)}");
+ IastModule.LogAspectException(ex, $"{nameof(UriAspect)}.{nameof(ToString)}");
}
return result;
diff --git a/tracer/src/Datadog.Trace/Iast/Aspects/System/UriBuilderAspect.cs b/tracer/src/Datadog.Trace/Iast/Aspects/System/UriBuilderAspect.cs
index 2beca3d35c41..78fb2d3afa01 100644
--- a/tracer/src/Datadog.Trace/Iast/Aspects/System/UriBuilderAspect.cs
+++ b/tracer/src/Datadog.Trace/Iast/Aspects/System/UriBuilderAspect.cs
@@ -30,9 +30,13 @@ public static UriBuilder Init(string uriText)
{
PropagationModuleImpl.PropagateWholeResultWhenInputTainted(result.Uri.OriginalString, uriText);
}
+ catch (FormatException ex)
+ {
+ IastModule.Log.Debug(ex, $"Error invoking {nameof(UriBuilderAspect)}.{nameof(SetQuery)}");
+ }
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(UriBuilderAspect)}.{nameof(Init)}");
+ IastModule.LogAspectException(ex, $"{nameof(UriBuilderAspect)}.{nameof(Init)}");
}
return result;
@@ -51,9 +55,13 @@ public static UriBuilder Init(Uri uri)
{
PropagationModuleImpl.PropagateWholeResultWhenInputTainted(result.Uri.OriginalString, uri.OriginalString);
}
+ catch (FormatException ex)
+ {
+ IastModule.Log.Debug(ex, $"Error invoking {nameof(UriBuilderAspect)}.{nameof(SetQuery)}");
+ }
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(UriBuilderAspect)}.{nameof(Init)}");
+ IastModule.LogAspectException(ex, $"{nameof(UriBuilderAspect)}.{nameof(Init)}");
}
return result;
@@ -73,9 +81,13 @@ public static UriBuilder Init(string scheme, string host)
{
PropagationModuleImpl.PropagateWholeResultWhenInputTainted(result.Uri.OriginalString, host);
}
+ catch (FormatException ex)
+ {
+ IastModule.Log.Debug(ex, $"Error invoking {nameof(UriBuilderAspect)}.{nameof(SetQuery)}");
+ }
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(UriBuilderAspect)}.{nameof(Init)}");
+ IastModule.LogAspectException(ex, $"{nameof(UriBuilderAspect)}.{nameof(Init)}");
}
return result;
@@ -96,9 +108,13 @@ public static UriBuilder Init(string scheme, string host, int port)
{
PropagationModuleImpl.PropagateWholeResultWhenInputTainted(result.Uri.OriginalString, host);
}
+ catch (FormatException ex)
+ {
+ IastModule.Log.Debug(ex, $"Error invoking {nameof(UriBuilderAspect)}.{nameof(SetQuery)}");
+ }
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(UriBuilderAspect)}.{nameof(Init)}");
+ IastModule.LogAspectException(ex, $"{nameof(UriBuilderAspect)}.{nameof(Init)}");
}
return result;
@@ -120,9 +136,13 @@ public static UriBuilder Init(string scheme, string host, int port, string path)
{
PropagationModuleImpl.PropagateWholeResultWhenInputTainted(result.Uri.OriginalString, host, path);
}
+ catch (FormatException ex)
+ {
+ IastModule.Log.Debug(ex, $"Error invoking {nameof(UriBuilderAspect)}.{nameof(SetQuery)}");
+ }
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(UriBuilderAspect)}.{nameof(Init)}");
+ IastModule.LogAspectException(ex, $"{nameof(UriBuilderAspect)}.{nameof(Init)}");
}
return result;
@@ -145,9 +165,13 @@ public static UriBuilder Init(string scheme, string host, int port, string path,
{
PropagationModuleImpl.PropagateWholeResultWhenInputTainted(result.Uri.OriginalString, host, path, extra);
}
+ catch (FormatException ex)
+ {
+ IastModule.Log.Debug(ex, $"Error invoking {nameof(UriBuilderAspect)}.{nameof(SetQuery)}");
+ }
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(UriBuilderAspect)}.{nameof(Init)}");
+ IastModule.LogAspectException(ex, $"{nameof(UriBuilderAspect)}.{nameof(Init)}");
}
return result;
@@ -166,9 +190,13 @@ public static void SetHost(UriBuilder instance, string parameter)
{
PropagationModuleImpl.PropagateWholeResultWhenInputTainted(instance.Uri.OriginalString, parameter);
}
+ catch (FormatException ex)
+ {
+ IastModule.Log.Debug(ex, $"Error invoking {nameof(UriBuilderAspect)}.{nameof(SetQuery)}");
+ }
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(UriBuilderAspect)}.{nameof(Init)}");
+ IastModule.LogAspectException(ex, $"{nameof(UriBuilderAspect)}.{nameof(Init)}");
}
}
@@ -185,9 +213,13 @@ public static void SetQuery(UriBuilder instance, string parameter)
{
PropagationModuleImpl.PropagateWholeResultWhenInputTainted(instance.Uri.OriginalString, parameter);
}
+ catch (FormatException ex)
+ {
+ IastModule.Log.Debug(ex, $"Error invoking {nameof(UriBuilderAspect)}.{nameof(SetQuery)}");
+ }
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(UriBuilderAspect)}.{nameof(SetQuery)}");
+ IastModule.LogAspectException(ex, $"{nameof(UriBuilderAspect)}.{nameof(SetQuery)}");
}
}
@@ -204,9 +236,13 @@ public static void SetPath(UriBuilder instance, string parameter)
{
PropagationModuleImpl.PropagateWholeResultWhenInputTainted(instance.Uri.OriginalString, parameter);
}
+ catch (FormatException ex)
+ {
+ IastModule.Log.Debug(ex, $"Error invoking {nameof(UriBuilderAspect)}.{nameof(SetQuery)}");
+ }
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(UriBuilderAspect)}.{nameof(SetPath)}");
+ IastModule.LogAspectException(ex, $"{nameof(UriBuilderAspect)}.{nameof(SetPath)}");
}
}
@@ -223,9 +259,13 @@ public static string GetHost(UriBuilder instance)
{
PropagationModuleImpl.PropagateWholeResultWhenInputTainted(result, instance.Uri.OriginalString);
}
+ catch (FormatException ex)
+ {
+ IastModule.Log.Debug(ex, $"Error invoking {nameof(UriBuilderAspect)}.{nameof(SetQuery)}");
+ }
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(UriBuilderAspect)}.{nameof(GetHost)}");
+ IastModule.LogAspectException(ex, $"{nameof(UriBuilderAspect)}.{nameof(GetHost)}");
}
return result;
@@ -244,9 +284,13 @@ public static string GetQuery(UriBuilder instance)
{
PropagationModuleImpl.PropagateWholeResultWhenInputTainted(result, instance.Uri.OriginalString);
}
+ catch (FormatException ex)
+ {
+ IastModule.Log.Debug(ex, $"Error invoking {nameof(UriBuilderAspect)}.{nameof(SetQuery)}");
+ }
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(UriBuilderAspect)}.{nameof(GetQuery)}");
+ IastModule.LogAspectException(ex, $"{nameof(UriBuilderAspect)}.{nameof(GetQuery)}");
}
return result;
@@ -265,9 +309,13 @@ public static string GetPath(UriBuilder instance)
{
PropagationModuleImpl.PropagateWholeResultWhenInputTainted(result, instance.Uri.OriginalString);
}
+ catch (FormatException ex)
+ {
+ IastModule.Log.Debug(ex, $"Error invoking {nameof(UriBuilderAspect)}.{nameof(SetQuery)}");
+ }
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(UriBuilderAspect)}.{nameof(GetPath)}");
+ IastModule.LogAspectException(ex, $"{nameof(UriBuilderAspect)}.{nameof(GetPath)}");
}
return result;
@@ -287,9 +335,13 @@ public static string GetPath(UriBuilder instance)
{
PropagationModuleImpl.PropagateWholeResultWhenInputTainted(result, (instance as UriBuilder)?.Uri?.OriginalString);
}
+ catch (FormatException ex)
+ {
+ IastModule.Log.Debug(ex, $"Error invoking {nameof(UriBuilderAspect)}.{nameof(SetQuery)}");
+ }
catch (Exception ex)
{
- IastModule.Log.Error(ex, $"Error invoking {nameof(UriBuilderAspect)}.{nameof(ToString)}");
+ IastModule.LogAspectException(ex, $"{nameof(UriBuilderAspect)}.{nameof(ToString)}");
}
return result;
diff --git a/tracer/src/Datadog.Trace/Iast/IastModule.cs b/tracer/src/Datadog.Trace/Iast/IastModule.cs
index 3cee13a71071..94e5dfcab34b 100644
--- a/tracer/src/Datadog.Trace/Iast/IastModule.cs
+++ b/tracer/src/Datadog.Trace/Iast/IastModule.cs
@@ -61,6 +61,7 @@ internal static partial class IastModule
private static readonly Func Always = (x) => true;
private static readonly DbRecordManager DbRecords = new DbRecordManager(IastSettings);
private static readonly SourceType[] _dbSources = [SourceType.SqlRowValue];
+ private static readonly HashSet LoggedAspectExceptionMessages = [];
private static bool _showTimeoutExceptionError = true;
internal static void LogTimeoutError(RegexMatchTimeoutException err)
@@ -865,6 +866,35 @@ internal static void OnEmailHtmlInjection(object? message)
GetScope(messageDuck.Body, IntegrationId.EmailHtmlInjection, VulnerabilityTypeName.EmailHtmlInjection, OperationNameEmailHtmlInjection, taintValidator: Always, safeSources: _dbSources, exclusionSecureMarks: SecureMarks.Xss);
}
+ public static void LogAspectException(Exception ex, string aspectInfo)
+ {
+ try
+ {
+ var hashCode = aspectInfo.GetHashCode();
+ bool alreadyLogged;
+ lock (LoggedAspectExceptionMessages)
+ {
+ alreadyLogged = !LoggedAspectExceptionMessages.Add(hashCode);
+ }
+
+// intentionally using string interpolation in logging, as the resulting string is actually a constant, and contains the important aspect information
+#pragma warning disable DDLOG004 // Message templates should be constant
+ if (alreadyLogged)
+ {
+ Log.Debug(ex, $"Error invoking {aspectInfo}");
+ }
+ else
+ {
+ Log.Error(ex, $"Error invoking {aspectInfo}");
+ }
+#pragma warning restore DDLOG004 // Message templates should be constant
+ }
+ catch (Exception e)
+ {
+ Log.Debug(e, "Error while logging aspect exception.");
+ }
+ }
+
internal static void RegisterDbRecord(object instance)
{
DbRecords.RegisterDbRecord(instance);
diff --git a/tracer/src/Datadog.Trace/Iast/Propagation/DefaultInterpolatedStringHandlerModuleImpl.cs b/tracer/src/Datadog.Trace/Iast/Propagation/DefaultInterpolatedStringHandlerModuleImpl.cs
index b24a09c8d7b9..e73a341fa630 100644
--- a/tracer/src/Datadog.Trace/Iast/Propagation/DefaultInterpolatedStringHandlerModuleImpl.cs
+++ b/tracer/src/Datadog.Trace/Iast/Propagation/DefaultInterpolatedStringHandlerModuleImpl.cs
@@ -60,7 +60,7 @@ public static unsafe void FullTaintIfAnyTainted(IntPtr target, string? input)
}
catch (Exception error)
{
- IastModule.Log.Error(error, $"{nameof(DefaultInterpolatedStringHandlerModuleImpl)}.{nameof(FullTaintIfAnyTainted)} exception");
+ IastModule.LogAspectException(error, $"{nameof(DefaultInterpolatedStringHandlerModuleImpl)}.{nameof(FullTaintIfAnyTainted)}");
}
}
@@ -94,7 +94,7 @@ public static unsafe void FullTaintIfAnyTainted(IntPtr target, string? input)
}
catch (Exception err)
{
- IastModule.Log.Error(err, $"{nameof(DefaultInterpolatedStringHandlerModuleImpl)}.{nameof(PropagateTaint)} exception");
+ IastModule.LogAspectException(err, $"{nameof(DefaultInterpolatedStringHandlerModuleImpl)}.{nameof(PropagateTaint)}");
}
return result;
diff --git a/tracer/src/Datadog.Trace/PlatformHelpers/AspNetCoreHttpRequestHandler.cs b/tracer/src/Datadog.Trace/PlatformHelpers/AspNetCoreHttpRequestHandler.cs
index 4225cbf3520e..c5c87e13ac62 100644
--- a/tracer/src/Datadog.Trace/PlatformHelpers/AspNetCoreHttpRequestHandler.cs
+++ b/tracer/src/Datadog.Trace/PlatformHelpers/AspNetCoreHttpRequestHandler.cs
@@ -54,14 +54,14 @@ public string GetDefaultResourceName(HttpRequest request)
return $"{httpMethod} {resourceUrl}";
}
- private PropagationContext ExtractPropagatedContext(HttpRequest request)
+ private PropagationContext ExtractPropagatedContext(Tracer tracer, HttpRequest request)
{
try
{
// extract propagation details from http headers
if (request.Headers is { } headers)
{
- return SpanContextPropagator.Instance.Extract(new HeadersCollectionAdapter(headers));
+ return tracer.TracerManager.SpanContextPropagator.Extract(new HeadersCollectionAdapter(headers));
}
}
catch (Exception ex)
@@ -83,7 +83,7 @@ private void AddHeaderTagsToSpan(ISpan span, HttpRequest request, Tracer tracer)
// extract propagation details from http headers
if (request.Headers is { } requestHeaders)
{
- SpanContextPropagator.Instance.AddHeadersToSpanAsTags(
+ tracer.TracerManager.SpanContextPropagator.AddHeadersToSpanAsTags(
span,
new HeadersCollectionAdapter(requestHeaders),
headerTagsInternal,
@@ -107,7 +107,7 @@ public Scope StartAspNetCorePipelineScope(Tracer tracer, Security security, Http
var userAgent = request.Headers[HttpHeaderNames.UserAgent];
resourceName ??= GetDefaultResourceName(request);
- var extractedContext = ExtractPropagatedContext(request).MergeBaggageInto(Baggage.Current);
+ var extractedContext = ExtractPropagatedContext(tracer, request).MergeBaggageInto(Baggage.Current);
var routeTemplateResourceNames = tracer.Settings.RouteTemplateResourceNamesEnabled;
var tags = routeTemplateResourceNames ? new AspNetCoreEndpointTags() : new AspNetCoreTags();
@@ -122,8 +122,8 @@ public Scope StartAspNetCorePipelineScope(Tracer tracer, Security security, Http
if (tracer.Settings.IpHeaderEnabled || security.AppsecEnabled)
{
var peerIp = new Headers.Ip.IpInfo(httpContext.Connection.RemoteIpAddress?.ToString(), httpContext.Connection.RemotePort);
- Func getRequestHeaderFromKey = key => request.Headers.TryGetValue(key, out var value) ? value : string.Empty;
- Headers.Ip.RequestIpExtractor.AddIpToTags(peerIp, request.IsHttps, getRequestHeaderFromKey, tracer.Settings.IpHeader, tags);
+ string GetRequestHeaderFromKey(string key) => request.Headers.TryGetValue(key, out var value) ? value : string.Empty;
+ Headers.Ip.RequestIpExtractor.AddIpToTags(peerIp, request.IsHttps, GetRequestHeaderFromKey, tracer.Settings.IpHeader, tags);
}
var iastInstance = Iast.Iast.Instance;
@@ -170,8 +170,8 @@ public void StopAspNetCorePipelineScope(Tracer tracer, Security security, Scope
span.SetHeaderTags(new HeadersCollectionAdapter(httpContext.Response.Headers), tracer.Settings.HeaderTags, defaultTagPrefix: SpanContextPropagator.HttpResponseHeadersTagPrefix);
if (security.AppsecEnabled)
{
- var transport = SecurityCoordinator.Get(security, span, new SecurityCoordinator.HttpTransport(httpContext));
- transport.AddResponseHeadersToSpanAndCleanup();
+ var securityCoordinator = SecurityCoordinator.Get(security, span, new SecurityCoordinator.HttpTransport(httpContext));
+ securityCoordinator.Reporter.AddResponseHeadersToSpanAndCleanup();
}
else
{
diff --git a/tracer/src/Datadog.Trace/Propagators/DistributedContextExtractor.cs b/tracer/src/Datadog.Trace/Propagators/DistributedContextExtractor.cs
deleted file mode 100644
index 792b7845f53a..000000000000
--- a/tracer/src/Datadog.Trace/Propagators/DistributedContextExtractor.cs
+++ /dev/null
@@ -1,88 +0,0 @@
-//
-// Unless explicitly stated otherwise all files in this repository are licensed under the Apache 2 License.
-// This product includes software developed at Datadog (https://www.datadoghq.com/). Copyright 2017 Datadog, Inc.
-//
-
-#nullable enable
-
-using System.Collections.Generic;
-using Datadog.Trace.Tagging;
-using Datadog.Trace.Util;
-
-namespace Datadog.Trace.Propagators
-{
- internal class DistributedContextExtractor : IContextExtractor
- {
- public static readonly DistributedContextExtractor Instance = new();
-
- private DistributedContextExtractor()
- {
- }
-
- public PropagatorType PropagatorType => PropagatorType.TraceContext;
-
- public bool TryExtract(TCarrier carrier, TCarrierGetter carrierGetter, out PropagationContext context)
- where TCarrierGetter : struct, ICarrierGetter
- {
- context = default;
-
- if (carrier is not IReadOnlyDictionary)
- {
- return false;
- }
-
- var traceIdLower = ParseUtility.ParseUInt64(carrier, carrierGetter, SpanContext.Keys.TraceId);
-
- if (traceIdLower is null or 0)
- {
- // a valid traceId is required to use distributed tracing
- return false;
- }
-
- var rawTraceId = ParseUtility.ParseString(carrier, carrierGetter, SpanContext.Keys.RawTraceId);
- TraceId traceId = default;
-
- if (!string.IsNullOrEmpty(rawTraceId))
- {
- _ = HexString.TryParseTraceId(rawTraceId!, out traceId);
- }
-
- var parentId = ParseUtility.ParseUInt64(carrier, carrierGetter, SpanContext.Keys.ParentId) ?? 0;
- var samplingPriority = ParseUtility.ParseInt32(carrier, carrierGetter, SpanContext.Keys.SamplingPriority);
- var origin = ParseUtility.ParseString(carrier, carrierGetter, SpanContext.Keys.Origin);
- var rawSpanId = ParseUtility.ParseString(carrier, carrierGetter, SpanContext.Keys.RawSpanId);
- var propagatedTraceTags = ParseUtility.ParseString(carrier, carrierGetter, SpanContext.Keys.PropagatedTags);
- var w3CTraceState = ParseUtility.ParseString(carrier, carrierGetter, SpanContext.Keys.AdditionalW3CTraceState);
- var traceTags = TagPropagation.ParseHeader(propagatedTraceTags);
-
- if (traceId == TraceId.Zero)
- {
- traceId = GetFullTraceId((ulong)traceIdLower, traceTags);
- }
-
- // we don't consider contexts coming from this as "remote" as it could be from a version conflict scenario
- var spanContext = new SpanContext(traceId, parentId, samplingPriority, serviceName: null, origin, rawTraceId, rawSpanId, isRemote: false)
- {
- PropagatedTags = traceTags,
- AdditionalW3CTraceState = w3CTraceState,
- };
-
- context = new PropagationContext(spanContext, baggage: null);
- return true;
- }
-
- // combine the lower 64 bits from "x-datadog-trace-id" with the
- // upper 64 bits from "_dd.p.tid" into a 128-bit trace id
- private static TraceId GetFullTraceId(ulong lower, TraceTagCollection tags)
- {
- var upperHex = tags.GetTag(Tags.Propagated.TraceIdUpper);
-
- if (!string.IsNullOrEmpty(upperHex) && HexString.TryParseUInt64(upperHex!, out var upper))
- {
- return new TraceId(upper, lower);
- }
-
- return (TraceId)lower;
- }
- }
-}
diff --git a/tracer/src/Datadog.Trace/Propagators/SpanContextPropagator.cs b/tracer/src/Datadog.Trace/Propagators/SpanContextPropagator.cs
index 2310ed6f8458..c92916870670 100644
--- a/tracer/src/Datadog.Trace/Propagators/SpanContextPropagator.cs
+++ b/tracer/src/Datadog.Trace/Propagators/SpanContextPropagator.cs
@@ -20,9 +20,6 @@ internal class SpanContextPropagator
internal const string HttpRequestHeadersTagPrefix = "http.request.headers";
internal const string HttpResponseHeadersTagPrefix = "http.response.headers";
- private static readonly object GlobalLock = new();
- private static SpanContextPropagator? _instance;
-
private readonly ConcurrentDictionary _defaultTagMappingCache = new();
private readonly IContextInjector[] _injectors;
private readonly IContextExtractor[] _extractors;
@@ -38,45 +35,6 @@ internal SpanContextPropagator(
_extractors = extractors?.ToArray() ?? [];
}
- public static SpanContextPropagator Instance
- {
- get
- {
- if (_instance is not null)
- {
- return _instance;
- }
-
- lock (GlobalLock)
- {
- if (_instance is not null)
- {
- return _instance;
- }
-
- _instance = new SpanContextPropagator(
- [DatadogContextPropagator.Instance],
- [DistributedContextExtractor.Instance, DatadogContextPropagator.Instance],
- propagationExtractFirstValue: false);
-
- return _instance;
- }
- }
-
- internal set
- {
- if (value == null!)
- {
- ThrowHelper.ThrowArgumentNullException(nameof(value));
- }
-
- lock (GlobalLock)
- {
- _instance = value;
- }
- }
- }
-
///
/// Propagates the specified context by adding new headers to a .
/// This locks the sampling priority for .
diff --git a/tracer/src/Datadog.Trace/ServiceFabric/ServiceRemotingClient.cs b/tracer/src/Datadog.Trace/ServiceFabric/ServiceRemotingClient.cs
index d2c9a30fa1dd..36b8c7ed0831 100644
--- a/tracer/src/Datadog.Trace/ServiceFabric/ServiceRemotingClient.cs
+++ b/tracer/src/Datadog.Trace/ServiceFabric/ServiceRemotingClient.cs
@@ -69,7 +69,7 @@ private static void ServiceRemotingClientEvents_SendRequest(object? sender, Even
{
var context = new PropagationContext(span.Context, Baggage.Current);
- SpanContextPropagator.Instance.Inject(
+ tracer.TracerManager.SpanContextPropagator.Inject(
context,
messageHeaders,
default(ServiceRemotingRequestMessageHeaderSetter));
diff --git a/tracer/src/Datadog.Trace/ServiceFabric/ServiceRemotingService.cs b/tracer/src/Datadog.Trace/ServiceFabric/ServiceRemotingService.cs
index 0f1faec8965b..06e0b1b7c80f 100644
--- a/tracer/src/Datadog.Trace/ServiceFabric/ServiceRemotingService.cs
+++ b/tracer/src/Datadog.Trace/ServiceFabric/ServiceRemotingService.cs
@@ -63,7 +63,7 @@ private static void ServiceRemotingServiceEvents_ReceiveRequest(object? sender,
// extract propagation context from message headers for distributed tracing
if (messageHeaders != null)
{
- extractedContext = SpanContextPropagator.Instance
+ extractedContext = tracer.TracerManager.SpanContextPropagator
.Extract(messageHeaders, default(ServiceRemotingRequestMessageHeaderGetter))
.MergeBaggageInto(Baggage.Current);
}
diff --git a/tracer/src/Datadog.Trace/Span.cs b/tracer/src/Datadog.Trace/Span.cs
index a1ec204a9d64..941a62bf0310 100644
--- a/tracer/src/Datadog.Trace/Span.cs
+++ b/tracer/src/Datadog.Trace/Span.cs
@@ -538,21 +538,19 @@ private void WriteCloseDebugMessage()
///
/// Adds a SpanLink to the current Span if the Span is active.
///
- /// The Span to add as a SpanLink
- /// List of KeyValue pairings of attributes to add to the SpanLink. Defaults to null
- /// returns the SpanLink on success or null on failure (span is closed already)
- internal SpanLink AddSpanLink(Span spanLinkToAdd, List> attributes = null)
+ /// The SpanLink to add
+ /// This span to allow method chaining.
+ internal Span AddLink(SpanLink spanLink)
{
if (IsFinished)
{
- Log.Warning("AddSpanLink should not be called after the span was closed");
- return null;
+ Log.Warning("AddLink should not be called after the span was closed");
+ return this;
}
SpanLinks ??= new List();
- var spanLink = new SpanLink(spanLinkToAdd, this, attributes);
SpanLinks.Add(spanLink);
- return spanLink;
+ return this;
}
}
}
diff --git a/tracer/src/Datadog.Trace/SpanContextExtractor.cs b/tracer/src/Datadog.Trace/SpanContextExtractor.cs
index 23febc4a6702..b257ed914b99 100644
--- a/tracer/src/Datadog.Trace/SpanContextExtractor.cs
+++ b/tracer/src/Datadog.Trace/SpanContextExtractor.cs
@@ -80,11 +80,12 @@ internal SpanContextExtractor(bool unusedParamNotToUsePublicApi)
if (messageType != null && source == null) { ThrowHelper.ThrowArgumentNullException(nameof(source)); }
else if (messageType == null && source != null) { ThrowHelper.ThrowArgumentNullException(nameof(messageType)); }
- var context = SpanContextPropagator.Instance.Extract(carrier, getter);
+ var tracer = Tracer.Instance;
+ var context = tracer.TracerManager.SpanContextPropagator.Extract(carrier, getter);
// DSM
if (context.SpanContext is { } spanContext
- && Tracer.Instance.TracerManager.DataStreamsManager is { IsEnabled: true } dsm)
+ && tracer.TracerManager.DataStreamsManager is { IsEnabled: true } dsm)
{
if (getter(carrier, DataStreamsPropagationHeaders.TemporaryBase64PathwayContext).FirstOrDefault() is { Length: > 0 } base64PathwayContext)
{
diff --git a/tracer/src/Datadog.Trace/SpanContextInjector.cs b/tracer/src/Datadog.Trace/SpanContextInjector.cs
index 76a43622b55b..3e034a93d0ee 100644
--- a/tracer/src/Datadog.Trace/SpanContextInjector.cs
+++ b/tracer/src/Datadog.Trace/SpanContextInjector.cs
@@ -75,7 +75,8 @@ internal static void InjectInternal(TCarrier carrier, Action(TCarrier carrier, Action
/// The context of the spanlink to extract attributes from
- /// Reference to the span you're adding SpanLinks to
/// Optional dictionary of attributes to take for the spanlink.
- public SpanLink(SpanContext spanLinkContext, Span decoratedSpan, List>? attributes = null)
+ public SpanLink(SpanContext spanLinkContext, List>? attributes = null)
{
Context = spanLinkContext;
- DecoratedSpan = decoratedSpan;
Attributes = attributes;
}
- public SpanLink(Span spanToLink, Span decoratedSpan, List>? attributes = null)
- : this(spanToLink.Context, decoratedSpan, attributes)
- {
- }
-
public List>? Attributes { get; private set; }
- public SpanContext Context { get; }
-
- public Span DecoratedSpan { get; }
-
- ///
- /// Adds an Attribute to the SpanLink.
- ///
- /// name of attribute
- /// value of attribute
- public void AddAttribute(string name, string value)
- {
- if (DecoratedSpan.IsFinished)
- {
- Log.Warning("AddAttribute should not be called after the decorated span was closed");
- return;
- }
-
- var newAttribute = new KeyValuePair(name, value);
- Attributes ??= [];
-
- Attributes.Add(newAttribute);
- }
+ public SpanContext Context { get; }
}
diff --git a/tracer/src/Datadog.Trace/Telemetry/Collectors/RedactedErrorLogCollector.cs b/tracer/src/Datadog.Trace/Telemetry/Collectors/RedactedErrorLogCollector.cs
index d783c1fce840..e28424c2716c 100644
--- a/tracer/src/Datadog.Trace/Telemetry/Collectors/RedactedErrorLogCollector.cs
+++ b/tracer/src/Datadog.Trace/Telemetry/Collectors/RedactedErrorLogCollector.cs
@@ -29,10 +29,10 @@ internal class RedactedErrorLogCollector
private TaskCompletionSource _tcs = new(TaskOptions);
private bool _isEnabled = true;
- private ConcurrentDictionary _logCounts = new();
- private ConcurrentDictionary _logCountsReserve = new();
+ private ConcurrentDictionary _logCounts = new();
+ private ConcurrentDictionary _logCountsReserve = new();
- public List>? GetLogs()
+ public List>? GetLogs(string? tags = null)
{
// This method should only be called in a single-threaded loop
List>? batches = null;
@@ -42,9 +42,10 @@ internal class RedactedErrorLogCollector
while (_queue.TryDequeue(out var log))
{
+ log.Tags = tags;
var logSize = log.GetApproximateSerializationSize();
// modify the message to add the final log count
- var eventId = EventIdHash.Compute(log.Message, log.StackTrace);
+ var eventId = new LogKey(log.Message, log.StackTrace);
if (logCounts.TryGetValue(eventId, out var count) && count > 1)
{
log.Count = count;
@@ -91,9 +92,9 @@ public void EnqueueLog(string message, TelemetryLogLevel logLevel, DateTimeOffse
{
if (Volatile.Read(ref _isEnabled))
{
- var eventId = EventIdHash.Compute(message, stackTrace);
+ var logKey = new LogKey(message, stackTrace);
var logCounts = _logCounts;
- var newCount = logCounts.AddOrUpdate(eventId, addValue: 1, updateValueFactory: static (_, prev) => prev + 1);
+ var newCount = logCounts.AddOrUpdate(logKey, addValue: 1, updateValueFactory: static (_, prev) => prev + 1);
if (newCount != 1)
{
// already have this log, so don't enqueue it again
@@ -143,4 +144,10 @@ public void DisableCollector()
{
}
}
+
+ private readonly record struct LogKey(string Message, string? StackTrace)
+ {
+ public readonly string Message = Message;
+ public readonly string? StackTrace = StackTrace;
+ }
}
diff --git a/tracer/src/Datadog.Trace/Telemetry/ITelemetryController.cs b/tracer/src/Datadog.Trace/Telemetry/ITelemetryController.cs
index 7ae4273d4c56..f21c033a3a9c 100644
--- a/tracer/src/Datadog.Trace/Telemetry/ITelemetryController.cs
+++ b/tracer/src/Datadog.Trace/Telemetry/ITelemetryController.cs
@@ -6,6 +6,7 @@
using System;
using System.Threading.Tasks;
using Datadog.Trace.AppSec;
+using Datadog.Trace.Ci.Configuration;
using Datadog.Trace.Configuration;
using Datadog.Trace.ContinuousProfiler;
using Datadog.Trace.Iast.Settings;
@@ -40,6 +41,11 @@ internal interface ITelemetryController
///
public void RecordProfilerSettings(Profiler profiler);
+ ///
+ /// Called to record ci-vis-related telemetry
+ ///
+ public void RecordCiVisibilitySettings(CIVisibilitySettings settings);
+
///
/// Dispose resources for sending telemetry
///
diff --git a/tracer/src/Datadog.Trace/Telemetry/Metrics/MetricTags.cs b/tracer/src/Datadog.Trace/Telemetry/Metrics/MetricTags.cs
index 0139c2b254ee..1fd06be40a38 100644
--- a/tracer/src/Datadog.Trace/Telemetry/Metrics/MetricTags.cs
+++ b/tracer/src/Datadog.Trace/Telemetry/Metrics/MetricTags.cs
@@ -239,7 +239,7 @@ internal enum IntegrationName
[Description("integration_name:process")]Process,
[Description("integration_name:hashalgorithm")]HashAlgorithm,
[Description("integration_name:symmetricalgorithm")]SymmetricAlgorithm,
- [Description("integration_name:opentelemetry")]OpenTelemetry,
+ [Description("integration_name:otel")]OpenTelemetry, // Note: The naming of this tag value breaks the convention of using the integration name to use a standardized value
[Description("integration_name:pathtraversal")]PathTraversal,
[Description("integration_name:ssrf")]Ssrf,
[Description("integration_name:ldap")]Ldap,
@@ -389,10 +389,17 @@ public enum CIVisibilityTestingEventTypeWithCodeOwnerAndSupportedCiAndBenchmarkA
[Description("event_type:test;is_benchmark")] Test_IsBenchmark,
[Description("event_type:suite")] Suite,
[Description("event_type:module")] Module,
- [Description("event_type:session")] Session_NoCodeOwner_IsSupportedCi,
- [Description("event_type:session;is_unsupported_ci")] Session_NoCodeOwner_UnsupportedCi,
- [Description("event_type:session;has_codeowner;is_unsupported_ci")] Session_HasCodeOwner_UnsupportedCi,
- [Description("event_type:session;has_codeowner")] Session_HasCodeOwner_IsSupportedCi,
+ // ...
+ [Description("event_type:session")] Session_NoCodeOwner_IsSupportedCi_WithoutAgentlessLog,
+ [Description("event_type:session;is_unsupported_ci")] Session_NoCodeOwner_UnsupportedCi_WithoutAgentlessLog,
+ [Description("event_type:session;has_codeowner;is_unsupported_ci")] Session_HasCodeOwner_UnsupportedCi_WithoutAgentlessLog,
+ [Description("event_type:session;has_codeowner")] Session_HasCodeOwner_IsSupportedCi_WithoutAgentlessLog,
+ // ...
+ [Description("event_type:session;agentless_log_submission_enabled")] Session_NoCodeOwner_IsSupportedCi_WithAgentlessLog,
+ [Description("event_type:session;is_unsupported_ci;agentless_log_submission_enabled")] Session_NoCodeOwner_UnsupportedCi_WithAgentlessLog,
+ [Description("event_type:session;has_codeowner;is_unsupported_ci;agentless_log_submission_enabled")] Session_HasCodeOwner_UnsupportedCi_WithAgentlessLog,
+ [Description("event_type:session;has_codeowner;agentless_log_submission_enabled")] Session_HasCodeOwner_IsSupportedCi_WithAgentlessLog,
+ // ...
[Description("event_type:test;is_new:true")] Test_EFDTestIsNew,
[Description("event_type:test;is_new:true;early_flake_detection_abort_reason:slow")] Test_EFDTestIsNew_EFDTestAbortSlow,
[Description("event_type:test;browser_driver:selenium")] Test_BrowserDriverSelenium,
@@ -473,14 +480,23 @@ public enum CIVisibilityExitCodes
public enum CIVisibilityITRSettingsResponse
{
- [Description("")] CoverageDisabled_ItrSkipDisabled,
- [Description("coverage_enabled")] CoverageEnabled_ItrSkipDisabled,
- [Description("itrskip_enabled")] CoverageDisabled_ItrSkipEnabled,
- [Description("coverage_enabled;itrskip_enabled")] CoverageEnabled_ItrSkipEnabled,
- [Description("early_flake_detection_enabled:true")] CoverageDisabled_ItrSkipDisabled_EFDEnabled,
- [Description("coverage_enabled;early_flake_detection_enabled:true")] CoverageEnabled_ItrSkipDisabled_EFDEnabled,
- [Description("itrskip_enabled;early_flake_detection_enabled:true")] CoverageDisabled_ItrSkipEnabled_EFDEnabled,
- [Description("coverage_enabled;itrskip_enabled;early_flake_detection_enabled:true")] CoverageEnabled_ItrSkipEnabled_EFDEnabled,
+ [Description("")] CoverageDisabled_ItrSkipDisabled_AtrDisabled,
+ [Description("coverage_enabled")] CoverageEnabled_ItrSkipDisabled_AtrDisabled,
+ [Description("itrskip_enabled")] CoverageDisabled_ItrSkipEnabled_AtrDisabled,
+ [Description("coverage_enabled;itrskip_enabled")] CoverageEnabled_ItrSkipEnabled_AtrDisabled,
+ [Description("early_flake_detection_enabled:true")] CoverageDisabled_ItrSkipDisabled_EFDEnabled_AtrDisabled,
+ [Description("coverage_enabled;early_flake_detection_enabled:true")] CoverageEnabled_ItrSkipDisabled_EFDEnabled_AtrDisabled,
+ [Description("itrskip_enabled;early_flake_detection_enabled:true")] CoverageDisabled_ItrSkipEnabled_EFDEnabled_AtrDisabled,
+ [Description("coverage_enabled;itrskip_enabled;early_flake_detection_enabled:true")] CoverageEnabled_ItrSkipEnabled_EFDEnabled_AtrDisabled,
+ // ...
+ [Description("flaky_test_retries_enabled:true")] CoverageDisabled_ItrSkipDisabled_AtrEnabled,
+ [Description("coverage_enabled;flaky_test_retries_enabled:true")] CoverageEnabled_ItrSkipDisabled_AtrEnabled,
+ [Description("itrskip_enabled;flaky_test_retries_enabled:true")] CoverageDisabled_ItrSkipEnabled_AtrEnabled,
+ [Description("coverage_enabled;itrskip_enabled;flaky_test_retries_enabled:true")] CoverageEnabled_ItrSkipEnabled_AtrEnabled,
+ [Description("early_flake_detection_enabled:true;flaky_test_retries_enabled:true")] CoverageDisabled_ItrSkipDisabled_EFDEnabled_AtrEnabled,
+ [Description("coverage_enabled;early_flake_detection_enabled:true;flaky_test_retries_enabled:true")] CoverageEnabled_ItrSkipDisabled_EFDEnabled_AtrEnabled,
+ [Description("itrskip_enabled;early_flake_detection_enabled:true;flaky_test_retries_enabled:true")] CoverageDisabled_ItrSkipEnabled_EFDEnabled_AtrEnabled,
+ [Description("coverage_enabled;itrskip_enabled;early_flake_detection_enabled:true;flaky_test_retries_enabled:true")] CoverageEnabled_ItrSkipEnabled_EFDEnabled_AtrEnabled,
}
public enum CIVisibilityRequestCompressed
diff --git a/tracer/src/Datadog.Trace/Telemetry/NullTelemetryController.cs b/tracer/src/Datadog.Trace/Telemetry/NullTelemetryController.cs
index a1be3d6ee3bf..2a6c2187e418 100644
--- a/tracer/src/Datadog.Trace/Telemetry/NullTelemetryController.cs
+++ b/tracer/src/Datadog.Trace/Telemetry/NullTelemetryController.cs
@@ -4,6 +4,7 @@
//
using System.Threading.Tasks;
+using Datadog.Trace.Ci.Configuration;
using Datadog.Trace.Configuration;
using Datadog.Trace.ContinuousProfiler;
@@ -33,6 +34,10 @@ public void RecordProfilerSettings(Profiler profiler)
{
}
+ public void RecordCiVisibilitySettings(CIVisibilitySettings settings)
+ {
+ }
+
public void Start()
{
}
diff --git a/tracer/src/Datadog.Trace/Telemetry/TelemetryController.cs b/tracer/src/Datadog.Trace/Telemetry/TelemetryController.cs
index 44a5e5a201cf..a1e2f358a4bf 100644
--- a/tracer/src/Datadog.Trace/Telemetry/TelemetryController.cs
+++ b/tracer/src/Datadog.Trace/Telemetry/TelemetryController.cs
@@ -11,6 +11,8 @@
using System.Reflection;
using System.Threading;
using System.Threading.Tasks;
+using Datadog.Trace.Ci;
+using Datadog.Trace.Ci.Configuration;
using Datadog.Trace.Configuration;
using Datadog.Trace.Configuration.Telemetry;
using Datadog.Trace.ContinuousProfiler;
@@ -38,6 +40,7 @@ internal class TelemetryController : ITelemetryController
private readonly IMetricsTelemetryCollector _metrics;
private readonly RedactedErrorLogCollector? _redactedErrorLogs;
private readonly TaskCompletionSource _processExit = new();
+ private readonly TagBuilder _logTagBuilder = new();
private readonly Task _flushTask;
private readonly Scheduler _scheduler;
private TelemetryTransportManager _transportManager;
@@ -93,6 +96,7 @@ public void RecordTracerSettings(TracerSettings settings, string defaultServiceN
settings.Telemetry.CopyTo(_configuration);
_application.RecordTracerSettings(settings, defaultServiceName);
_namingVersion = ((int)settings.MetadataSchemaVersion).ToString();
+ _logTagBuilder.Update(settings);
_queue.Enqueue(new WorkItem(WorkItem.ItemType.EnableSending, null));
}
@@ -111,7 +115,10 @@ public void Start()
}
public void ProductChanged(TelemetryProductType product, bool enabled, ErrorData? error)
- => _products.ProductChanged(product, enabled, error);
+ {
+ _products.ProductChanged(product, enabled, error);
+ _logTagBuilder.Update(product, enabled);
+ }
public void RecordProfilerSettings(Profiler profiler)
{
@@ -119,6 +126,12 @@ public void RecordProfilerSettings(Profiler profiler)
_configuration.Record(ConfigTelemetryData.CodeHotspotsEnabled, profiler.ContextTracker.IsEnabled, ConfigurationOrigins.Default);
}
+ public void RecordCiVisibilitySettings(CIVisibilitySettings settings)
+ {
+ // CI Vis records the settings _directly_ in the global config so don't need to record them again here
+ _logTagBuilder.Update(settings, CIVisibility.Enabled);
+ }
+
public void IntegrationRunning(IntegrationId integrationId)
=> _integrations.IntegrationRunning(integrationId);
@@ -298,7 +311,7 @@ private async Task PushTelemetry(bool includeLogs, bool sendAppClosing)
return;
}
- if (includeLogs && _redactedErrorLogs?.GetLogs() is { } batches)
+ if (includeLogs && _redactedErrorLogs?.GetLogs(_logTagBuilder.GetLogTags()) is { } batches)
{
foreach (var batch in batches)
{
@@ -350,6 +363,74 @@ public enum ItemType
public object? State { get; }
}
+ internal class TagBuilder
+ {
+ private bool _isCiVisEnabled;
+ private bool _isAsmEnabled;
+ private bool _isProfilingEnabled;
+ private bool _isDynamicInstrumentationEnabled;
+ private string? _cloudEnv;
+ private bool _isUpdateRequired;
+ private string? _tags;
+
+ public void Update(TracerSettings settings)
+ {
+ _cloudEnv = settings switch
+ {
+ { IsRunningInGCPFunctions: true } => ",gcp",
+ { LambdaMetadata.IsRunningInLambda: true } => ",aws",
+ { IsRunningMiniAgentInAzureFunctions: true } => ",azf",
+ { IsRunningInAzureAppService: true } => ",aas",
+ _ => null,
+ };
+ _isUpdateRequired = true;
+ }
+
+ public void Update(CIVisibilitySettings settings, bool enabled)
+ {
+ // We don't actually need to record these, because they're added to the global config
+ // This isn't nice, as it calls the static property,
+ // but we don't have a better way of getting this info right now
+ _isCiVisEnabled = enabled;
+ _isUpdateRequired = true;
+ }
+
+ public void Update(TelemetryProductType product, bool enabled)
+ {
+ if (product == TelemetryProductType.Profiler)
+ {
+ _isProfilingEnabled = enabled;
+ }
+ else if (product == TelemetryProductType.AppSec)
+ {
+ _isAsmEnabled = enabled;
+ }
+ else if (product == TelemetryProductType.DynamicInstrumentation)
+ {
+ _isDynamicInstrumentationEnabled = enabled;
+ }
+
+ // unknown product, ignore
+ _isUpdateRequired = true;
+ }
+
+ public string GetLogTags()
+ {
+ if (_isUpdateRequired || _tags is null)
+ {
+ _isUpdateRequired = false;
+ // using 1/0 to save bytes!
+ _tags = $"ci:{(_isCiVisEnabled ? '1' : '0')}" +
+ $",asm:{(_isAsmEnabled ? '1' : '0')}" +
+ $",prof:{(_isProfilingEnabled ? '1' : '0')}" +
+ $",dyn:{(_isDynamicInstrumentationEnabled ? '1' : '0')}" +
+ $"{_cloudEnv}";
+ }
+
+ return _tags;
+ }
+ }
+
///
/// Internal for testing
///
diff --git a/tracer/src/Datadog.Trace/TracerConstants.cs b/tracer/src/Datadog.Trace/TracerConstants.cs
index dc20941bbd44..f4706347c8cc 100644
--- a/tracer/src/Datadog.Trace/TracerConstants.cs
+++ b/tracer/src/Datadog.Trace/TracerConstants.cs
@@ -8,7 +8,7 @@ namespace Datadog.Trace
internal static class TracerConstants
{
public const string Language = "dotnet";
- public const string AssemblyVersion = "3.8.0.0";
- public const string ThreePartVersion = "3.8.0";
+ public const string AssemblyVersion = "3.9.0.0";
+ public const string ThreePartVersion = "3.9.0";
}
}
diff --git a/tracer/src/Datadog.Trace/TracerManager.cs b/tracer/src/Datadog.Trace/TracerManager.cs
index b72d43b7ad35..286e972bcff0 100644
--- a/tracer/src/Datadog.Trace/TracerManager.cs
+++ b/tracer/src/Datadog.Trace/TracerManager.cs
@@ -24,6 +24,7 @@
using Datadog.Trace.Logging.DirectSubmission;
using Datadog.Trace.Logging.TracerFlare;
using Datadog.Trace.Processors;
+using Datadog.Trace.Propagators;
using Datadog.Trace.RemoteConfigurationManagement;
using Datadog.Trace.RuntimeMetrics;
using Datadog.Trace.Sampling;
@@ -101,6 +102,8 @@ public TracerManager(
var schema = new NamingSchema(settings.MetadataSchemaVersion, settings.PeerServiceTagsEnabled, settings.RemoveClientServiceNamesEnabled, defaultServiceName, settings.ServiceNameMappings, settings.PeerServiceNameMappings);
PerTraceSettings = new(traceSampler, spanSampler, settings.ServiceNameMappings, schema);
+
+ SpanContextPropagator = SpanContextPropagatorFactory.GetSpanContextPropagator(settings.PropagationStyleInject, settings.PropagationStyleExtract, settings.PropagationExtractFirstOnly);
}
///
@@ -164,6 +167,8 @@ public static TracerManager Instance
public PerTraceSettings PerTraceSettings { get; }
+ public SpanContextPropagator SpanContextPropagator { get; }
+
///
/// Replaces the global settings. This affects all instances
/// which use the global
diff --git a/tracer/src/Datadog.Trace/TracerManagerFactory.cs b/tracer/src/Datadog.Trace/TracerManagerFactory.cs
index 74cb7cbc0b5f..2d16e877521a 100644
--- a/tracer/src/Datadog.Trace/TracerManagerFactory.cs
+++ b/tracer/src/Datadog.Trace/TracerManagerFactory.cs
@@ -150,8 +150,6 @@ internal TracerManager CreateTracerManager(
telemetry.RecordProfilerSettings(profiler);
telemetry.ProductChanged(TelemetryProductType.Profiler, enabled: profiler.Status.IsProfilerReady, error: null);
- SpanContextPropagator.Instance = SpanContextPropagatorFactory.GetSpanContextPropagator(settings.PropagationStyleInject, settings.PropagationStyleExtract, settings.PropagationExtractFirstOnly);
-
dataStreamsManager ??= DataStreamsManager.Create(settings, discoveryService, defaultServiceName);
if (ShouldEnableRemoteConfiguration(settings))
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/AnyType.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/AnyType.cs
new file mode 100644
index 000000000000..49c9b99b7bf3
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/AnyType.cs
@@ -0,0 +1,36 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Any
+{
+ ///
+ /// Type of an
+ ///
+ internal enum AnyType
+ {
+ ///
+ /// Primitive.
+ ///
+ Primitive,
+
+ ///
+ /// Null.
+ ///
+ Null,
+
+ ///
+ /// Array.
+ ///
+ Array,
+
+ ///
+ /// Object.
+ ///
+ Object
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/IOpenApiAny.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/IOpenApiAny.cs
new file mode 100644
index 000000000000..8a68a3f5d875
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/IOpenApiAny.cs
@@ -0,0 +1,23 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Interfaces;
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Any
+{
+ ///
+ /// Base interface for all the types that represent Open API Any.
+ ///
+ internal interface IOpenApiAny : IOpenApiElement, IOpenApiExtension
+ {
+ ///
+ /// Type of an .
+ ///
+ AnyType AnyType { get; }
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/IOpenApiPrimitive.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/IOpenApiPrimitive.cs
new file mode 100644
index 000000000000..cdeeab83dc04
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/IOpenApiPrimitive.cs
@@ -0,0 +1,82 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Any
+{
+ ///
+ /// Primitive type.
+ ///
+ internal enum PrimitiveType
+ {
+ ///
+ /// Integer
+ ///
+ Integer,
+
+ ///
+ /// Long
+ ///
+ Long,
+
+ ///
+ /// Float
+ ///
+ Float,
+
+ ///
+ /// Double
+ ///
+ Double,
+
+ ///
+ /// String
+ ///
+ String,
+
+ ///
+ /// Byte
+ ///
+ Byte,
+
+ ///
+ /// Binary
+ ///
+ Binary,
+
+ ///
+ /// Boolean
+ ///
+ Boolean,
+
+ ///
+ /// Date
+ ///
+ Date,
+
+ ///
+ /// DateTime
+ ///
+ DateTime,
+
+ ///
+ /// Password
+ ///
+ Password
+ }
+
+ ///
+ /// Base interface for the Primitive type.
+ ///
+ internal interface IOpenApiPrimitive : IOpenApiAny
+ {
+ ///
+ /// Primitive type.
+ ///
+ PrimitiveType PrimitiveType { get; }
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiAnyCloneHelper.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiAnyCloneHelper.cs
new file mode 100644
index 000000000000..dc37f55728b8
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiAnyCloneHelper.cs
@@ -0,0 +1,66 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+using System;
+using System.Diagnostics.CodeAnalysis;
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Any
+{
+ ///
+ /// Contains logic for cloning objects through copy constructors.
+ ///
+ internal class OpenApiAnyCloneHelper
+ {
+ ///
+ /// Clones an instance of object from the copy constructor
+ ///
+ /// The object instance.
+ /// A clone copy or the object itself.
+ [Obsolete("Use native AoT-friendly generic overload of CloneFromCopyConstructor instead.")]
+ [RequiresUnreferencedCode("CloneFromCopyConstructor is not trim-compatible. Recommended to use native AoT-friendly type-specific overloads of CloneFromCopyConstructor instead.")]
+ public static IOpenApiAny CloneFromCopyConstructor(IOpenApiAny obj)
+ {
+ if (obj != null)
+ {
+ var t = obj.GetType();
+ foreach (var ci in t.GetConstructors())
+ {
+ var pi = ci.GetParameters();
+ if (pi.Length == 1 && pi[0].ParameterType == t)
+ {
+ return (IOpenApiAny)ci.Invoke(new object[] { obj });
+ }
+ }
+ }
+
+ return obj;
+ }
+
+ ///
+ /// Clones an instance of object from the copy constructor
+ ///
+ /// The object instance.
+ /// A clone copy or the object itself.
+ public static T CloneFromCopyConstructor<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] T>(T obj) where T : IOpenApiAny
+ {
+ if (obj != null)
+ {
+ foreach (var ci in typeof(T).GetConstructors())
+ {
+ var pi = ci.GetParameters();
+ if (pi.Length == 1 && pi[0].ParameterType == typeof(T))
+ {
+ return (T)ci.Invoke([obj]);
+ }
+ }
+ }
+
+ return obj;
+ }
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiArray.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiArray.cs
new file mode 100644
index 000000000000..8048a8de0373
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiArray.cs
@@ -0,0 +1,58 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Writers;
+using System.Collections.Generic;
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Any
+{
+ ///
+ /// Open API array.
+ ///
+ internal class OpenApiArray : List, IOpenApiAny
+ {
+ ///
+ /// The type of
+ ///
+ public AnyType AnyType { get; } = AnyType.Array;
+
+ ///
+ /// Parameterless constructor
+ ///
+ public OpenApiArray() { }
+
+ ///
+ /// Initializes a copy of object
+ ///
+ public OpenApiArray(OpenApiArray array)
+ {
+ AnyType = array.AnyType;
+ foreach (var item in array)
+ {
+ Add(OpenApiAnyCloneHelper.CloneFromCopyConstructor(item));
+ }
+ }
+
+ ///
+ /// Write out contents of OpenApiArray to passed writer
+ ///
+ /// Instance of JSON or YAML writer.
+ /// Version of the OpenAPI specification that that will be output.
+ public void Write(IOpenApiWriter writer, OpenApiSpecVersion specVersion)
+ {
+ writer.WriteStartArray();
+
+ foreach (var item in this)
+ {
+ writer.WriteAny(item);
+ }
+
+ writer.WriteEndArray();
+ }
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiBinary.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiBinary.cs
new file mode 100644
index 000000000000..9ce03de6c8c7
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiBinary.cs
@@ -0,0 +1,30 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Any
+{
+ ///
+ /// Open API binary.
+ ///
+ internal class OpenApiBinary : OpenApiPrimitive
+ {
+ ///
+ /// Initializes the class.
+ ///
+ ///
+ public OpenApiBinary(byte[] value)
+ : base(value)
+ {
+ }
+
+ ///
+ /// Primitive type this object represents.
+ ///
+ public override PrimitiveType PrimitiveType => PrimitiveType.Binary;
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiBoolean.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiBoolean.cs
new file mode 100644
index 000000000000..a4ba9f7712e5
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiBoolean.cs
@@ -0,0 +1,30 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Any
+{
+ ///
+ /// Open API boolean.
+ ///
+ internal class OpenApiBoolean : OpenApiPrimitive
+ {
+ ///
+ /// Initializes the class.
+ ///
+ ///
+ public OpenApiBoolean(bool value)
+ : base(value)
+ {
+ }
+
+ ///
+ /// Primitive type this object represents.
+ ///
+ public override PrimitiveType PrimitiveType => PrimitiveType.Boolean;
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiByte.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiByte.cs
new file mode 100644
index 000000000000..293baf17cb81
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiByte.cs
@@ -0,0 +1,37 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Any
+{
+ ///
+ /// Open API Byte
+ ///
+ internal class OpenApiByte : OpenApiPrimitive
+ {
+ ///
+ /// Initializes the class.
+ ///
+ public OpenApiByte(byte value)
+ : this(new[] { value })
+ {
+ }
+
+ ///
+ /// Initializes the class.
+ ///
+ public OpenApiByte(byte[] value)
+ : base(value)
+ {
+ }
+
+ ///
+ /// Primitive type this object represents.
+ ///
+ public override PrimitiveType PrimitiveType => PrimitiveType.Byte;
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiDate.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiDate.cs
new file mode 100644
index 000000000000..2a6f05c93d42
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiDate.cs
@@ -0,0 +1,31 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+using System;
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Any
+{
+ ///
+ /// Open API Date
+ ///
+ internal class OpenApiDate : OpenApiPrimitive
+ {
+ ///
+ /// Initializes the class.
+ ///
+ public OpenApiDate(DateTime value)
+ : base(value)
+ {
+ }
+
+ ///
+ /// Primitive type this object represents.
+ ///
+ public override PrimitiveType PrimitiveType => PrimitiveType.Date;
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiDateTime.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiDateTime.cs
new file mode 100644
index 000000000000..e620601f5277
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiDateTime.cs
@@ -0,0 +1,31 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+using System;
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Any
+{
+ ///
+ /// Open API Datetime
+ ///
+ internal class OpenApiDateTime : OpenApiPrimitive
+ {
+ ///
+ /// Initializes the class.
+ ///
+ public OpenApiDateTime(DateTimeOffset value)
+ : base(value)
+ {
+ }
+
+ ///
+ /// Primitive type this object represents.
+ ///
+ public override PrimitiveType PrimitiveType => PrimitiveType.DateTime;
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiDouble.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiDouble.cs
new file mode 100644
index 000000000000..1ceddc5dc009
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiDouble.cs
@@ -0,0 +1,29 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Any
+{
+ ///
+ /// Open API Double
+ ///
+ internal class OpenApiDouble : OpenApiPrimitive
+ {
+ ///
+ /// Initializes the class.
+ ///
+ public OpenApiDouble(double value)
+ : base(value)
+ {
+ }
+
+ ///
+ /// Primitive type this object represents.
+ ///
+ public override PrimitiveType PrimitiveType => PrimitiveType.Double;
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiFloat.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiFloat.cs
new file mode 100644
index 000000000000..6d5a380f258b
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiFloat.cs
@@ -0,0 +1,29 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Any
+{
+ ///
+ /// Open API Float
+ ///
+ internal class OpenApiFloat : OpenApiPrimitive
+ {
+ ///
+ /// Initializes the class.
+ ///
+ public OpenApiFloat(float value)
+ : base(value)
+ {
+ }
+
+ ///
+ /// Primitive type this object represents.
+ ///
+ public override PrimitiveType PrimitiveType => PrimitiveType.Float;
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiInteger.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiInteger.cs
new file mode 100644
index 000000000000..f65e20a754d6
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiInteger.cs
@@ -0,0 +1,29 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Any
+{
+ ///
+ /// Open API Integer
+ ///
+ internal class OpenApiInteger : OpenApiPrimitive
+ {
+ ///
+ /// Initializes the class.
+ ///
+ public OpenApiInteger(int value)
+ : base(value)
+ {
+ }
+
+ ///
+ /// Primitive type this object represents.
+ ///
+ public override PrimitiveType PrimitiveType => PrimitiveType.Integer;
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiLong.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiLong.cs
new file mode 100644
index 000000000000..deee698575a4
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiLong.cs
@@ -0,0 +1,29 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Any
+{
+ ///
+ /// Open API long.
+ ///
+ internal class OpenApiLong : OpenApiPrimitive
+ {
+ ///
+ /// Initializes the class.
+ ///
+ public OpenApiLong(long value)
+ : base(value)
+ {
+ }
+
+ ///
+ /// Primitive type this object represents.
+ ///
+ public override PrimitiveType PrimitiveType => PrimitiveType.Long;
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiNull.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiNull.cs
new file mode 100644
index 000000000000..03c2c58cbf70
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiNull.cs
@@ -0,0 +1,46 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Writers;
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Any
+{
+ ///
+ /// Open API null.
+ ///
+ internal class OpenApiNull : IOpenApiAny
+ {
+ ///
+ /// The type of
+ ///
+ public AnyType AnyType { get; } = AnyType.Null;
+
+ ///
+ /// Parameterless constructor
+ ///
+ public OpenApiNull() { }
+
+ ///
+ /// Initializes a copy of object
+ ///
+ public OpenApiNull(OpenApiNull openApiNull)
+ {
+ AnyType = openApiNull.AnyType;
+ }
+
+ ///
+ /// Write out null representation
+ ///
+ ///
+ /// Version of the OpenAPI specification that that will be output.
+ public void Write(IOpenApiWriter writer, OpenApiSpecVersion specVersion)
+ {
+ writer.WriteAny(this);
+ }
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiObject.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiObject.cs
new file mode 100644
index 000000000000..a9184c19f9f2
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiObject.cs
@@ -0,0 +1,59 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+using System.Collections.Generic;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Writers;
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Any
+{
+ ///
+ /// Open API object.
+ ///
+ internal class OpenApiObject : Dictionary, IOpenApiAny
+ {
+ ///
+ /// Type of .
+ ///
+ public AnyType AnyType { get; } = AnyType.Object;
+
+ ///
+ /// Parameterless constructor
+ ///
+ public OpenApiObject() { }
+
+ ///
+ /// Initializes a copy of object
+ ///
+ public OpenApiObject(OpenApiObject obj)
+ {
+ AnyType = obj.AnyType;
+ foreach (var key in obj.Keys)
+ {
+ this[key] = OpenApiAnyCloneHelper.CloneFromCopyConstructor(obj[key]);
+ }
+ }
+
+ ///
+ /// Serialize OpenApiObject to writer
+ ///
+ ///
+ /// Version of the OpenAPI specification that that will be output.
+ public void Write(IOpenApiWriter writer, OpenApiSpecVersion specVersion)
+ {
+ writer.WriteStartObject();
+
+ foreach (var item in this)
+ {
+ writer.WritePropertyName(item.Key);
+ writer.WriteAny(item.Value);
+ }
+
+ writer.WriteEndObject();
+ }
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiPassword.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiPassword.cs
new file mode 100644
index 000000000000..aa8d9e0e912d
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiPassword.cs
@@ -0,0 +1,29 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Any
+{
+ ///
+ /// Open API password.
+ ///
+ internal class OpenApiPassword : OpenApiPrimitive
+ {
+ ///
+ /// Initializes the class.
+ ///
+ public OpenApiPassword(string value)
+ : base(value)
+ {
+ }
+
+ ///
+ /// The primitive type this object represents.
+ ///
+ public override PrimitiveType PrimitiveType => PrimitiveType.Password;
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiPrimitive.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiPrimitive.cs
new file mode 100644
index 000000000000..16028451c061
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiPrimitive.cs
@@ -0,0 +1,160 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+using System;
+using System.Globalization;
+using System.Text;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Exceptions;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Properties;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Writers;
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Any
+{
+ ///
+ /// Open API primitive class.
+ ///
+ ///
+ internal abstract class OpenApiPrimitive : IOpenApiPrimitive
+ {
+ ///
+ /// Initializes the class with the given value.
+ ///
+ ///
+ public OpenApiPrimitive(T value)
+ {
+ Value = value;
+ }
+
+ ///
+ /// Initializes a copy of an object
+ ///
+ ///
+ public OpenApiPrimitive(OpenApiPrimitive openApiPrimitive)
+ {
+ Value = openApiPrimitive.Value;
+ }
+
+ ///
+ /// The kind of .
+ ///
+ public AnyType AnyType => AnyType.Primitive;
+
+ ///
+ /// The primitive class this object represents.
+ ///
+ public abstract PrimitiveType PrimitiveType { get; }
+
+ ///
+ /// Value of this
+ ///
+ public T Value { get; }
+
+ ///
+ /// Write out content of primitive element
+ ///
+ ///
+ ///
+ public void Write(IOpenApiWriter writer, OpenApiSpecVersion specVersion)
+ {
+ switch (this.PrimitiveType)
+ {
+ case PrimitiveType.Integer:
+ var intValue = (OpenApiInteger)(IOpenApiPrimitive)this;
+ writer.WriteValue(intValue.Value);
+ break;
+
+ case PrimitiveType.Long:
+ var longValue = (OpenApiLong)(IOpenApiPrimitive)this;
+ writer.WriteValue(longValue.Value);
+ break;
+
+ case PrimitiveType.Float:
+ var floatValue = (OpenApiFloat)(IOpenApiPrimitive)this;
+ writer.WriteValue(floatValue.Value);
+ break;
+
+ case PrimitiveType.Double:
+ var doubleValue = (OpenApiDouble)(IOpenApiPrimitive)this;
+ var actualValue = doubleValue.Value;
+ if (actualValue.Equals(double.NaN)
+ || actualValue.Equals(double.NegativeInfinity)
+ || actualValue.Equals(double.PositiveInfinity))
+ {
+ // Write out NaN, -Infinity, Infinity as strings
+ writer.WriteValue(actualValue.ToString(CultureInfo.InvariantCulture));
+ break;
+ }
+ else
+ {
+ writer.WriteValue(actualValue);
+ }
+ break;
+
+ case PrimitiveType.String:
+ var stringValue = (OpenApiString)(IOpenApiPrimitive)this;
+ if (stringValue.IsRawString())
+ writer.WriteRaw(stringValue.Value);
+ else
+ writer.WriteValue(stringValue.Value);
+ break;
+
+ case PrimitiveType.Byte:
+ var byteValue = (OpenApiByte)(IOpenApiPrimitive)this;
+ if (byteValue.Value == null)
+ {
+ writer.WriteNull();
+ }
+ else
+ {
+ writer.WriteValue(Convert.ToBase64String(byteValue.Value));
+ }
+
+ break;
+
+ case PrimitiveType.Binary:
+ var binaryValue = (OpenApiBinary)(IOpenApiPrimitive)this;
+ if (binaryValue.Value == null)
+ {
+ writer.WriteNull();
+ }
+ else
+ {
+ writer.WriteValue(Encoding.UTF8.GetString(binaryValue.Value));
+ }
+
+ break;
+
+ case PrimitiveType.Boolean:
+ var boolValue = (OpenApiBoolean)(IOpenApiPrimitive)this;
+ writer.WriteValue(boolValue.Value);
+ break;
+
+ case PrimitiveType.Date:
+ var dateValue = (OpenApiDate)(IOpenApiPrimitive)this;
+ writer.WriteValue(dateValue.Value.ToString("o").Substring(0, 10));
+ break;
+
+ case PrimitiveType.DateTime:
+ var dateTimeValue = (OpenApiDateTime)(IOpenApiPrimitive)this;
+ writer.WriteValue(dateTimeValue.Value);
+ break;
+
+ case PrimitiveType.Password:
+ var passwordValue = (OpenApiPassword)(IOpenApiPrimitive)this;
+ writer.WriteValue(passwordValue.Value);
+ break;
+
+ default:
+ throw new OpenApiWriterException(
+ string.Format(
+ SRResource.PrimitiveTypeNotSupported,
+ this.PrimitiveType));
+ }
+ }
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiString.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiString.cs
new file mode 100644
index 000000000000..20c7000f2186
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Any/OpenApiString.cs
@@ -0,0 +1,73 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Any
+{
+ ///
+ /// Open API string type.
+ ///
+ internal class OpenApiString : OpenApiPrimitive
+ {
+ private bool isExplicit;
+ private bool isRawString;
+
+ ///
+ /// Initializes the class.
+ ///
+ ///
+ public OpenApiString(string value)
+ : this(value, false)
+ {
+ }
+
+ ///
+ /// Initializes the class.
+ ///
+ ///
+ /// Used to indicate if a string is quoted.
+ public OpenApiString(string value, bool isExplicit)
+ : base(value)
+ {
+ this.isExplicit = isExplicit;
+ }
+
+ ///
+ /// Initializes the class.
+ ///
+ ///
+ /// Used to indicate if a string is quoted.
+ /// Used to indicate to the writer that the value should be written without encoding.
+ public OpenApiString(string value, bool isExplicit, bool isRawString)
+ : base(value)
+ {
+ this.isExplicit = isExplicit;
+ this.isRawString = isRawString;
+ }
+
+ ///
+ /// The primitive class this object represents.
+ ///
+ public override PrimitiveType PrimitiveType => PrimitiveType.String;
+
+ ///
+ /// True if string was specified explicitly by the means of double quotes, single quotes, or literal or folded style.
+ ///
+ public bool IsExplicit()
+ {
+ return this.isExplicit;
+ }
+
+ ///
+ /// True if the writer should process the value as supplied without encoding.
+ ///
+ public bool IsRawString()
+ {
+ return this.isRawString;
+ }
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Attributes/DisplayAttribute.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Attributes/DisplayAttribute.cs
new file mode 100644
index 000000000000..195dd7d35df2
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Attributes/DisplayAttribute.cs
@@ -0,0 +1,33 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+using System;
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Attributes
+{
+ ///
+ /// Represents the Open Api Data type metadata attribute.
+ ///
+ [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field)]
+ internal class DisplayAttribute : Attribute
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The display name.
+ public DisplayAttribute(string name)
+ {
+ Name = Utils.CheckArgumentNullOrEmpty(name);
+ }
+
+ ///
+ /// The display Name.
+ ///
+ public string Name { get; }
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Attributes/TrimmingAttributes.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Attributes/TrimmingAttributes.cs
new file mode 100644
index 000000000000..8a17bab8c31b
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Attributes/TrimmingAttributes.cs
@@ -0,0 +1,430 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+#nullable enable
+
+// This collection of attribute definitions are helpers for accessing trim-related attributes in
+// projects targeting .NET 6 or lower. Since the trimmer queries for these attributes by name, having
+// these attributes source included is sufficient for the trimmer to recognize them. For more information
+// on this approach, see https://devblogs.microsoft.com/dotnet/creating-aot-compatible-libraries/#approach-2-define-the-attributes-internally.
+namespace System.Diagnostics.CodeAnalysis
+{
+#if !NET7_0_OR_GREATER
+ ///
+ /// Indicates that the specified method requires the ability to generate new code at runtime,
+ /// for example through .
+ ///
+ ///
+ /// This allows tools to understand which methods are unsafe to call when compiling ahead of time.
+ ///
+ [AttributeUsage(AttributeTargets.Method | AttributeTargets.Constructor | AttributeTargets.Class, Inherited = false)]
+ internal sealed class RequiresDynamicCodeAttribute : Attribute
+ {
+ ///
+ /// Initializes a new instance of the class
+ /// with the specified message.
+ ///
+ ///
+ /// A message that contains information about the usage of dynamic code.
+ ///
+ public RequiresDynamicCodeAttribute(string message)
+ {
+ Message = message;
+ }
+
+ ///
+ /// Gets a message that contains information about the usage of dynamic code.
+ ///
+ public string Message { get; }
+
+ ///
+ /// Gets or sets an optional URL that contains more information about the method,
+ /// why it requires dynamic code, and what options a consumer has to deal with it.
+ ///
+ public string? Url { get; set; }
+ }
+#endif
+
+#if !NET5_0_OR_GREATER
+ ///
+ /// Indicates that the specified method requires dynamic access to code that is not referenced
+ /// statically, for example through .
+ ///
+ ///
+ /// This allows tools to understand which methods are unsafe to call when removing unreferenced
+ /// code from an application.
+ ///
+ [AttributeUsage(AttributeTargets.Method | AttributeTargets.Constructor | AttributeTargets.Class, Inherited = false)]
+ internal sealed class RequiresUnreferencedCodeAttribute : Attribute
+ {
+ ///
+ /// Initializes a new instance of the class
+ /// with the specified message.
+ ///
+ ///
+ /// A message that contains information about the usage of unreferenced code.
+ ///
+ public RequiresUnreferencedCodeAttribute(string message)
+ {
+ Message = message;
+ }
+
+ ///
+ /// Gets a message that contains information about the usage of unreferenced code.
+ ///
+ public string Message { get; }
+
+ ///
+ /// Gets or sets an optional URL that contains more information about the method,
+ /// why it requires unreferenced code, and what options a consumer has to deal with it.
+ ///
+ public string? Url { get; set; }
+ }
+
+ ///
+ /// Suppresses reporting of a specific rule violation, allowing multiple suppressions on a
+ /// single code artifact.
+ ///
+ ///
+ /// is different than
+ /// in that it doesn't have a
+ /// . So it is always preserved in the compiled assembly.
+ ///
+ [AttributeUsage(AttributeTargets.All, Inherited = false, AllowMultiple = true)]
+ internal sealed class UnconditionalSuppressMessageAttribute : Attribute
+ {
+ ///
+ /// Initializes a new instance of the
+ /// class, specifying the category of the tool and the identifier for an analysis rule.
+ ///
+ /// The category for the attribute.
+ /// The identifier of the analysis rule the attribute applies to.
+ public UnconditionalSuppressMessageAttribute(string category, string checkId)
+ {
+ Category = category;
+ CheckId = checkId;
+ }
+
+ ///
+ /// Gets the category identifying the classification of the attribute.
+ ///
+ ///
+ /// The property describes the tool or tool analysis category
+ /// for which a message suppression attribute applies.
+ ///
+ public string Category { get; }
+
+ ///
+ /// Gets the identifier of the analysis tool rule to be suppressed.
+ ///
+ ///
+ /// Concatenated together, the and
+ /// properties form a unique check identifier.
+ ///
+ public string CheckId { get; }
+
+ ///
+ /// Gets or sets the scope of the code that is relevant for the attribute.
+ ///
+ ///
+ /// The Scope property is an optional argument that specifies the metadata scope for which
+ /// the attribute is relevant.
+ ///
+ public string? Scope { get; set; }
+
+ ///
+ /// Gets or sets a fully qualified path that represents the target of the attribute.
+ ///
+ ///
+ /// The property is an optional argument identifying the analysis target
+ /// of the attribute. An example value is "System.IO.Stream.ctor():System.Void".
+ /// Because it is fully qualified, it can be long, particularly for targets such as parameters.
+ /// The analysis tool user interface should be capable of automatically formatting the parameter.
+ ///
+ public string? Target { get; set; }
+
+ ///
+ /// Gets or sets an optional argument expanding on exclusion criteria.
+ ///
+ ///
+ /// The property is an optional argument that specifies additional
+ /// exclusion where the literal metadata target is not sufficiently precise. For example,
+ /// the cannot be applied within a method,
+ /// and it may be desirable to suppress a violation against a statement in the method that will
+ /// give a rule violation, but not against all statements in the method.
+ ///
+ public string? MessageId { get; set; }
+
+ ///
+ /// Gets or sets the justification for suppressing the code analysis message.
+ ///
+ public string? Justification { get; set; }
+ }
+
+ ///
+ /// States a dependency that one member has on another.
+ ///
+ ///
+ /// This can be used to inform tooling of a dependency that is otherwise not evident purely from
+ /// metadata and IL, for example a member relied on via reflection.
+ ///
+ [AttributeUsage(
+ AttributeTargets.Constructor | AttributeTargets.Field | AttributeTargets.Method,
+ AllowMultiple = true, Inherited = false)]
+ internal sealed class DynamicDependencyAttribute : Attribute
+ {
+ ///
+ /// Initializes a new instance of the class
+ /// with the specified signature of a member on the same type as the consumer.
+ ///
+ /// The signature of the member depended on.
+ public DynamicDependencyAttribute(string memberSignature)
+ {
+ MemberSignature = memberSignature;
+ }
+
+ ///
+ /// Initializes a new instance of the class
+ /// with the specified signature of a member on a .
+ ///
+ /// The signature of the member depended on.
+ /// The containing .
+ public DynamicDependencyAttribute(string memberSignature, Type type)
+ {
+ MemberSignature = memberSignature;
+ Type = type;
+ }
+
+ ///
+ /// Initializes a new instance of the class
+ /// with the specified signature of a member on a type in an assembly.
+ ///
+ /// The signature of the member depended on.
+ /// The full name of the type containing the specified member.
+ /// The assembly name of the type containing the specified member.
+ public DynamicDependencyAttribute(string memberSignature, string typeName, string assemblyName)
+ {
+ MemberSignature = memberSignature;
+ TypeName = typeName;
+ AssemblyName = assemblyName;
+ }
+
+ ///
+ /// Initializes a new instance of the class
+ /// with the specified types of members on a .
+ ///
+ /// The types of members depended on.
+ /// The containing the specified members.
+ public DynamicDependencyAttribute(DynamicallyAccessedMemberTypes memberTypes, Type type)
+ {
+ MemberTypes = memberTypes;
+ Type = type;
+ }
+
+ ///
+ /// Initializes a new instance of the class
+ /// with the specified types of members on a type in an assembly.
+ ///
+ /// The types of members depended on.
+ /// The full name of the type containing the specified members.
+ /// The assembly name of the type containing the specified members.
+ public DynamicDependencyAttribute(DynamicallyAccessedMemberTypes memberTypes, string typeName, string assemblyName)
+ {
+ MemberTypes = memberTypes;
+ TypeName = typeName;
+ AssemblyName = assemblyName;
+ }
+
+ ///
+ /// Gets the signature of the member depended on.
+ ///
+ ///
+ /// Either must be a valid string or
+ /// must not equal , but not both.
+ ///
+ public string? MemberSignature { get; }
+
+ ///
+ /// Gets the which specifies the type
+ /// of members depended on.
+ ///
+ ///
+ /// Either must be a valid string or
+ /// must not equal , but not both.
+ ///
+ public DynamicallyAccessedMemberTypes MemberTypes { get; }
+
+ ///
+ /// Gets the containing the specified member.
+ ///
+ ///
+ /// If neither nor are specified,
+ /// the type of the consumer is assumed.
+ ///
+ public Type? Type { get; }
+
+ ///
+ /// Gets the full name of the type containing the specified member.
+ ///
+ ///
+ /// If neither nor are specified,
+ /// the type of the consumer is assumed.
+ ///
+ public string? TypeName { get; }
+
+ ///
+ /// Gets the assembly name of the specified type.
+ ///
+ ///
+ /// is only valid when is specified.
+ ///
+ public string? AssemblyName { get; }
+
+ ///
+ /// Gets or sets the condition in which the dependency is applicable, e.g. "DEBUG".
+ ///
+ public string? Condition { get; set; }
+ }
+
+ ///
+ /// Indicates that certain members on a specified are accessed dynamically,
+ /// for example through .
+ ///
+ ///
+ /// This allows tools to understand which members are being accessed during the execution
+ /// of a program.
+ ///
+ /// This attribute is valid on members whose type is or .
+ ///
+ /// When this attribute is applied to a location of type , the assumption is
+ /// that the string represents a fully qualified type name.
+ ///
+ /// When this attribute is applied to a class, interface, or struct, the members specified
+ /// can be accessed dynamically on instances returned from calling
+ /// on instances of that class, interface, or struct.
+ ///
+ /// If the attribute is applied to a method it's treated as a special case and it implies
+ /// the attribute should be applied to the "this" parameter of the method. As such the attribute
+ /// should only be used on instance methods of types assignable to System.Type (or string, but no methods
+ /// will use it there).
+ ///
+ [AttributeUsage(
+ AttributeTargets.Field | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter |
+ AttributeTargets.Parameter | AttributeTargets.Property | AttributeTargets.Method |
+ AttributeTargets.Class | AttributeTargets.Interface | AttributeTargets.Struct,
+ Inherited = false)]
+ internal sealed class DynamicallyAccessedMembersAttribute : Attribute
+ {
+ ///
+ /// Initializes a new instance of the class
+ /// with the specified member types.
+ ///
+ /// The types of members dynamically accessed.
+ public DynamicallyAccessedMembersAttribute(DynamicallyAccessedMemberTypes memberTypes)
+ {
+ MemberTypes = memberTypes;
+ }
+
+ ///
+ /// Gets the which specifies the type
+ /// of members dynamically accessed.
+ ///
+ public DynamicallyAccessedMemberTypes MemberTypes { get; }
+ }
+
+ ///
+ /// Specifies the types of members that are dynamically accessed.
+ ///
+ /// This enumeration has a attribute that allows a
+ /// bitwise combination of its member values.
+ ///
+ [Flags]
+ internal enum DynamicallyAccessedMemberTypes
+ {
+ ///
+ /// Specifies no members.
+ ///
+ None = 0,
+
+ ///
+ /// Specifies the default, parameterless public constructor.
+ ///
+ PublicParameterlessConstructor = 0x0001,
+
+ ///
+ /// Specifies all public constructors.
+ ///
+ PublicConstructors = 0x0002 | PublicParameterlessConstructor,
+
+ ///
+ /// Specifies all non-public constructors.
+ ///
+ NonPublicConstructors = 0x0004,
+
+ ///
+ /// Specifies all public methods.
+ ///
+ PublicMethods = 0x0008,
+
+ ///
+ /// Specifies all non-public methods.
+ ///
+ NonPublicMethods = 0x0010,
+
+ ///
+ /// Specifies all public fields.
+ ///
+ PublicFields = 0x0020,
+
+ ///
+ /// Specifies all non-public fields.
+ ///
+ NonPublicFields = 0x0040,
+
+ ///
+ /// Specifies all public nested types.
+ ///
+ PublicNestedTypes = 0x0080,
+
+ ///
+ /// Specifies all non-public nested types.
+ ///
+ NonPublicNestedTypes = 0x0100,
+
+ ///
+ /// Specifies all public properties.
+ ///
+ PublicProperties = 0x0200,
+
+ ///
+ /// Specifies all non-public properties.
+ ///
+ NonPublicProperties = 0x0400,
+
+ ///
+ /// Specifies all public events.
+ ///
+ PublicEvents = 0x0800,
+
+ ///
+ /// Specifies all non-public events.
+ ///
+ NonPublicEvents = 0x1000,
+
+ ///
+ /// Specifies all interfaces implemented by the type.
+ ///
+ Interfaces = 0x2000,
+
+ ///
+ /// Specifies all members.
+ ///
+ All = ~None
+ }
+#endif
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/CallerArgumentExpressionAttribute.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/CallerArgumentExpressionAttribute.cs
new file mode 100644
index 000000000000..62ac70a05434
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/CallerArgumentExpressionAttribute.cs
@@ -0,0 +1,23 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+#if !NETCOREAPP3_1_OR_GREATER
+using System.Diagnostics;
+using System.Diagnostics.CodeAnalysis;
+
+namespace System.Runtime.CompilerServices;
+
+[ExcludeFromCodeCoverage]
+[DebuggerNonUserCode]
+[AttributeUsage(AttributeTargets.Parameter)]
+sealed class CallerArgumentExpressionAttribute :
+ Attribute
+{
+ public CallerArgumentExpressionAttribute(string parameterName) =>
+ ParameterName = parameterName;
+
+ public string ParameterName { get; }
+}
+#endif
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Exceptions/OpenApiException.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Exceptions/OpenApiException.cs
new file mode 100644
index 000000000000..eb8d8d15cc72
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Exceptions/OpenApiException.cs
@@ -0,0 +1,56 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+using System;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Properties;
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Exceptions
+{
+ ///
+ /// Exception type representing exceptions in the Open API library.
+ ///
+ internal class OpenApiException : Exception
+ {
+ ///
+ /// Creates a new instance of the class with default values.
+ ///
+ public OpenApiException()
+ : this(SRResource.OpenApiExceptionGenericError)
+ {
+ }
+
+ ///
+ /// Creates a new instance of the class with an error message.
+ ///
+ /// The plain text error message for this exception.
+ public OpenApiException(string message)
+ : this(message, null)
+ {
+ }
+
+ ///
+ /// Creates a new instance of the class with an error message and an inner exception.
+ ///
+ /// The plain text error message for this exception.
+ /// The inner exception that is the cause of this exception to be thrown.
+ public OpenApiException(string message, Exception innerException)
+ : base(message, innerException)
+ {
+ }
+
+ ///
+ /// The reference pointer. This is a fragment identifier used to point to where the error occurred in the document.
+ /// If the document has been parsed as JSON/YAML then the identifier will be a
+ /// JSON Pointer as per https://tools.ietf.org/html/rfc6901
+ /// If the document fails to parse as JSON/YAML then the fragment will be based on
+ /// a text/plain pointer as defined in https://tools.ietf.org/html/rfc5147
+ /// Currently only line= is provided because using char= causes tests to break due to CR/LF and LF differences
+ ///
+ public string Pointer { get; set; }
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Exceptions/OpenApiWriterException.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Exceptions/OpenApiWriterException.cs
new file mode 100644
index 000000000000..240f5438d788
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Exceptions/OpenApiWriterException.cs
@@ -0,0 +1,46 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+using System;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Properties;
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Exceptions
+{
+ ///
+ /// Exception type representing exceptions in the OpenAPI writer.
+ ///
+ internal class OpenApiWriterException : OpenApiException
+ {
+ ///
+ /// Creates a new instance of the class with default values.
+ ///
+ public OpenApiWriterException()
+ : this(SRResource.OpenApiWriterExceptionGenericError)
+ {
+ }
+
+ ///
+ /// Creates a new instance of the class with an error message.
+ ///
+ /// The plain text error message for this exception.
+ public OpenApiWriterException(string message)
+ : this(message, null)
+ {
+ }
+
+ ///
+ /// Creates a new instance of the class with an error message and an inner exception.
+ ///
+ /// The plain text error message for this exception.
+ /// The inner exception that is the cause of this exception to be thrown.
+ public OpenApiWriterException(string message, Exception innerException)
+ : base(message, innerException)
+ {
+ }
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Expressions/BodyExpression.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Expressions/BodyExpression.cs
new file mode 100644
index 000000000000..c37e69880b65
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Expressions/BodyExpression.cs
@@ -0,0 +1,65 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Expressions
+{
+ ///
+ /// Body expression.
+ ///
+ internal sealed class BodyExpression : SourceExpression
+ {
+ ///
+ /// body string
+ ///
+ public const string Body = "body";
+
+ ///
+ /// Prefix for a pointer
+ ///
+ public const string PointerPrefix = "#";
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ public BodyExpression()
+ : base(null)
+ {
+ }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// a JSON Pointer [RFC 6901](https://tools.ietf.org/html/rfc6901).
+ public BodyExpression(JsonPointer pointer)
+ : base(pointer?.ToString())
+ {
+ Utils.CheckArgumentNull(pointer);
+ }
+
+ ///
+ /// Gets the expression string.
+ ///
+ public override string Expression
+ {
+ get
+ {
+ if (string.IsNullOrWhiteSpace(Value))
+ {
+ return Body;
+ }
+
+ return Body + PointerPrefix + Value;
+ }
+ }
+
+ ///
+ /// Gets the fragment string.
+ ///
+ public string Fragment { get => Value; }
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Expressions/CompositeExpression.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Expressions/CompositeExpression.cs
new file mode 100644
index 000000000000..9dfd60bf2e33
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Expressions/CompositeExpression.cs
@@ -0,0 +1,51 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+using System.Collections.Generic;
+using System.Linq;
+using System.Text.RegularExpressions;
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Expressions
+{
+ ///
+ /// String literal with embedded expressions
+ ///
+ internal class CompositeExpression : RuntimeExpression
+ {
+ private readonly string template;
+ private Regex expressionPattern = new(@"{(?\$[^}]*)");
+
+ ///
+ /// Expressions embedded into string literal
+ ///
+ public List ContainedExpressions = new();
+
+ ///
+ /// Create a composite expression from a string literal with an embedded expression
+ ///
+ ///
+ public CompositeExpression(string expression)
+ {
+ template = expression;
+
+ // Extract subexpressions and convert to RuntimeExpressions
+ var matches = expressionPattern.Matches(expression);
+
+ foreach (var item in matches.Cast())
+ {
+ var value = item.Groups["exp"].Captures.Cast().First().Value;
+ ContainedExpressions.Add(Build(value));
+ }
+ }
+
+ ///
+ /// Return original string literal with embedded expression
+ ///
+ public override string Expression => template;
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Expressions/HeaderExpression.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Expressions/HeaderExpression.cs
new file mode 100644
index 000000000000..f17380d8ebe6
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Expressions/HeaderExpression.cs
@@ -0,0 +1,41 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Expressions
+{
+ ///
+ /// Header expression, The token identifier in header is case-insensitive.
+ ///
+ internal class HeaderExpression : SourceExpression
+ {
+ ///
+ /// header. string
+ ///
+ public const string Header = "header.";
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The token string, it's case-insensitive.
+ public HeaderExpression(string token)
+ : base(token)
+ {
+ Utils.CheckArgumentNullOrEmpty(token);
+ }
+
+ ///
+ /// Gets the expression string.
+ ///
+ public override string Expression { get => Header + Value; }
+
+ ///
+ /// Gets the token string.
+ ///
+ public string Token { get => Value; }
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Expressions/MethodExpression.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Expressions/MethodExpression.cs
new file mode 100644
index 000000000000..265feaf26d50
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Expressions/MethodExpression.cs
@@ -0,0 +1,33 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Expressions
+{
+ ///
+ /// Method expression.
+ ///
+ internal sealed class MethodExpression : RuntimeExpression
+ {
+ ///
+ /// $method. string
+ ///
+ public const string Method = "$method";
+
+ ///
+ /// Gets the expression string.
+ ///
+ public override string Expression => Method;
+
+ ///
+ /// Private constructor.
+ ///
+ public MethodExpression()
+ {
+ }
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Expressions/PathExpression.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Expressions/PathExpression.cs
new file mode 100644
index 000000000000..37210c817079
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Expressions/PathExpression.cs
@@ -0,0 +1,41 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Expressions
+{
+ ///
+ /// Path expression, the name in path is case-sensitive.
+ ///
+ internal sealed class PathExpression : SourceExpression
+ {
+ ///
+ /// path. string
+ ///
+ public const string Path = "path.";
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The name string, it's case-insensitive.
+ public PathExpression(string name)
+ : base(name)
+ {
+ Utils.CheckArgumentNullOrEmpty(name);
+ }
+
+ ///
+ /// Gets the expression string.
+ ///
+ public override string Expression { get => Path + Value; }
+
+ ///
+ /// Gets the name string.
+ ///
+ public string Name { get => Value; }
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Expressions/QueryExpression.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Expressions/QueryExpression.cs
new file mode 100644
index 000000000000..dc6d773b98bf
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Expressions/QueryExpression.cs
@@ -0,0 +1,41 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Expressions
+{
+ ///
+ /// Query expression, the name in query is case-sensitive.
+ ///
+ internal sealed class QueryExpression : SourceExpression
+ {
+ ///
+ /// query. string
+ ///
+ public const string Query = "query.";
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The name string, it's case-insensitive.
+ public QueryExpression(string name)
+ : base(name)
+ {
+ Utils.CheckArgumentNullOrEmpty(name);
+ }
+
+ ///
+ /// Gets the expression string.
+ ///
+ public override string Expression { get => Query + Value; }
+
+ ///
+ /// Gets the name string.
+ ///
+ public string Name { get => Value; }
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Expressions/RequestExpression.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Expressions/RequestExpression.cs
new file mode 100644
index 000000000000..fa5359eff9db
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Expressions/RequestExpression.cs
@@ -0,0 +1,40 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Expressions
+{
+ ///
+ /// $request. expression.
+ ///
+ internal sealed class RequestExpression : RuntimeExpression
+ {
+ ///
+ /// $request. string
+ ///
+ public const string Request = "$request.";
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The source of the request.
+ public RequestExpression(SourceExpression source)
+ {
+ Source = Utils.CheckArgumentNull(source);
+ }
+
+ ///
+ /// Gets the expression string.
+ ///
+ public override string Expression => Request + Source.Expression;
+
+ ///
+ /// The expression.
+ ///
+ public SourceExpression Source { get; }
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Expressions/ResponseExpression.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Expressions/ResponseExpression.cs
new file mode 100644
index 000000000000..533b78b76094
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Expressions/ResponseExpression.cs
@@ -0,0 +1,40 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Expressions
+{
+ ///
+ /// $response. expression.
+ ///
+ internal sealed class ResponseExpression : RuntimeExpression
+ {
+ ///
+ /// $response. string
+ ///
+ public const string Response = "$response.";
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The source of the response.
+ public ResponseExpression(SourceExpression source)
+ {
+ Source = Utils.CheckArgumentNull(source);
+ }
+
+ ///
+ /// Gets the expression string.
+ ///
+ public override string Expression => Response + Source.Expression;
+
+ ///
+ /// The expression.
+ ///
+ public SourceExpression Source { get; }
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Expressions/RuntimeExpression.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Expressions/RuntimeExpression.cs
new file mode 100644
index 000000000000..f0e60a3e4f34
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Expressions/RuntimeExpression.cs
@@ -0,0 +1,111 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+using System;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Exceptions;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Properties;
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Expressions
+{
+ ///
+ /// Base class for the Open API runtime expression.
+ ///
+ internal abstract class RuntimeExpression : IEquatable
+ {
+ ///
+ /// The dollar sign prefix for a runtime expression.
+ ///
+ public const string Prefix = "$";
+
+ ///
+ /// The expression string.
+ ///
+ public abstract string Expression { get; }
+
+ ///
+ /// Build the runtime expression from input string.
+ ///
+ /// The runtime expression.
+ /// The built runtime expression object.
+ public static RuntimeExpression Build(string expression)
+ {
+ Utils.CheckArgumentNullOrEmpty(expression);
+
+ if (!expression.StartsWith(Prefix))
+ {
+ return new CompositeExpression(expression);
+ }
+
+ // $url
+ if (expression == UrlExpression.Url)
+ {
+ return new UrlExpression();
+ }
+
+ // $method
+ if (expression == MethodExpression.Method)
+ {
+ return new MethodExpression();
+ }
+
+ // $statusCode
+ if (expression == StatusCodeExpression.StatusCode)
+ {
+ return new StatusCodeExpression();
+ }
+
+ // $request.
+ if (expression.StartsWith(RequestExpression.Request))
+ {
+ var subString = expression.Substring(RequestExpression.Request.Length);
+ var source = SourceExpression.Build(subString);
+ return new RequestExpression(source);
+ }
+
+ // $response.
+ if (expression.StartsWith(ResponseExpression.Response))
+ {
+ var subString = expression.Substring(ResponseExpression.Response.Length);
+ var source = SourceExpression.Build(subString);
+ return new ResponseExpression(source);
+ }
+
+ throw new OpenApiException(string.Format(SRResource.RuntimeExpressionHasInvalidFormat, expression));
+ }
+
+ ///
+ /// GetHashCode implementation for IEquatable.
+ ///
+ public override int GetHashCode()
+ {
+ return Expression.GetHashCode();
+ }
+
+ ///
+ /// Equals implementation for IEquatable.
+ ///
+ public override bool Equals(object obj)
+ {
+ return Equals(obj as RuntimeExpression);
+ }
+
+ ///
+ /// Equals implementation for object of the same type.
+ ///
+ public bool Equals(RuntimeExpression obj)
+ {
+ return obj != null && obj.Expression == Expression;
+ }
+
+ ///
+ public override string ToString()
+ {
+ return Expression;
+ }
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Expressions/SourceExpression.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Expressions/SourceExpression.cs
new file mode 100644
index 000000000000..00a9caa08d4b
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Expressions/SourceExpression.cs
@@ -0,0 +1,80 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Exceptions;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Properties;
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Expressions
+{
+ ///
+ /// Source expression.
+ ///
+ internal abstract class SourceExpression : RuntimeExpression
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The value string.
+ protected SourceExpression(string value)
+ {
+ Value = value;
+ }
+
+ ///
+ /// Gets the expression string.
+ ///
+ protected string Value { get; }
+
+ ///
+ /// Build the source expression from input string.
+ ///
+ /// The source expression.
+ /// The built source expression.
+ public new static SourceExpression Build(string expression)
+ {
+ if (!string.IsNullOrWhiteSpace(expression))
+ {
+ var expressions = expression.Split('.');
+ if (expressions.Length == 2)
+ {
+ if (expression.StartsWith(HeaderExpression.Header))
+ {
+ // header.
+ return new HeaderExpression(expressions[1]);
+ }
+
+ if (expression.StartsWith(QueryExpression.Query))
+ {
+ // query.
+ return new QueryExpression(expressions[1]);
+ }
+
+ if (expression.StartsWith(PathExpression.Path))
+ {
+ // path.
+ return new PathExpression(expressions[1]);
+ }
+ }
+
+ // body
+ if (expression.StartsWith(BodyExpression.Body))
+ {
+ var subString = expression.Substring(BodyExpression.Body.Length);
+ if (string.IsNullOrEmpty(subString))
+ {
+ return new BodyExpression();
+ }
+
+ return new BodyExpression(new(subString));
+ }
+ }
+
+ throw new OpenApiException(string.Format(SRResource.SourceExpressionHasInvalidFormat, expression));
+ }
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Expressions/StatusCodeExpression.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Expressions/StatusCodeExpression.cs
new file mode 100644
index 000000000000..1ad412ec36f7
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Expressions/StatusCodeExpression.cs
@@ -0,0 +1,33 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Expressions
+{
+ ///
+ /// StatusCode expression.
+ ///
+ internal sealed class StatusCodeExpression : RuntimeExpression
+ {
+ ///
+ /// $statusCode string.
+ ///
+ public const string StatusCode = "$statusCode";
+
+ ///
+ /// Gets the expression string.
+ ///
+ public override string Expression => StatusCode;
+
+ ///
+ /// Private constructor.
+ ///
+ public StatusCodeExpression()
+ {
+ }
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Expressions/UrlExpression.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Expressions/UrlExpression.cs
new file mode 100644
index 000000000000..dcb9c66b1a7b
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Expressions/UrlExpression.cs
@@ -0,0 +1,33 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Expressions
+{
+ ///
+ /// Url expression.
+ ///
+ internal sealed class UrlExpression : RuntimeExpression
+ {
+ ///
+ /// $url string.
+ ///
+ public const string Url = "$url";
+
+ ///
+ /// Gets the expression string.
+ ///
+ public override string Expression => Url;
+
+ ///
+ /// Private constructor.
+ ///
+ public UrlExpression()
+ {
+ }
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Extensions/EnumExtensions.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Extensions/EnumExtensions.cs
new file mode 100644
index 000000000000..2f786986ab6a
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Extensions/EnumExtensions.cs
@@ -0,0 +1,70 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+using System;
+using System.Collections.Concurrent;
+using System.Diagnostics.CodeAnalysis;
+using System.Linq;
+using System.Reflection;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Attributes;
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Extensions
+{
+ ///
+ /// Enumeration type extension methods.
+ ///
+ internal static class EnumExtensions
+ {
+ // Cache to store display names of enum values
+ private static readonly ConcurrentDictionary DisplayNameCache = new();
+
+ ///
+ /// Gets an attribute on an enum field value.
+ ///
+ /// The type of the attribute to retrieve.
+ /// The enum value.
+ ///
+ /// The attribute of the specified type or null.
+ ///
+ [UnconditionalSuppressMessage("Trimming", "IL2075", Justification = "Fields are never trimmed for enum types.")]
+ public static T GetAttributeOfType(this Enum enumValue) where T : Attribute
+ {
+ var type = enumValue.GetType();
+ // Use GetField to get the field info for the enum value
+ var memInfo = type.GetField(enumValue.ToString(), BindingFlags.Public | BindingFlags.Static);
+
+ if (memInfo == null)
+ return null;
+
+ // Retrieve the custom attributes of type T
+ var attributes = memInfo.GetCustomAttributes(false);
+ return attributes.FirstOrDefault();
+ }
+
+ ///
+ /// Gets the enum display name.
+ ///
+ /// The enum value.
+ ///
+ /// Use if it exists.
+ /// Otherwise, use the standard string representation.
+ ///
+ public static string GetDisplayName(this Enum enumValue)
+ {
+ // Retrieve the display name from the cache if it exists
+ return DisplayNameCache.GetOrAdd(enumValue, e =>
+ {
+ // Get the DisplayAttribute
+ var attribute = e.GetAttributeOfType();
+
+ // Return the DisplayAttribute name if it exists, otherwise return the enum's string representation
+ return attribute == null ? e.ToString() : attribute.Name;
+ });
+ }
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Extensions/OpenAPIWriterExtensions.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Extensions/OpenAPIWriterExtensions.cs
new file mode 100644
index 000000000000..6224669355ed
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Extensions/OpenAPIWriterExtensions.cs
@@ -0,0 +1,26 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Writers;
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi
+{
+ internal static class OpenAPIWriterExtensions
+ {
+ ///
+ /// Temporary extension method until we add Settings property to IOpenApiWriter in next major version
+ ///
+ ///
+ ///
+ internal static OpenApiWriterSettings GetSettings(this IOpenApiWriter openApiWriter)
+ {
+ if (openApiWriter is OpenApiWriterBase @base)
+ {
+ return @base.Settings;
+ }
+ return new();
+ }
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Extensions/OpenApiExtensibleExtensions.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Extensions/OpenApiExtensibleExtensions.cs
new file mode 100644
index 000000000000..6d0500d0cb14
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Extensions/OpenApiExtensibleExtensions.cs
@@ -0,0 +1,42 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Exceptions;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Interfaces;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Models;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Properties;
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Extensions
+{
+ ///
+ /// Extension methods to verify validity and add an extension to Extensions property.
+ ///
+ internal static class OpenApiExtensibleExtensions
+ {
+ ///
+ /// Add extension into the Extensions
+ ///
+ /// .
+ /// The extensible Open API element.
+ /// The extension name.
+ /// The extension value.
+ public static void AddExtension(this T element, string name, IOpenApiExtension any)
+ where T : IOpenApiExtensible
+ {
+ Utils.CheckArgumentNull(element);
+ Utils.CheckArgumentNullOrEmpty(name);
+
+ if (!name.StartsWith(OpenApiConstants.ExtensionFieldNamePrefix))
+ {
+ throw new OpenApiException(string.Format(SRResource.ExtensionFieldNameMustBeginWithXDash, name));
+ }
+
+ element.Extensions[name] = Utils.CheckArgumentNull(any);
+ }
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Extensions/OpenApiReferencableExtensions.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Extensions/OpenApiReferencableExtensions.cs
new file mode 100644
index 000000000000..514b0b595bb5
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Extensions/OpenApiReferencableExtensions.cs
@@ -0,0 +1,110 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+using System.Collections.Generic;
+using System.Linq;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Exceptions;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Interfaces;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Models;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Properties;
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Extensions
+{
+ ///
+ /// Extension methods for resolving references on elements.
+ ///
+ internal static class OpenApiReferencableExtensions
+ {
+ ///
+ /// Resolves a JSON Pointer with respect to an element, returning the referenced element.
+ ///
+ /// The referencable Open API element on which to apply the JSON pointer
+ /// a JSON Pointer [RFC 6901](https://tools.ietf.org/html/rfc6901).
+ /// The element pointed to by the JSON pointer.
+ public static IOpenApiReferenceable ResolveReference(this IOpenApiReferenceable element, JsonPointer pointer)
+ {
+ if (!pointer.Tokens.Any())
+ {
+ return element;
+ }
+ var propertyName = pointer.Tokens.FirstOrDefault();
+ var mapKey = pointer.Tokens.ElementAtOrDefault(1);
+ try
+ {
+ if (element is OpenApiHeader header)
+ {
+ return ResolveReferenceOnHeaderElement(header, propertyName, mapKey, pointer);
+ }
+ if (element is OpenApiParameter parameter)
+ {
+ return ResolveReferenceOnParameterElement(parameter, propertyName, mapKey, pointer);
+ }
+ if (element is OpenApiResponse response)
+ {
+ return ResolveReferenceOnResponseElement(response, propertyName, mapKey, pointer);
+ }
+ }
+ catch (KeyNotFoundException)
+ {
+ throw new OpenApiException(string.Format(SRResource.InvalidReferenceId, pointer));
+ }
+ throw new OpenApiException(string.Format(SRResource.InvalidReferenceId, pointer));
+ }
+
+ private static IOpenApiReferenceable ResolveReferenceOnHeaderElement(
+ OpenApiHeader headerElement,
+ string propertyName,
+ string mapKey,
+ JsonPointer pointer)
+ {
+ switch (propertyName)
+ {
+ case OpenApiConstants.Schema:
+ return headerElement.Schema;
+ case OpenApiConstants.Examples when mapKey != null:
+ return headerElement.Examples[mapKey];
+ default:
+ throw new OpenApiException(string.Format(SRResource.InvalidReferenceId, pointer));
+ }
+ }
+
+ private static IOpenApiReferenceable ResolveReferenceOnParameterElement(
+ OpenApiParameter parameterElement,
+ string propertyName,
+ string mapKey,
+ JsonPointer pointer)
+ {
+ switch (propertyName)
+ {
+ case OpenApiConstants.Schema:
+ return parameterElement.Schema;
+ case OpenApiConstants.Examples when mapKey != null:
+ return parameterElement.Examples[mapKey];
+ default:
+ throw new OpenApiException(string.Format(SRResource.InvalidReferenceId, pointer));
+ }
+ }
+
+ private static IOpenApiReferenceable ResolveReferenceOnResponseElement(
+ OpenApiResponse responseElement,
+ string propertyName,
+ string mapKey,
+ JsonPointer pointer)
+ {
+ switch (propertyName)
+ {
+ case OpenApiConstants.Headers when mapKey != null:
+ return responseElement.Headers[mapKey];
+ case OpenApiConstants.Links when mapKey != null:
+ return responseElement.Links[mapKey];
+ default:
+ throw new OpenApiException(string.Format(SRResource.InvalidReferenceId, pointer));
+ }
+ }
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Extensions/OpenApiServerExtensions.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Extensions/OpenApiServerExtensions.cs
new file mode 100644
index 000000000000..d62536d1c7c3
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Extensions/OpenApiServerExtensions.cs
@@ -0,0 +1,62 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+using System;
+using System.Collections.Generic;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Models;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Properties;
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Extensions;
+
+///
+/// Extension methods for serialization.
+///
+internal static class OpenApiServerExtensions
+{
+ ///
+ /// Replaces URL variables in a server's URL
+ ///
+ /// The OpenAPI server object
+ /// The server variable values that will be used to replace the default values.
+ /// A URL with the provided variables substituted.
+ ///
+ /// Thrown when:
+ /// 1. A substitution has no valid value in both the supplied dictionary and the default
+ /// 2. A substitution's value is not available in the enum provided
+ ///
+ public static string ReplaceServerUrlVariables(this OpenApiServer server, IDictionary values = null)
+ {
+ var parsedUrl = server.Url;
+ foreach (var variable in server.Variables)
+ {
+ // Try to get the value from the provided values
+ if (values is not { } v || !v.TryGetValue(variable.Key, out var value) || string.IsNullOrEmpty(value))
+ {
+ // Fall back to the default value
+ value = variable.Value.Default;
+ }
+
+ // Validate value
+ if (string.IsNullOrEmpty(value))
+ {
+ // According to the spec, the variable's default value is required.
+ // This code path should be hit when a value isn't provided & a default value isn't available
+ throw new ArgumentException(
+ string.Format(SRResource.ParseServerUrlDefaultValueNotAvailable, variable.Key), nameof(server));
+ }
+
+ // If an enum is provided, the array should not be empty & the value should exist in the enum
+ if (variable.Value.Enum is {} e && (e.Count == 0 || !e.Contains(value)))
+ {
+ throw new ArgumentException(
+ string.Format(SRResource.ParseServerUrlValueNotValid, value, variable.Key), nameof(values));
+ }
+
+ parsedUrl = parsedUrl.Replace($"{{{variable.Key}}}", value);
+ }
+
+ return parsedUrl;
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Extensions/StringExtensions.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Extensions/StringExtensions.cs
new file mode 100644
index 000000000000..31baf9bc2b67
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Extensions/StringExtensions.cs
@@ -0,0 +1,47 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+using System;
+using System.Diagnostics.CodeAnalysis;
+using System.Reflection;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Attributes;
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Extensions
+{
+ ///
+ /// String extension methods.
+ ///
+ internal static class StringExtensions
+ {
+ ///
+ /// Gets the enum value based on the given enum type and display name.
+ ///
+ /// The display name.
+ public static T GetEnumFromDisplayName<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields)] T>(this string displayName)
+ {
+ var type = typeof(T);
+ if (!type.IsEnum)
+ {
+ return default;
+ }
+
+ foreach (var field in type.GetFields(BindingFlags.Public | BindingFlags.Static))
+ {
+ var displayAttribute = (DisplayAttribute)field.GetCustomAttribute(typeof(DisplayAttribute));
+ if (displayAttribute != null && displayAttribute.Name == displayName)
+ {
+ return (T)field.GetValue(null);
+ }
+ }
+
+ return default;
+ }
+ internal static string ToFirstCharacterLowerCase(this string input)
+ => string.IsNullOrEmpty(input) ? string.Empty : char.ToLowerInvariant(input[0]) + input.Substring(1);
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Interfaces/IEffective.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Interfaces/IEffective.cs
new file mode 100644
index 000000000000..18f9db6a919b
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Interfaces/IEffective.cs
@@ -0,0 +1,28 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Models;
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Interfaces
+{
+ ///
+ /// OpenApiElements that implement IEffective indicate that their description is not self-contained.
+ /// External elements affect the effective description.
+ ///
+ /// Currently this will only be used for accessing external references.
+ /// In the next major version, this will be the approach accessing all referenced elements.
+ /// This will enable us to support merging properties that are peers of the $ref
+ /// Type of OpenApi Element that is being referenced.
+ internal interface IEffective where T : class,IOpenApiElement
+ {
+ ///
+ /// Returns a calculated and cloned version of the element.
+ ///
+ T GetEffective(OpenApiDocument document);
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Interfaces/IOpenApiAnnotatable.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Interfaces/IOpenApiAnnotatable.cs
new file mode 100644
index 000000000000..4b4bf23cd5cf
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Interfaces/IOpenApiAnnotatable.cs
@@ -0,0 +1,24 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+using System.Collections.Generic;
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Interfaces
+{
+ ///
+ /// Represents an Open API element that can be annotated with
+ /// non-serializable properties in a property bag.
+ ///
+ internal interface IOpenApiAnnotatable
+ {
+ ///
+ /// A collection of properties associated with the current OpenAPI element.
+ ///
+ IDictionary Annotations { get; set; }
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Interfaces/IOpenApiElement.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Interfaces/IOpenApiElement.cs
new file mode 100644
index 000000000000..c1d7c75a5a76
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Interfaces/IOpenApiElement.cs
@@ -0,0 +1,17 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Interfaces
+{
+ ///
+ /// Represents an Open API element.
+ ///
+ internal interface IOpenApiElement
+ {
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Interfaces/IOpenApiExtensible.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Interfaces/IOpenApiExtensible.cs
new file mode 100644
index 000000000000..b518aa751223
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Interfaces/IOpenApiExtensible.cs
@@ -0,0 +1,23 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+using System.Collections.Generic;
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Interfaces
+{
+ ///
+ /// Represents an Extensible Open API element.
+ ///
+ internal interface IOpenApiExtensible : IOpenApiElement
+ {
+ ///
+ /// Specification extensions.
+ ///
+ IDictionary Extensions { get; set; }
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Interfaces/IOpenApiExtension.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Interfaces/IOpenApiExtension.cs
new file mode 100644
index 000000000000..217a75d2cd08
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Interfaces/IOpenApiExtension.cs
@@ -0,0 +1,25 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Writers;
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Interfaces
+{
+ ///
+ /// Interface required for implementing any custom extension
+ ///
+ internal interface IOpenApiExtension
+ {
+ ///
+ /// Write out contents of custom extension
+ ///
+ ///
+ /// Version of the OpenAPI specification that that will be output.
+ void Write(IOpenApiWriter writer, OpenApiSpecVersion specVersion);
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Interfaces/IOpenApiReferenceable.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Interfaces/IOpenApiReferenceable.cs
new file mode 100644
index 000000000000..2e14765c8769
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Interfaces/IOpenApiReferenceable.cs
@@ -0,0 +1,40 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Models;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Writers;
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Interfaces
+{
+ ///
+ /// Represents an Open API element is referenceable.
+ ///
+ internal interface IOpenApiReferenceable : IOpenApiSerializable
+ {
+ ///
+ /// Indicates if object is populated with data or is just a reference to the data
+ ///
+ bool UnresolvedReference { get; set; }
+
+ ///
+ /// Reference object.
+ ///
+ OpenApiReference Reference { get; set; }
+
+ ///
+ /// Serialize to OpenAPI V3 document without using reference.
+ ///
+ void SerializeAsV3WithoutReference(IOpenApiWriter writer);
+
+ ///
+ /// Serialize to OpenAPI V2 document without using reference.
+ ///
+ void SerializeAsV2WithoutReference(IOpenApiWriter writer);
+
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Interfaces/IOpenApiSerializable.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Interfaces/IOpenApiSerializable.cs
new file mode 100644
index 000000000000..e124bcbfae43
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Interfaces/IOpenApiSerializable.cs
@@ -0,0 +1,30 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Writers;
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Interfaces
+{
+ ///
+ /// Represents an Open API element that comes with serialization functionality.
+ ///
+ internal interface IOpenApiSerializable : IOpenApiElement
+ {
+ ///
+ /// Serialize Open API element to v3.0.
+ ///
+ /// The writer.
+ void SerializeAsV3(IOpenApiWriter writer);
+
+ ///
+ /// Serialize Open API element to v2.0.
+ ///
+ /// The writer.
+ void SerializeAsV2(IOpenApiWriter writer);
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/JsonPointer.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/JsonPointer.cs
new file mode 100644
index 000000000000..83647c18ff19
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/JsonPointer.cs
@@ -0,0 +1,76 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+using System;
+using System.Linq;
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi
+{
+ ///
+ /// JSON pointer.
+ ///
+ internal class JsonPointer
+ {
+ ///
+ /// Initializes the class.
+ ///
+ /// Pointer as string.
+ public JsonPointer(string pointer)
+ {
+ Tokens = string.IsNullOrEmpty(pointer) || pointer == "/"
+ ? new string[0]
+ : pointer.Split('/').Skip(1).Select(Decode).ToArray();
+ }
+
+ ///
+ /// Initializes the class.
+ ///
+ /// Pointer as tokenized string.
+ private JsonPointer(string[] tokens)
+ {
+ Tokens = tokens;
+ }
+
+ ///
+ /// Tokens.
+ ///
+ public string[] Tokens { get; }
+
+ ///
+ /// Gets the parent pointer.
+ ///
+ public JsonPointer ParentPointer
+ {
+ get
+ {
+ if (Tokens.Length == 0)
+ {
+ return null;
+ }
+
+ return new(Tokens.Take(Tokens.Length - 1).ToArray());
+ }
+ }
+
+ ///
+ /// Decode the string.
+ ///
+ private string Decode(string token)
+ {
+ return Uri.UnescapeDataString(token).Replace("~1", "/").Replace("~0", "~");
+ }
+
+ ///
+ /// Gets the string representation of this JSON pointer.
+ ///
+ public override string ToString()
+ {
+ return "/" + string.Join("/", Tokens);
+ }
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Microsoft.OpenApi.csproj.txt b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Microsoft.OpenApi.csproj.txt
new file mode 100644
index 000000000000..9eacf3c170f6
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Microsoft.OpenApi.csproj.txt
@@ -0,0 +1,45 @@
+
+
+ netstandard2.0
+ Latest
+ true
+ 1.6.23
+ .NET models with JSON and YAML writers for OpenAPI specification
+ true
+
+ true
+ NU5048
+ README.md
+
+
+
+ bin\$(Configuration)\$(TargetFramework)\Microsoft.OpenApi.xml
+ ..\Microsoft.OpenApi.snk
+
+
+
+
+ True
+ True
+ SRResource.resx
+
+
+
+
+
+ ResXFileCodeGenerator
+ SRResource.Designer.cs
+
+
+
+
+
+
+
+
+
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+
+
+
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiCallback.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiCallback.cs
new file mode 100644
index 000000000000..7fe319028a6f
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiCallback.cs
@@ -0,0 +1,154 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+using System.Collections.Generic;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Expressions;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Interfaces;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Writers;
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Models
+{
+ ///
+ /// Callback Object: A map of possible out-of band callbacks related to the parent operation.
+ ///
+ internal class OpenApiCallback : IOpenApiReferenceable, IOpenApiExtensible, IEffective
+ {
+ ///
+ /// A Path Item Object used to define a callback request and expected responses.
+ ///
+ public Dictionary PathItems { get; set; }
+ = new();
+
+ ///
+ /// Indicates if object is populated with data or is just a reference to the data
+ ///
+ public bool UnresolvedReference { get; set; }
+
+ ///
+ /// Reference pointer.
+ ///
+ public OpenApiReference Reference { get; set; }
+
+ ///
+ /// This object MAY be extended with Specification Extensions.
+ ///
+ public IDictionary Extensions { get; set; } = new Dictionary();
+
+ ///
+ /// Parameter-less constructor
+ ///
+ public OpenApiCallback() { }
+
+ ///
+ /// Initializes a copy of an object
+ ///
+ public OpenApiCallback(OpenApiCallback callback)
+ {
+ PathItems = callback?.PathItems != null ? new(callback?.PathItems) : null;
+ UnresolvedReference = callback?.UnresolvedReference ?? UnresolvedReference;
+ Reference = callback?.Reference != null ? new(callback?.Reference) : null;
+ Extensions = callback?.Extensions != null ? new Dictionary(callback.Extensions) : null;
+ }
+
+ ///
+ /// Add a into the .
+ ///
+ /// The runtime expression.
+ /// The path item.
+ public void AddPathItem(RuntimeExpression expression, OpenApiPathItem pathItem)
+ {
+ Utils.CheckArgumentNull(expression);
+ Utils.CheckArgumentNull(pathItem);
+
+ if (PathItems == null)
+ {
+ PathItems = new();
+ }
+
+ PathItems.Add(expression, pathItem);
+ }
+
+ ///
+ /// Serialize to Open Api v3.0
+ ///
+ public void SerializeAsV3(IOpenApiWriter writer)
+ {
+ Utils.CheckArgumentNull(writer);
+
+ var target = this;
+
+ if (Reference != null)
+ {
+ if (!writer.GetSettings().ShouldInlineReference(Reference))
+ {
+ Reference.SerializeAsV3(writer);
+ return;
+ }
+ else
+ {
+ target = GetEffective(Reference.HostDocument);
+ }
+ }
+ target.SerializeAsV3WithoutReference(writer);
+ }
+
+ ///
+ /// Returns an effective OpenApiCallback object based on the presence of a $ref
+ ///
+ /// The host OpenApiDocument that contains the reference.
+ /// OpenApiCallback
+ public OpenApiCallback GetEffective(OpenApiDocument doc)
+ {
+ if (this.Reference != null)
+ {
+ return doc.ResolveReferenceTo(this.Reference);
+ }
+ else
+ {
+ return this;
+ }
+ }
+
+ ///
+ /// Serialize to OpenAPI V3 document without using reference.
+ ///
+
+ public void SerializeAsV3WithoutReference(IOpenApiWriter writer)
+ {
+ writer.WriteStartObject();
+
+ // path items
+ foreach (var item in PathItems)
+ {
+ writer.WriteRequiredObject(item.Key.Expression, item.Value, (w, p) => p.SerializeAsV3(w));
+ }
+
+ // extensions
+ writer.WriteExtensions(Extensions, OpenApiSpecVersion.OpenApi3_0);
+
+ writer.WriteEndObject();
+ }
+
+ ///
+ /// Serialize to Open Api v2.0
+ ///
+ public void SerializeAsV2(IOpenApiWriter writer)
+ {
+ // Callback object does not exist in V2.
+ }
+
+ ///
+ /// Serialize to OpenAPI V2 document without using reference.
+ ///
+
+ public void SerializeAsV2WithoutReference(IOpenApiWriter writer)
+ {
+ // Callback object does not exist in V2.
+ }
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiComponents.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiComponents.cs
new file mode 100644
index 000000000000..ff74fa27beee
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiComponents.cs
@@ -0,0 +1,295 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+using System.Collections.Generic;
+using System.Linq;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Interfaces;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Writers;
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Models
+{
+ ///
+ /// Components Object.
+ ///
+ internal class OpenApiComponents : IOpenApiSerializable, IOpenApiExtensible
+ {
+ ///
+ /// An object to hold reusable Objects.
+ ///
+ public IDictionary Schemas { get; set; } = new Dictionary();
+
+ ///
+ /// An object to hold reusable Objects.
+ ///
+ public IDictionary Responses { get; set; } = new Dictionary();
+
+ ///
+ /// An object to hold reusable Objects.
+ ///
+ public IDictionary Parameters { get; set; } =
+ new Dictionary();
+
+ ///
+ /// An object to hold reusable Objects.
+ ///
+ public IDictionary Examples { get; set; } = new Dictionary();
+
+ ///
+ /// An object to hold reusable Objects.
+ ///
+ public IDictionary RequestBodies { get; set; } =
+ new Dictionary();
+
+ ///
+ /// An object to hold reusable Objects.
+ ///
+ public IDictionary Headers { get; set; } = new Dictionary();
+
+ ///
+ /// An object to hold reusable Objects.
+ ///
+ public IDictionary SecuritySchemes { get; set; } =
+ new Dictionary();
+
+ ///
+ /// An object to hold reusable Objects.
+ ///
+ public IDictionary Links { get; set; } = new Dictionary();
+
+ ///
+ /// An object to hold reusable Objects.
+ ///
+ public IDictionary Callbacks { get; set; } = new Dictionary();
+
+ ///
+ /// This object MAY be extended with Specification Extensions.
+ ///
+ public IDictionary Extensions { get; set; } = new Dictionary();
+
+ ///
+ /// Parameter-less constructor
+ ///
+ public OpenApiComponents() { }
+
+ ///
+ /// Initializes a copy of an object
+ ///
+ public OpenApiComponents(OpenApiComponents components)
+ {
+ Schemas = components?.Schemas != null ? new Dictionary(components.Schemas) : null;
+ Responses = components?.Responses != null ? new Dictionary(components.Responses) : null;
+ Parameters = components?.Parameters != null ? new Dictionary(components.Parameters) : null;
+ Examples = components?.Examples != null ? new Dictionary(components.Examples) : null;
+ RequestBodies = components?.RequestBodies != null ? new Dictionary(components.RequestBodies) : null;
+ Headers = components?.Headers != null ? new Dictionary(components.Headers) : null;
+ SecuritySchemes = components?.SecuritySchemes != null ? new Dictionary(components.SecuritySchemes) : null;
+ Links = components?.Links != null ? new Dictionary(components.Links) : null;
+ Callbacks = components?.Callbacks != null ? new Dictionary(components.Callbacks) : null;
+ Extensions = components?.Extensions != null ? new Dictionary(components.Extensions) : null;
+ }
+
+ ///
+ /// Serialize to Open Api v3.0.
+ ///
+ public void SerializeAsV3(IOpenApiWriter writer)
+ {
+ Utils.CheckArgumentNull(writer);
+
+ // If references have been inlined we don't need the to render the components section
+ // however if they have cycles, then we will need a component rendered
+ if (writer.GetSettings().InlineLocalReferences)
+ {
+ var loops = writer.GetSettings().LoopDetector.Loops;
+ writer.WriteStartObject();
+ if (loops.TryGetValue(typeof(OpenApiSchema), out var schemas))
+ {
+ var openApiSchemas = schemas.Cast().Distinct().ToList()
+ .ToDictionary(k => k.Reference.Id);
+
+ writer.WriteOptionalMap(
+ OpenApiConstants.Schemas,
+ Schemas,
+ (w, _, component) => component.SerializeAsV3WithoutReference(w));
+ }
+ writer.WriteEndObject();
+ return;
+ }
+
+ writer.WriteStartObject();
+
+ // Serialize each referenceable object as full object without reference if the reference in the object points to itself.
+ // If the reference exists but points to other objects, the object is serialized to just that reference.
+
+ // schemas
+ writer.WriteOptionalMap(
+ OpenApiConstants.Schemas,
+ Schemas,
+ (w, key, component) =>
+ {
+ if (component.Reference is {Type: ReferenceType.Schema} &&
+ component.Reference.Id == key)
+ {
+ component.SerializeAsV3WithoutReference(w);
+ }
+ else
+ {
+ component.SerializeAsV3(w);
+ }
+ });
+
+ // responses
+ writer.WriteOptionalMap(
+ OpenApiConstants.Responses,
+ Responses,
+ (w, key, component) =>
+ {
+ if (component.Reference is {Type: ReferenceType.Response} &&
+ component.Reference.Id == key)
+ {
+ component.SerializeAsV3WithoutReference(w);
+ }
+ else
+ {
+ component.SerializeAsV3(w);
+ }
+ });
+
+ // parameters
+ writer.WriteOptionalMap(
+ OpenApiConstants.Parameters,
+ Parameters,
+ (w, key, component) =>
+ {
+ if (component.Reference is {Type: ReferenceType.Parameter} &&
+ component.Reference.Id == key)
+ {
+ component.SerializeAsV3WithoutReference(w);
+ }
+ else
+ {
+ component.SerializeAsV3(w);
+ }
+ });
+
+ // examples
+ writer.WriteOptionalMap(
+ OpenApiConstants.Examples,
+ Examples,
+ (w, key, component) =>
+ {
+ if (component.Reference is {Type: ReferenceType.Example} &&
+ component.Reference.Id == key)
+ {
+ component.SerializeAsV3WithoutReference(w);
+ }
+ else
+ {
+ component.SerializeAsV3(w);
+ }
+ });
+
+ // requestBodies
+ writer.WriteOptionalMap(
+ OpenApiConstants.RequestBodies,
+ RequestBodies,
+ (w, key, component) =>
+ {
+ if (component.Reference is {Type: ReferenceType.RequestBody} &&
+ component.Reference.Id == key)
+ {
+ component.SerializeAsV3WithoutReference(w);
+ }
+ else
+ {
+ component.SerializeAsV3(w);
+ }
+ });
+
+ // headers
+ writer.WriteOptionalMap(
+ OpenApiConstants.Headers,
+ Headers,
+ (w, key, component) =>
+ {
+ if (component.Reference is {Type: ReferenceType.Header} &&
+ component.Reference.Id == key)
+ {
+ component.SerializeAsV3WithoutReference(w);
+ }
+ else
+ {
+ component.SerializeAsV3(w);
+ }
+ });
+
+ // securitySchemes
+ writer.WriteOptionalMap(
+ OpenApiConstants.SecuritySchemes,
+ SecuritySchemes,
+ (w, key, component) =>
+ {
+ if (component.Reference is {Type: ReferenceType.SecurityScheme} &&
+ component.Reference.Id == key)
+ {
+ component.SerializeAsV3WithoutReference(w);
+ }
+ else
+ {
+ component.SerializeAsV3(w);
+ }
+ });
+
+ // links
+ writer.WriteOptionalMap(
+ OpenApiConstants.Links,
+ Links,
+ (w, key, component) =>
+ {
+ if (component.Reference is {Type: ReferenceType.Link} &&
+ component.Reference.Id == key)
+ {
+ component.SerializeAsV3WithoutReference(w);
+ }
+ else
+ {
+ component.SerializeAsV3(w);
+ }
+ });
+
+ // callbacks
+ writer.WriteOptionalMap(
+ OpenApiConstants.Callbacks,
+ Callbacks,
+ (w, key, component) =>
+ {
+ if (component.Reference is {Type: ReferenceType.Callback} &&
+ component.Reference.Id == key)
+ {
+ component.SerializeAsV3WithoutReference(w);
+ }
+ else
+ {
+ component.SerializeAsV3(w);
+ }
+ });
+
+ // extensions
+ writer.WriteExtensions(Extensions, OpenApiSpecVersion.OpenApi3_0);
+
+ writer.WriteEndObject();
+ }
+
+ ///
+ /// Serialize to Open Api v2.0.
+ ///
+ public void SerializeAsV2(IOpenApiWriter writer)
+ {
+ // Components object does not exist in V2.
+ }
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiConstants.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiConstants.cs
new file mode 100644
index 000000000000..d12c84d3d273
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiConstants.cs
@@ -0,0 +1,652 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+using System;
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Models
+{
+ ///
+ /// Constants used in the Open API document.
+ ///
+ internal static class OpenApiConstants
+ {
+ ///
+ /// Field: OpenApi
+ ///
+ public const string OpenApi = "openapi";
+
+ ///
+ /// Field: Info
+ ///
+ public const string Info = "info";
+
+ ///
+ /// Field: Title
+ ///
+ public const string Title = "title";
+
+ ///
+ /// Field: Type
+ ///
+ public const string Type = "type";
+
+ ///
+ /// Field: Format
+ ///
+ public const string Format = "format";
+
+ ///
+ /// Field: Version
+ ///
+ public const string Version = "version";
+
+ ///
+ /// Field: Contact
+ ///
+ public const string Contact = "contact";
+
+ ///
+ /// Field: License
+ ///
+ public const string License = "license";
+
+ ///
+ /// Field: TermsOfService
+ ///
+ public const string TermsOfService = "termsOfService";
+
+ ///
+ /// Field: Servers
+ ///
+ public const string Servers = "servers";
+
+ ///
+ /// Field: Server
+ ///
+ public const string Server = "server";
+
+ ///
+ /// Field: Paths
+ ///
+ public const string Paths = "paths";
+
+ ///
+ /// Field: Components
+ ///
+ public const string Components = "components";
+
+ ///
+ /// Field: Security
+ ///
+ public const string Security = "security";
+
+ ///
+ /// Field: Tags
+ ///
+ public const string Tags = "tags";
+
+ ///
+ /// Field: ExternalDocs
+ ///
+ public const string ExternalDocs = "externalDocs";
+
+ ///
+ /// Field: OperationRef
+ ///
+ public const string OperationRef = "operationRef";
+
+ ///
+ /// Field: OperationId
+ ///
+ public const string OperationId = "operationId";
+
+ ///
+ /// Field: Parameters
+ ///
+ public const string Parameters = "parameters";
+
+ ///
+ /// Field: RequestBody
+ ///
+ public const string RequestBody = "requestBody";
+
+ ///
+ /// Field: ExtensionFieldNamePrefix
+ ///
+ public const string ExtensionFieldNamePrefix = "x-";
+
+ ///
+ /// Field: Name
+ ///
+ public const string Name = "name";
+
+ ///
+ /// Field: Namespace
+ ///
+ public const string Namespace = "namespace";
+
+ ///
+ /// Field: Prefix
+ ///
+ public const string Prefix = "prefix";
+
+ ///
+ /// Field: Attribute
+ ///
+ public const string Attribute = "attribute";
+
+ ///
+ /// Field: Wrapped
+ ///
+ public const string Wrapped = "wrapped";
+
+ ///
+ /// Field: In
+ ///
+ public const string In = "in";
+
+ ///
+ /// Field: Summary
+ ///
+ public const string Summary = "summary";
+
+ ///
+ /// Field: Variables
+ ///
+ public const string Variables = "variables";
+
+ ///
+ /// Field: Description
+ ///
+ public const string Description = "description";
+
+ ///
+ /// Field: Required
+ ///
+ public const string Required = "required";
+
+ ///
+ /// Field: Deprecated
+ ///
+ public const string Deprecated = "deprecated";
+
+ ///
+ /// Field: Style
+ ///
+ public const string Style = "style";
+
+ ///
+ /// Field: Explode
+ ///
+ public const string Explode = "explode";
+
+ ///
+ /// Field: AllowReserved
+ ///
+ public const string AllowReserved = "allowReserved";
+
+ ///
+ /// Field: Schema
+ ///
+ public const string Schema = "schema";
+
+ ///
+ /// Field: Schemas
+ ///
+ public const string Schemas = "schemas";
+
+ ///
+ /// Field: Responses
+ ///
+ public const string Responses = "responses";
+
+ ///
+ /// Field: Example
+ ///
+ public const string Example = "example";
+
+ ///
+ /// Field: Examples
+ ///
+ public const string Examples = "examples";
+
+ ///
+ /// Field: Encoding
+ ///
+ public const string Encoding = "encoding";
+
+ ///
+ /// Field: RequestBodies
+ ///
+ public const string RequestBodies = "requestBodies";
+
+ ///
+ /// Field: AllowEmptyValue
+ ///
+ public const string AllowEmptyValue = "allowEmptyValue";
+
+ ///
+ /// Field: Value
+ ///
+ public const string Value = "value";
+
+ ///
+ /// Field: ExternalValue
+ ///
+ public const string ExternalValue = "externalValue";
+
+ ///
+ /// Field: DollarRef
+ ///
+ public const string DollarRef = "$ref";
+
+ ///
+ /// Field: Headers
+ ///
+ public const string Headers = "headers";
+
+ ///
+ /// Field: SecuritySchemes
+ ///
+ public const string SecuritySchemes = "securitySchemes";
+
+ ///
+ /// Field: Content
+ ///
+ public const string Content = "content";
+
+ ///
+ /// Field: Links
+ ///
+ public const string Links = "links";
+
+ ///
+ /// Field: Callbacks
+ ///
+ public const string Callbacks = "callbacks";
+
+ ///
+ /// Field: Url
+ ///
+ public const string Url = "url";
+
+ ///
+ /// Field: Email
+ ///
+ public const string Email = "email";
+
+ ///
+ /// Field: Default
+ ///
+ public const string Default = "default";
+
+ ///
+ /// Field: Enum
+ ///
+ public const string Enum = "enum";
+
+ ///
+ /// Field: MultipleOf
+ ///
+ public const string MultipleOf = "multipleOf";
+
+ ///
+ /// Field: Maximum
+ ///
+ public const string Maximum = "maximum";
+
+ ///
+ /// Field: ExclusiveMaximum
+ ///
+ public const string ExclusiveMaximum = "exclusiveMaximum";
+
+ ///
+ /// Field: Minimum
+ ///
+ public const string Minimum = "minimum";
+
+ ///
+ /// Field: ExclusiveMinimum
+ ///
+ public const string ExclusiveMinimum = "exclusiveMinimum";
+
+ ///
+ /// Field: MaxLength
+ ///
+ public const string MaxLength = "maxLength";
+
+ ///
+ /// Field: MinLength
+ ///
+ public const string MinLength = "minLength";
+
+ ///
+ /// Field: Pattern
+ ///
+ public const string Pattern = "pattern";
+
+ ///
+ /// Field: MaxItems
+ ///
+ public const string MaxItems = "maxItems";
+
+ ///
+ /// Field: MinItems
+ ///
+ public const string MinItems = "minItems";
+
+ ///
+ /// Field: UniqueItems
+ ///
+ public const string UniqueItems = "uniqueItems";
+
+ ///
+ /// Field: MaxProperties
+ ///
+ public const string MaxProperties = "maxProperties";
+
+ ///
+ /// Field: MinProperties
+ ///
+ public const string MinProperties = "minProperties";
+
+ ///
+ /// Field: AllOf
+ ///
+ public const string AllOf = "allOf";
+
+ ///
+ /// Field: OneOf
+ ///
+ public const string OneOf = "oneOf";
+
+ ///
+ /// Field: AnyOf
+ ///
+ public const string AnyOf = "anyOf";
+
+ ///
+ /// Field: Not
+ ///
+ public const string Not = "not";
+
+ ///
+ /// Field: Items
+ ///
+ public const string Items = "items";
+
+ ///
+ /// Field: Properties
+ ///
+ public const string Properties = "properties";
+
+ ///
+ /// Field: AdditionalProperties
+ ///
+ public const string AdditionalProperties = "additionalProperties";
+
+ ///
+ /// Field: Nullable
+ ///
+ public const string Nullable = "nullable";
+
+ ///
+ /// Field: Discriminator
+ ///
+ public const string Discriminator = "discriminator";
+
+ ///
+ /// Field: ReadOnly
+ ///
+ public const string ReadOnly = "readOnly";
+
+ ///
+ /// Field: WriteOnly
+ ///
+ public const string WriteOnly = "writeOnly";
+
+ ///
+ /// Field: Xml
+ ///
+ public const string Xml = "xml";
+
+ ///
+ /// Field: Flow
+ ///
+ public const string Flow = "flow";
+
+ ///
+ /// Field: Application
+ ///
+ public const string Application = "application";
+
+ ///
+ /// Field: AccessCode
+ ///
+ public const string AccessCode = "accessCode";
+
+ ///
+ /// Field: Implicit
+ ///
+ public const string Implicit = "implicit";
+
+ ///
+ /// Field: Password
+ ///
+ public const string Password = "password";
+
+ ///
+ /// Field: ClientCredentials
+ ///
+ public const string ClientCredentials = "clientCredentials";
+
+ ///
+ /// Field: AuthorizationCode
+ ///
+ public const string AuthorizationCode = "authorizationCode";
+
+ ///
+ /// Field: AuthorizationUrl
+ ///
+ public const string AuthorizationUrl = "authorizationUrl";
+
+ ///
+ /// Field: TokenUrl
+ ///
+ public const string TokenUrl = "tokenUrl";
+
+ ///
+ /// Field: RefreshUrl
+ ///
+ public const string RefreshUrl = "refreshUrl";
+
+ ///
+ /// Field: Scopes
+ ///
+ public const string Scopes = "scopes";
+
+ ///
+ /// Field: ContentType
+ ///
+ public const string ContentType = "contentType";
+
+ ///
+ /// Field: Get
+ ///
+ public const string Get = "get";
+
+ ///
+ /// Field: Put
+ ///
+ public const string Put = "put";
+
+ ///
+ /// Field: Post
+ ///
+ public const string Post = "post";
+
+ ///
+ /// Field: Delete
+ ///
+ public const string Delete = "delete";
+
+ ///
+ /// Field: Options
+ ///
+ public const string Options = "options";
+
+ ///
+ /// Field: Head
+ ///
+ public const string Head = "head";
+
+ ///
+ /// Field: Patch
+ ///
+ public const string Patch = "patch";
+
+ ///
+ /// Field: Trace
+ ///
+ public const string Trace = "trace";
+
+ ///
+ /// Field: PropertyName
+ ///
+ public const string PropertyName = "propertyName";
+
+ ///
+ /// Field: Mapping
+ ///
+ public const string Mapping = "mapping";
+
+ ///
+ /// Field: Scheme
+ ///
+ public const string Scheme = "scheme";
+
+ ///
+ /// Field: BearerFormat
+ ///
+ public const string BearerFormat = "bearerFormat";
+
+ ///
+ /// Field: Flows
+ ///
+ public const string Flows = "flows";
+
+ ///
+ /// Field: OpenIdConnectUrl
+ ///
+ public const string OpenIdConnectUrl = "openIdConnectUrl";
+
+ ///
+ /// Field: DefaultName
+ ///
+ public const string DefaultName = "Default Name";
+
+ ///
+ /// Field: DefaultDefault
+ ///
+ public const string DefaultDefault = "Default Default";
+
+ ///
+ /// Field: DefaultTitle
+ ///
+ public const string DefaultTitle = "Default Title";
+
+ ///
+ /// Field: DefaultDescription
+ ///
+ public const string DefaultDescription = "Default Description";
+
+ ///
+ /// Field: BodyName extensions
+ ///
+ public const string BodyName = "x-bodyName";
+
+ ///
+ /// Field: Examples Extension
+ ///
+ public const string ExamplesExtension = "x-examples";
+
+ ///
+ /// Field: version3_0_0
+ ///
+ public static readonly Version version3_0_0 = new(3, 0, 0);
+
+ ///
+ /// Field: defaultUrl
+ ///
+ public static readonly Uri defaultUrl = new("http://localhost/");
+
+ #region V2.0
+
+ ///
+ /// Field: Host
+ ///
+ public const string Host = "host";
+
+ ///
+ /// Field: Swagger
+ ///
+ public const string Swagger = "swagger";
+
+ ///
+ /// Field: version2_0
+ ///
+ public static readonly Version version2_0 = new(2, 0);
+
+ ///
+ /// Field: BasePath
+ ///
+ public const string BasePath = "basePath";
+
+ ///
+ /// Field: Schemes
+ ///
+ public const string Schemes = "schemes";
+
+ ///
+ /// Field: SecurityDefinitions
+ ///
+ public const string SecurityDefinitions = "securityDefinitions";
+
+ ///
+ /// Field: Definitions
+ ///
+ public const string Definitions = "definitions";
+
+ ///
+ /// Field: Basic
+ ///
+ public const string Basic = "basic";
+
+ ///
+ /// Field: Bearer
+ ///
+ public const string Bearer = "bearer";
+
+ ///
+ /// Field: JWT
+ ///
+ public const string Jwt = "JWT";
+
+ ///
+ /// Field: Consumes
+ ///
+ public const string Consumes = "consumes";
+
+ ///
+ /// Field: Produces
+ ///
+ public const string Produces = "produces";
+
+ #endregion
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiContact.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiContact.cs
new file mode 100644
index 000000000000..911e8a87c86a
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiContact.cs
@@ -0,0 +1,93 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+using System;
+using System.Collections.Generic;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Interfaces;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Writers;
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Models
+{
+ ///
+ /// Contact Object.
+ ///
+ internal class OpenApiContact : IOpenApiSerializable, IOpenApiExtensible
+ {
+ ///
+ /// The identifying name of the contact person/organization.
+ ///
+ public string Name { get; set; }
+
+ ///
+ /// The URL pointing to the contact information. MUST be in the format of a URL.
+ ///
+ public Uri Url { get; set; }
+
+ ///
+ /// The email address of the contact person/organization.
+ /// MUST be in the format of an email address.
+ ///
+ public string Email { get; set; }
+
+ ///
+ /// This object MAY be extended with Specification Extensions.
+ ///
+ public IDictionary Extensions { get; set; } = new Dictionary();
+
+ ///
+ /// Parameter-less constructor
+ ///
+ public OpenApiContact() { }
+
+ ///
+ /// Initializes a copy of an instance
+ ///
+ public OpenApiContact(OpenApiContact contact)
+ {
+ Name = contact?.Name ?? Name;
+ Url = contact?.Url != null ? new Uri(contact.Url.OriginalString, UriKind.RelativeOrAbsolute) : null;
+ Email = contact?.Email ?? Email;
+ Extensions = contact?.Extensions != null ? new Dictionary(contact.Extensions) : null;
+ }
+
+ ///
+ /// Serialize to Open Api v3.0
+ ///
+ public void SerializeAsV3(IOpenApiWriter writer)
+ {
+ WriteInternal(writer, OpenApiSpecVersion.OpenApi3_0);
+ }
+
+ ///
+ /// Serialize to Open Api v2.0
+ ///
+ public void SerializeAsV2(IOpenApiWriter writer)
+ {
+ WriteInternal(writer, OpenApiSpecVersion.OpenApi2_0);
+ }
+
+ private void WriteInternal(IOpenApiWriter writer, OpenApiSpecVersion specVersion)
+ {
+ writer.WriteStartObject();
+
+ // name
+ writer.WriteProperty(OpenApiConstants.Name, Name);
+
+ // url
+ writer.WriteProperty(OpenApiConstants.Url, Url?.OriginalString);
+
+ // email
+ writer.WriteProperty(OpenApiConstants.Email, Email);
+
+ // extensions
+ writer.WriteExtensions(Extensions, specVersion);
+
+ writer.WriteEndObject();
+ }
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiDiscriminator.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiDiscriminator.cs
new file mode 100644
index 000000000000..f02d91457007
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiDiscriminator.cs
@@ -0,0 +1,70 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+using System.Collections.Generic;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Interfaces;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Writers;
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Models
+{
+ ///
+ /// Discriminator object.
+ ///
+ internal class OpenApiDiscriminator : IOpenApiSerializable
+ {
+ ///
+ /// REQUIRED. The name of the property in the payload that will hold the discriminator value.
+ ///
+ public string PropertyName { get; set; }
+
+ ///
+ /// An object to hold mappings between payload values and schema names or references.
+ ///
+ public IDictionary Mapping { get; set; } = new Dictionary();
+
+ ///
+ /// Parameter-less constructor
+ ///
+ public OpenApiDiscriminator() { }
+
+ ///
+ /// Initializes a copy of an instance
+ ///
+ public OpenApiDiscriminator(OpenApiDiscriminator discriminator)
+ {
+ PropertyName = discriminator?.PropertyName ?? PropertyName;
+ Mapping = discriminator?.Mapping != null ? new Dictionary(discriminator.Mapping) : null;
+ }
+
+ ///
+ /// Serialize to Open Api v3.0
+ ///
+ public void SerializeAsV3(IOpenApiWriter writer)
+ {
+ Utils.CheckArgumentNull(writer);
+
+ writer.WriteStartObject();
+
+ // propertyName
+ writer.WriteProperty(OpenApiConstants.PropertyName, PropertyName);
+
+ // mapping
+ writer.WriteOptionalMap(OpenApiConstants.Mapping, Mapping, (w, s) => w.WriteValue(s));
+
+ writer.WriteEndObject();
+ }
+
+ ///
+ /// Serialize to Open Api v2.0
+ ///
+ public void SerializeAsV2(IOpenApiWriter writer)
+ {
+ // Discriminator object does not exist in V2.
+ }
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiDocument.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiDocument.cs
new file mode 100644
index 000000000000..a14d65ed3057
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiDocument.cs
@@ -0,0 +1,564 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Security.Cryptography;
+using System.Text;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Exceptions;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Extensions;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Interfaces;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Services;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Writers;
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Models
+{
+ ///
+ /// Describes an OpenAPI object (OpenAPI document). See: https://swagger.io/specification
+ ///
+ internal class OpenApiDocument : IOpenApiSerializable, IOpenApiExtensible, IOpenApiAnnotatable
+ {
+ ///
+ /// Related workspace containing OpenApiDocuments that are referenced in this document
+ ///
+ public OpenApiWorkspace Workspace { get; set; }
+
+ ///
+ /// REQUIRED. Provides metadata about the API. The metadata MAY be used by tooling as required.
+ ///
+ public OpenApiInfo Info { get; set; }
+
+ ///
+ /// An array of Server Objects, which provide connectivity information to a target server.
+ ///
+ public IList Servers { get; set; } = new List();
+
+ ///
+ /// REQUIRED. The available paths and operations for the API.
+ ///
+ public OpenApiPaths Paths { get; set; }
+
+ ///
+ /// An element to hold various schemas for the specification.
+ ///
+ public OpenApiComponents Components { get; set; }
+
+ ///
+ /// A declaration of which security mechanisms can be used across the API.
+ ///
+ public IList SecurityRequirements { get; set; } = new List();
+
+ ///
+ /// A list of tags used by the specification with additional metadata.
+ ///
+ public IList Tags { get; set; } = new List();
+
+ ///
+ /// Additional external documentation.
+ ///
+ public OpenApiExternalDocs ExternalDocs { get; set; }
+
+ ///
+ /// This object MAY be extended with Specification Extensions.
+ ///
+ public IDictionary Extensions { get; set; } = new Dictionary();
+
+ ///
+ /// The unique hash code of the generated OpenAPI document
+ ///
+ public string HashCode => GenerateHashValue(this);
+
+ ///
+ public IDictionary Annotations { get; set; }
+
+ ///
+ /// Parameter-less constructor
+ ///
+ public OpenApiDocument() {}
+
+ ///
+ /// Initializes a copy of an an object
+ ///
+ public OpenApiDocument(OpenApiDocument document)
+ {
+ Workspace = document?.Workspace != null ? new(document?.Workspace) : null;
+ Info = document?.Info != null ? new(document?.Info) : null;
+ Servers = document?.Servers != null ? new List(document.Servers) : null;
+ Paths = document?.Paths != null ? new(document?.Paths) : null;
+ Components = document?.Components != null ? new(document?.Components) : null;
+ SecurityRequirements = document?.SecurityRequirements != null ? new List(document.SecurityRequirements) : null;
+ Tags = document?.Tags != null ? new List(document.Tags) : null;
+ ExternalDocs = document?.ExternalDocs != null ? new(document?.ExternalDocs) : null;
+ Extensions = document?.Extensions != null ? new Dictionary(document.Extensions) : null;
+ Annotations = document?.Annotations != null ? new Dictionary(document.Annotations) : null;
+ }
+
+ ///
+ /// Serialize to the latest patch of OpenAPI object V3.0.
+ ///
+ public void SerializeAsV3(IOpenApiWriter writer)
+ {
+ Utils.CheckArgumentNull(writer);
+
+ writer.WriteStartObject();
+
+ // openapi
+ writer.WriteProperty(OpenApiConstants.OpenApi, "3.0.4");
+
+ // info
+ writer.WriteRequiredObject(OpenApiConstants.Info, Info, (w, i) => i.SerializeAsV3(w));
+
+ // servers
+ writer.WriteOptionalCollection(OpenApiConstants.Servers, Servers, (w, s) => s.SerializeAsV3(w));
+
+ // paths
+ writer.WriteRequiredObject(OpenApiConstants.Paths, Paths, (w, p) => p.SerializeAsV3(w));
+
+ // components
+ writer.WriteOptionalObject(OpenApiConstants.Components, Components, (w, c) => c.SerializeAsV3(w));
+
+ // security
+ writer.WriteOptionalCollection(
+ OpenApiConstants.Security,
+ SecurityRequirements,
+ (w, s) => s.SerializeAsV3(w));
+
+ // tags
+ writer.WriteOptionalCollection(OpenApiConstants.Tags, Tags, (w, t) => t.SerializeAsV3WithoutReference(w));
+
+ // external docs
+ writer.WriteOptionalObject(OpenApiConstants.ExternalDocs, ExternalDocs, (w, e) => e.SerializeAsV3(w));
+
+ // extensions
+ writer.WriteExtensions(Extensions, OpenApiSpecVersion.OpenApi3_0);
+
+ writer.WriteEndObject();
+ }
+
+ ///
+ /// Serialize to OpenAPI object V2.0.
+ ///
+ public void SerializeAsV2(IOpenApiWriter writer)
+ {
+ Utils.CheckArgumentNull(writer);
+
+ writer.WriteStartObject();
+
+ // swagger
+ writer.WriteProperty(OpenApiConstants.Swagger, "2.0");
+
+ // info
+ writer.WriteRequiredObject(OpenApiConstants.Info, Info, (w, i) => i.SerializeAsV2(w));
+
+ // host, basePath, schemes, consumes, produces
+ WriteHostInfoV2(writer, Servers);
+
+ // paths
+ writer.WriteRequiredObject(OpenApiConstants.Paths, Paths, (w, p) => p.SerializeAsV2(w));
+
+ // If references have been inlined we don't need to render the components section
+ // however if they have cycles, then we will need a component rendered
+ if (writer.GetSettings().InlineLocalReferences)
+ {
+ var loops = writer.GetSettings().LoopDetector.Loops;
+
+ if (loops.TryGetValue(typeof(OpenApiSchema), out var schemas))
+ {
+ var openApiSchemas = schemas.Cast().Distinct().ToList()
+ .ToDictionary(k => k.Reference.Id);
+
+ foreach (var schema in openApiSchemas.Values.ToList())
+ {
+ FindSchemaReferences.ResolveSchemas(Components, openApiSchemas);
+ }
+
+ writer.WriteOptionalMap(
+ OpenApiConstants.Definitions,
+ openApiSchemas,
+ (w, _, component) => component.SerializeAsV2WithoutReference(w));
+ }
+ }
+ else
+ {
+ // Serialize each referenceable object as full object without reference if the reference in the object points to itself.
+ // If the reference exists but points to other objects, the object is serialized to just that reference.
+ // definitions
+ writer.WriteOptionalMap(
+ OpenApiConstants.Definitions,
+ Components?.Schemas,
+ (w, key, component) =>
+ {
+ if (component.Reference is {Type: ReferenceType.Schema} &&
+ component.Reference.Id == key)
+ {
+ component.SerializeAsV2WithoutReference(w);
+ }
+ else
+ {
+ component.SerializeAsV2(w);
+ }
+ });
+ }
+ // parameters
+ var parameters = Components?.Parameters != null
+ ? new(Components.Parameters)
+ : new Dictionary();
+
+ if (Components?.RequestBodies != null)
+ {
+ foreach (var requestBody in Components.RequestBodies.Where(b => !parameters.ContainsKey(b.Key)))
+ {
+ parameters.Add(requestBody.Key, requestBody.Value.ConvertToBodyParameter());
+ }
+ }
+ writer.WriteOptionalMap(
+ OpenApiConstants.Parameters,
+ parameters,
+ (w, key, component) =>
+ {
+ if (component.Reference is {Type: ReferenceType.Parameter} &&
+ component.Reference.Id == key)
+ {
+ component.SerializeAsV2WithoutReference(w);
+ }
+ else
+ {
+ component.SerializeAsV2(w);
+ }
+ });
+
+ // responses
+ writer.WriteOptionalMap(
+ OpenApiConstants.Responses,
+ Components?.Responses,
+ (w, key, component) =>
+ {
+ if (component.Reference is {Type: ReferenceType.Response} &&
+ component.Reference.Id == key)
+ {
+ component.SerializeAsV2WithoutReference(w);
+ }
+ else
+ {
+ component.SerializeAsV2(w);
+ }
+ });
+
+ // securityDefinitions
+ writer.WriteOptionalMap(
+ OpenApiConstants.SecurityDefinitions,
+ Components?.SecuritySchemes,
+ (w, key, component) =>
+ {
+ if (component.Reference is {Type: ReferenceType.SecurityScheme} &&
+ component.Reference.Id == key)
+ {
+ component.SerializeAsV2WithoutReference(w);
+ }
+ else
+ {
+ component.SerializeAsV2(w);
+ }
+ });
+
+ // security
+ writer.WriteOptionalCollection(
+ OpenApiConstants.Security,
+ SecurityRequirements,
+ (w, s) => s.SerializeAsV2(w));
+
+ // tags
+ writer.WriteOptionalCollection(OpenApiConstants.Tags, Tags, (w, t) => t.SerializeAsV2WithoutReference(w));
+
+ // externalDocs
+ writer.WriteOptionalObject(OpenApiConstants.ExternalDocs, ExternalDocs, (w, e) => e.SerializeAsV2(w));
+
+ // extensions
+ writer.WriteExtensions(Extensions, OpenApiSpecVersion.OpenApi2_0);
+
+ writer.WriteEndObject();
+ }
+
+ private static string ParseServerUrl(OpenApiServer server)
+ {
+ return server.ReplaceServerUrlVariables(new Dictionary(0));
+ }
+
+ private static void WriteHostInfoV2(IOpenApiWriter writer, IList servers)
+ {
+ if (servers == null || !servers.Any())
+ {
+ return;
+ }
+
+ // Arbitrarily choose the first server given that V2 only allows
+ // one host, port, and base path.
+ var serverUrl = ParseServerUrl(servers.First());
+
+ // Divide the URL in the Url property into host and basePath required in OpenAPI V2
+ // The Url property cannot contain path templating to be valid for V2 serialization.
+ var firstServerUrl = new Uri(serverUrl, UriKind.RelativeOrAbsolute);
+
+ // host
+ if (firstServerUrl.IsAbsoluteUri)
+ {
+ writer.WriteProperty(
+ OpenApiConstants.Host,
+ firstServerUrl.GetComponents(UriComponents.Host | UriComponents.Port, UriFormat.SafeUnescaped));
+
+ // basePath
+ if (firstServerUrl.AbsolutePath != "/")
+ {
+ writer.WriteProperty(OpenApiConstants.BasePath, firstServerUrl.AbsolutePath);
+ }
+ } else
+ {
+ var relativeUrl = firstServerUrl.OriginalString;
+ if (relativeUrl.StartsWith("//"))
+ {
+ var pathPosition = relativeUrl.IndexOf('/', 3);
+ writer.WriteProperty(OpenApiConstants.Host, relativeUrl.Substring(0, pathPosition));
+ relativeUrl = relativeUrl.Substring(pathPosition);
+ }
+ if (!String.IsNullOrEmpty(relativeUrl) && relativeUrl != "/")
+ {
+ writer.WriteProperty(OpenApiConstants.BasePath, relativeUrl);
+ }
+ }
+
+ // Consider all schemes of the URLs in the server list that have the same
+ // host, port, and base path as the first server.
+ var schemes = servers.Select(
+ s =>
+ {
+ Uri.TryCreate(ParseServerUrl(s), UriKind.RelativeOrAbsolute, out var url);
+ return url;
+ })
+ .Where(
+ u => Uri.Compare(
+ u,
+ firstServerUrl,
+ UriComponents.Host | UriComponents.Port | UriComponents.Path,
+ UriFormat.SafeUnescaped,
+ StringComparison.OrdinalIgnoreCase) ==
+ 0 && u.IsAbsoluteUri)
+ .Select(u => u.Scheme)
+ .Distinct()
+ .ToList();
+
+ // schemes
+ writer.WriteOptionalCollection(OpenApiConstants.Schemes, schemes, (w, s) => w.WriteValue(s));
+ }
+
+ ///
+ /// Walk the OpenApiDocument and resolve unresolved references
+ ///
+ ///
+ /// This method will be replaced by a LoadExternalReferences in the next major update to this library.
+ /// Resolving references at load time is going to go away.
+ ///
+ public IEnumerable ResolveReferences()
+ {
+ var resolver = new OpenApiReferenceResolver(this, false);
+ var walker = new OpenApiWalker(resolver);
+ walker.Walk(this);
+ return resolver.Errors;
+ }
+
+ ///
+ /// Load the referenced object from a object
+ ///
+ internal T ResolveReferenceTo(OpenApiReference reference) where T : class, IOpenApiReferenceable
+ {
+ if (reference.IsExternal)
+ {
+ return ResolveReference(reference, true) as T;
+ }
+ else
+ {
+ return ResolveReference(reference, false) as T;
+ }
+ }
+
+ ///
+ /// Load the referenced object from a object
+ ///
+ public IOpenApiReferenceable ResolveReference(OpenApiReference reference)
+ {
+ return ResolveReference(reference, false);
+ }
+
+ ///
+ /// Takes in an OpenApi document instance and generates its hash value
+ ///
+ /// The OpenAPI description to hash.
+ /// The hash value.
+ public static string GenerateHashValue(OpenApiDocument doc)
+ {
+ using HashAlgorithm sha = SHA512.Create();
+ using var cryptoStream = new CryptoStream(Stream.Null, sha, CryptoStreamMode.Write);
+ using var streamWriter = new StreamWriter(cryptoStream);
+
+ var openApiJsonWriter = new OpenApiJsonWriter(streamWriter, new() { Terse = true });
+ doc.SerializeAsV3(openApiJsonWriter);
+ openApiJsonWriter.Flush();
+
+ cryptoStream.FlushFinalBlock();
+ var hash = sha.Hash;
+
+ return ConvertByteArrayToString(hash);
+ }
+
+ private static string ConvertByteArrayToString(byte[] hash)
+ {
+ // Build the final string by converting each byte
+ // into hex and appending it to a StringBuilder
+ var sb = new StringBuilder();
+ for (var i = 0; i < hash.Length; i++)
+ {
+ sb.Append(hash[i].ToString("X2"));
+ }
+
+ return sb.ToString();
+ }
+
+ ///
+ /// Load the referenced object from a object
+ ///
+ internal IOpenApiReferenceable ResolveReference(OpenApiReference reference, bool useExternal)
+ {
+ if (reference == null)
+ {
+ return null;
+ }
+
+ // Todo: Verify if we need to check to see if this external reference is actually targeted at this document.
+ if (useExternal)
+ {
+ if (this.Workspace == null)
+ {
+ throw new ArgumentException(Properties.SRResource.WorkspaceRequredForExternalReferenceResolution);
+ }
+ return this.Workspace.ResolveReference(reference);
+ }
+
+ if (!reference.Type.HasValue)
+ {
+ throw new ArgumentException(Properties.SRResource.LocalReferenceRequiresType);
+ }
+
+ // Special case for Tag
+ if (reference.Type == ReferenceType.Tag)
+ {
+ foreach (var tag in this.Tags)
+ {
+ if (tag.Name == reference.Id)
+ {
+ tag.Reference = reference;
+ return tag;
+ }
+ }
+
+ return null;
+ }
+
+ if (this.Components == null)
+ {
+ throw new OpenApiException(string.Format(Properties.SRResource.InvalidReferenceId, reference.Id));
+ }
+
+ try
+ {
+ switch (reference.Type)
+ {
+ case ReferenceType.Schema:
+ return this.Components.Schemas[reference.Id];
+
+ case ReferenceType.Response:
+ return this.Components.Responses[reference.Id];
+
+ case ReferenceType.Parameter:
+ return this.Components.Parameters[reference.Id];
+
+ case ReferenceType.Example:
+ return this.Components.Examples[reference.Id];
+
+ case ReferenceType.RequestBody:
+ return this.Components.RequestBodies[reference.Id];
+
+ case ReferenceType.Header:
+ return this.Components.Headers[reference.Id];
+
+ case ReferenceType.SecurityScheme:
+ return this.Components.SecuritySchemes[reference.Id];
+
+ case ReferenceType.Link:
+ return this.Components.Links[reference.Id];
+
+ case ReferenceType.Callback:
+ return this.Components.Callbacks[reference.Id];
+
+ case ReferenceType.Path:
+ return this.Paths[reference.Id];
+
+ default:
+ throw new OpenApiException(Properties.SRResource.InvalidReferenceType);
+ }
+ }
+ catch (KeyNotFoundException)
+ {
+ throw new OpenApiException(string.Format(Properties.SRResource.InvalidReferenceId, reference.Id));
+ }
+ }
+ }
+
+ internal class FindSchemaReferences : OpenApiVisitorBase
+ {
+ private Dictionary Schemas;
+
+ public static void ResolveSchemas(OpenApiComponents components, Dictionary schemas )
+ {
+ var visitor = new FindSchemaReferences();
+ visitor.Schemas = schemas;
+ var walker = new OpenApiWalker(visitor);
+ walker.Walk(components);
+ }
+
+ public override void Visit(IOpenApiReferenceable referenceable)
+ {
+ switch (referenceable)
+ {
+ case OpenApiSchema schema:
+ if (!Schemas.ContainsKey(schema.Reference.Id))
+ {
+ Schemas.Add(schema.Reference.Id, schema);
+ }
+ break;
+
+ default:
+ break;
+ }
+ base.Visit(referenceable);
+ }
+
+ public override void Visit(OpenApiSchema schema)
+ {
+ // This is needed to handle schemas used in Responses in components
+ if (schema.Reference != null)
+ {
+ if (!Schemas.ContainsKey(schema.Reference.Id))
+ {
+ Schemas.Add(schema.Reference.Id, schema);
+ }
+ }
+ base.Visit(schema);
+ }
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiEncoding.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiEncoding.cs
new file mode 100644
index 000000000000..5609e1f14a8e
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiEncoding.cs
@@ -0,0 +1,116 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+using System.Collections.Generic;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Extensions;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Interfaces;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Writers;
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Models
+{
+ ///
+ /// ExternalDocs object.
+ ///
+ internal class OpenApiEncoding : IOpenApiSerializable, IOpenApiExtensible
+ {
+ ///
+ /// The Content-Type for encoding a specific property.
+ /// The value can be a specific media type (e.g. application/json),
+ /// a wildcard media type (e.g. image/*), or a comma-separated list of the two types.
+ ///
+ public string ContentType { get; set; }
+
+ ///
+ /// A map allowing additional information to be provided as headers.
+ ///
+ public IDictionary Headers { get; set; } = new Dictionary();
+
+ ///
+ /// Describes how a specific property value will be serialized depending on its type.
+ ///
+ public ParameterStyle? Style { get; set; }
+
+ ///
+ /// When this is true, property values of type array or object generate separate parameters
+ /// for each value of the array, or key-value-pair of the map. For other types of properties
+ /// this property has no effect. When style is form, the default value is true.
+ /// For all other styles, the default value is false.
+ /// This property SHALL be ignored if the request body media type is not application/x-www-form-urlencoded.
+ ///
+ public bool? Explode { get; set; }
+
+ ///
+ /// Determines whether the parameter value SHOULD allow reserved characters,
+ /// as defined by RFC3986 :/?#[]@!$&'()*+,;= to be included without percent-encoding.
+ /// The default value is false. This property SHALL be ignored
+ /// if the request body media type is not application/x-www-form-urlencoded.
+ ///
+ public bool? AllowReserved { get; set; }
+
+ ///
+ /// This object MAY be extended with Specification Extensions.
+ ///
+ public IDictionary Extensions { get; set; } = new Dictionary();
+
+ ///
+ /// Parameter-less constructor
+ ///
+ public OpenApiEncoding() {}
+
+ ///
+ /// Initializes a copy of an object
+ ///
+ public OpenApiEncoding(OpenApiEncoding encoding)
+ {
+ ContentType = encoding?.ContentType ?? ContentType;
+ Headers = encoding?.Headers != null ? new Dictionary(encoding.Headers) : null;
+ Style = encoding?.Style ?? Style;
+ Explode = encoding?.Explode ?? Explode;
+ AllowReserved = encoding?.AllowReserved ?? AllowReserved;
+ Extensions = encoding?.Extensions != null ? new Dictionary(encoding.Extensions) : null;
+ }
+
+ ///
+ /// Serialize to Open Api v3.0.
+ ///
+ public void SerializeAsV3(IOpenApiWriter writer)
+ {
+ Utils.CheckArgumentNull(writer);
+
+ writer.WriteStartObject();
+
+ // contentType
+ writer.WriteProperty(OpenApiConstants.ContentType, ContentType);
+
+ // headers
+ writer.WriteOptionalMap(OpenApiConstants.Headers, Headers, (w, h) => h.SerializeAsV3(w));
+
+ // style
+ writer.WriteProperty(OpenApiConstants.Style, Style?.GetDisplayName());
+
+ // explode
+ writer.WriteProperty(OpenApiConstants.Explode, Explode, false);
+
+ // allowReserved
+ writer.WriteProperty(OpenApiConstants.AllowReserved, AllowReserved, false);
+
+ // extensions
+ writer.WriteExtensions(Extensions, OpenApiSpecVersion.OpenApi3_0);
+
+ writer.WriteEndObject();
+ }
+
+ ///
+ /// Serialize to Open Api v2.0.
+ ///
+ public void SerializeAsV2(IOpenApiWriter writer)
+ {
+ // nothing here
+ }
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiError.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiError.cs
new file mode 100644
index 000000000000..781d1be21556
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiError.cs
@@ -0,0 +1,61 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Exceptions;
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Models
+{
+ ///
+ /// Error related to the Open API Document.
+ ///
+ internal class OpenApiError
+ {
+ ///
+ /// Initializes the class using the message and pointer from the given exception.
+ ///
+ public OpenApiError(OpenApiException exception) : this(exception.Pointer, exception.Message)
+ {
+ }
+
+ ///
+ /// Initializes the class.
+ ///
+ public OpenApiError(string pointer, string message)
+ {
+ Pointer = pointer;
+ Message = message;
+ }
+
+ ///
+ /// Initializes a copy of an object
+ ///
+ public OpenApiError(OpenApiError error)
+ {
+ Pointer = error.Pointer;
+ Message = error.Message;
+ }
+
+ ///
+ /// Message explaining the error.
+ ///
+ public string Message { get; set; }
+
+ ///
+ /// Pointer to the location of the error.
+ ///
+ public string Pointer { get; set; }
+
+ ///
+ /// Gets the string representation of .
+ ///
+ public override string ToString()
+ {
+ return Message + (!string.IsNullOrEmpty(Pointer) ? " [" + Pointer + "]" : "");
+ }
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiExample.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiExample.cs
new file mode 100644
index 000000000000..55a158619607
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiExample.cs
@@ -0,0 +1,177 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+using System.Collections.Generic;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Any;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Interfaces;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Writers;
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Models
+{
+ ///
+ /// Example Object.
+ ///
+ internal class OpenApiExample : IOpenApiReferenceable, IOpenApiExtensible, IEffective
+ {
+ ///
+ /// Short description for the example.
+ ///
+ public string Summary { get; set; }
+
+ ///
+ /// Long description for the example.
+ /// CommonMark syntax MAY be used for rich text representation.
+ ///
+ public string Description { get; set; }
+
+ ///
+ /// Embedded literal example. The value field and externalValue field are mutually
+ /// exclusive. To represent examples of media types that cannot naturally represented
+ /// in JSON or YAML, use a string value to contain the example, escaping where necessary.
+ ///
+ public IOpenApiAny Value { get; set; }
+
+ ///
+ /// A URL that points to the literal example.
+ /// This provides the capability to reference examples that cannot easily be
+ /// included in JSON or YAML documents.
+ /// The value field and externalValue field are mutually exclusive.
+ ///
+ public string ExternalValue { get; set; }
+
+ ///
+ /// This object MAY be extended with Specification Extensions.
+ ///
+ public IDictionary Extensions { get; set; } = new Dictionary();
+
+ ///
+ /// Reference object.
+ ///
+ public OpenApiReference Reference { get; set; }
+
+ ///
+ /// Indicates object is a placeholder reference to an actual object and does not contain valid data.
+ ///
+ public bool UnresolvedReference { get; set; }
+
+ ///
+ /// Parameter-less constructor
+ ///
+ public OpenApiExample() {}
+
+ ///
+ /// Initializes a copy of object
+ ///
+ public OpenApiExample(OpenApiExample example)
+ {
+ Summary = example?.Summary ?? Summary;
+ Description = example?.Description ?? Description;
+ Value = OpenApiAnyCloneHelper.CloneFromCopyConstructor(example?.Value);
+ ExternalValue = example?.ExternalValue ?? ExternalValue;
+ Extensions = example?.Extensions != null ? new Dictionary(example.Extensions) : null;
+ Reference = example?.Reference != null ? new(example?.Reference) : null;
+ UnresolvedReference = example?.UnresolvedReference ?? UnresolvedReference;
+ }
+
+ ///
+ /// Serialize to Open Api v3.0
+ ///
+ public void SerializeAsV3(IOpenApiWriter writer)
+ {
+ Utils.CheckArgumentNull(writer);
+
+ var target = this;
+
+ if (Reference != null)
+ {
+ if (!writer.GetSettings().ShouldInlineReference(Reference))
+ {
+ Reference.SerializeAsV3(writer);
+ return;
+ }
+ else
+ {
+ target = GetEffective(Reference.HostDocument);
+ }
+ }
+ target.SerializeAsV3WithoutReference(writer);
+ }
+
+ ///
+ /// Returns an effective OpenApiExample object based on the presence of a $ref
+ ///
+ /// The host OpenApiDocument that contains the reference.
+ /// OpenApiExample
+ public OpenApiExample GetEffective(OpenApiDocument doc)
+ {
+ if (this.Reference != null)
+ {
+ return doc.ResolveReferenceTo(this.Reference);
+ }
+ else
+ {
+ return this;
+ }
+ }
+
+ ///
+ /// Serialize to OpenAPI V3 document without using reference.
+ ///
+ public void SerializeAsV3WithoutReference(IOpenApiWriter writer)
+ {
+ Serialize(writer, OpenApiSpecVersion.OpenApi3_0);
+ }
+
+ ///
+ /// Writes out existing examples in a mediatype object
+ ///
+ ///
+ ///
+ public void Serialize(IOpenApiWriter writer, OpenApiSpecVersion version)
+ {
+ writer.WriteStartObject();
+
+ // summary
+ writer.WriteProperty(OpenApiConstants.Summary, Summary);
+
+ // description
+ writer.WriteProperty(OpenApiConstants.Description, Description);
+
+ // value
+ writer.WriteOptionalObject(OpenApiConstants.Value, Value, (w, v) => w.WriteAny(v));
+
+ // externalValue
+ writer.WriteProperty(OpenApiConstants.ExternalValue, ExternalValue);
+
+ // extensions
+ writer.WriteExtensions(Extensions, version);
+
+ writer.WriteEndObject();
+ }
+
+ ///
+ /// Serialize to Open Api v2.0
+ ///
+ public void SerializeAsV2(IOpenApiWriter writer)
+ {
+ // Example object of this form does not exist in V2.
+ // V2 Example object requires knowledge of media type and exists only
+ // in Response object, so it will be serialized as a part of the Response object.
+ }
+
+ ///
+ /// Serialize to OpenAPI V2 document without using reference.
+ ///
+ public void SerializeAsV2WithoutReference(IOpenApiWriter writer)
+ {
+ // Example object of this form does not exist in V2.
+ // V2 Example object requires knowledge of media type and exists only
+ // in Response object, so it will be serialized as a part of the Response object.
+ }
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiExtensibleDictionary.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiExtensibleDictionary.cs
new file mode 100644
index 000000000000..0f6bacfc865a
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiExtensibleDictionary.cs
@@ -0,0 +1,84 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+using System.Collections.Generic;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Interfaces;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Writers;
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Models
+{
+ ///
+ /// Generic dictionary type for Open API dictionary element.
+ ///
+ /// The Open API element,
+ internal abstract class OpenApiExtensibleDictionary : Dictionary,
+ IOpenApiSerializable,
+ IOpenApiExtensible
+ where T : IOpenApiSerializable
+ {
+ ///
+ /// Parameterless constructor
+ ///
+ protected OpenApiExtensibleDictionary() { }
+
+ ///
+ /// Initializes a copy of class.
+ ///
+ /// The generic dictionary.
+ /// The dictionary of .
+ protected OpenApiExtensibleDictionary(
+ Dictionary dictionary = null,
+ IDictionary extensions = null) : base (dictionary)
+ {
+ Extensions = extensions != null ? new Dictionary(extensions) : null;
+ }
+
+ ///
+ /// This object MAY be extended with Specification Extensions.
+ ///
+ public IDictionary Extensions { get; set; } = new Dictionary();
+
+ ///
+ /// Serialize to Open Api v3.0
+ ///
+ public void SerializeAsV3(IOpenApiWriter writer)
+ {
+ Utils.CheckArgumentNull(writer);
+
+ writer.WriteStartObject();
+
+ foreach (var item in this)
+ {
+ writer.WriteRequiredObject(item.Key, item.Value, (w, p) => p.SerializeAsV3(w));
+ }
+
+ writer.WriteExtensions(Extensions, OpenApiSpecVersion.OpenApi3_0);
+
+ writer.WriteEndObject();
+ }
+
+ ///
+ /// Serialize to Open Api v2.0
+ ///
+ public void SerializeAsV2(IOpenApiWriter writer)
+ {
+ Utils.CheckArgumentNull(writer);
+
+ writer.WriteStartObject();
+
+ foreach (var item in this)
+ {
+ writer.WriteRequiredObject(item.Key, item.Value, (w, p) => p.SerializeAsV2(w));
+ }
+
+ writer.WriteExtensions(Extensions, OpenApiSpecVersion.OpenApi2_0);
+
+ writer.WriteEndObject();
+ }
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiExternalDocs.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiExternalDocs.cs
new file mode 100644
index 000000000000..bc33ec634c8b
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiExternalDocs.cs
@@ -0,0 +1,83 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+using System;
+using System.Collections.Generic;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Interfaces;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Writers;
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Models
+{
+ ///
+ /// ExternalDocs object.
+ ///
+ internal class OpenApiExternalDocs : IOpenApiSerializable, IOpenApiExtensible
+ {
+ ///
+ /// A short description of the target documentation.
+ ///
+ public string Description { get; set; }
+
+ ///
+ /// REQUIRED. The URL for the target documentation. Value MUST be in the format of a URL.
+ ///
+ public Uri Url { get; set; }
+
+ ///
+ /// This object MAY be extended with Specification Extensions.
+ ///
+ public IDictionary Extensions { get; set; } = new Dictionary();
+
+ ///
+ /// Parameter-less constructor
+ ///
+ public OpenApiExternalDocs() { }
+
+ ///
+ /// Initializes a copy of an object
+ ///
+ public OpenApiExternalDocs(OpenApiExternalDocs externalDocs)
+ {
+ Description = externalDocs?.Description ?? Description;
+ Url = externalDocs?.Url != null ? new Uri(externalDocs.Url.OriginalString, UriKind.RelativeOrAbsolute) : null;
+ Extensions = externalDocs?.Extensions != null ? new Dictionary(externalDocs.Extensions) : null;
+ }
+
+ ///
+ /// Serialize to Open Api v3.0.
+ ///
+ public void SerializeAsV3(IOpenApiWriter writer)
+ {
+ WriteInternal(writer, OpenApiSpecVersion.OpenApi3_0);
+ }
+
+ ///
+ /// Serialize to Open Api v2.0.
+ ///
+ public void SerializeAsV2(IOpenApiWriter writer)
+ {
+ WriteInternal(writer, OpenApiSpecVersion.OpenApi2_0);
+ }
+
+ private void WriteInternal(IOpenApiWriter writer, OpenApiSpecVersion specVersion)
+ {
+ writer.WriteStartObject();
+
+ // description
+ writer.WriteProperty(OpenApiConstants.Description, Description);
+
+ // url
+ writer.WriteProperty(OpenApiConstants.Url, Url?.OriginalString);
+
+ // extensions
+ writer.WriteExtensions(Extensions, specVersion);
+
+ writer.WriteEndObject();
+ }
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiHeader.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiHeader.cs
new file mode 100644
index 000000000000..d878a0b63a07
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiHeader.cs
@@ -0,0 +1,271 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+using System.Collections.Generic;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Any;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Extensions;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Interfaces;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Writers;
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Models
+{
+ ///
+ /// Header Object.
+ /// The Header Object follows the structure of the Parameter Object.
+ ///
+ internal class OpenApiHeader : IOpenApiReferenceable, IOpenApiExtensible, IEffective
+ {
+ ///
+ /// Indicates if object is populated with data or is just a reference to the data
+ ///
+ public bool UnresolvedReference { get; set; }
+
+ ///
+ /// Reference pointer.
+ ///
+ public OpenApiReference Reference { get; set; }
+
+ ///
+ /// A brief description of the header.
+ ///
+ public string Description { get; set; }
+
+ ///
+ /// Determines whether this header is mandatory.
+ ///
+ public bool Required { get; set; }
+
+ ///
+ /// Specifies that a header is deprecated and SHOULD be transitioned out of usage.
+ ///
+ public bool Deprecated { get; set; }
+
+ ///
+ /// Sets the ability to pass empty-valued headers.
+ ///
+ public bool AllowEmptyValue { get; set; }
+
+ ///
+ /// Describes how the header value will be serialized depending on the type of the header value.
+ ///
+ public ParameterStyle? Style { get; set; }
+
+ ///
+ /// When this is true, header values of type array or object generate separate parameters
+ /// for each value of the array or key-value pair of the map.
+ ///
+ public bool Explode { get; set; }
+
+ ///
+ /// Determines whether the header value SHOULD allow reserved characters, as defined by RFC3986.
+ ///
+ public bool AllowReserved { get; set; }
+
+ ///
+ /// The schema defining the type used for the header.
+ ///
+ public OpenApiSchema Schema { get; set; }
+
+ ///
+ /// Example of the media type.
+ ///
+ public IOpenApiAny Example { get; set; }
+
+ ///
+ /// Examples of the media type.
+ ///
+ public IDictionary Examples { get; set; } = new Dictionary();
+
+ ///
+ /// A map containing the representations for the header.
+ ///
+ public IDictionary Content { get; set; } = new Dictionary();
+
+ ///
+ /// This object MAY be extended with Specification Extensions.
+ ///
+ public IDictionary Extensions { get; set; } = new Dictionary();
+
+ ///
+ /// Parameter-less constructor
+ ///
+ public OpenApiHeader() {}
+
+ ///
+ /// Initializes a copy of an object
+ ///
+ public OpenApiHeader(OpenApiHeader header)
+ {
+ UnresolvedReference = header?.UnresolvedReference ?? UnresolvedReference;
+ Reference = header?.Reference != null ? new(header?.Reference) : null;
+ Description = header?.Description ?? Description;
+ Required = header?.Required ?? Required;
+ Deprecated = header?.Deprecated ?? Deprecated;
+ AllowEmptyValue = header?.AllowEmptyValue ?? AllowEmptyValue;
+ Style = header?.Style ?? Style;
+ Explode = header?.Explode ?? Explode;
+ AllowReserved = header?.AllowReserved ?? AllowReserved;
+ Schema = header?.Schema != null ? new(header?.Schema) : null;
+ Example = OpenApiAnyCloneHelper.CloneFromCopyConstructor(header?.Example);
+ Examples = header?.Examples != null ? new Dictionary(header.Examples) : null;
+ Content = header?.Content != null ? new Dictionary(header.Content) : null;
+ Extensions = header?.Extensions != null ? new Dictionary(header.Extensions) : null;
+ }
+
+ ///
+ /// Serialize to Open Api v3.0
+ ///
+ public void SerializeAsV3(IOpenApiWriter writer)
+ {
+ Utils.CheckArgumentNull(writer);
+
+ var target = this;
+
+ if (Reference != null)
+ {
+ if (!writer.GetSettings().ShouldInlineReference(Reference))
+ {
+ Reference.SerializeAsV3(writer);
+ return;
+ }
+ else
+ {
+ target = GetEffective(Reference.HostDocument);
+ }
+ }
+ target.SerializeAsV3WithoutReference(writer);
+ }
+
+ ///
+ /// Returns an effective OpenApiHeader object based on the presence of a $ref
+ ///
+ /// The host OpenApiDocument that contains the reference.
+ /// OpenApiHeader
+ public OpenApiHeader GetEffective(OpenApiDocument doc)
+ {
+ if (this.Reference != null)
+ {
+ return doc.ResolveReferenceTo(this.Reference);
+ }
+ else
+ {
+ return this;
+ }
+ }
+
+ ///
+ /// Serialize to OpenAPI V3 document without using reference.
+ ///
+ public void SerializeAsV3WithoutReference(IOpenApiWriter writer)
+ {
+ writer.WriteStartObject();
+
+ // description
+ writer.WriteProperty(OpenApiConstants.Description, Description);
+
+ // required
+ writer.WriteProperty(OpenApiConstants.Required, Required, false);
+
+ // deprecated
+ writer.WriteProperty(OpenApiConstants.Deprecated, Deprecated, false);
+
+ // allowEmptyValue
+ writer.WriteProperty(OpenApiConstants.AllowEmptyValue, AllowEmptyValue, false);
+
+ // style
+ writer.WriteProperty(OpenApiConstants.Style, Style?.GetDisplayName());
+
+ // explode
+ writer.WriteProperty(OpenApiConstants.Explode, Explode, false);
+
+ // allowReserved
+ writer.WriteProperty(OpenApiConstants.AllowReserved, AllowReserved, false);
+
+ // schema
+ writer.WriteOptionalObject(OpenApiConstants.Schema, Schema, (w, s) => s.SerializeAsV3(w));
+
+ // example
+ writer.WriteOptionalObject(OpenApiConstants.Example, Example, (w, s) => w.WriteAny(s));
+
+ // examples
+ writer.WriteOptionalMap(OpenApiConstants.Examples, Examples, (w, e) => e.SerializeAsV3(w));
+
+ // content
+ writer.WriteOptionalMap(OpenApiConstants.Content, Content, (w, c) => c.SerializeAsV3(w));
+
+ // extensions
+ writer.WriteExtensions(Extensions, OpenApiSpecVersion.OpenApi3_0);
+
+ writer.WriteEndObject();
+ }
+
+ ///
+ /// Serialize to Open Api v2.0
+ ///
+ public void SerializeAsV2(IOpenApiWriter writer)
+ {
+ Utils.CheckArgumentNull(writer);
+
+ var target = this;
+
+ if (Reference != null)
+ {
+ if (!writer.GetSettings().ShouldInlineReference(Reference))
+ {
+ Reference.SerializeAsV2(writer);
+ return;
+ }
+ else
+ {
+ target = GetEffective(Reference.HostDocument);
+ }
+ }
+ target.SerializeAsV2WithoutReference(writer);
+ }
+
+ ///
+ /// Serialize to OpenAPI V2 document without using reference.
+ ///
+ public void SerializeAsV2WithoutReference(IOpenApiWriter writer)
+ {
+ writer.WriteStartObject();
+
+ // description
+ writer.WriteProperty(OpenApiConstants.Description, Description);
+
+ // required
+ writer.WriteProperty(OpenApiConstants.Required, Required, false);
+
+ // deprecated
+ writer.WriteProperty(OpenApiConstants.Deprecated, Deprecated, false);
+
+ // allowEmptyValue
+ writer.WriteProperty(OpenApiConstants.AllowEmptyValue, AllowEmptyValue, false);
+
+ // style
+ writer.WriteProperty(OpenApiConstants.Style, Style?.GetDisplayName());
+
+ // explode
+ writer.WriteProperty(OpenApiConstants.Explode, Explode, false);
+
+ // allowReserved
+ writer.WriteProperty(OpenApiConstants.AllowReserved, AllowReserved, false);
+
+ // schema
+ Schema?.WriteAsItemsProperties(writer);
+
+ // example
+ writer.WriteOptionalObject(OpenApiConstants.Example, Example, (w, s) => w.WriteAny(s));
+
+ // extensions
+ writer.WriteExtensions(Extensions, OpenApiSpecVersion.OpenApi2_0);
+
+ writer.WriteEndObject();
+ }
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiInfo.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiInfo.cs
new file mode 100644
index 000000000000..d0c740794e25
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiInfo.cs
@@ -0,0 +1,141 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+using System;
+using System.Collections.Generic;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Interfaces;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Writers;
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Models
+{
+ ///
+ /// Open API Info Object, it provides the metadata about the Open API.
+ ///
+ internal class OpenApiInfo : IOpenApiSerializable, IOpenApiExtensible
+ {
+ ///
+ /// REQUIRED. The title of the application.
+ ///
+ public string Title { get; set; }
+
+ ///
+ /// A short description of the application.
+ ///
+ public string Description { get; set; }
+
+ ///
+ /// REQUIRED. The version of the OpenAPI document.
+ ///
+ public string Version { get; set; }
+
+ ///
+ /// A URL to the Terms of Service for the API. MUST be in the format of a URL.
+ ///
+ public Uri TermsOfService { get; set; }
+
+ ///
+ /// The contact information for the exposed API.
+ ///
+ public OpenApiContact Contact { get; set; }
+
+ ///
+ /// The license information for the exposed API.
+ ///
+ public OpenApiLicense License { get; set; }
+
+ ///
+ /// This object MAY be extended with Specification Extensions.
+ ///
+ public IDictionary Extensions { get; set; } = new Dictionary();
+
+ ///
+ /// Parameter-less constructor
+ ///
+ public OpenApiInfo() {}
+
+ ///
+ /// Initializes a copy of an object
+ ///
+ public OpenApiInfo(OpenApiInfo info)
+ {
+ Title = info?.Title ?? Title;
+ Description = info?.Description ?? Description;
+ Version = info?.Version ?? Version;
+ TermsOfService = info?.TermsOfService ?? TermsOfService;
+ Contact = info?.Contact != null ? new(info?.Contact) : null;
+ License = info?.License != null ? new(info?.License) : null;
+ Extensions = info?.Extensions != null ? new Dictionary(info.Extensions) : null;
+ }
+
+ ///
+ /// Serialize to Open Api v3.0
+ ///
+ public void SerializeAsV3(IOpenApiWriter writer)
+ {
+ Utils.CheckArgumentNull(writer);
+
+ writer.WriteStartObject();
+
+ // title
+ writer.WriteProperty(OpenApiConstants.Title, Title);
+
+ // description
+ writer.WriteProperty(OpenApiConstants.Description, Description);
+
+ // termsOfService
+ writer.WriteProperty(OpenApiConstants.TermsOfService, TermsOfService?.OriginalString);
+
+ // contact object
+ writer.WriteOptionalObject(OpenApiConstants.Contact, Contact, (w, c) => c.SerializeAsV3(w));
+
+ // license object
+ writer.WriteOptionalObject(OpenApiConstants.License, License, (w, l) => l.SerializeAsV3(w));
+
+ // version
+ writer.WriteProperty(OpenApiConstants.Version, Version);
+
+ // specification extensions
+ writer.WriteExtensions(Extensions, OpenApiSpecVersion.OpenApi3_0);
+
+ writer.WriteEndObject();
+ }
+
+ ///
+ /// Serialize to Open Api v2.0
+ ///
+ public void SerializeAsV2(IOpenApiWriter writer)
+ {
+ Utils.CheckArgumentNull(writer);
+
+ writer.WriteStartObject();
+
+ // title
+ writer.WriteProperty(OpenApiConstants.Title, Title);
+
+ // description
+ writer.WriteProperty(OpenApiConstants.Description, Description);
+
+ // termsOfService
+ writer.WriteProperty(OpenApiConstants.TermsOfService, TermsOfService?.OriginalString);
+
+ // contact object
+ writer.WriteOptionalObject(OpenApiConstants.Contact, Contact, (w, c) => c.SerializeAsV2(w));
+
+ // license object
+ writer.WriteOptionalObject(OpenApiConstants.License, License, (w, l) => l.SerializeAsV2(w));
+
+ // version
+ writer.WriteProperty(OpenApiConstants.Version, Version);
+
+ // specification extensions
+ writer.WriteExtensions(Extensions, OpenApiSpecVersion.OpenApi2_0);
+
+ writer.WriteEndObject();
+ }
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiLicense.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiLicense.cs
new file mode 100644
index 000000000000..8d71d2a617fb
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiLicense.cs
@@ -0,0 +1,83 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+using System;
+using System.Collections.Generic;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Interfaces;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Writers;
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Models
+{
+ ///
+ /// License Object.
+ ///
+ internal class OpenApiLicense : IOpenApiSerializable, IOpenApiExtensible
+ {
+ ///
+ /// REQUIRED. The license name used for the API.
+ ///
+ public string Name { get; set; }
+
+ ///
+ /// The URL pointing to the contact information. MUST be in the format of a URL.
+ ///
+ public Uri Url { get; set; }
+
+ ///
+ /// This object MAY be extended with Specification Extensions.
+ ///
+ public IDictionary Extensions { get; set; } = new Dictionary();
+
+ ///
+ /// Parameterless constructor
+ ///
+ public OpenApiLicense() { }
+
+ ///
+ /// Initializes a copy of an object
+ ///
+ public OpenApiLicense(OpenApiLicense license)
+ {
+ Name = license?.Name ?? Name;
+ Url = license?.Url != null ? new Uri(license.Url.OriginalString, UriKind.RelativeOrAbsolute) : null;
+ Extensions = license?.Extensions != null ? new Dictionary(license.Extensions) : null;
+ }
+
+ ///
+ /// Serialize to Open Api v3.0
+ ///
+ public void SerializeAsV3(IOpenApiWriter writer)
+ {
+ WriteInternal(writer, OpenApiSpecVersion.OpenApi3_0);
+ }
+
+ ///
+ /// Serialize to Open Api v2.0
+ ///
+ public void SerializeAsV2(IOpenApiWriter writer)
+ {
+ WriteInternal(writer, OpenApiSpecVersion.OpenApi2_0);
+ }
+
+ private void WriteInternal(IOpenApiWriter writer, OpenApiSpecVersion specVersion)
+ {
+ writer.WriteStartObject();
+
+ // name
+ writer.WriteProperty(OpenApiConstants.Name, Name);
+
+ // url
+ writer.WriteProperty(OpenApiConstants.Url, Url?.OriginalString);
+
+ // specification extensions
+ writer.WriteExtensions(Extensions, specVersion);
+
+ writer.WriteEndObject();
+ }
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiLink.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiLink.cs
new file mode 100644
index 000000000000..ac2e9f349996
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiLink.cs
@@ -0,0 +1,177 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+using System.Collections.Generic;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Interfaces;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Writers;
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Models
+{
+ ///
+ /// Link Object.
+ ///
+ internal class OpenApiLink : IOpenApiReferenceable, IOpenApiExtensible, IEffective
+ {
+ ///
+ /// A relative or absolute reference to an OAS operation.
+ /// This field is mutually exclusive of the operationId field, and MUST point to an Operation Object.
+ ///
+ public string OperationRef { get; set; }
+
+ ///
+ /// The name of an existing, resolvable OAS operation, as defined with a unique operationId.
+ /// This field is mutually exclusive of the operationRef field.
+ ///
+ public string OperationId { get; set; }
+
+ ///
+ /// A map representing parameters to pass to an operation as specified with operationId or identified via operationRef.
+ ///
+ public Dictionary Parameters { get; set; } =
+ new();
+
+ ///
+ /// A literal value or {expression} to use as a request body when calling the target operation.
+ ///
+ public RuntimeExpressionAnyWrapper RequestBody { get; set; }
+
+ ///
+ /// A description of the link.
+ ///
+ public string Description { get; set; }
+
+ ///
+ /// A server object to be used by the target operation.
+ ///
+ public OpenApiServer Server { get; set; }
+
+ ///
+ /// This object MAY be extended with Specification Extensions.
+ ///
+ public IDictionary Extensions { get; set; } = new Dictionary();
+
+ ///
+ /// Indicates if object is populated with data or is just a reference to the data
+ ///
+ public bool UnresolvedReference { get; set; }
+
+ ///
+ /// Reference pointer.
+ ///
+ public OpenApiReference Reference { get; set; }
+
+ ///
+ /// Parameterless constructor
+ ///
+ public OpenApiLink() {}
+
+ ///
+ /// Initializes a copy of an object
+ ///
+ public OpenApiLink(OpenApiLink link)
+ {
+ OperationRef = link?.OperationRef ?? OperationRef;
+ OperationId = link?.OperationId ?? OperationId;
+ Parameters = link?.Parameters != null ? new(link?.Parameters) : null;
+ RequestBody = link?.RequestBody != null ? new(link?.RequestBody) : null;
+ Description = link?.Description ?? Description;
+ Server = link?.Server != null ? new(link?.Server) : null;
+ Extensions = link?.Extensions != null ? new Dictionary(link.Extensions) : null;
+ UnresolvedReference = link?.UnresolvedReference ?? UnresolvedReference;
+ Reference = link?.Reference != null ? new(link?.Reference) : null;
+ }
+
+ ///
+ /// Serialize to Open Api v3.0
+ ///
+ public void SerializeAsV3(IOpenApiWriter writer)
+ {
+ Utils.CheckArgumentNull(writer);
+
+ var target = this;
+
+ if (Reference != null)
+ {
+ if (!writer.GetSettings().ShouldInlineReference(Reference))
+ {
+ Reference.SerializeAsV3(writer);
+ return;
+ }
+ else
+ {
+ target = GetEffective(Reference.HostDocument);
+ }
+ }
+ target.SerializeAsV3WithoutReference(writer);
+ }
+
+ ///
+ /// Returns an effective OpenApiLink object based on the presence of a $ref
+ ///
+ /// The host OpenApiDocument that contains the reference.
+ /// OpenApiLink
+ public OpenApiLink GetEffective(OpenApiDocument doc)
+ {
+ if (this.Reference != null)
+ {
+ return doc.ResolveReferenceTo(this.Reference);
+ }
+ else
+ {
+ return this;
+ }
+ }
+
+ ///
+ /// Serialize to OpenAPI V3 document without using reference.
+ ///
+ public void SerializeAsV3WithoutReference(IOpenApiWriter writer)
+ {
+ writer.WriteStartObject();
+
+ // operationRef
+ writer.WriteProperty(OpenApiConstants.OperationRef, OperationRef);
+
+ // operationId
+ writer.WriteProperty(OpenApiConstants.OperationId, OperationId);
+
+ // parameters
+ writer.WriteOptionalMap(OpenApiConstants.Parameters, Parameters, (w, p) => p.WriteValue(w));
+
+ // requestBody
+ writer.WriteOptionalObject(OpenApiConstants.RequestBody, RequestBody, (w, r) => r.WriteValue(w));
+
+ // description
+ writer.WriteProperty(OpenApiConstants.Description, Description);
+
+ // server
+ writer.WriteOptionalObject(OpenApiConstants.Server, Server, (w, s) => s.SerializeAsV3(w));
+
+ // specification extensions
+ writer.WriteExtensions(Extensions, OpenApiSpecVersion.OpenApi3_0);
+
+ writer.WriteEndObject();
+ }
+
+ ///
+ /// Serialize to Open Api v2.0
+ ///
+ public void SerializeAsV2(IOpenApiWriter writer)
+ {
+ // Link object does not exist in V2.
+ }
+
+ ///
+ /// Serialize to OpenAPI V2 document without using reference.
+ ///
+ public void SerializeAsV2WithoutReference(IOpenApiWriter writer)
+ {
+ // Link object does not exist in V2.
+ }
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiMediaType.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiMediaType.cs
new file mode 100644
index 000000000000..f8b97ff1504b
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiMediaType.cs
@@ -0,0 +1,135 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+using System.Collections.Generic;
+using System.Linq;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Any;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Interfaces;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Writers;
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Models
+{
+ ///
+ /// Media Type Object.
+ ///
+ internal class OpenApiMediaType : IOpenApiSerializable, IOpenApiExtensible
+ {
+ ///
+ /// The schema defining the type used for the request body.
+ ///
+ public OpenApiSchema Schema { get; set; }
+
+ ///
+ /// Example of the media type.
+ /// The example object SHOULD be in the correct format as specified by the media type.
+ ///
+ public IOpenApiAny Example { get; set; }
+
+ ///
+ /// Examples of the media type.
+ /// Each example object SHOULD match the media type and specified schema if present.
+ ///
+ public IDictionary Examples { get; set; } = new Dictionary();
+
+ ///
+ /// A map between a property name and its encoding information.
+ /// The key, being the property name, MUST exist in the schema as a property.
+ /// The encoding object SHALL only apply to requestBody objects
+ /// when the media type is multipart or application/x-www-form-urlencoded.
+ ///
+ public IDictionary Encoding { get; set; } = new Dictionary();
+
+ ///
+ /// Serialize to Open Api v3.0.
+ ///
+ public IDictionary Extensions { get; set; } = new Dictionary();
+
+ ///
+ /// Parameterless constructor
+ ///
+ public OpenApiMediaType() {}
+
+ ///
+ /// Initializes a copy of an object
+ ///
+ public OpenApiMediaType(OpenApiMediaType mediaType)
+ {
+ Schema = mediaType?.Schema != null ? new(mediaType?.Schema) : null;
+ Example = OpenApiAnyCloneHelper.CloneFromCopyConstructor(mediaType?.Example);
+ Examples = mediaType?.Examples != null ? new Dictionary(mediaType.Examples) : null;
+ Encoding = mediaType?.Encoding != null ? new Dictionary(mediaType.Encoding) : null;
+ Extensions = mediaType?.Extensions != null ? new Dictionary(mediaType.Extensions) : null;
+ }
+
+ ///
+ /// Serialize to Open Api v3.0.
+ ///
+ public void SerializeAsV3(IOpenApiWriter writer)
+ {
+ Utils.CheckArgumentNull(writer);
+
+ writer.WriteStartObject();
+
+ // schema
+ writer.WriteOptionalObject(OpenApiConstants.Schema, Schema, (w, s) => s.SerializeAsV3(w));
+
+ // example
+ writer.WriteOptionalObject(OpenApiConstants.Example, Example, (w, e) => w.WriteAny(e));
+
+ // examples
+ if (Examples != null && Examples.Any())
+ {
+ SerializeExamples(writer, Examples);
+ }
+
+ // encoding
+ writer.WriteOptionalMap(OpenApiConstants.Encoding, Encoding, (w, e) => e.SerializeAsV3(w));
+
+ // extensions
+ writer.WriteExtensions(Extensions, OpenApiSpecVersion.OpenApi3_0);
+
+ writer.WriteEndObject();
+ }
+
+ ///
+ /// Serialize to Open Api v2.0.
+ ///
+ public void SerializeAsV2(IOpenApiWriter writer)
+ {
+ // Media type does not exist in V2.
+ }
+
+ private static void SerializeExamples(IOpenApiWriter writer, IDictionary examples)
+ {
+ /* Special case for writing out empty arrays as valid response examples
+ * Check if there is any example with an empty array as its value and set the flag `hasEmptyArray` to true
+ * */
+ var hasEmptyArray = examples.Values.Any( static example =>
+ example.Value is OpenApiArray arr && arr.Count == 0
+ );
+
+ if (hasEmptyArray)
+ {
+ writer.WritePropertyName(OpenApiConstants.Examples);
+ writer.WriteStartObject();
+ foreach (var kvp in examples.Where(static kvp => kvp.Value.Value is OpenApiArray arr && arr.Count == 0))
+ {
+ writer.WritePropertyName(kvp.Key);
+ writer.WriteStartObject();
+ writer.WriteRequiredObject(OpenApiConstants.Value, kvp.Value.Value, (w, v) => w.WriteAny(v));
+ writer.WriteEndObject();
+ }
+ writer.WriteEndObject();
+ }
+ else
+ {
+ writer.WriteOptionalMap(OpenApiConstants.Examples, examples, (w, e) => e.SerializeAsV3(w));
+ }
+ }
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiOAuthFlow.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiOAuthFlow.cs
new file mode 100644
index 000000000000..7b68d1f05e06
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiOAuthFlow.cs
@@ -0,0 +1,100 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+using System;
+using System.Collections.Generic;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Interfaces;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Writers;
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Models
+{
+ ///
+ /// OAuth Flow Object.
+ ///
+ internal class OpenApiOAuthFlow : IOpenApiSerializable, IOpenApiExtensible
+ {
+ ///
+ /// REQUIRED. The authorization URL to be used for this flow.
+ /// Applies to implicit and authorizationCode OAuthFlow.
+ ///
+ public Uri AuthorizationUrl { get; set; }
+
+ ///
+ /// REQUIRED. The token URL to be used for this flow.
+ /// Applies to password, clientCredentials, and authorizationCode OAuthFlow.
+ ///
+ public Uri TokenUrl { get; set; }
+
+ ///
+ /// The URL to be used for obtaining refresh tokens.
+ ///
+ public Uri RefreshUrl { get; set; }
+
+ ///
+ /// REQUIRED. A map between the scope name and a short description for it.
+ ///
+ public IDictionary Scopes { get; set; } = new Dictionary();
+
+ ///
+ /// Specification Extensions.
+ ///
+ public IDictionary Extensions { get; set; } = new Dictionary();
+
+ ///
+ /// Parameterless constructor
+ ///
+ public OpenApiOAuthFlow() { }
+
+ ///
+ /// Initializes a copy of an object
+ ///
+ public OpenApiOAuthFlow(OpenApiOAuthFlow oAuthFlow)
+ {
+ AuthorizationUrl = oAuthFlow?.AuthorizationUrl != null ? new Uri(oAuthFlow.AuthorizationUrl.OriginalString, UriKind.RelativeOrAbsolute) : null;
+ TokenUrl = oAuthFlow?.TokenUrl != null ? new Uri(oAuthFlow.TokenUrl.OriginalString, UriKind.RelativeOrAbsolute) : null;
+ RefreshUrl = oAuthFlow?.RefreshUrl != null ? new Uri(oAuthFlow.RefreshUrl.OriginalString, UriKind.RelativeOrAbsolute) : null;
+ Scopes = oAuthFlow?.Scopes != null ? new Dictionary(oAuthFlow.Scopes) : null;
+ Extensions = oAuthFlow?.Extensions != null ? new Dictionary(oAuthFlow.Extensions) : null;
+ }
+
+ ///
+ /// Serialize to Open Api v3.0
+ ///
+ public void SerializeAsV3(IOpenApiWriter writer)
+ {
+ Utils.CheckArgumentNull(writer);
+
+ writer.WriteStartObject();
+
+ // authorizationUrl
+ writer.WriteProperty(OpenApiConstants.AuthorizationUrl, AuthorizationUrl?.ToString());
+
+ // tokenUrl
+ writer.WriteProperty(OpenApiConstants.TokenUrl, TokenUrl?.ToString());
+
+ // refreshUrl
+ writer.WriteProperty(OpenApiConstants.RefreshUrl, RefreshUrl?.ToString());
+
+ // scopes
+ writer.WriteRequiredMap(OpenApiConstants.Scopes, Scopes, (w, s) => w.WriteValue(s));
+
+ // extensions
+ writer.WriteExtensions(Extensions, OpenApiSpecVersion.OpenApi3_0);
+
+ writer.WriteEndObject();
+ }
+
+ ///
+ /// Serialize to Open Api v2.0
+ ///
+ public void SerializeAsV2(IOpenApiWriter writer)
+ {
+ // OAuthFlow object does not exist in V2.
+ }
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiOAuthFlows.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiOAuthFlows.cs
new file mode 100644
index 000000000000..ef73ad56dd59
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiOAuthFlows.cs
@@ -0,0 +1,104 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+using System.Collections.Generic;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Interfaces;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Writers;
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Models
+{
+ ///
+ /// OAuth Flows Object.
+ ///
+ internal class OpenApiOAuthFlows : IOpenApiSerializable, IOpenApiExtensible
+ {
+ ///
+ /// Configuration for the OAuth Implicit flow
+ ///
+ public OpenApiOAuthFlow Implicit { get; set; }
+
+ ///
+ /// Configuration for the OAuth Resource Owner Password flow.
+ ///
+ public OpenApiOAuthFlow Password { get; set; }
+
+ ///
+ /// Configuration for the OAuth Client Credentials flow.
+ ///
+ public OpenApiOAuthFlow ClientCredentials { get; set; }
+
+ ///
+ /// Configuration for the OAuth Authorization Code flow.
+ ///
+ public OpenApiOAuthFlow AuthorizationCode { get; set; }
+
+ ///
+ /// Specification Extensions.
+ ///
+ public IDictionary Extensions { get; set; } = new Dictionary();
+
+ ///
+ /// Parameterless constructor
+ ///
+ public OpenApiOAuthFlows() {}
+
+ ///
+ /// Initializes a copy of an object
+ ///
+ ///
+ public OpenApiOAuthFlows(OpenApiOAuthFlows oAuthFlows)
+ {
+ Implicit = oAuthFlows?.Implicit != null ? new(oAuthFlows?.Implicit) : null;
+ Password = oAuthFlows?.Password != null ? new(oAuthFlows?.Password) : null;
+ ClientCredentials = oAuthFlows?.ClientCredentials != null ? new(oAuthFlows?.ClientCredentials) : null;
+ AuthorizationCode = oAuthFlows?.AuthorizationCode != null ? new(oAuthFlows?.AuthorizationCode) : null;
+ Extensions = oAuthFlows?.Extensions != null ? new Dictionary(oAuthFlows.Extensions) : null;
+ }
+
+ ///
+ /// Serialize to Open Api v3.0
+ ///
+ public void SerializeAsV3(IOpenApiWriter writer)
+ {
+ Utils.CheckArgumentNull(writer);
+
+ writer.WriteStartObject();
+
+ // implicit
+ writer.WriteOptionalObject(OpenApiConstants.Implicit, Implicit, (w, o) => o.SerializeAsV3(w));
+
+ // password
+ writer.WriteOptionalObject(OpenApiConstants.Password, Password, (w, o) => o.SerializeAsV3(w));
+
+ // clientCredentials
+ writer.WriteOptionalObject(
+ OpenApiConstants.ClientCredentials,
+ ClientCredentials,
+ (w, o) => o.SerializeAsV3(w));
+
+ // authorizationCode
+ writer.WriteOptionalObject(
+ OpenApiConstants.AuthorizationCode,
+ AuthorizationCode,
+ (w, o) => o.SerializeAsV3(w));
+
+ // extensions
+ writer.WriteExtensions(Extensions, OpenApiSpecVersion.OpenApi3_0);
+
+ writer.WriteEndObject();
+ }
+
+ ///
+ /// Serialize to Open Api v2.0
+ ///
+ public void SerializeAsV2(IOpenApiWriter writer)
+ {
+ // OAuthFlows object does not exist in V2.
+ }
+ }
+}
diff --git a/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiOperation.cs b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiOperation.cs
new file mode 100644
index 000000000000..c0d96c21a197
--- /dev/null
+++ b/tracer/src/Datadog.Trace/Vendors/Microsoft.OpenApi/Models/OpenApiOperation.cs
@@ -0,0 +1,343 @@
+//------------------------------------------------------------------------------
+//
+// This file was automatically generated by the UpdateVendoredCode tool.
+//------------------------------------------------------------------------------
+#pragma warning disable CS0618, CS0649, CS1574, CS1580, CS1581, CS1584, CS1591, CS1573, CS8018, SYSLIB0011, SYSLIB0023, SYSLIB0032
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT license.
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Interfaces;
+using Datadog.Trace.Vendors.Microsoft.OpenApi.Writers;
+
+namespace Datadog.Trace.Vendors.Microsoft.OpenApi.Models
+{
+ ///
+ /// Operation Object.
+ ///
+ internal class OpenApiOperation : IOpenApiSerializable, IOpenApiExtensible, IOpenApiAnnotatable
+ {
+ ///
+ /// Default value for .
+ ///
+ public const bool DeprecatedDefault = false;
+
+ ///
+ /// A list of tags for API documentation control.
+ /// Tags can be used for logical grouping of operations by resources or any other qualifier.
+ ///
+ public IList Tags { get; set; } = new List();
+
+ ///
+ /// A short summary of what the operation does.
+ ///
+ public string Summary { get; set; }
+
+ ///
+ /// A verbose explanation of the operation behavior.
+ /// CommonMark syntax MAY be used for rich text representation.
+ ///
+ public string Description { get; set; }
+
+ ///
+ /// Additional external documentation for this operation.
+ ///
+ public OpenApiExternalDocs ExternalDocs { get; set; }
+
+ ///
+ /// Unique string used to identify the operation. The id MUST be unique among all operations described in the API.
+ /// Tools and libraries MAY use the operationId to uniquely identify an operation, therefore,
+ /// it is RECOMMENDED to follow common programming naming conventions.
+ ///
+ public string OperationId { get; set; }
+
+ ///
+ /// A list of parameters that are applicable for this operation.
+ /// If a parameter is already defined at the Path Item, the new definition will override it but can never remove it.
+ /// The list MUST NOT include duplicated parameters. A unique parameter is defined by a combination of a name and location.
+ /// The list can use the Reference Object to link to parameters that are defined at the OpenAPI Object's components/parameters.
+ ///
+ public IList Parameters { get; set; } = new List();
+
+ ///
+ /// The request body applicable for this operation.
+ /// The requestBody is only supported in HTTP methods where the HTTP 1.1 specification RFC7231
+ /// has explicitly defined semantics for request bodies.
+ /// In other cases where the HTTP spec is vague, requestBody SHALL be ignored by consumers.
+ ///
+ public OpenApiRequestBody RequestBody { get; set; }
+
+ ///
+ /// REQUIRED. The list of possible responses as they are returned from executing this operation.
+ ///
+ public OpenApiResponses Responses { get; set; } = new();
+
+ ///
+ /// A map of possible out-of band callbacks related to the parent operation.
+ /// The key is a unique identifier for the Callback Object.
+ /// Each value in the map is a Callback Object that describes a request
+ /// that may be initiated by the API provider and the expected responses.
+ /// The key value used to identify the callback object is an expression, evaluated at runtime,
+ /// that identifies a URL to use for the callback operation.
+ ///
+ public IDictionary Callbacks { get; set; } = new Dictionary();
+
+ ///
+ /// Declares this operation to be deprecated. Consumers SHOULD refrain from usage of the declared operation.
+ ///
+ public bool Deprecated { get; set; } = DeprecatedDefault;
+
+ ///
+ /// A declaration of which security mechanisms can be used for this operation.
+ /// The list of values includes alternative security requirement objects that can be used.
+ /// Only one of the security requirement objects need to be satisfied to authorize a request.
+ /// This definition overrides any declared top-level security.
+ /// To remove a top-level security declaration, an empty array can be used.
+ ///
+ public IList Security { get; set; } = new List();
+
+ ///
+ /// An alternative server array to service this operation.
+ /// If an alternative server object is specified at the Path Item Object or Root level,
+ /// it will be overridden by this value.
+ ///
+ public IList Servers { get; set; } = new List();
+
+ ///
+ /// This object MAY be extended with Specification Extensions.
+ ///
+ public IDictionary Extensions { get; set; } = new Dictionary();
+
+ ///
+ public IDictionary Annotations { get; set; }
+
+ ///
+ /// Parameterless constructor
+ ///
+ public OpenApiOperation() {}
+
+ ///
+ /// Initializes a copy of an object
+ ///
+ public OpenApiOperation(OpenApiOperation operation)
+ {
+ Tags = operation?.Tags != null ? new List(operation?.Tags) : null;
+ Summary = operation?.Summary ?? Summary;
+ Description = operation?.Description ?? Description;
+ ExternalDocs = operation?.ExternalDocs != null ? new(operation?.ExternalDocs) : null;
+ OperationId = operation?.OperationId ?? OperationId;
+ Parameters = operation?.Parameters != null ? new List(operation.Parameters) : null;
+ RequestBody = operation?.RequestBody != null ? new(operation?.RequestBody) : null;
+ Responses = operation?.Responses != null ? new(operation?.Responses) : null;
+ Callbacks = operation?.Callbacks != null ? new Dictionary(operation.Callbacks) : null;
+ Deprecated = operation?.Deprecated ?? Deprecated;
+ Security = operation?.Security != null ? new List(operation.Security) : null;
+ Servers = operation?.Servers != null ? new List(operation.Servers) : null;
+ Extensions = operation?.Extensions != null ? new Dictionary